Skip to main content

COORDINATOR_MODE — 多 Agent 编排

Feature Flag: FEATURE_COORDINATOR_MODE=1 + 环境变量 CLAUDE_CODE_COORDINATOR_MODE=1 实现状态:编排者完整可用,worker agent 为通用 AgentTool worker 引用数:32

一、功能概述

COORDINATOR_MODE 将 CLI 变为”编排者”角色。编排者不直接操作文件,而是通过 AgentTool 派发任务给多个 worker 并行执行。适用于大型任务拆分、并行研究、实现+验证分离等场景。

核心约束

  • 编排者只能使用:Agent(派发 worker)、SendMessage(继续 worker)、TaskStop(停止 worker)
  • Worker 可以使用所有标准工具(Bash、Read、Edit 等)+ MCP 工具 + Skill 工具
  • 编排者的每条消息都是给用户看的;worker 结果以 <task-notification> XML 形式到达

二、用户交互

启用方式

需要同时设置 feature flag 和环境变量。CLAUDE_CODE_COORDINATOR_MODE 可在会话恢复时自动切换(matchSessionMode)。

典型工作流

三、实现架构

3.1 模式检测

文件:src/coordinator/coordinatorMode.ts:36-41

3.2 会话模式恢复

matchSessionMode(sessionMode) 在恢复旧会话时检查存储的模式,如果当前环境变量与存储不一致,自动翻转环境变量。防止在普通模式下恢复编排会话(或反之)。

3.3 Worker 工具集

getCoordinatorUserContext() 告知编排者 worker 可用的工具列表:
  • 标准模式ASYNC_AGENT_ALLOWED_TOOLS 排除内部工具(TeamCreate、TeamDelete、SendMessage、SyntheticOutput)
  • Simple 模式CLAUDE_CODE_SIMPLE=1):仅 Bash、Read、Edit
  • MCP 工具:列出已连接的 MCP 服务器名称
  • Scratchpad:如果 GrowthBook tengu_scratch 启用,提供跨 worker 共享的 scratchpad 目录

3.4 系统提示

文件:src/coordinator/coordinatorMode.ts:111-369 编排者系统提示(getCoordinatorSystemPrompt())约 370 行,包含:

3.5 Worker Agent

文件:src/coordinator/workerAgent.ts 当前为 stub。Worker 实际使用通用 AgentTool 的 worker subagent_type。

3.6 数据流

四、关键设计决策

  1. 双开关设计:feature flag 控制代码可用性,环境变量控制实际激活。允许编译时包含但不默认启用
  2. 编排者受限:只能用 Agent/SendMessage/TaskStop,确保编排者专注于派发而非执行
  3. Worker 不可见编排者对话:每个 worker 的 prompt 必须自包含(所有必要上下文)
  4. 并行优先:系统提示强调”Parallelism is your superpower”,鼓励并行派发独立任务
  5. 综合而非转发:编排者必须理解 worker 发现,再写出具体的实现指令。禁止 “based on your findings” 类懒惰委托
  6. Scratchpad 可选共享:通过 GrowthBook 门控的共享目录,让 worker 之间持久化共享知识

五、使用方式

六、文件索引