Claude Code 进阶:用 Subagents 打造你的 AI 开发团队

上周我在用 Claude Code 做一个代码审查任务,让它同时检查安全漏洞、代码风格和测试覆盖率。跑到一半,Claude 开始”忘事”——之前分析过的文件,它又重新问了一遍。上下文窗口撑不住了。
这不是 Claude 的问题,是我用错了方式。
Subagents(子代理)就是为这种场景设计的。三个 Subagents 并行跑,各自有独立的上下文窗口,互不干扰,几秒钟后三份报告同时返回。
根据 Anthropic 的数据,截至 2026 年 2 月,4% 的公开 GitHub 提交是由 Claude Code 创建的,Anthropic 自己 90% 的代码都是 AI 编写的。Subagents 是这个效率背后的关键技术之一。
什么是 Subagents?为什么需要它
先搞清楚一个概念:Subagents 不是”更强大的 Claude”,而是”更多的 Claude”。
传统方式:
你在一个 Claude 会话中做所有事情。分析代码、写新功能、运行测试、生成文档。所有的对话历史、代码内容、分析结果都堆在一个上下文窗口里。
随着任务进行,上下文越来越满。Claude 开始”忘记”之前的内容,或者需要花更多 token 来处理无关信息。
Subagents 方式:
你把任务拆分成多个独立的子任务,每个子任务由一个 Subagent 处理。每个 Subagent 有自己的上下文窗口,只关注自己的任务。
主 Claude 负责协调,Subagents 负责执行。就像一个项目经理带着几个专家团队。
Subagents 的三大优势:
1. 保持上下文清晰
探索代码库、实验性修改、调试输出,这些都不会污染你的主对话。主对话只保留关键决策和最终结果。
2. 并行处理任务
多个 Subagents 可以同时运行。代码审查从”逐个检查”变成”并行扫描”,时间从分钟级降到秒级。
3. 专业化分工
每个 Subagent 可以有专门的系统提示、工具权限、甚至使用不同的模型。安全审查用 Opus(最强),代码格式检查用 Haiku(最快最便宜)。
Subagents 和其他概念的区别
在深入实践之前,我们需要理解 Subagents 和其他概念的区别。
Subagents vs Skills
- Skills 是知识和流程,告诉 Claude 怎么做事
- Subagents 是独立的执行者,有自己的上下文和工具
Skills 像是操作手册,Subagents 像是专业团队成员。
Subagents vs MCP
- MCP 提供外部工具的访问能力
- Subagents 是独立的 AI 助手,可以使用这些工具
MCP 是工具箱,Subagents 是使用工具的人。
Subagents vs Agent Teams
- Subagents 在同一个会话中工作,向主 Claude 报告
- Agent Teams 是多个独立的 Claude 会话,可以互相通信
Subagents 像是一个团队的不同角色,Agent Teams 像是多个独立的团队在协作。
90% 的情况下,你需要的是 Subagents。只有在极其复杂的项目中,才需要 Agent Teams。
内置的 Subagents:开箱即用
Claude Code 自带了三个内置 Subagents,你可以直接使用。
1. Explore(探索者)
用途:快速搜索和分析代码库
特点:
- 只读权限(Read, Grep, Glob)
- 不会修改任何文件
- 专门优化了搜索性能
使用场景:
1 | 让 Explore 找出所有使用了 useState 的组件 |
1 | 用 Explore 分析这个项目的目录结构 |
Explore 会在独立的上下文中搜索,不会占用你的主对话空间。
2. Plan(规划者)
用途:制定实现方案,不执行代码
特点:
- 只读权限
- 专注于分析和规划
- 给出详细的实现步骤
使用场景:
1 | 让 Plan 设计一个用户认证模块的实现方案 |
1 | 用 Plan 分析如何重构这个组件 |
Plan 会给你一个清晰的实现计划,然后你可以决定是否执行。
3. general-purpose(通用助手)
用途:处理各种通用任务
特点:
- 完整的工具权限
- 可以读写文件、执行命令
- 适合独立的子任务
使用场景:
1 | 让 general-purpose 生成测试用例 |
1 | 用 general-purpose 更新文档 |
这三个内置 Subagents 已经能覆盖很多场景。但真正的威力在于创建自定义 Subagents。
实战:创建你的第一个 Subagent
让我们创建一个”代码审查”Subagent,专门用于审查代码质量。
第一步:使用 /agents 命令
在 Claude Code 中输入:
1 | /agents |
选择 “Create new subagent”,然后选择作用域:
- user:在所有项目中可用
- project:只在当前项目中可用
我们选择 user,这样可以在所有项目中使用这个 Subagent。
第二步:定义 Subagent
Claude 会引导你填写信息:
Name(名称):
1 | code-reviewer |
Description(描述):
1 | 审查代码质量、安全性和最佳实践。检查潜在的 bug、性能问题、安全漏洞。适用于 PR 审查、代码重构前的评估。 |
描述很重要,Claude 会根据描述判断何时自动调用这个 Subagent。
System Prompt(系统提示):
Claude 会根据你的描述生成一个系统提示,你可以修改:
1 | 你是一个代码审查专家,专注于代码质量、安全性和最佳实践。 |
第三步:配置工具和模型
Tools(工具权限):
代码审查只需要读取权限:
1 | Read, Grep, Glob |
不给 Write、Edit、Bash 权限,确保 Subagent 不会修改代码。
Model(模型):
代码审查需要较强的推理能力,选择 sonnet:
1 | sonnet |
如果预算紧张,可以用 haiku,但质量会稍差。
第四步:保存和测试
保存后,Subagent 会被创建在 ~/.claude/agents/code-reviewer/AGENT.md。
测试一下:
1 | 让 code-reviewer 审查 src/auth/login.js |
Claude 会调用你的 Subagent,在独立的上下文中审查代码,然后返回报告。
手动创建 Subagent:理解 AGENT.md 结构
如果你想更精细地控制 Subagent,可以手动创建 AGENT.md 文件。
文件位置
用户级(所有项目可用):
1 | ~/.claude/agents/subagent-name/AGENT.md |
项目级(只在当前项目可用):
1 | project/.claude/agents/subagent-name/AGENT.md |
文件结构
1 | --- |
Frontmatter 字段说明
name(必需):Subagent 的名称,用于调用
description(必需):描述何时使用这个 Subagent,Claude 根据这个判断是否自动调用
tools(可选):限制 Subagent 可以使用的工具
- 不指定:继承所有可用工具
- 指定列表:只能使用列表中的工具
- 常用工具:
Read,Write,Edit,Bash,Grep,Glob
model(可选):指定使用的模型
haiku:最快最便宜,适合简单任务sonnet:平衡性能和成本(默认)opus:最强推理能力,适合复杂任务
memory(可选):是否启用记忆功能
true:Subagent 可以记住之前的发现和模式false:每次都是全新的上下文(默认)
并行运行多个 Subagents
Subagents 的真正威力在于并行处理。
场景:全面代码审查
你可以同时运行多个 Subagents,每个关注不同方面:
1 | 同时运行以下审查: |
Claude 会并行启动这四个 Subagents,每个在独立的上下文中工作。几秒钟后,你会收到四份独立的报告。
场景:多语言项目分析
1 | 并行分析: |
每个 Subagent 专注于自己熟悉的领域,效率远高于一个通用 Agent。
性能对比
传统方式(单个 Claude):
- 逐个检查每个文件
- 所有分析结果堆在一个上下文中
- 总耗时:5-10 分钟
Subagents 并行方式:
- 多个 Subagents 同时工作
- 每个有独立的上下文
- 总耗时:30-60 秒
速度提升 5-10 倍。
高级技巧
技巧一:成本优化
不同的任务用不同的模型:
1 | --- |
1 | --- |
Haiku 的成本是 Opus 的 1/5。合理分配模型可以大幅降低成本。
技巧二:工具权限最小化
只给 Subagent 必需的权限:
1 | --- |
这样可以防止 Subagent 意外修改文件或执行危险命令。
技巧三:启用记忆功能
对于需要学习项目模式的 Subagent,启用记忆:
1 | --- |
Subagent 会在 ~/.claude/agents/code-reviewer/memory/ 目录下保存记忆。
技巧四:与 MCP 集成
Subagent 可以使用 MCP 工具:
1 | --- |
Subagent 可以自动完成整个 PR 审查流程。
最佳实践
1. 一个 Subagent 一个职责
不要创建”万能 Subagent”。每个 Subagent 应该专注于一个明确的任务。
好的例子:
security-scanner:只检查安全问题performance-analyzer:只分析性能test-generator:只生成测试用例
不好的例子:
code-helper:什么都做
职责单一的 Subagent 更容易维护,Claude 也更容易判断何时调用。
2. 写清楚 description
description 是 Claude 判断何时调用 Subagent 的关键。要包含:
- 这个 Subagent 做什么
- 什么时候使用
- 相关的关键词
好的 description:
1 | description: 扫描代码中的安全漏洞,包括 SQL 注入、XSS、CSRF、敏感信息泄露。适用于上线前的安全检查、PR 审查、代码审计。关键词:安全、漏洞、注入、XSS |
不好的 description:
1 | description: 检查代码 |
3. 限制工具权限
遵循最小权限原则。只给 Subagent 必需的工具。
- 只读任务:
Read, Grep, Glob - 代码生成:
Read, Write, Grep, Glob - 完整任务:
Read, Write, Edit, Bash, Grep, Glob
不要给所有 Subagent 完整权限。
4. 合理选择模型
根据任务复杂度选择模型:
- Haiku:格式检查、简单搜索、日志分析
- Sonnet:代码审查、重构建议、测试生成(默认)
- Opus:架构设计、复杂问题诊断、安全审计
成本差异:Haiku < Sonnet < Opus(1:3:5)
5. 提供清晰的输出格式
在系统提示中定义输出格式,让结果更易读:
1 | ## 输出格式 |
6. 版本控制 Subagent 配置
把项目级 Subagent 提交到 Git:
1 | git add .claude/agents/ |
这样团队成员都能使用相同的 Subagents。
常见问题排查
问题 1:Subagent 没有被自动调用
症状:你创建了 Subagent,但 Claude 从不自动使用它。
原因:description 不够清晰,或者与任务不匹配。
解决:
- 检查 description 是否包含关键词
- 尝试显式调用:
让 code-reviewer 审查这个文件 - 如果显式调用有效,说明 Subagent 本身没问题,需要改进 description
问题 2:Subagent 权限不足
症状:Subagent 尝试执行操作,但提示权限不足。
原因:tools 字段限制了权限。
解决:
编辑 AGENT.md,添加需要的工具:
1 | tools: |
问题 3:Subagent 成本太高
症状:使用 Subagents 后,token 消耗大幅增加。
原因:所有 Subagents 都用了 Opus 模型,或者创建了太多 Subagents。
解决:
- 检查每个 Subagent 的 model 字段,改用 Haiku 或 Sonnet
- 合并功能相似的 Subagents
- 只在必要时并行运行多个 Subagents
问题 4:Subagent 结果不一致
症状:同样的任务,Subagent 每次给出不同的结果。
原因:系统提示不够具体,或者没有启用记忆功能。
解决:
- 在系统提示中提供更具体的检查清单
- 启用记忆功能:
memory: true - 提供示例输出,让 Subagent 理解预期格式
实际应用场景
场景一:代码审查流水线
创建一套 Subagents,覆盖代码审查的各个方面:
1 | 并行运行: |
5 个 Subagents 并行运行,30 秒内完成全面审查。
场景二:多语言项目维护
为不同的技术栈创建专门的 Subagents:
react-expert:审查 React 组件nodejs-expert:审查 Node.js 后端sql-expert:审查数据库查询docker-expert:审查容器配置
每个 Subagent 有专门的知识和最佳实践。
场景三:自动化文档生成
1 | 1. code-analyzer:分析代码结构 |
一条命令,自动生成完整的项目文档。
场景四:持续集成检查
在 CI/CD 流程中使用 Subagents:
1 | # .github/workflows/code-review.yml |
自动化的代码质量检查。
写在最后
我现在的工作流里有三个常驻 Subagents:一个专门做安全扫描,一个做测试覆盖率检查,一个做文档同步。每次提交前并行跑一遍,大概 40 秒出结果。
这三个 Subagents 解决的都是我之前觉得”太烦了懒得做”的事情。不是因为它们难,而是因为每次手动做都要打断思路。现在它们在后台跑,我继续写代码。
创建 Subagent 的过程,其实是在逼自己想清楚:哪些工作是重复的?哪些可以并行?哪些需要专门的知识?把这些梳理清楚,创建对应的 Subagents,效率提升是实实在在的。
从一个开始。代码风格检查、测试用例生成,随便哪个都行。跑几次之后,你会自然知道下一个该创建什么。