17 - Agent Teams 多智能体协作
本节目标
-
理解 Sub-agent 与 Agent Team 的本质区别(星型拓扑 vs 网状拓扑)
-
掌握 Agent Team 三大通信原语:
TaskCreate、TaskUpdate、SendMessage -
能设计 Lead Agent 角色并配置并发锁机制
-
能搭建 4 Agent 开发团队(Planner -> Coder -> Reviewer -> Debugger)并防止无限循环
核心知识点
1. Sub-agent vs Agent Team:不只是名字不同
很多开发者把 Sub-agent 和 Agent Team 混为一谈,但两者的架构差异决定了完全不同的能力上限:
| 维度 | Sub-agent(子代理) | Agent Team(代理团队) |
|---|---|---|
| 拓扑结构 | 星型拓扑:主 Agent 一控多 | 网状拓扑:Agent 之间对等通信 |
| 通信方向 | 单向:主 Agent 下发任务,Sub-agent 返回结果 | 双向:任意 Agent 之间可直接通信 |
| 状态共享 | 仅返回最终结果给主 Agent | 通过共享上下文和消息传递实时同步 |
| 适用场景 | 并行独立任务(如同时审查 3 个文件) | 有依赖关系的协作任务(如开发流水线) |
| 典型工具 | Task 工具(单次调用) |
TaskCreate + SendMessage + TaskUpdate |
一句话总结:Sub-agent 是"外包",Agent Team 是"组队"。外包适合独立工作,组队适合协作攻坚。
2. Agent Team 的通信机制
Claude Code v2.1.x 提供了三件套通信原语,构成 Agent Team 的神经系统:
// 通信三原语
interface AgentTeamCommunication {
// 1. 创建新 Agent 实例并指定其角色和能力
TaskCreate: {
agentId: string; // 唯一标识符
role: string; // 角色定义(如 "Planner", "Coder")
systemPrompt: string; // 专属系统提示词
tools: string[]; // 可用工具集
model?: string; // 可选:指定模型(默认继承)
};
// 2. 更新 Agent 状态或任务进度
TaskUpdate: {
agentId: string;
status: "running" | "blocked" | "completed" | "failed";
progress?: string; // 进度描述
result?: any; // 阶段性产出
};
// 3. Agent 间直接消息传递
SendMessage: {
fromAgentId: string;
toAgentId: string; // 目标 Agent(支持 broadcast)
messageType: "request" | "response" | "notification";
payload: string; // 消息内容
};
}
3. Lead Agent 设计模式
Lead Agent 是 Agent Team 的"项目经理",不亲自写代码,但负责:
-
任务拆解:将用户需求分解为子任务并分配给合适的 Agent
-
进度追踪:通过
TaskUpdate监控各 Agent 状态 -
冲突仲裁:当两个 Agent 产出冲突时做出决策
-
质量把关:最终检查所有产出是否满足用户需求
# Lead Agent 角色定义示例 name: lead-dev-manager role: "Tech Lead / Project Manager" system_prompt: | 你是开发团队的 Tech Lead。你的职责是: 1. 接收用户需求,拆解为可并行/串行的子任务 2. 为每个子任务选择最合适的 Agent(Planner/Coder/Reviewer/Debugger) 3. 监控进度,当 Agent 阻塞时主动协调 4. 最终验证所有产出并汇总给用户 重要规则: - 不要亲自写代码,你的价值在于协调 - 当 Reviewer 发现问题时,自动创建 Debugger Agent - 任何 Agent 连续失败 3 次,切换策略而非重试
4. 并发锁机制
多 Agent 同时操作同一文件是灾难的根源。Claude Code 提供了两种并发控制策略:
// 策略 1:文件级锁(File-level Lock)
// 某 Agent 编辑 fileA.ts 期间,其他 Agent 对该文件的写操作排队等待
const lockConfig = {
type: "file-level",
timeout: 30000, // 锁超时 30 秒自动释放
retryStrategy: "queue" // 排队等待而非报错
};
// 策略 2:区域级锁(Section-level Lock)
// 更细粒度:仅锁定文件中被修改的函数/类区域
const lockConfig = {
type: "section-level",
conflictDetection: "semantic", // 语义级冲突检测
mergeStrategy: "rebase" // 自动 rebase 非冲突修改
};
实战建议:小团队(2-3 Agent)用文件级锁足够;大团队(4+ Agent)建议区域级锁以避免瓶颈。
5. 无限循环防护
Agent Team 最常见的故障模式是"无限循环"——Reviewer 发现问题 -> Debugger 修复 -> Reviewer 又发现新问题 -> Debugger 再修复 -> 永无止境。
# 防护配置 loop_prevention: max_cycles: 5 # 同一任务链最多 5 轮 escalation_policy: "human" # 超限后升级给人类 cycle_detection: method: "hash_state" # 对状态做哈希,检测重复 similarity_threshold: 0.95 # 95% 相似视为循环 backoff: initial_delay: 0 # 首次重试无延迟 max_delay: 60 # 最大延迟 60 秒 multiplier: 2 # 指数退避
实操步骤
步骤 1:定义 4 Agent 团队的完整配置
创建 D:/18-document/claude-02/agent-team/dev-team.yml:
team: name: "fullstack-dev-team" lead: "lead-dev-manager" loop_prevention: max_cycles: 5 escalation: "human" agents: - id: "planner" role: "Planner" model: "sonnet" system_prompt: | 你是技术规划专家。接收需求后产出: 1. 技术方案(架构图 + 技术选型) 2. 任务分解(按优先级排序的子任务列表) 3. 风险识别(至少 3 个潜在风险 + 应对方案) 输出格式:结构化 Markdown,每个任务带预估工时。 tools: ["Read", "Glob", "Grep", "WebSearch"] max_turns: 15 - id: "coder" role: "Coder" model: "sonnet" system_prompt: | 你是资深全栈工程师。严格遵循 Planner 的技术方案编码。 规则: - 每个函数不超过 50 行 - 必须包含错误处理 - 写完代码后自测核心路径 - 不确定的技术决策标记 TODO 并说明原因 tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"] max_turns: 30 dependencies: ["planner"] - id: "reviewer" role: "Reviewer" model: "haiku" # 审查用轻量模型即可 system_prompt: | 你是代码审查专家。对 Coder 产出进行三级审查: 1. 安全审查:无硬编码密钥、无注入风险、无路径遍历 2. 质量审查:命名规范、函数长度、错误处理、测试覆盖 3. 架构审查:是否符合 Planner 方案,是否有过度设计 输出标准:Critical/High/Medium/Low 四级问题清单。 tools: ["Read", "Glob", "Grep", "Bash"] max_turns: 10 dependencies: ["coder"] - id: "debugger" role: "Debugger" model: "sonnet" system_prompt: | 你是调试专家。仅处理 Reviewer 标记的 Critical 和 High 问题。 修复流程: 1. 复现问题(运行代码确认) 2. 定位根因(不修表面症状) 3. 实施修复(最小改动原则) 4. 验证修复(运行相同测试确认通过) 规则:绝不引入新功能,只修 Bug。 tools: ["Read", "Edit", "Bash", "Grep"] max_turns: 15 dependencies: ["reviewer"] communication_rules: - "Planner 完成后自动触发 Coder" - "Coder 完成后自动触发 Reviewer" - "Reviewer 发现 Critical/High 问题时自动触发 Debugger" - "Debugger 修复后回链 Reviewer 进行 re-review" - "任何 Agent 连续失败 3 次,Lead Agent 介入决策"
步骤 2:启动 Agent Team
在 Claude Code 会话中:
# 使用 ag 命令加载团队配置 /ag team start --config dev-team.yml --task "实现用户认证模块:支持 JWT + OAuth2.0,包含登录、注册、Token 刷新" # 监控团队状态 /ag team status # 查看 Agent 间对话日志 /ag team logs --filter "planner->coder" # 人工介入(当循环防护触发时) /ag team intervene --agent debugger --message "改用 bcrypt 替代 argon2,兼容性优先"
步骤 3:实战观察——一次完整的开发流水线
[10:00:01] Lead Agent: 收到任务"用户认证模块" [10:00:05] Lead Agent → TaskCreate(Planner) [10:00:45] Planner → TaskUpdate: completed 产出:技术方案(JWT + OAuth2.0)+ 6 个子任务 [10:00:46] Lead Agent → TaskCreate(Coder) [10:02:30] Coder → TaskUpdate: completed 产出:auth.service.ts, jwt.strategy.ts, oauth.controller.ts [10:02:31] Lead Agent → TaskCreate(Reviewer) [10:03:10] Reviewer → TaskUpdate: completed 发现:2 Critical(密钥硬编码、缺少 CSRF),3 High,5 Medium [10:03:11] Lead Agent → TaskCreate(Debugger) [10:04:20] Debugger → TaskUpdate: completed 修复:密钥迁入环境变量、添加 CSRF 中间件、优化错误处理 [10:04:21] Lead Agent → Reviewer(re-review) [10:04:50] Reviewer → TaskUpdate: completed 结果:0 Critical,0 High,2 Medium(可接受) [10:04:51] Lead Agent → 汇总所有产出,呈现给用户
避坑指南
坑 1:把 Lead Agent 当成"超级程序员"
错误做法:Lead Agent 自己写代码,Agent Team 沦为摆设。 正确做法:Lead Agent 只做协调,所有执行工作委托给专业 Agent。如果 Lead Agent 开始写代码,说明你的任务拆解不够细。
坑 2:过度依赖自动流转
问题:配置了 coder 完成后自动触发 reviewer,但 Coder 产出的是半成品,Reviewer 审查了无效代码。 解决:在每个 Agent 的 system_prompt 中加入"完成标准"检查清单。Coder 必须在自测通过后才标记 completed。
坑 3:忽略模型成本
Haiku 审查代码的能力接近 Sonnet 的 90%,但成本仅为其 1/3。对于 Reviewer 这种"只读不写"的角色,用 Haiku 足够。不要所有 Agent 都上 Sonnet。
坑 4:无限循环的真正原因
大多数"无限循环"不是因为代码有 Bug,而是因为:
-
Planner 的方案本身不可行,Coder 被迫偏离方案
-
Reviewer 的审查标准和 Planner 的方案冲突
-
Debugger 修复一个问题引入了另一个
解决思路:当循环超过 2 轮时,让 Lead Agent 重新评估"是不是方案本身有问题",而不是继续修修补补。
课后作业
-
基础练习:将你最近完成的一个开发任务(至少涉及 3 个文件的修改)用 Agent Team 重新执行一遍。配置 Planner -> Coder -> Reviewer 三 Agent 链,记录各 Agent 耗时和产出质量。
-
进阶练习:设计一个 5 Agent 团队来处理"代码库迁移"任务:
-
Analyzer:分析旧代码库结构和依赖
-
Planner:制定迁移方案
-
Migrator:执行代码迁移
-
Tester:编写和运行测试
-
Reviewer:审查迁移后的代码 写出完整的
migration-team.yml配置文件。
-
-
思考题:在什么场景下 Agent Team 反而不如单 Agent?给出至少 3 种情况并说明原因。
总结
Agent Team 的核心价值不在"多",而在"对"。4 个角色明确、通信高效的 Agent,远比 10 个职责模糊的 Agent 有价值。记住三个关键原则:
-
角色单一职责:每个 Agent 只做一件事,做到极致
-
通信最小化:Agent 之间只传递必要信息,避免上下文污染
-
失败快速升级:不要在同一层重试太多次,超过阈值就升级给 Lead Agent 或人类
掌握了 Agent Team,你就从"使用 AI 的人"变成了"指挥 AI 团队的人"——这是 Claude Code 高阶用户的核心竞争力。
更多推荐



所有评论(0)