Grok Build · Multi-Agent Organization

多 Agent 的組織方式

多 Agent 系統要同時解決角色定義、spawn、狀態查詢、取消、完成通知與資源繼承。Grok Build 的源碼把這些職責落在定義層與協調事件層。

課程目標

從 subagent_coordinator 讀出 Grok Build 的實際組織方式,能用任務依賴、上下文需求、檔案衝突和結果彙總成本選擇組織策略。

TEACHING DIAGRAM

父會話通過事件通道管理一組有身份的子 Agent

Coordinator 在這裏是 Grok Build 源碼中的真實組件名。圖形佈局屬於課程表達。

父會話、subagent coordinator 與三個子 Agent 的關係 parent sessiontask / query / cancel SubagentCoordinatorpending · active · completedwait slots · completions exploreAgentDefinition + Persona general-purposeAgentDefinition + Persona planAgentDefinition + Persona
Grok Build 源碼側:定義與協調

定義層:AgentDefinition + Persona

AgentDefinition 給出 prompt、工具、權限、模型、MCP 繼承和可 spawn 類型等合同。Persona 追加行為指令、I/O 契約及部分運行時預設值。二者使每個子 Agent 有可觀察身份與能力邊界。

resolvetype → definition → role/persona runtime config

協調層:SubagentEvent

start_subagent_coordinator 只啓動一次 drain task。每個 Spawn 事件再啓動本地異步任務,調用 handle_subagent_request。

eventsSpawn · Query · Cancel · ListActive · Completions · Outstanding

並行執行

Spawn 事件獨立進入 spawn_local,協調器登記 pending、active 與 completed 狀態。並行能力來自異步任務,不受 Persona 數量限制。

結果與等待

Query 可立即返回快照,也可註冊 block wait slot 並輪詢狀態。Completions 會 drain 待通知完成項,並按 suppress_ids 過濾。

取消與清理

Cancel 支持按 subagent ID 或 parent prompt ID。協調器還會淘汰過期 completed 記錄,並記錄顯式 kill。

crates/codegen/xai-grok-shell/src/agent/mvp_agent/subagent_coordinator.rs crates/codegen/xai-grok-agent/src/config.rs start_subagent_coordinator handle_subagent_request
Claude 對照:只使用公開行為

可對照的是產品表面能力

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 定義檔案。

真實源碼快照
crates/codegen/xai-grok-shell/src/agent/mvp_agent/subagent_coordinator.rsREAL SOURCE · abridged
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」或「多成員共享任務」,並説明並行收益、依賴關係、上下文複製成本、檔案衝突與彙總責任。

檢索 8 個互不依賴的模組,最後彙總風險清單。
同一支付模組內連續修改 schema、service 與測試,步驟強依賴。
三個獨立服務並行遷移,成員需要互相同步接口變更。
Takeaway:多 Agent 組織先解決任務圖,再選擇產品機制。Grok 源碼展示了事件協調器和可配置 Agent 身份;跨產品比較應停留在公開行為層,避免把營銷術語寫成內部架構事實。