大型任务最怕上下文窗口撑不住,或者前后任务互相干扰。Claude Code 的子代理系统解决了这个问题:把任务分发给多个专门的 AI 代理并行处理,主代理只负责协调和整合结果。
什么是子代理?
子代理(Sub-Agent)是 Claude Code 派生出的独立 AI 实例,有自己的上下文窗口和工具权限。主代理分配任务,子代理独立执行,结果汇报给主代理。
类比:你是项目经理(主代理),有前端工程师、后端工程师、测试工程师(子代理)分别处理各自的任务,你负责协调和最终整合。
为什么要用子代理?
| 问题 | 子代理如何解决 |
|---|---|
| 上下文窗口不够 | 每个子代理独立上下文,互不干扰 |
| 大任务耗时长 | 多个子代理并行,总时间大幅缩短 |
| 不同任务需不同专注点 | 每个子代理专注自己的领域 |
| 主代理上下文被污染 | 子代理的探索结果不污染主代理 |
查看可用子代理
/agents
列出所有可用的子代理,也可以从这里创建新的。
自动委派
Claude Code 会自动判断哪些任务适合交给子代理:
对最近的代码改动做安全审查
运行所有测试,修复所有失败的用例
Claude 会自动启动子代理,分别处理不同模块的测试修复,最终整合结果。
显式指定子代理
也可以明确指定用哪个子代理:
用代码审查子代理检查 auth 模块的安全问题
用调试子代理调查为什么用户无法登录
创建自定义子代理
通过 UI 创建
输入 /agents,选择"Create New",按提示填写:
| 字段 | 说明 |
|---|---|
| ID | 唯一标识,如 security-reviewer |
| 描述(Description) | 触发自动委派的关键——描述清楚什么时候使用这个代理 |
| 工具权限 | 这个代理能用哪些工具 |
| System Prompt | 代理的专业领域和行为规范 |
通过文件创建
在 .claude/agents/ 目录下创建 YAML 文件(项目范围,可 Git 共享):
# .claude/agents/security-reviewer.yaml
name: security-reviewer
description: 专门做安全代码审查。用于:发现 SQL 注入、XSS、CSRF、认证绕过等安全漏洞
tools:
- Read
- Bash(grep:find:git)
system_prompt: |
你是一个专注代码安全的审查专家,有 10 年安全工程经验。
审查时重点关注 OWASP Top 10:
1. SQL 注入:检查所有数据库查询是否使用参数化
2. XSS:检查所有用户输入是否正确转义
3. CSRF:检查状态变更操作是否有 CSRF 保护
4. 认证绕过:检查所有敏感端点是否有权限验证
5. 敏感数据暴露:检查日志、错误信息是否泄露敏感信息
输出格式:
- 严重程度:Critical/High/Medium/Low
- 位置:文件名 + 行号
- 问题描述
- 修复建议(附代码示例)个人专用子代理放在 ~/.claude/agents/(所有项目可用)。
并行处理大型任务实战
场景:大型代码库安全审查
对整个代码库做安全审查。
把任务分给多个子代理并行处理:
- 一个负责 /src/api(API 端点安全)
- 一个负责 /src/auth(认证和权限)
- 一个负责 /src/db(数据库查询安全)
汇总所有发现,按严重程度排序
三个子代理同时工作,总时间是单个代理处理最长部分的时间,而不是三者之和。
场景:并行实现多个功能
实现以下三个独立功能,可以并行:
1. 用户头像上传(上传到 S3,存储 URL)
2. 邮件通知系统(用 SendGrid,支持模板)
3. 操作日志记录(记录所有用户操作到数据库)
每个功能独立,实现完成后在主分支合并
场景:测试修复
运行完整测试套件,把失败的测试分组,
用多个子代理并行修复不同模块的测试失败
子代理的 Auto Memory(持久学习)
子代理也可以启用 Auto Memory,在工作中自动积累知识:
// .claude/agents/backend-expert.yaml 里的 settings 部分
settings:
autoMemory: true子代理记住的内容存储在对应工作区的内存文件里,下次调用同一子代理时自动加载。
最佳实践
1. 描述要精准(触发自动委派的关键)
❌ 模糊描述:
description: 做代码相关的事情✅ 精准描述:
description: >
专门审查 Python 代码的安全漏洞。
当用户提到"安全审查"、"检查漏洞"、"OWASP"时使用。2. 工具权限最小化
子代理只给它需要的工具:
# 只读审查子代理,不给写权限
tools:
- Read
- Bash(grep:find:git log:git diff)
# 不要给 Write、Edit3. 任务粒度合适
- 太小:子代理开销大于收益,直接在主代理做更快
- 太大:子代理自己的上下文也会撑满
经验:一个子代理处理一个内聚的模块或功能最合适。
4. 利用 Git Worktree 完全隔离
并行开发不同功能时,配合 Git Worktree 使用,每个子代理在独立分支上工作:
# 手动创建工作区(也可以让 Claude 自动管理)
git worktree add ../project-feature-auth feature/auth
git worktree add ../project-feature-notifications feature/notifications来源:Claude Code Sub-Agents 文档 | Anthropic 官方文档