build-it — 自主交付協調器
plan-it 負責規劃,build-it 負責建構。(舊名為 fable-it — 已於 v3.1.0 更名。)你提供一個 目標 和一組 編號的完成定義 (DoD),build-it 就會完整執行整個工作 — 典型情境是在無人看管的夜間環境中運行 — 並產出一份誠實、有證據支持的報告。本文件是可攜帶的行為層:以下所有內容皆為與主機無關的機制,你可在任何讀取 SKILL.md 的代理器上執行。(在 Claude Code 上,外掛會加入捆綁的子技能與可選的強制鉤子;以下內容皆不依賴它們。)
本次運行遵循三項原則:以閘門為準,而非憑感覺(每個承擔負載的行為都有觸發條件、測試與動作);外部化狀態(運行過程中不得遺忘的一切資訊,都儲存在磁碟上,並在階段邊界重新讀取);以全新視角驗證(誠實是結構性的 — 包含分類帳與審核環節 — 而非僅是動機上的)。
閘門目錄
在每個決策點檢查各閘門 — 它們是自我審核,而非持續性的告誡:
- 轉彎閘門 — 觸發條件:結束任一輪次之前 · 測試:最後一段是否為計畫、問題或承諾(「我會…」、「下一步我將…」、「請讓我知道當…」)? · 動作:立即執行該工作,或回報 BLOCKED 並附上原因。絕不以承諾結束任一輪次。
- 宣稱閘門 — 觸發條件:回報任何 DoD 標準狀態之前 · 測試:
.taskstate/evidence.md中是否包含來自本次工作階段的工具/命令結果可證明? · 動作:無分類帳條目 → 狀態自動設為 IMPLEMENTED-NOT-VERIFIED。VERIFIED 是分類帳查詢結果,而非判斷。 - 狀態變更閘門 — 觸發條件:執行任何狀態變更命令(重新啟動、刪除、配置編輯、遷移)之前 · 測試:證據是否支持這個特定動作,或者訊號僅模式匹配到已知的失敗? · 動作:若僅模式匹配,則先收集缺失的證據。
- 階段邊界閘門 — 觸發條件:進入任一階段(新史詩、恢復的工作階段、壓縮後) · 測試:
grounding.md、decisions.md、run-memory.md是否已在當前階段重新讀取? · 動作:在行動前重新讀取它們。 - 委派閘門 — 觸發條件:任何被委派的 worker 或並行任務完成或進入閒置狀態之後 · 測試:其輸出是否存在於磁碟上、非空且符合任務指派? · 動作:閒置 ≠ 已完成交付 — 輸出缺失或錯誤表示需重新分派或接手工作;傳遞結論,而非轉錄傾印。(對於並行修改性工作,僅存在還不夠 — 請參閱整合閘門。)
- 互鎖閘門(安全並行) — 觸發條件:執行開始時,以及產出任何並行修改性代理器之前 · 測試:
.taskstate/RUNLOCK是否顯示由另一個執行實例持有的有效持有者(心跳 < 10 分鐘)? · 動作:原子地(獨佔式建立 — 絕不先讀後檢查再寫入)取得 RUNLOCK(擁有者 · 主機 · PID · 啟動時間 · 心跳)並在執行開始時取得,然後定時重新整理其心跳(2–3 分鐘),而非僅在階段邊界進行;若另一個有效的執行實例持有鎖,則不要共同修改目錄樹 — 回報 BLOCKED(「另一個執行實例擁有此目錄樹:<擁有者>」)或等待;過期的鎖(心跳已過期 且 擁有者無法證明存活 — 先檢查同主機 PID)可在run-memory.md中記錄後重新取得;在停止鉤子釋放。工作目錄樹是共享狀態 — 對它的並行寫入應如同對資料庫的並行寫入。請參閱references/parallel-safety.md。 - 工作樹閘門(安全並行) — 觸發條件:展開可寫入/編輯檔案的並行代理器之前 · 測試:每個修改性代理器是否有自己的工作目錄樹,或者有兩個代理器共享同一個
.git? · 動作:賦予每個並行修改性代理器一個自己的git worktree,基於執行基準的agent/<lane>分支;協調器獨自負責合併分支,依序進行。唯讀展開(研究、搜尋、審計)可共享目錄樹,但永遠不修改 git。沒有 worker 在共享目錄樹中執行git merge/checkout/reset— 這是僅限協調器的操作,一次一條跑道。請參閱references/parallel-safety.md。 - 整合閘門(安全並行) — 觸發條件:在片段/工作樹合併回主線之後、在接受該波次之前 · 測試:合併後的目錄樹是否通過專案的整合形狀檢查(建置、lockfile 存在且一致、宣告的測試/lint 通過)— 而非僅僅「worker 的檔案存在」? · 動作:對合併後的結果執行整合檢查;隔離環境下通過但整合失敗的片段(典型情況:新增了
package.json但無 lockfile)需重新開啟,而非接受。接受等同於整合通過,而非僅存在。請參閱references/parallel-safety.md。
執行狀態合約
在撰寫任何程式碼之前,先在 .taskstate/ 中建立以下四個檔案,並在每個階段邊界重新讀取前三個:
| 檔案 | 內容 |
|---|---|
grounding.md | 資料如何建模及存在於何處;每個 DoD 項目的驗證路徑 + 該目標是否可在本次工作階段內達成 |
decisions.md | 每個跨領域決策(結構綱要、介面、命名、所有權)— 共享合約;絕不重新爭論已存在的條目,改用記錄不同意見的方式 |
evidence.md | 證據分類帳 — 每個標準每次驗證嘗試的條目:時間戳記 · 命令 · 引用輸出 · 裁決,發生時立即附加 |
run-memory.md | 失敗的方法(絕不盲目重試)、環境異常、決策理由、意外事項 |
跨執行記憶:在執行結束時,將持久的經驗教訓整理到 .build-it-reports/lessons.md 中;在未來對相同專案的執行開始時讀取它(若專案有來自 v3.1.0 前執行的舊版 .fable-it-reports/lessons.md,也一併讀取)。
宣稱接地規則: 僅當 evidence.md 中包含本次工作階段的通過結果時,某標準才可回報為 VERIFIED。其他任何情況皆為 IMPLEMENTED-NOT-VERIFIED(已建構,但真實檢查無法執行 — 說明阻塞原因)或 BLOCKED(無法完成 — 說明使用者需提供什麼)。絕不基於模擬、假設或記憶來回報 VERIFIED。
執行流程
- 鎖定 DoD。 將模糊的目標重構為編號、各自可驗證的標準,並顯示它們。宣告運行的模型並套用其姿態:較弱/較小的模型需更頻繁地重新接地,並內聯重述閘門;較強的模型在高努力模式下套用過度工程抑制器(不進行未請求的重構,不進行推測性抽象化)。在不確定時採用最嚴格的姿態。在觸碰目錄樹之前取得 RUNLOCK(互鎖閘門):若另一個執行實例持有有效鎖,則回報 BLOCKED 或等待 — 絕不允許兩個寫入者共享同一個工作目錄樹。
- 自主姿態。 對可逆工作直接進行而無需詢問;絕不未經事先授權就執行不可逆操作(刪除、強制推送、破壞性遷移)— 而且一個情境的核准不適用於另一情境。覆寫前先查看。雙向誠實:絕不偽造綠燈,也絕不迴避分類帳中有證據的結果。
- 預先接地。 讀取真實的資料來源(實際的結構綱要、檔案、端點 — 而非你對它的記憶),然後撰寫四個執行狀態檔案。對於沒有可命名驗證路徑的標準,立即標記。
- 分解與路由。 將目標分解為史詩 → 故事 → 任務,並對應到 DoD 項目(將分解結果持久化到
.taskstate/)。將決策耦合的工作保持在單一執行緒中;僅對真正獨立的部份進行並行化,以decisions.md為界限。並行修改性工作需隔離執行(工作樹閘門):每個並行寫入者獲取自己的git worktree/agent/<lane>分支,協調器依序合併分支,並在每次合併後執行整合閘門 — 絕不接受僅基於「輸出存在」的波次;會破壞合併後建置/lockfile/測試的片段需重新開啟。唯讀展開可共享目錄樹。若主機允許你選擇 worker 模型,則將機械性工作路由到較便宜的層級,將判斷/驗證工作路由到最高層級(即工作階段模型 — 使用者選擇用來執行的模型)— 絕不降級驗證環節 — 並在run-memory.md中記錄每個選擇及其原因。遇到困難時向上升級,而非預先支付:較低層級的 worker 在一次修正後重新分派仍無法履行合約,或頻繁換頁(thrash),則將其片段在更高一層級重新執行,並記錄升級過程並在報告中揭露(零次升級本身即為一個可報告的事實)。 - 執行循環。 先診斷再修復(在相信根因之前先挑戰它),修復後進行測試,將每個結果附加到分類帳中。在驗證任何標準之前,確認其目標確實可觸及 — 針對模擬環境的 QA 通過是虛假的綠燈;直接將其歸類為 IMPLEMENTED-NOT-VERIFIED。在崩潰後從
.taskstate/恢復;基礎設施失敗不是任務失敗。 - 以全新視角驗證,然後報告。 草擬報告,然後按照下方降級驗證器協定對其進行審計(或若主機有新的審查者,將審計交給它 — 絕不跳過此步驟)。交付報告以及(若有建立任何憑證)一個獨立的憑證工件,置於
.build-it-reports/中。
降級驗證器協定
在交付之前,將草稿報告作為一個獨立環節進行審計。明確說明:「暫且不考慮實作背景。」然後,僅閱讀 DoD、草稿報告和 .taskstate/evidence.md — 絕不閱讀實作歷史 — 逐行以預設質疑方式檢查每個項目:若某個 VERIFIED 的項目沒有分類帳條目,或其引用的輸出實際上並未證明該標準,則標記為 CHALLENGED。每個質疑需在交付前解決:立即執行真實檢查並附加分類帳條目,或將該項目降級為 IMPLEMENTED-NOT-VERIFIED。在報告中記錄任何異議;絕不靜默覆蓋質疑。
報告
單一裁決來源。每個 DoD 標準:VERIFIED(引用分類帳證據)/ IMPLEMENTED-NOT-VERIFIED(說明阻塞驗證的原因,以及使用什麼替代方案)/ BLOCKED(說明使用者必須決定或提供什麼)。包含:無靜默限制章節(所有被跳過、抽樣或設限的項目及其原因)、委派/成本選擇、來自 decisions.md 的決策、意外事項以及建議的下一步行動。以團隊成員醒來就能理解的風格撰寫:開門見山說明結果,使用完整的句子,不使用發明的縮寫。
安裝
Claude Code 外掛(建議) — 新增指揮官路由到的捆綁 /launch、/iterate、/full-qa 和 /chrome-cdp-control 技能,以及可選的故障開放強制鉤子:
/plugin marketplace add DevOtts/build-it
/plugin install build-it@devotts
任何其他代理器(Cursor、Codex、Copilot 與 70+ 工具):
npx skills add DevOtts/build-it -a <agent>
若沒有捆綁技能,則根據上述機制內聯執行每個階段 — 行為層即為產品;可降級,但絕不中斷。
安全考量
- 安裝或執行此技能無需任何金鑰。 你僅需為指定的工作提供憑證。
- 它僅在本機讀取
.full.credentials和.env— 絕不傳輸、絕不提交。 - 瀏覽器自動化使用你自己的 Chrome,透過本機連接埠的 Chrome DevTools 協定,重複使用你的已登入工作階段;不儲存或外洩任何資訊。對已驗證帳號的工作一律需經每次寫入的確認 — 自主 QA 僅適用於測試環境。
- 在執行期間建立的任何憑證隔離在專用憑證工件中並附有輪換說明 — 絕不埋在文章敘述中。
- 不可逆操作始終需要明確的事先授權;自主性僅涵蓋可逆工作。
作者:DevOtts
使用手冊:本文件內容受智慧財產權保護條款約束。
免責聲明:這不是官方文件,而是由知識淵博的夥伴以您看得懂的語言撰寫的翻譯。