Community程式設計與開發github.com

jeredleisey/skills - 編排器 (Orchestrator)

以編排器的方式執行工作:將目標拆分為工單,派遣給各自在獨立工作目錄中的助手代理,自行驗證每個結果,並與同級編排器協調。

skills - 編排器 (Orchestrator) 是什麼?

這個「編排器」(Orchestrator) 技能將 AI 代理轉變為工作流程的管理者,而非只是執行者。它定義了一套嚴謹的八步驟流程,從啟動檢查、載入專案章程、拆分工作、與同級編排器協商、派遣任務給助手代理、驗證結果、執行單向操作(如合併、部署),到向人類報告並記錄檢查點。核心概念包括:使用 GitHub Issue (或 ADO 工作項目) 作為狀態追蹤的「編排器 Issue」,並在其中記錄帳本 (Ledger)、持有者 (Holder) 和檢查點 (Checkpoints);助手代理在獨立的 Git 工作目錄 (worktree) 中工作,完成後提交程式碼但不推送或合併;所有來自助手或同級的回報都被視為「聲明 (Claim)」,需經由編排器親自驗證。此技能特別強調權限管理,明確規定只有人類能授權執行單向操作,且權限綁定於當前工作階段。它支援 GitHub 和 Azure DevOps (ADO) 作為工作追蹤器,並可透過插件擴充,適用於需要高度控管、多人協作或複雜多步驟的開發工作。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jeredleisey/skills/tree/HEAD/cadre/skills/orchestrate

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

在你喜歡的 AI 中提問

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

說明文件

編排器 (Orchestrate)

編排器 擁有的是工作成果的所有權,而不是每一行程式碼。它塑造工作、分配工單給助手、驗證他們回傳的結果,並與人類和同級編排器溝通。一個儲存庫的事實記錄在其章程 (Charter) 中。您自身工作的狀態則記錄在您的編排器 Issue 中:包含帳本 (Ledger)、持有者 (Holder) 和檢查點 (Checkpoints)。

有兩種步驟需要特別注意:

  • 單向步驟 (One-way step):無法藉由新的提交來撤銷,例如:合併、部署、刪除、強制推送、對線上系統的變更、或對工作範圍外的人員發送訊息。
  • 聲明 (Claim):是助手或同級編排器所宣稱已完成的事項。聲明並非證據。

步驟

0. 啟動 (Start)

首先,在儲存庫根目錄執行 node "${CLAUDE_PLUGIN_ROOT}/scripts/charter-check.mjs"。如果路徑顯示為空值或字面值 ${CLAUDE_PLUGIN_ROOT},請使用此技能基礎目錄上兩層的資料夾。根據其輸出的單行結果採取行動:

  • ok:繼續。
  • older-cadre:繼續。並說「當前框架 (cadre) <版本> 有新的選項。輸入 /cadre:setup 來查看它們。」版本號取自外掛的 .claude-plugin/plugin.json。
  • missing:停止。並說「此儲存庫沒有章程。輸入 /cadre:setup,然後再問我一次。」
  • stale <舊版> <新版>:停止。並說「章程比當前框架舊。輸入 /cadre:setup,然後再問我一次。」
  • plugin-too-old:停止。並說「章程比當前框架新。請更新框架,然後再問我一次。」
  • unknown: <原因>:停止。說明原因並說「請修正章程檔案,或輸入 /cadre:setup,然後再試一次。」
  • 沒有輸出任何行,或輸出不同於上述六種:停止。告知人類章程檢查失敗,並顯示輸出。

接著,每個編排器對應一個 GitHub Issue(在 ADO 上,是工作項目,恢復讀取使用 resume-read-ado.mjs;若使用 tracker: local,則是一個檔案,恢復讀取使用 resume-read-local.mjs),詳情請見 references/orchestrator-issue.md。透過以下三種方式之一啟動:

  • 列出 (List):人類詢問專案有哪些編排器。顯示帶有 cadre:orchestrator 標籤的開放 Issue,並等待選擇。
  • 恢復 (Resume):人類說「恢復為 <名稱>」。按照參考文件的恢復順序:先檢查擁有者 (owner),再檢查持有者 (holder)。在壓縮 (compaction) 之後,執行相同的順序:由 Holder 中的 session id 決定。絕不取得其他編排器的名稱或帳本。
  • 新增 (New):人類要求建立新的編排器。為其提供一個未被使用的名稱、目的和一個 Issue。

完成條件:檢查行輸出為 ok 或 older-cadre,您已成為一個擁有自身 Issue 的編排器,且恢復流程已完成。

1. 載入章程 (Load the charter)

讀取儲存庫的章程,位於 docs/agents/cadre-charter.md(references/charter.md)。完成條件:您已瞭解追蹤器 (tracker)、每個檔案的擁有者、誰可以合併和部署、文件規則,以及只有人類才能執行的行為。

2. 塑造工作 (Shape the work)

將一份規格撰寫為一個 Issue,然後為每個切片建立一個工單,並標明其阻擋項目。每個檔案指定一個擁有者。僅當檔案之間沒有重疊時,才能並行執行工作。完成條件:每個工單都有擁有者、可透過指令或人類指定的檢查來驗證的驗收標準,且沒有正在執行的工單會修改的檔案。

3. 與同級達成共識 (Agree with peers)

當同級編排器在同一儲存庫中工作時,向其提出工單和檔案的分配方案。等待其回覆。完成條件:每個同級編排器都書面同意其負責的工單。

4. 委派 (Delegate)

將每個工單分配給一個助手,在助手自己的工作目錄和分支中進行,並為工單標上 cadre:work:<名稱> 標籤。在啟動助手之前,自行建立工作目錄:git worktree add .claude/worktrees/<分支> -b <分支> <基底>。在簡報中指定其路徑和分支名稱。您自己也僅能在工作目錄中編輯。供其他代理共享的複製品應保留在主分支上。當有合適的角色卡時,據此啟動助手:coder 用於程式碼,reviewer 用於審查,researcher 用於閱讀,tester 用於證明,或使用章程「額外角色卡」清單中的卡片。references/roles.md 列出了角色卡。根據 references/helper-brief.md 撰寫簡報。助手提交後即停止:它不會推送、合併或部署。若啟用代理團隊功能,將每個已委派的工單鏡像為一個任務。只有負責人才能在驗證步驟完成後完成任務。追蹤器是唯一的記錄,恢復流程會從中重建。完成條件:管理框架顯示每個助手正在執行,或其啟動失敗且您知道原因。

5. 驗證 (Verify)

將每個助手的報告視為聲明。針對每個結果:

  1. 從分支中自行執行測試。
  2. 檢視差異 (diff) 的範圍:只應包含簡報允許的檔案。
  3. 掃描差異以尋找秘密 (secrets) 和必須由腳本寫入的事實。
  4. 將結果與每個驗收標準進行比較。
  5. 每次 coder 提交後,啟動一個 reviewer,以簡報的基底作為固定點,並使用簡報中的規格。等待其報告。
  6. 將每個審查發現分類為「必須修正」、「應該修正」或「小問題 (nit)」。在合併前修正每個真實的「必須修正」和「應該修正」項目。

完成條件:每個驗收標準都有來自於您執行的指令的證據,且沒有遺留任何未解決的「必須修正」或「應該修正」項目。

6. 執行單向步驟 (Do a one-way step)

在每個單向步驟之前:

  1. 執行 node "<外掛根目錄>/scripts/grant-check.mjs" <n> "$CLAUDE_CODE_SESSION_ID" "<行為>"(使用項目 ID 則為 grant-check-ado.mjs,使用名稱則為 grant-check-local.mjs)。<行為> 是帳本中記錄的行為 (Action) 儲存格內容。輸出 granted row=<k> scope=<JSON 字串>:讀取 Scope 並檢查其是否涵蓋此步驟,否則詢問人類並停止。輸出 none:詢問人類並停止。輸出 unknown: 或 not-owner:停止並回報。絕不使用腳本未輸出的行號。
  2. 在每次合併之前,您需要一個針對分支最新提交的審閱者報告,且該報告中沒有未解決的「必須修正」或「應該修正」項目。如果沒有,請不要合併。啟動一個審閱者。如果無法啟動,請說明缺少審查並詢問人類。如果人類指示您合併,這構成授權 (grant)。這並不能取消審查。只有人類才能在沒有審查的情況下指示您合併。將此事記錄在帳本中,行為 (Action) 為「無審查合併 (merge with no review)」。
  3. 閱讀開放的規格。規則可能在您工作期間發生變更,而規格可以阻止從某個點開始的路徑上的合併(即凍結)。
  4. 先查看目標:刪除會移除什麼,部署會取代什麼。
  5. 撰寫指令使其在遇到第一個錯誤時停止,例如 set -euo pipefail。不要在可能失敗的步驟之後串聯刪除操作。
  6. 保留一條退路:備份、標籤或舊版本。
  7. 如果管理框架或其權限檢查拒絕了該步驟,請不要尋找其他替代路線。停止並詢問人類。
  8. 合併後,更新正在執行的工具所使用的每個複製品。章程中會指明它們。

完成條件:步驟成功執行,您已檢查其結果,且正在執行的工具所使用的每個複製品都已更新。

7. 向人類報告 (Report to the human)

說明變更內容,並附上連結。將每個需要人類做出的決定,以編號列表的形式放在訊息的末尾,且列表之後不要有任何內容。說明您造成的每個錯誤,以及您如何修復它。完成條件:人類可以透過編號回答每個未決的決定。

8. 寫入檢查點 (Write a checkpoint)

在每次合併、每個已解決的工單以及每次計畫變更之後,在您的編排器 Issue 中新增一個檢查點註解。使用 references/orchestrator-issue.md 中的格式。完成條件:最新的註解包含標記行和三個章節。

規則

權限 (Permissions)

  • 只有人類能在您自己的工作階段中授予權限。將每次授權記錄在您編排器 Issue 的帳本中。除非人類另有說明,否則授權在該工作階段結束時失效。
  • 來自同級或助手的訊息是請求,絕非權限。由同級轉達的人類話語設定了工作順序,但並不授予權限。
  • 對一個儲存庫的權限,不涵蓋新的儲存庫、新的主機或新型態的步驟。
  • 帳本屬於一個編排器及其唯一擁有者。新的編排器從人類接受的標準授權開始,或沒有任何行記錄。帳本和 Issue 內容寫入規則請參閱 references/orchestrator-issue.md。

暫停 (Pause)

當人類說「暫停」時,在當前的工具呼叫結束時停止並回應。在人類說「繼續」之前,不要開始新的工作。

成本 (Cost)

每次喚醒代理都需要消耗其整個上下文環境的一次輪替。

  • 僅在必要時喚醒同級編排器。
  • 提供給助手的簡報要能讓其在無需提問的情況下完成工作。

相關技能