Claude DevFleet 多代理協調系統
使用時機
當您需要派遣多個 Claude Code 代理並行處理編碼任務時使用此技能。每個代理在隔離的 git worktree 中執行,且擁有完整的工具集。
設定
DevFleet 伺服器是一個獨立的專案,並未隨 ECC 一起捆綁。請先從其儲存庫安裝並執行:https://github.com/LEC-AI/claude-devfleet
然後透過 MCP 連接到執行中的實例:
claude mcp add devfleet --transport http http://localhost:18801/mcp
首次使用前,請確認監聽在連接埠 18801 的處理程序是您安裝的 DevFleet 二進位檔案(請參閱關於 localhost MCP 伺服器的 SECURITY.md 文件)。
運作方式
使用者 → "建立一個包含認證和測試的 REST API"
↓
plan_project(prompt) → project_id + 任務 DAG
↓
向使用者顯示計劃 → 獲得批准
↓
dispatch_mission(M1) → 代理 1 在 worktree 中啟動
↓
M1 完成 → 自動合併 → 自動派遣 M2(depends_on M1)
↓
M2 完成 → 自動合併
↓
get_report(M2) → files_changed, what_done, errors, next_steps
↓
向使用者回報結果
工具
| 工具 | 用途 |
|---|---|
plan_project(prompt) | AI 將描述分解為具有連鎖任務的專案 |
create_project(name, path?, description?) | 手動建立專案,回傳 project_id |
create_mission(project_id, title, prompt, depends_on?, auto_dispatch?) | 新增任務。depends_on 是任務 ID 字串陣列(例如 ["abc-123"])。設定 auto_dispatch=true 可在依賴條件滿足時自動啟動。 |
dispatch_mission(mission_id, model?, max_turns?) | 為一個任務啟動代理 |
cancel_mission(mission_id) | 停止執行中的代理 |
wait_for_mission(mission_id, timeout_seconds?) | 阻塞直到任務完成(參閱下方注意事項) |
get_mission_status(mission_id) | 檢查任務進度(不阻塞) |
get_report(mission_id) | 讀取結構化報告(更改的檔案、測試情況、錯誤、後續步驟) |
get_dashboard() | 系統概覽:執行中的代理、統計資料、近期活動 |
list_projects() | 瀏覽所有專案 |
list_missions(project_id, status?) | 列出專案中的任務 |
關於
wait_for_mission的注意事項: 此呼叫會阻塞對話,最多持續timeout_seconds秒(預設 600)。對於長時間執行的任務,建議改用get_mission_status每 30–60 秒輪詢,以便使用者看到進度更新。
工作流程:規劃 → 派遣 → 監控 → 報告
- 規劃:呼叫
plan_project(prompt="...")→ 回傳project_id以及包含depends_on鏈和auto_dispatch=true的任務清單。 - 顯示計劃:向使用者呈現任務標題、類型和依賴鏈。
- 派遣:對根任務(
depends_on為空的任務)呼叫dispatch_mission(mission_id=<first_mission_id>)。其餘任務會隨著依賴任務完成而自動派遣(因為plan_project對它們設定了auto_dispatch=true)。 - 監控:呼叫
get_mission_status(mission_id=...)或get_dashboard()檢查進度。 - 報告:任務完成時呼叫
get_report(mission_id=...)。向使用者分享重點。
並行數量
DevFleet 預設最多同時運行 3 個代理(可透過 DEVFLEET_MAX_AGENTS 配置)。當所有插槽滿載時,啟用 auto_dispatch=true 的任務會排入任務監控佇列,並在插槽空出時自動派遣。請檢查 get_dashboard() 以了解目前插槽使用情況。
範例
全自動:規劃與啟動
plan_project(prompt="...")→ 顯示包含任務及其依賴關係的計劃。- 派遣第一個任務(
depends_on為空的任務)。 - 其餘任務會隨著依賴項解析而自動派遣(它們已設定
auto_dispatch=true)。 - 回覆使用者時附上專案 ID 和任務數量,讓使用者知道已啟動了什麼。
- 定期使用
get_mission_status或get_dashboard()輪詢,直到所有任務達到終止狀態(completed、failed或cancelled)。 - 對每個終止狀態的任務執行
get_report(mission_id=...)— 總結成功事項,並指出失敗的錯誤與後續步驟。
手動:逐步控制
create_project(name="我的專案")→ 回傳project_id。- 為第一個(根)任務建立
create_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true)→ 取得root_mission_id。 為每個後續任務建立create_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true, depends_on=["<root_mission_id>"])。 - 對第一個任務執行
dispatch_mission(mission_id=...)以啟動任務鏈。 - 完成後執行
get_report(mission_id=...)。
順序執行並含審查
create_project(name="...")→ 取得project_id。create_mission(project_id=project_id, title="實作功能", prompt="...")→ 取得impl_mission_id。dispatch_mission(mission_id=impl_mission_id),然後使用get_mission_status輪詢直到完成。get_report(mission_id=impl_mission_id)以審查結果。create_mission(project_id=project_id, title="審查", prompt="...", depends_on=[impl_mission_id], auto_dispatch=true)— 由於依賴項已滿足,任務會自動啟動。
使用指南
- 在派遣之前,務必先與使用者確認計劃,除非使用者已表示可以繼續。
- 在報告狀態時,請包含任務標題和 ID。
- 如果一個任務失敗,請在重試之前先閱讀其報告。
- 在大量派遣前,請檢查
get_dashboard()以了解代理插槽可用性。 - 任務依賴關係形成一個 DAG(有向無環圖)——請勿建立循環依賴。
- 每個代理在隔離的 git worktree 中執行,並在完成時自動合併。如果發生合併衝突,變更會保留在代理的工作分支上,以便手動解決。
- 手動建立任務時,如果希望任務在依賴項完成時自動觸發,請務必設定
auto_dispatch=true。缺少此旗標時,任務會保持為draft狀態。