無人值守運行
這是「這是計劃,開始執行」的模式:端到端地實作,無人在鍵盤前,並在人類回來時可被審查。它不侷限於特定時間。它適用於任何無人觀看以回答問題的時段。
它預設有一個已核准的計劃
此模式不豁免「先提案後建置」(請參閱 coding-process)。它是核准後發生的事情。在已核准的計劃內,自行決定可逆的實作細節,並記錄每個假設。有文件記錄的假設勝過一個整晚等待的工作階段。這就是豁免的全部內容。
四個你絕不能獨自越過的檢查點
即使步驟是可逆的,這些仍保持為檢查點。其中任何一個都不是判斷性決定。
- 範圍。 已核准計劃未涵蓋的任何事項:新功能、無人要求的重構,或因困難而放棄某步驟。設定缺少的測試工具也算在範圍內。
- 任何離開機器的東西: 外部訊息、發布或對第三方服務的呼叫。在儲存庫中的工作(分支、提交、推送、PR)屬於計劃內;與外部世界通訊則不屬於。
- 任何花費金錢的東西: 付費 API、佈建的基礎設施、任何計量服務。
- 任何破壞性或不可逆的東西: 資料遺失、對共享分支的強制推送、生產環境。
保持工作可持久
- 先隔離。 除非測試工具已給你一個,否則使用工作樹。無人值守運行正是別人可能碰觸主要檢出的時候。
- 在每個邏輯單元完成後提交並推送,而不僅僅在最後。未推送的工作若工作階段突然結束就會遺失。在此模式下,這會覆寫通常的「提交前先詢問」。
- 絕不帶著未提交的工作進入暫停。 如果你的代理暴露了使用限制,在接近限制時暫停,等待重置,然後繼續。
- 在檢查點執行完整閘道,而非每次編輯後。 編輯中,執行能捕捉你剛修改內容的最窄檢查:一個套件的型別檢查,或一個測試檔案。在一個工作單元完成後、在推送以供審查前,執行建置、lint、完整測試套件和等同 CI 的閘道。重新執行十分鐘前通過的套件(在未碰觸的程式碼上)只會消耗運算資源而學不到東西。
委派(如果你的代理可以生成子代理)
- 將機械性工作委派給較便宜的模型: 複製現有結構、樣板、同步文件、重複性編輯。將主要模型保留給正確性關鍵的邏輯(結構描述、安全邊界、核心服務)以及判斷性決定。
- 限制並行度約五個。 超過此數,審計就不再真實,且平行代理會在相同檔案上衝突。
- 審計所有委派的輸出。 絕不未經閱讀就整合子代理的輸出。檢查它是否合理、遵循慣例,且建置和測試為綠色。當它出錯時,判斷差距:小的差距自行修正,大的差距連同修正一起發回。
阻礙點
- 將它們浮現出來;不要猜測。 當計劃步驟有明確的檢查點,或遇到真正的阻礙(缺少基礎設施、失敗的假設)時,清楚地標記它,而不是發明一個會改變設計的解決方案。
- 先完成所有不依賴答案的工作, 這樣人類回來時看到的是問題加上已完成的工作,而不只是問題。
- 卡住的 PR 審查也是一個阻礙點。標記它,並繼續在本地建置不依賴該答案的上層階段。
無人監看時,UI 驗證不可省略
在無人在看時,驅動瀏覽器中的 UI 是最容易被省略的步驟,且審查者無法在 diff 中看到它的缺失。遵循 verify-ui。如果環境真的無法執行該功能(缺少憑證、你不擁有的基礎設施),在 PR 的「測試」部分說明:說明什麼阻礙了它以及已驗證了什麼。沉默被解讀為「已驗證」。
完成時
報告工作狀態:已交付的內容(PR 和分支)、等待審查的內容、所做的每個假設,以及每個標記的阻礙點。如果工作階段結束,將其寫入手冊文件,存放在 docs/plans/ 中。