多 Agent 的組織方式
多 Agent 系統要同時解決角色定義、spawn、狀態查詢、取消、完成通知與資源繼承。Grok Build 的原始碼把這些職責落在定義層與協調事件層。
從 subagent_coordinator 讀出 Grok Build 的實際組織方式,能用任務依賴、上下文需求、檔案衝突和結果彙總成本選擇組織策略。
父會話透過事件通道管理一組有身份的子 Agent
Coordinator 在這裡是 Grok Build 原始碼中的真實元件名。圖形佈局屬於課程表達。
定義層:AgentDefinition + Persona
AgentDefinition 給出 prompt、工具、權限、模型、MCP 繼承和可 spawn 型別等合約。Persona 追加行為指令、I/O 契約及部分執行時預設值。二者使每個子 Agent 有可觀察身份與能力邊界。
協調層:SubagentEvent
start_subagent_coordinator 只啟動一次 drain task。每個 Spawn 事件再啟動本地非同步任務,呼叫 handle_subagent_request。
並行執行
Spawn 事件獨立進入 spawn_local,協調器登記 pending、active 與 completed 狀態。並行能力來自非同步任務,不受 Persona 數量限制。
結果與等待
Query 可立即返回快照,也可註冊 block wait slot 並輪詢狀態。Completions 會 drain 待通知完成項,並按 suppress_ids 過濾。
取消與清理
Cancel 支援按 subagent ID 或 parent prompt ID。協調器還會淘汰過期 completed 記錄,並記錄顯式 kill。
可對照的是產品表面能力
Claude Code 公開支援自訂 subagents:每個 subagent 可擁有獨立上下文、system prompt、工具權限與模型,主會話可自動委派或由使用者顯式呼叫。公開的 Agent Teams 功能描述包含共享任務、成員間訊息與獨立上下文。本課不把「Coordinator」或「Swarm」當作 Claude Code 原始碼內部型別,也不推斷其排程器實現。
單主會話委派
適合一個 owner 統一拆解、串聯依賴並彙總。Grok 的 task + coordinator 事件與 Claude 公開的 subagent 委派都能支援這類工作流。
多成員協作
適合成員需要彼此通訊、認領共享任務的工作。評估時應以公開 Agent Teams 行為和當前版本限制為準。
角色複用
適合長期重複的 reviewer、explorer、planner。Grok 用 AgentDefinition 與 Persona;Claude 公開配置用 subagent 定義檔案。
while let Some(event) = rx.recv().await {
match event {
SubagentEvent::Spawn(boxed) => { /* handle request */ }
SubagentEvent::Query(query) => { /* snapshot or block */ }
SubagentEvent::Cancel(request) => { /* cancel target */ }
SubagentEvent::ListActive(request) => { /* summaries */ }
SubagentEvent::Completions(request) => { /* drain */ }
...
}
}
快照說明:事件變體與控制結構來自真實原始碼,分支體為課堂壓縮。Claude 側沒有原始碼快照,所有描述限於公開功能行為。
課堂練習:場景決策
為下面三個場景選擇「單 Agent」「主會話 + subagents」或「多成員共享任務」,並說明並行收益、依賴關係、上下文複製成本、檔案衝突與彙總責任。