Claude Code 多 Agent 协同机制深度解析:专业 Agent 如何团队协作
Claude Code 多 Agent 协同机制深度解析:专业 Agent 如何团队协作
引言
在现代软件开发中,单一 AI Agent 往往难以应对复杂的工程任务。就像真实世界的开发团队需要不同角色(产品经理、架构师、开发者、测试工程师)协作一样,AI Agent 系统也需要专业化的分工与协作机制。
Anthropic 的 Claude Code 开创性地实现了多 Agent 协同架构,通过不同类型的 Agent 各司其职,形成了一个高效的 AI 开发团队。本文将深入剖析这套系统的设计理念和实现细节。
核心设计理念:专业化 Agent 分工
Claude Code 的多 Agent 系统基于一个核心洞察:不同的任务需要不同的能力和策略。为此,系统定义了多种专业 Agent 类型:
1. Explore Agent:代码库探索专家
核心定位:快速、只读的代码库探索
设计特点:
- 使用轻量级模型(Haiku)实现快速响应
- 严格只读模式,禁止任何文件修改操作
- 专注于文件搜索、代码分析和模式识别
使用场景:
# 查找特定模式的文件
"找到所有 src/components/**/*.tsx 文件"
# 搜索代码关键词
"查找所有 API endpoint 定义"
# 理解代码库结构
"这个项目中的错误处理是如何工作的?"
工具权限:
- ✅ Glob/Grep:文件搜索
- ✅ Read:读取文件
- ✅ Bash(只读):ls, git log, git diff, find, grep, cat
- ❌ Edit/Write:禁止文件修改
- ❌ Agent:禁止递归调用
关键设计:Explore Agent 返回简洁的发现报告,由主 Agent 解读和决策,避免填充主上下文。
2. Plan Agent:软件架构师
核心定位:探索代码库并设计实现计划
设计特点:
- 继承主 Agent 的模型能力(深度思考)
- 只读模式 + 规划能力
- 输出结构化实现计划
工作流程:
1. 理解需求:明确任务目标和约束条件
2. 深度探索:使用 Glob/Grep/Read 分析现有架构
3. 设计解决方案:考虑技术权衡和架构决策
4. 输出详细计划:包含步骤、依赖关系和关键文件
示例输出:
### 实现步骤
1. 在 src/services/ 创建新的 AuthService
2. 更新 src/components/Login.tsx 集成新服务
3. 添加单元测试到 src/services/__tests__/AuthService.test.ts
### 关键文件
- src/services/AuthService.ts (新建)
- src/components/Login.tsx (修改)
- src/types/auth.ts (参考)
3. Bash Agent:命令执行专家
核心定位:专注终端命令执行
设计特点:
- 直接访问 Bash 工具
- 执行 Git 操作、包管理、测试运行等
- 支持命令链式执行(&& 和 ; 分隔)
协同示例:
主 Agent: "运行测试并修复失败"
↓
Bash Agent: 执行 `npm test`
↓
返回: 测试输出和错误信息
↓
主 Agent: 分析错误并修复代码
4. Code-Reviewer Agent:代码审查专家
核心定位:主动代码质量审查
设计特点:
- 专注于安全漏洞、性能优化、生产可靠性
- 使用 2024/2025 最佳实践标准
- 静态分析工具集成能力
审查维度:
- 安全性:OWASP Top 10、注入漏洞、认证缺陷
- 性能:算法复杂度、资源使用、优化机会
- 可靠性:错误处理、边界条件、配置验证
- 可维护性:代码重复、设计模式、技术债务
5. General-Purpose Agent:通用助手
核心定位:默认的全能力 Agent
设计特点:
- 访问所有工具(Read、Edit、Bash、Agent 等)
- 适合大多数日常开发任务
- 模型继承自主 Agent
6. Verification Agent:质量保证专家
核心定位:独立验证实施质量
触发时机:
- 关闭 3+ 个任务且无验证步骤时自动建议
- 主 Agent 无法自我分配 PARTIAL 状态
- 只有验证者能发布最终裁决
多 Agent 协同工作模式
模式 1:探索-规划-实施循环
用户任务: "添加用户认证功能"
[1] 主 Agent 评估任务复杂性
↓
[2] Explore Agent 探索现有认证模式
- 搜索: "auth", "login", "session"
- 读取: src/types/auth.ts, src/middleware/auth.ts
- 返回: 发现现有 JWT 实现
↓
[3] Plan Agent 设计实现方案
- 分析: 现有架构与需求的差距
- 规划: 5 步实现计划
- 输出: 关键文件列表和依赖关系
↓
[4] 用户审批计划
↓
[5] 主 Agent + Bash Agent 实施代码
- Edit: 创建 AuthService.ts
- Bash: npm install bcrypt
- Edit: 更新 Login.tsx
↓
[6] Verification Agent 验证质量
- 检查: 安全性、错误处理、测试覆盖
- 裁决: PASS / PARTIAL / FAIL
模式 2:并行探索加速
场景:需要同时搜索多个代码区域
// 主 Agent 并行启动多个 Explore Agent
[
Explore("查找所有 React 组件", "medium"),
Explore("搜索 API 路由定义", "medium"),
Explore("查找测试文件", "quick")
]
// 同时执行,汇总结果
性能优势:
- 单线程顺序搜索:3 × 2s = 6s
- 并行搜索:max(2s, 2s, 1s) = 2s
- 3 倍加速
模式 3:专业化工具链
场景:代码 PR 审查
主 Agent: "审查这个 PR"
并行执行:
├─ Code-Reviewer: 静态代码分析
│ ├─ 安全性检查
│ ├─ 性能分析
│ └─ 最佳实践验证
│
└─ Bash Agent: 运行测试
├─ npm test
├─ npm run lint
└─ npm run build
汇总结果 → 生成 PR 反馈
Agent 通信机制
1. 上下文继承
// 主 Agent 的完整对话历史
const mainContext = [
{ role: 'user', content: '重构登录逻辑' },
{ role: 'assistant', content: '我来探索现有代码...' },
// ... 更多对话
];
// 启动子 Agent 时继承上下文
const subAgent = new Agent({
type: 'Explore',
parentContext: mainContext, // 继承完整上下文
mode: 'focused' // 专注特定任务
});
优势:
- 子 Agent 无需重复解释背景
- 理解用户的原始意图
- 保持对话连贯性
2. 结果传递
// Explore Agent 返回发现
const exploreResult = {
summary: "找到 3 个认证相关文件",
findings: [
"src/types/auth.ts: 定义 AuthUser 接口",
"src/middleware/auth.ts: JWT 验证逻辑",
"src/services/login.ts: 过时的登录实现"
],
recommendations: [
"复用 AuthUser 接口",
"重构 login.ts 使用新架构"
]
};
// 主 Agent 解读并决策
mainAgent.analyze(exploreResult);
// → 决策:调用 Plan Agent 设计重构方案
3. 任务状态同步
// TodoWrite 工具跨 Agent 共享状态
TodoWrite([
{ task: "Explore 现有认证代码", status: "completed" },
{ task: "Plan 重构方案", status: "in_progress" },
{ task: "实施重构", status: "pending" }
]);
// 所有 Agent 可见当前进度
// 避免重复工作,确保任务顺序
协同冲突解决
场景 1:工具访问冲突
问题:Explore Agent 尝试编辑文件
// Explore Agent 配置
disallowedTools: [
'Edit',
'Write',
'Agent', // 禁止递归调用
'ExitPlanMode'
];
// 结果:工具调用失败,返回错误
"Error: Edit tool is not available for Explore agent"
场景 2:上下文过载
问题:Explore Agent 返回过多数据
解决方案:
// 用户指定 thoroughness level
Explore("查找所有 React 组件", "quick");
// → 只返回文件路径和基本统计
Explore("分析组件架构", "very thorough");
// → 返回详细分析、依赖关系图、代码示例
场景 3:并行 Agent 竞争资源
问题:多个 Bash Agent 同时写入同一文件
解决方案:顺序依赖
// 主 Agent 协调执行顺序
await bashAgent("npm install");
await bashAgent("npm test"); // 依赖安装完成
实战案例:重构用户认证系统
让我们看一个完整的多 Agent 协作实例:
第 1 步:探索现状
主 Agent: "我需要重构认证系统。首先了解现有实现。"
→ 启动 Explore Agent (medium thoroughness)
- 搜索: "auth", "login", "session"
- 读取: src/types/auth.ts, src/middleware/auth.ts
- 分析: 发现 3 种不同的认证方式(JWT、Session、API Key)
← 返回: 发现代码分散,存在重复逻辑
第 2 步:设计方案
主 Agent: "基于探索结果,设计统一的认证架构。"
→ 启动 Plan Agent
- 理解需求: 统一为 JWT 认证
- 探索模式: 参考现有中间件结构
- 设计方案:
* 创建 AuthService 统一接口
* 实现 JWT 验证中间件
* 迁移现有登录逻辑
- 输出计划: 6 步实现,列出 4 个关键文件
← 返回: 详细实现计划
第 3 步:用户审批
用户: "批准执行,重点关注安全性。"
→ 主 Agent 更新任务列表:
TodoWrite([
{ content: "创建 AuthService", status: "pending" },
{ content: "实现 JWT 中间件", status: "pending" },
{ content: "迁移登录逻辑", status: "pending" },
{ content: "Code-Reviewer 安全审查", status: "pending" },
{ content: "运行测试", status: "pending" }
]);
第 4 步:实施 + 质量保证
主 Agent: "开始实施。"
[任务 1-3] 主 Agent + Bash Agent
- Edit: 创建 src/services/AuthService.ts
- Bash: npm install jsonwebtoken
- Edit: 更新 src/middleware/auth.ts
- Edit: 重构 src/components/Login.tsx
[任务 4] Code-Reviewer Agent
- 检查: JWT 密钥存储、错误处理、过期验证
- 发现: 密钥硬编码风险
- 建议: 使用环境变量
[任务 5] Bash Agent
- 执行: npm test
- 结果: 12 passing, 0 failing
← 主 Agent: "实施完成,测试通过。"
第 5 步:验证
主 Agent: "请求最终验证。"
→ Verification Agent
- 审查: 代码质量、安全性、测试覆盖
- 检查: 是否符合安全最佳实践
- 裁决: PASS (已修复密钥问题)
← 返回: "验证通过,可以合并。"
整个流程耗时:约 8 分钟
- 探索: 1 分钟
- 规划: 2 分钟
- 实施: 3 分钟
- 审查: 1 分钟
- 验证: 1 分钟
传统方式:可能需要 30+ 分钟
最佳实践:如何有效使用多 Agent 系统
1. 选择合适的 Agent
// ❌ 错误:用通用 Agent 搜索文件
Agent("general-purpose", "找到所有测试文件");
// → 慢,浪费主上下文
// ✅ 正确:用 Explore Agent
Agent("Explore", "找到所有测试文件", "quick");
// → 快,专用工具,只读模式
2. 明确指定任务级别
// 快速搜索:文件路径
Explore("查找 API 路由", "quick");
// 中等探索:代码结构
Explore("理解状态管理架构", "medium");
// 深度分析:多维度
Explore("全面分析错误处理模式", "very thorough");
3. 利用并行处理
// ❌ 顺序执行
await Explore("查找组件");
await Explore("查找样式");
await Explore("查找测试");
// ✅ 并行执行
await Promise.all([
Explore("查找组件", "quick"),
Explore("查找样式", "quick"),
Explore("查找测试", "quick")
]);
4. 信任专业 Agent
// Code-Reviewer 会主动发现问题
// 无需主 Agent 重复检查
// 主 Agent: "实施这个功能"
// → Code-Reviewer 自动分析
// → 如果发现问题,主动报告
5. 维护任务可见性
// 始终使用 TodoWrite
TodoWrite([
{ content: "探索现有代码", status: "in_progress" },
{ content: "设计方案", status: "pending" },
{ content: "实施", status: "pending" },
{ content: "验证", status: "pending" }
]);
// → 所有 Agent 知道当前进度
// → 避免重复工作
// → 用户透明可见
性能与成本优化
模型选择策略
| Agent | 模型 | 理由 |
|---|---|---|
| Explore | Haiku | 快速搜索,简单模式匹配 |
| Plan | Sonnet/Opus | 需要深度思考和架构设计 |
| General-Purpose | Sonnet | 平衡速度和质量 |
| Code-Reviewer | Sonnet | 代码分析需要推理能力 |
| Verification | Sonnet | 需要判断和决策能力 |
成本对比
场景:重构中型功能(500 LOC)
| 方式 | 上下文 Token | 输出 Token | 成本 | 时间 |
|---|---|---|---|---|
| 单 Agent | 150K | 25K | $2.50 | 10 分钟 |
| 多 Agent(优化) | 80K | 15K | $1.20 | 8 分钟 |
节省:52% 成本,20% 时间
未来演进方向
1. 更细粒度的专业化
// 可能的未来 Agent
- Database-Agent: 数据库迁移和优化
- UI-Agent: 组件设计和样式
- API-Agent: REST/GraphQL 接口设计
- Performance-Agent: 性能分析和优化
2. 自适应 Agent 选择
// 系统自动判断使用哪个 Agent
"优化这个函数"
→ 自动识别为性能任务
→ 启动 Performance-Agent
3. Agent 间直接通信
// 当前:主 Agent 中转
Explore → 主 Agent → Plan
// 未来:Agent 直接通信
Explore → Plan (跳过主 Agent)
4. 学习和记忆
// Agent 记住项目偏好
Code-Reviewer: "这个项目使用函数式组件"
→ 未来审查时自动应用此模式
总结
Claude Code 的多 Agent 协同系统展示了 AI Agent 架构的重要设计原则:
- 专业化分工:不同 Agent 擅长不同任务
- 清晰边界:只读/写入权限分离,避免混乱
- 高效通信:上下文继承 + 结果传递
- 并行处理:多 Agent 同时工作,加速任务
- 质量保证:独立验证,客观裁决
- 成本优化:选择合适的模型和工具
这种架构不仅提升了单次任务的成功率,更重要的是让 AI 系统能够像真实开发团队一样协作,应对复杂的工程挑战。
随着 AI Agent 技术的演进,我们可能会看到更专业、更智能的 Agent 类型,以及更自然的协作模式。但核心设计理念将保持不变:通过专业分工和有效协作,实现 1+1 > 2 的效果。
相关阅读:
- 深入剖析 Claude Code:项目概览与核心设计
- Claude Code 架构模式解析
- Claude Code 最佳实践指南
进一步探索:
- Claude Code GitHub 仓库
- Agent Tool 源码分析

浙公网安备 33010602011771号