Community程式設計與開發github.com

orchestrate

Opus 主導的多智能體工作流程。當編碼需求大到需要拆分(多個檔案/子任務、大量編輯、可並行工作),或使用者要求「orchestrate」、「delegate」、「chia việc」、「dùng agy/reasonix/subagent」時使用。Opus 負責規劃與審查;低成本工作者(agy = Gemini、reasonix = DeepSeek)與 Claude Sonnet 在隔離的 git worktrees 中執行範圍明確的合約;自動化護欄加上 Opus 審查會在合併前拒絕錯誤、不完整、過度、難看或作弊的變更。

orchestrate 是什麼?

Orchestrate 是一個多智能體協作技能,專為 Claude Code / Cursor / Codex 等 AI 代理平台設計,讓 Opus(你)擔任架構師與守門人,將大型編碼任務分解成多個小型、範圍明確的「合約」,並由低成本、高效率的工作者(如 Gemini 3.8 Flash Medium、DeepSeek V4 Flash、Claude Sonnet/Haiku)在隔離的 git worktrees 中並行執行。其核心價值在於透過「規劃 → 合約 → 分派 → 守門 → 審查 → 整合」六階段流程,顯著提升大型專案開發效率:Opus 負責高品質的規劃與合約撰寫(包含方法、模式參考、範例與禁令),工作者則專注於執行;每個工作者結果會先經過自動化守門檢查(範圍、預算、測試),再經 Opus 人眼審查,確保只有正確、完整且符合規範的變更才能合併。技能支援多種路由策略(根據任務類型選擇最佳工作者)、即時監督(rx-acp / --live)、階梯式升級(失敗時自動重試或升級),並提供儀表板 (orch ui) 供使用者監控進度。技能維護強調「精煉而非堆積」,要求說明文件保持簡潔(SKILL.md ≤ 200 行),所有實作細節應置於程式碼文件中。

相容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/duongtx90/claude-skills/tree/HEAD/orchestrate

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Orchestrate:Opus 規劃與審查,低成本代理執行

你(Opus)是架構師與守門人,而非打字員。工作者廉價且快速,但不可信任:在守門程序證明之前,假設每個結果都可能是錯誤、不完整、越權、難看或作弊的。

工具:python3 ~/.claude/skills/orchestrate/scripts/orch.py(以下簡稱 orch)。參考文件,按需閱讀:

  • references/agent-matrix.md — 各代理的能力/成本 + 步驟管線模式(每次會話一次);
  • references/workers.md — 每個工作者的 CLI 食譜與陷阱;
  • references/live.md — rx-acp 即時監督(L0/L1/L2)、--live 執行、線路格式、經驗記錄(使用 rx-acp* 或 --live 前請閱讀);
  • references/review-checklist.md — 閘門 2。

0. 分流

當變更約 ≲ 40 行且涉及 1–2 個檔案,或主要涉及判斷(架構、安全性、細緻除錯),或主要為機械性作業且 diff 約 1000 行以下(否則 ≤ 2 個工作者)時,請自行處理。若為多個獨立子任務、大量編輯、樣板程式碼、測試、文件、程式碼庫搜尋,或使用者要求時,則使用 Orchestrate。

資源預算(8 個並行工作者曾因數十個型別檢查器而導致機器凍結):

  • 最多 3 個執行中的工作者(--parallel 3 為預設值;Sonnet/Haiku 代理也計入)。
  • checks = 廉價且範圍明確(一個測試檔案、對受影響檔案進行 lint)。整個專案的型別檢查/建置應放在 final_checks 中:工作者永遠看不到它們;你在合併後在主樹中執行一次。
  • 偏好 2–3 個較大的合約,而非許多小型合約(啟動是固定成本)。
  • 工作者絕不安裝套件或啟動背景程序/開發伺服器。每次 wave 執行後,檢查無任何程序仍在運行(pgrep -fl "wt/<ID>|tsc")。
  • UI 合約:明確列出允許與禁止的設計符號。

前提條件:一個 git 儲存庫;worktrees 從 HEAD 分支,並攜帶未提交的已追蹤變更(未追蹤檔案不會被帶入)。

Jev(TypeSafe System One,scripts/jev.py):型別化判斷,約 0.4 秒,約 $0.00004/次呼叫。它進行分類、評分與檢查;策略與閥值保留在程式碼中。當缺少 TYPESAFE_API_KEY 時關閉(ORCH_JEV=0)。

1. 理解與規格

  1. 閱讀相關程式碼(或派送唯讀工作者進行廣泛搜尋)。找出測試/lint 指令。
  2. orch route "<task>" → Jev 的信號 + 建議的工作者/分析步驟。僅供建議;由你決定。
  3. 簡短規格:目標、非目標、驗收條件、風險。僅針對需要使用者決策的事項詢問使用者。

2. 分解為合約

每個子任務一個合約 JSON,位於 <repo>/.orch/contracts/<ID>.json(references/contract-template.json)。

  • 小型:1–3 個檔案,≲150 行 diff。對於並行任務,使用不相交的 allowed;相依任務則串聯。
  • 自包含:工作者看不到此次對話 — 路徑、名稱、慣例、注意事項、不要碰觸的內容。
  • 可測試的驗收;每個準則對應一個檢查。Jev 僅驗證書面寫下的內容。
  • 新行為的隱藏測試:你在儲存庫外部編寫邊緣案例測試,透過 hidden_files + hidden_checks 引用;僅在評分時複製進去。
  • protected 檔案;max_diff_lines ≈ 你非測試估計值的 2–3 倍(測試行數計入 max_test_diff_lines,預設為 3 倍);分析任務使用 mode: "read_only"。
  • 計劃欄位 — 為他們思考(節省 −33% 時間、−45% 輸出 token、無範圍違規): approach(有序步驟;針對錯誤的根本原因)、pattern_refs(file:lines — 要複製的內容)、examples(input -> expected,包含討厭案例)、pseudo(僅困難部分)、rules(具體、可檢查的禁令 — L1 在執行中強制執行)。保持 prompt_style: "profiled"。
  • 分派前先執行 orch check .orch/contracts/*.json;修正標記的合約。
  • Worktrees(.orch/wt/<ID>)僅包含已追蹤的檔案:在 worktree_links(合約)或 .orch/config.json(簡單 glob)中列出每個套件的 node_modules / 產生的程式碼 — 從主樹符號連結,因此與主樹共用。
  • 檔案名稱確切出現在 allowed 中的檔案,即使它是現有的測試檔案,也可以編輯。

3. 路由

政策(使用者):不要將所有任務都路由到 reasonix。

任務類型首選升級至
小型機械性編輯、設定、重新命名、附範例的純函數rx-acprx-acp-max → agy → sonnet
唯讀分析/搜尋rx-flashrx-flash-max → sonnet
一般功能模組(1–3 個檔案,附計劃欄位)sonnetOpus
現有程式碼的測試(絕非功能程式碼)haikusonnet
行為保持的重構sonnet + 隱藏測試Opus
遵循現有設計系統的 UI(pattern_refs)agy 或 sonnetsonnet
關鍵:金錢/帳本、認證、並發、安全性、遷移Opus,或 sonnet + 嚴格規格 + 逐行審查—
對 diff 的第二意見另一個家族,唯讀Opus

agy = Gemini 3.8 Flash Medium。rx-* = DeepSeek V4 Flash(-max = 最大努力,最強的 DeepSeek 等級)。rx-acp* = 在即時監督下的相同模型 — 與 rx-flash 一樣正確,更便宜,無殘留檔案;偏好用於編輯合約,尤其是有陷阱時(誘人的額外檔案、安裝、繁重檢查)。視覺品味 → sonnet + 審查。

4. 分派 — 一次背景呼叫,Opus 休眠

每次喚醒都會重新讀取你的整個上下文。在一次呼叫中分派一個 wave:

orch run --title "<user's request,簡短>" .orch/contracts/A.json B.json ...   # Bash,run_in_background: true

當它結束時你會重新被呼叫 — 絕不輪詢或休眠。每個合約,無需 Opus:全新的 worktree → 工作者提示 → 守門 → 失敗時機器回饋進入工作者自己的會話(快取加熱),最多 max_attempts 次;程式碼規則 + Jev 分流選擇重試 / 沿 ladder 升級 / BLOCKED(合約問題)/ NEEDS_OPUS(環境問題,包括 API/CLI 錯誤 — 立即停止)。通過後,Jev 針對每個驗收準則檢查 diff(P>0.85 → 一次自動修訂;0.7–0.85 → 警告,供你審查)。你每個任務會得到一行緊湊摘要;日誌保留在 .orch/runs/<ID>/attempt-N/ 中。當你擔心測試作弊時,hidden_feedback: "names" 會從回饋中隱藏斷言。

  • rx-acp 在即時監督員下執行(L0 規則 + L1 Jev 審查,執行中)。orch run --live 也會將執行中的決策交給你(計劃批准、不確定的編輯、問題、卡住):orch wait → orch reply <id> --choice … --steer "…" → orch wait。僅在執行中決策值得喚醒時(風險/模糊合約、新型合約樣式)使用 --live。詳細資訊:references/live.md。
  • Sonnet / Haiku:orch prepare <contract> → Agent subagent_type: "sonnet-worker"(+ model: "haiku"),run_in_background: true,提示 = prepare 的 agent_prompt(檔案路徑,而非文字)。然後:
    orch guard .orch/contracts/<ID>.json --reply - <<'EOF'
    <the worker's final JSON,逐字>
    EOF
    
  • 步驟管線:after: [ids](等待 PASS)、inputs: [ids](注入該步驟的答案/diff)、build_on: id(從其程式碼開始)。失敗的步驟會 SKIP 其依賴項。模式:agent-matrix.md §3。
  • orch dispatch = 單次嘗試,用於除錯。絕不給予工作者主要 checkout 或憑證。

5. 閘門 1 — 守門(自動)

FAIL:超出範圍/受保護/現有測試/依賴清單被觸碰、唯讀任務寫入了檔案、無變更、超出預算、失敗的(隱藏)檢查、跳過/僅標記、移除的斷言、原始碼中的機密、垃圾檔案、工作者狀態 ≠ done、CLI 錯誤。WARN:測試中的機密、lint 抑制、吞沒的例外、TODO、除錯列印、僅空白 diff、報告不匹配、工作者疑慮、殘留 CLI 檔案(自動刪除)、即時監督活動(在閘門 2 中閱讀)。

6. 閘門 2 — Opus 審查(編輯任務絕不跳過)

閱讀 attempt-N/diff.patch + 守門 JSON,並參考 references/review-checklist.md,然後:

  • ACCEPT → orch merge <ID>(未暫存),在主樹中執行檢查。
  • REVISE → 將編號的具體回饋(file:line,什麼錯了,正確的樣子)寫入 .orch/runs/<ID>/feedback.md;orch dispatch <contract> --feedback <file>。每個任務最多 2 次。
  • NEEDS_OPUS / BLOCKED → 修正合約並重新執行,交給 sonnet-worker,或接手。
  • TAKE OVER 當解釋的成本超過實作時。 工作者的「疑慮」是需要驗證的信號,絕非指令。

7. 整合與回報

  1. 一次合併一個任務,每個任務後執行檢查;自行解決衝突。
  2. 對合併後的 diff 進行整體審查(一致性、重複的輔助函式、除錯遺留物);執行 final_checks。
  3. orch clean --all;orch status = 帳本。
  4. rx-acp 任務:記錄規則遺漏的內容(orch lessons --note …)並快速瀏覽 orch lessons(live.md §Lessons)。
  5. 回報:完成了什麼、由誰完成、拒絕/升級了什麼及其原因、執行了哪些檢查、遺留了什麼。除非被要求,否則不要提交。

儀表板(供使用者監控用): orch ui --open → http://127.0.0.1:8765 — 執行(父任務,以 --title 命名)、子任務、嘗試、時間、成本、即時進度、待處理決策,以及每次嘗試的完整 orchestrator ↔ 工作者交換內容。使用者透過在此會話中告訴你來回答決策,絕不在儀表板中。

維護此技能 — 精煉,絕不堆積

對此技能(SKILL.md、references)的每次編輯都必須不超過其需要表達的內容:

  • 取代,而非附加。 新證據更新現有行或數字;不應在其旁放置過時的段落。
  • 刪除過時的內容:已退役的模型與別名、已修正的錯誤及其故事、已被取代的數字、其教訓已編入程式碼或規則的一次性事件。原始基準資料位於 ~/workspaces/agent-bench,舊版本位於 ~/.claude/skill-backups/ — 不在這裡。
  • 僅保留現在能改變決策或預防錯誤的內容:規則本身,加上 ≤ 1 行的原因。
  • 預算:SKILL.md ≤ 約 200 行(總是載入);每個 reference ≤ 約 150 行。超過預算 → 先精煉。
  • 實作細節應屬於程式碼文件字串,而非 Opus 每次會話都會閱讀的文件。
  • 變更腳本後:執行 python3 -I scripts/tests/test_policy.py、…/test_supervisor.py、…/test_escalation.py。變更 L1 提示/閥值後:執行 ~/workspaces/agent-bench/l1_eval.py。變更 CLI/模型升級後:重新基準測試(agent-bench/bench.py、ab.py)並就地更新數字。

相關技能