14. 子代理(Subagents)
本章你将学到
- 子代理是什么,解决什么问题
- 如何创建和配置子代理
- 内置子代理的使用方式
- 子代理 vs Skill 的选择
14.1 子代理是什么
子代理(Subagent)是一个拥有独立上下文窗口的 Claude 实例,配备一套专属工具,为特定任务量身定制。
主要使用场景:
| 场景 | 为什么用子代理 |
|---|---|
| 代码库研究 | 读大量文件不污染主对话的上下文 |
| 无偏审查 | 让一个独立实例审查它自己刚写的代码(减少确认偏差) |
| 专项任务 | 安全审查、性能分析等需要专业视角的任务 |
| 并行工作 | 多个子代理同时处理不同任务 |
子代理 vs Skill 的区别:
| 特性 | Skill | Subagent |
|---|---|---|
| 上下文 | 与主会话共享 | 完全独立 |
| 工具 | 继承主会话 + 额外允许 | 独立定义 |
| 适合 | 改变 Claude 的行为方式 | 需要隔离的重任务 |
14.2 创建子代理
在 .claude/agents/ 目录下创建 Markdown 文件:
bash
# 个人级(所有项目可用)
mkdir -p ~/.claude/agents/
# 项目级(只在当前项目,可提交 git)
mkdir -p .claude/agents/示例:安全审查代理
.claude/agents/security-reviewer.md:
markdown
---
name: security-reviewer
description: 审查代码中的安全漏洞,包括注入、认证问题、数据处理缺陷。
当用户说"审查安全性"或"找安全漏洞"时使用。
tools: Read, Grep, Glob, Bash
model: opus
---
你是一名拥有 10 年经验的安全工程师。你的任务是审查代码中的安全问题。
重点关注:
- **注入漏洞**:SQL 注入、命令注入、XSS、SSTI
- **认证与授权**:会话固定、越权访问、弱密码策略
- **硬编码密钥**:API Key、密码、私钥直接写在代码里
- **不安全数据处理**:未验证的用户输入、不安全的反序列化
- **敏感信息泄露**:日志、错误信息、API 响应中的敏感数据
对每个发现:
1. 指出具体文件和行号
2. 说明漏洞类型和严重程度(高/中/低)
3. 提供具体的修复方案
4. 给出修复后的代码示例14.3 调用子代理
Claude 可以根据你的描述自动选择合适的子代理,也可以显式指定:
# 自动选择(Claude 根据描述判断)
用子代理审查这段代码的安全问题
# 显式调用
用 security-reviewer 审查 src/auth/ 目录
# 启动时指定
claude --agent security-reviewer14.4 子代理配置字段
yaml
---
name: agent-name # 代理名称(小写字母、数字、连字符)
description: 做什么用 # 帮助主 Claude 判断何时使用
tools: Read, Grep, Glob # 允许使用的工具列表
model: opus # 使用的模型(默认继承当前设置)
---常用工具组合:
| 用途 | 工具组合 |
|---|---|
| 只读分析 | Read, Grep, Glob |
| 代码审查 | Read, Grep, Glob, Bash |
| 代码修改 | Read, Edit, Write, Bash, Grep, Glob |
| 完整能力 | 省略 tools 字段(继承全部) |
14.5 内置子代理
Claude Code 预置了以下子代理:
| 代理 | 功能 | 工具 |
|---|---|---|
Explore | 快速代码库探索,只读 | Read, Grep, Glob |
Plan | 架构设计和规划,只读 | Read, Grep, Glob |
general-purpose | 通用研究和任务 | 全部 |
在提示中引用:
用 Explore 代理分析 src/db/ 目录的结构,不要修改任何东西14.6 实战示例
Writer + Reviewer 协作模式:
# 会话 A(你在操作):让主 Claude 写代码
实现一个 API 限流中间件,支持每 IP 每分钟 100 次请求
# 写完后,让子代理审查
用 security-reviewer 子代理审查刚写的 src/middleware/rateLimiter.ts,
找边界情况、竞态条件,以及和已有中间件模式的一致性问题
# 根据审查结果改进
根据审查结果修复以下问题:[子代理输出]下一步:钩子(Hooks)
