源码位置:
src/coordinator/编译开关:feature('COORDINATOR_MODE')环境变量:CLAUDE_CODE_COORDINATOR_MODE
主 Claude 变成纯指挥官,Worker 并行执行任务。
Coordinator 模式将 Claude 分成两个角色:
| 角色 | 职责 | 可用工具 |
|---|---|---|
| Coordinator(指挥官) | 理解目标、拆解任务、综合结果 | 仅 Agent、SendMessage、TaskStop |
| Worker(执行者) | 具体代码操作 | 完整工具集(过滤掉内部工具) |
Coordinator 不直接操作代码,只负责:
Agent 工具派生 WorkerSendMessage 向已有 Worker 发送后续指令TaskStop 停止方向错误的 Worker// src/coordinator/coordinatorMode.ts
export function isCoordinatorMode(): boolean {
if (feature('COORDINATOR_MODE')) {
return isEnvTruthy(process.env.CLAUDE_CODE_COORDINATOR_MODE)
}
return false
}
需要同时满足:
COORDINATOR_MODE flag 启用CLAUDE_CODE_COORDINATOR_MODE 环境变量为真| 阶段 | 执行者 | 目的 |
|---|---|---|
| Research | Worker(并行) | 调查代码库,查找文件,理解问题 |
| Synthesis | Coordinator 自身 | 阅读发现,理解问题,编写实施规格 |
| Implementation | Worker | 按规格做精准改动 |
| Verification | Worker | 测试改动是否生效 |
Worker 的执行结果以 XML 格式注入回 Coordinator 的对话流:
<task-notification>
<task-id>{agentId}</task-id>
<status>completed|failed|killed</status>
<summary>{状态摘要}</summary>
<result>{Worker 的最终文本回复}</result>
<usage><total_tokens>N</total_tokens></usage>
</task-notification>
| 任务类型 | 并行策略 |
|---|---|
| 只读任务(研究) | 自由并行 |
| 写操作任务(实施) | 同一组文件同时只能一个 Worker |
| 验证任务 | 可以与实施任务在不同文件区域并行 |
Coordinator 根据上下文重叠度决定继续已有 Worker 还是创建新 Worker:
| 场景 | 决策 | 方式 |
|---|---|---|
| 研究的文件就是要编辑的文件 | Continue | SendMessage |
| 研究范围广但实施范围窄 | Spawn fresh | Agent |
| 修正失败或扩展近期工作 | Continue | SendMessage |
| 验证另一个 Worker 刚写的代码 | Spawn fresh | 独立视角 |
| 第一次方案完全错误 | Spawn fresh | 避免锚定效应 |
系统提示词中强调的核心原则:
Coordinator 必须自己做综合分析
当 tengu_scratch feature gate 启用时:
matchSessionMode() 函数处理模式冲突:
如果当前进程处于 coordinator 模式但被恢复的会话是 normal 模式(或反之),会自动翻转 CLAUDE_CODE_COORDINATOR_MODE 环境变量以匹配会话的原始模式。
| 文件 | 职责 |
|---|---|
src/coordinator/coordinatorMode.ts |
核心逻辑(~370 行):模式检查、工具过滤、提示词、Worker 管理 |
src/coordinator/workerAgent.ts |
Worker Agent 常量定义 |