教程概述
Subagents(子代理)是 Everything Claude Code 的核心架构特性,允许主代理将任务委托给专门的子代理,实现并行执行和专业分工。
你将学到
- ✅ Subagent 工作原理
- ✅ 创建自定义 Subagent
- ✅ 工具权限控制
- ✅ 多代理协作模式
- ✅ 迭代检索模式
什么是 Subagents?
Subagents 是独立运行的代理进程,主代理可以将特定任务委托给它们:
flowchart TD
subgraph 主代理
A[Orchestrator] --> B[任务分析]
B --> C[任务分发]
end
subgraph 子代理
D[Planner] --> E[规划]
F[Architect] --> G[架构审查]
H[Code Reviewer] --> I[代码审查]
J[Tester] --> K[测试]
end
C --> D
C --> F
C --> H
C --> J
E --> A
G --> A
I --> A
K --> A
style A fill:#e3f2fd
style D fill:#e8f5e9
style F fill:#fff3e0
style H fill:#fce4ec
为什么需要 Subagents?
| 场景 | 无 Subagents | 有 Subagents |
|---|---|---|
| 上下文管理 | 主代理上下文爆炸 | 子代理独立上下文 |
| 并行执行 | 顺序执行 | 真正并行 |
| 专业分工 | 一个代理做所有事 | 专家代理各司其职 |
| 权限控制 | 完全权限 | 可限制子代理权限 |
| 成本优化 | 全部用高级模型 | 简单任务用便宜模型 |
Subagent 架构图
flowchart LR
subgraph 用户
U[用户请求]
end
subgraph 主代理
O[Orchestrator<br/>Opus/Sonnet]
end
subgraph 子代理池
S1[Explorer<br/>Haiku]
S2[Planner<br/>Sonnet]
S3[Architect<br/>Opus]
S4[Reviewer<br/>Sonnet]
S5[Tester<br/>Haiku]
end
U --> O
O --> S1
O --> S2
O --> S3
O --> S4
O --> S5
S1 --> O
S2 --> O
S3 --> O
S4 --> O
S5 --> O
目录结构
~/.claude/agents/
├── planner.md # 功能实现规划
├── architect.md # 系统架构设计
├── tdd-guide.md # 测试驱动开发
├── code-reviewer.md # 代码质量审查
├── security-reviewer.md # 安全漏洞分析
├── build-error-resolver.md # 构建错误解决
├── e2e-runner.md # 端到端测试
├── refactor-cleaner.md # 代码清理
└── doc-updater.md # 文档同步
创建自定义 Subagent
Subagent 文件格式
创建 ~/.claude/agents/my-agent.md:
---
name: my-agent
description: "代理描述"
model: sonnet # haiku/sonnet/opus
tools:
allowed:
- Read
- Grep
- Glob
denied:
- Bash
- Write
timeout: 300 # 秒
---
# Agent 角色定义
你是一个专门的 [角色],负责 [职责]。
## 工作流程
1. 接收任务
2. 分析需求
3. 执行操作
4. 返回结果
## 输出格式
[定义期望的输出格式]
示例 1:代码审查 Agent
创建 ~/.claude/agents/code-reviewer.md:
---
name: code-reviewer
description: "代码质量和安全审查专家"
model: sonnet
tools:
allowed:
- Read
- Grep
- Glob
- Bash
denied:
- Write
- Edit
timeout: 300
---
# 代码审查专家
你是一个专业的代码审查专家,负责审查代码质量和安全性。
## 审查范围
### 1. 代码质量
- 命名规范
- 代码重复
- 复杂度
- 可读性
### 2. 安全检查
- 输入验证
- SQL 注入
- XSS 漏洞
- 敏感数据暴露
### 3. 性能
- 算法复杂度
- 资源泄漏
- 不必要的计算
### 4. 最佳实践
- 设计模式
- SOLID 原则
- 错误处理
## 输出格式
```markdown
## 审查报告
### 严重问题 (Critical)
- [文件:行号] 问题描述
### 重要问题 (Major)
- [文件:行号] 问题描述
### 建议改进 (Minor)
- [文件:行号] 建议内容
### 整体评分
X/10
### 改进建议
[具体改进步骤]
### 示例 2:测试运行 Agent
创建 `~/.claude/agents/test-runner.md`:
```markdown
---
name: test-runner
description: "执行测试并分析结果"
model: haiku
tools:
allowed:
- Bash
- Read
- Grep
denied:
- Write
- Edit
timeout: 600
---
# 测试运行器
你负责运行测试套件并分析结果。
## 工作流程
1. 检测项目类型和测试框架
2. 运行适当的测试命令
3. 分析测试结果
4. 报告失败原因
## 测试命令映射
| 项目类型 | 命令 |
|---------|------|
| Node.js | `npm test` 或 `pnpm test` |
| Python | `pytest` |
| Go | `go test ./...` |
| Rust | `cargo test` |
## 输出格式
```markdown
## 测试结果
### 摘要
- 总测试数: X
- 通过: X
- 失败: X
- 跳过: X
### 失败详情
[失败的测试及原因]
### 建议修复
[如何修复失败的测试]
### 示例 3:文档更新 Agent
创建 `~/.claude/agents/doc-updater.md`:
```markdown
---
name: doc-updater
description: "保持文档与代码同步"
model: haiku
tools:
allowed:
- Read
- Write
- Edit
- Glob
- Grep
timeout: 300
---
# 文档更新器
你负责确保文档与代码实现保持同步。
## 检查项
1. API 文档与实际接口一致
2. README 中的示例可运行
3. CHANGELOG 更新
4. 注释与代码逻辑匹配
## 输出格式
```markdown
## 文档更新报告
### 需要更新的文档
- [文件] 更新原因
### 已更新的内容
- [文件] 具体更改
### 建议
[文档改进建议]
## 工具权限控制
### 权限级别
```mermaid
flowchart TD
A[完全权限] --> B[读写执行]
A --> C[只读]
A --> D[无权限]
B --> E["Read, Write, Edit, Bash"]
C --> F["Read, Grep, Glob"]
D --> G["无工具"]
配置方式
# 在 agent 文件中
tools:
allowed:
- Read
- Grep
- Glob
- Bash # 允许的命令可能有限制
denied:
- Write # 禁止写入
- Edit # 禁止编辑
安全最佳实践
- 最小权限原则 - 只授予必要的工具
- 沙箱执行 - 敏感操作在沙箱中运行
- 审查日志 - 记录所有子代理操作
- 超时限制 - 防止无限执行
多代理协作模式
模式 1:流水线模式
sequenceDiagram
participant O as Orchestrator
participant P as Planner
participant A as Architect
participant I as Implementer
participant R as Reviewer
O->>P: 需求分析
P->>A: 设计方案
A->>I: 实现计划
I->>R: 代码审查
R->>O: 最终结果
适用场景:大型功能开发
模式 2:并行审查模式
sequenceDiagram
participant O as Orchestrator
participant R1 as Code Reviewer
participant R2 as Security Reviewer
participant R3 as Performance Reviewer
O->>R1: 代码审查
O->>R2: 安全审查
O->>R3: 性能审查
par 并行执行
R1-->>O: 质量报告
R2-->>O: 安全报告
R3-->>O: 性能报告
end
O->>O: 汇总结果
适用场景:代码审查、发布前检查
模式 3:迭代检索模式
当子代理缺少主代理的语义上下文时,使用迭代检索:
sequenceDiagram
participant O as Orchestrator
participant S as Subagent
O->>S: 任务请求
S->>O: 初步结果
Note over O: 评估结果是否充分
alt 需要更多信息
O->>S: 追问 + 上下文
S->>O: 补充结果
else 结果充分
O->>O: 接受结果
end
关键规则:
- 传递目标上下文,不只是查询
- 最多 3 轮迭代
- 每轮返回明确结论
模式 4:探索 vs 执行
flowchart LR
subgraph 探索型
A[Explorer] --> B[收集信息]
B --> C[返回摘要]
end
subgraph 执行型
D[Executor] --> E[修改代码]
E --> F[返回结果]
end
G[Orchestrator] --> A
G --> D
选择依据:
- 探索型:只读操作、信息收集
- 执行型:写操作、代码修改
协作模式时序图
以下是一个完整的多代理协作流程:
sequenceDiagram
participant U as 用户
participant O as Orchestrator
participant E as Explorer
participant P as Planner
participant I as Implementer
participant R as Reviewer
U->>O: 实现用户认证功能
Note over O: Phase 1: RESEARCH
O->>E: 探索现有代码结构
E->>O: research-summary.md
Note over O: Phase 2: PLAN
O->>P: 创建实现计划
P->>O: plan.md
Note over O: Phase 3: IMPLEMENT
O->>I: 执行计划
I->>O: 代码更改
Note over O: Phase 4: REVIEW
O->>R: 代码审查
R->>O: review-comments.md
Note over O: Phase 5: VERIFY
O->>I: 修复审查问题
I->>O: 最终代码
O->>U: 完成
使用 Subagents
在对话中调用
# 显式委托
使用 code-reviewer 审查 src/auth.ts
# 并行委托
同时运行 code-reviewer 和 security-reviewer 审查这个 PR
# 流水线模式
按顺序运行: planner -> architect -> implementer
通过 Skill 触发
在 Skill 中定义自动委托:
# 复杂开发流程
## 触发条件
- 用户要求实现新功能
- 预计涉及 >5 个文件
## 工作流程
1. 委托 planner 创建计划
2. 委托 architect 审查设计
3. 委托 executor 实现代码
4. 委托 reviewer 审查质量
最佳实践
1. 选择正确的模型
| 任务类型 | 推荐模型 | 原因 |
|---|---|---|
| 文件搜索 | Haiku | 快速、便宜 |
| 简单编辑 | Haiku | 单文件操作 |
| 多文件实现 | Sonnet | 平衡性能与成本 |
| 架构决策 | Opus | 需要深层推理 |
| 安全审查 | Opus | 不能遗漏漏洞 |
2. 限制并发数
建议同时运行 ≤4 个子代理
原因:
- 避免资源竞争
- 保持主代理上下文清晰
- 降低 API 调用成本
3. 明确输出格式
✅ 好的输出定义
输出格式:
- 文件列表
- 具体更改
- 验证步骤
❌ 模糊的输出定义
输出:审查结果
小结
关键要点
- ✅ Subagents 实现并行执行和专业分工
- ✅ 通过工具权限控制限制子代理能力
- ✅ 选择合适的模型优化成本
- ✅ 使用迭代检索处理上下文缺失
- ✅ 定义清晰的输出格式
系列导航:
- ← 上一篇:教程 4:Hooks - 自动化触发器完全指南
- → 下一篇:教程 6:MCP 配置与上下文管理
- 返回:教程系列索引