多 Agent 协调
Claude Code 支持多 Agent 并行协作,通过 coordinator/ 模块和 Agent 工具实现复杂任务的分解与并行处理。
协调架构
┌──────────────────────────────────────┐
│ 主 Agent (Parent) │
│ 完整上下文 · 所有工具 · 决策者 │
├──────────────┬───────────────────────┤
│ │ │
│ ┌──────────▼──────────┐ │
│ │ Agent 协调器 │ │
│ │ (coordinator/) │ │
│ └──┬──────┬──────┬────┘ │
│ │ │ │ │
│ ┌──▼──┐┌──▼──┐┌──▼──┐ │
│ │ A1 ││ A2 ││ A3 │ 子 Agent │
│ └─────┘└─────┘└─────┘ │
└──────────────────────────────────────┘
子 Agent 类型
General Purpose(通用)
拥有所有工具的完整 Agent,适合需要读写操作的任务。
Explore(探索)
只读 Agent,专注于代码探索和信息收集。适合:
- 搜索代码模式
- 阅读文件了解结构
- 回答关于代码库的问题
Plan(规划)
只读 Agent,专注于架构设计。适合:
- 设计实施方案
- 识别关键文件
- 评估架构取舍
Code Reviewer(代码审查)
审查型 Agent,专注于代码质量。适合:
- 对照计划审查实现
- 检查编码规范
- 发现潜在问题
通信机制
Agent → Parent
子 Agent 完成后返回单条结果消息给父 Agent:
子 Agent 执行任务
↓
收集结果
↓
返回结果字符串给父 Agent
↓
父 Agent 继续推理
Parent → Agent
通过 SendMessage 工具向运行中的 Agent 发送消息:
SendMessage({
to: "explorer-agent", // Agent 名称
message: "也检查一下 utils 目录"
})
Agent ← → Agent
Agent 之间不直接通信,所有协调通过父 Agent 中转。
并行执行策略
独立任务并行
当多个任务之间没有依赖关系时,同时启动:
// 在一条消息中启动多个 Agent
Agent({ name: "search-api", prompt: "搜索所有 API 端点" })
Agent({ name: "search-db", prompt: "搜索所有数据库查询" })
Agent({ name: "search-test", prompt: "搜索所有测试文件" })
前台 vs 后台
| 模式 | 适用场景 |
|---|---|
| 前台 (默认) | 需要结果才能继续 |
后台 (run_in_background) | 有独立工作要做 |
// 后台运行,完成后自动通知
Agent({
prompt: "运行完整测试套件",
run_in_background: true
})
// 不等待,继续做其他工作
Worktree 隔离
设置 isolation: "worktree" 让 Agent 在独立的 Git 工作树中运行:
主仓库 (main)
├── worktree-1/ (feature-a 分支)
│ └── Agent 1 独立开发
├── worktree-2/ (feature-b 分支)
│ └── Agent 2 独立开发
└── 原始目录不受影响
优势:
- 并行修改同一文件不冲突
- 完成后可选择合并或丢弃
- 自动清理无变更的 worktree
团队协作
通过 TeamCreate 工具创建 Agent 团队:
TeamCreate({
team_name: "frontend-team",
description: "前端开发团队",
agents: [
{ name: "designer", type: "general-purpose" },
{ name: "developer", type: "general-purpose" },
{ name: "reviewer", type: "code-reviewer" }
]
})
最佳实践
- 明确任务边界 — 每个子 Agent 应有清晰的任务范围
- 优先使用 Explore — 信息收集用只读 Agent,安全且高效
- 合理使用后台 — 只在有独立工作时使用后台模式
- 避免过度分解 — 简单任务不需要多 Agent
- 提供充分上下文 — 子 Agent 不继承父 Agent 的对话历史,需要在 prompt 中提供完整信息