並行工作 (Parallel work)
並行化為每個工作單元提供全新的上下文,並加快執行速度。其代價是協調成本:必須等待的匯入點 (fan-in)、不得衝突的合併操作、以及不能由製作者兼任的評判者。僅在單元真正獨立時使用,並明確支付協調成本。
前置條件
- 工作單元之間相互獨立:沒有任何單元需要依賴另一個單元的結果才能開始。
- 你已清楚知道有哪些工作單元。原因不明 → 先發送一次調查任務。
- 寫入操作是隔離的:每個單元寫入不同檔案,或者每個單元在自己的隔離工作樹 (worktree) 中運行,並僅提交該單元觸及的檔案(技術細節請參考:delegate/references/harness-notes/claude-code.md 的「隔離」章節)。
缺少任一條 → 序列化處理,或先進行調查。
工作模式 (Shapes)
扇出與匯入 (Fan-out, Fan-in)。 對同一個階段的 N 個分派,每個作用於一個單元,同時發送。一個單獨的合併分派等待所有分派完成 — 這個等待就是屏障 (barrier) — 然後將它們的交付檔案合併為一個。將每個單元的輸出保留在各自的檔案中;合併器讀取的是檔案路徑,而不是你的上下文。
機械式扇出 (Mechanical fan-out)。 一個 process 分派僅決定一次確切的變更內容。N 個通用的分派原樣應用此變更,每個作用於各自的目標。一個 review 分派檢查整個結果集。協調器本身絕不應用此編輯,無論目標集合多小。
製作者/檢查者 (Maker/checker)。 產生結果的人絕不評判它。將 review 分派導向另一個代理 — 如果該領域存在 reviewer 類型的代理則使用它,否則使用不同角色的專家代理 — 並提供成功標準和工件路徑,且不透露製作者的任何推理過程。
生成與過濾 (Generate and filter)。 扇出以產生候選方案;一個分派根據書面評分標準進行去重和評分;只有存活下來的候選方案繼續。在生成之前寫好評分標準。
錦標賽 (Tournament)。 用於對一個過大而無法在單一視窗中評判的集合進行排名:進行兩兩比較的分派,每個分派持有兩個項目,並在一個檔案中維護一個錦標賽對陣表。比較式的判斷比絕對分數更可靠。
假設扇出 (Hypothesis fan-out)。 用於根本原因分析:針對每個不相關的證據來源(日誌、程式碼、資料)發送一個分派,每個分派僅從其自己的來源形成一個假設。然後針對每個假設發送一個分派,試圖反駁它。經得起反駁的假設就是最終發現。
條件停止循環 (Loop until stop)。 用於大小未知的工作:重複一個分派,直到一個可觀察的條件成立 — 沒有新的發現、閘門輸出中零錯誤、檢查清單檔案沒有未勾選的項目。在第一次迭代之前設定上限(預設為 5)。達到上限時,回報 PARTIAL 以及剩餘內容。
檢查清單扇出 (Checklist fan-out)
一個包含 - [ ] 項目的 Markdown 檔案就是一個現成的工作單元列表:為每個未勾選的項目發送一個分派,每個分派被告知在完成 (DONE) 時勾選自己的那一行,然後循環直到「沒有未勾選的項目剩餘」。對操作同一檔案的多個項目進行序列化處理。
上限與停止條件
每個循環和每個匯入點在開始之前都必須設定一個數字:迭代次數、重新分派次數、或工作單元數量。達到上限時,向用戶回報 PARTIAL 或 BLOCKED,絕不能默默地重試。
持久化團隊 (Persistent teams)
某些執行平台提供長期存在的代理團隊,並附帶共享任務列表和訊息功能。它們增加了代理們不一致遵循的指令和通訊開銷,並且在不同平台之間不可移植。上述的各種工作模式完全不需要這些功能。僅當代理必須在任務中間交換訊息時才考慮使用團隊功能,並且此時應查閱執行平台的使用說明。
參考指標
- delegate — 每個工作單元使用的提示模板。
- delegate/references/harness-notes/claude-code.md — 如何在 Claude Code 上發送並行分派、隔離工作樹,以及將長流程遷移到工作流程腳本中。