很多人第一次看到 Claude Code subagent,会下意识把它理解成“多开几个 AI,一起写代码”。这个理解只对了一半。
更准确地说,subagent 适合解决三类问题:隔离上下文、拆分独立子任务、让某个角色长期使用固定规则。它不是所有项目都需要的加速器。如果任务本身很小、边界不清,或者多个代理会反复争抢同一个文件,硬拆 subagent 反而会让结果更乱。
这篇文章用项目视角回答一个更实际的问题:Claude Code subagent 到底适合什么项目,什么时候该用,什么时候别用,以及一个项目级 subagent 应该怎么设计。
先给结论:这些项目最适合用 subagent
| 项目/任务类型 | 是否适合 | 为什么 |
|---|---|---|
| 大型代码库初次接手 | 很适合 | 可以让不同 subagent 分别读 API、数据库、前端、测试目录,最后汇总结构图 |
| 多模块并行排查 | 很适合 | 子任务彼此独立,适合并行分析,不必把所有上下文塞进主会话 |
| PR 或大改动代码审查 | 很适合 | 可以拆成 bug 审查、安全审查、性能审查、测试覆盖审查 |
| 测试失败和日志分析 | 适合 | 日志噪音大,交给专门 subagent 过滤,主会话只看结论 |
| 文档、迁移、依赖升级评估 | 适合 | 适合让 subagent 读材料、列影响面、给迁移清单 |
| 单文件小 bug 修复 | 不太适合 | 拆分成本高于收益,主会话直接改更快 |
| 需求还没想清楚的探索 | 不适合 | subagent 需要明确边界,否则会各自发散 |
| 多个代理同时改同一批文件 | 高风险 | 容易冲突、覆盖、重复修改,需要主会话强控节奏 |
一句话:subagent 适合“可以拆开、能独立完成、最后只需要交付结论或小范围结果”的任务。
subagent 真正解决的不是“速度”,而是上下文管理
Claude Code 官方文档里强调,subagent 是独立的 agent 实例。主 agent 可以把某个聚焦任务交给它,subagent 用自己的上下文工作,然后把最终结果返回给主会话。
这意味着它的核心价值不是简单多线程,而是:
- 上下文隔离:日志、测试输出、文档摘录、目录扫描结果不会全部污染主会话。
- 角色固定:比如
code-reviewer永远只做只读审查,test-runner永远只跑测试和分析失败。 - 工具权限控制:某些 subagent 只允许
Read/Grep/Glob,不允许修改文件。 - 并行调研:多个独立方向可以同时跑,最后由主会话整合。
- 项目经验沉淀:把团队常用审查口径写进
.claude/agents/,下次继续用。
所以判断一个项目适不适合 subagent,不要先问“能不能更快”,而要问“这个任务是否会产生大量上下文,是否能拆成清晰角色”。
适合场景一:大型代码库摸底
如果你刚接手一个陌生项目,最常见的问题不是“代码怎么改”,而是“我根本不知道从哪里看”。
这时 subagent 很有用。你可以让主会话只负责提出问题和汇总结论,然后把探索任务拆出去:
api-reader:只看路由、控制器、接口鉴权。db-reader:只看 schema、migration、ORM model。frontend-reader:只看页面结构、状态管理、组件入口。test-reader:只看测试框架、覆盖范围、运行命令。
每个 subagent 最后只返回 5 到 10 条结论。主会话不用背下整个仓库的细节,只需要拿到一张结构化地图。
这种方式特别适合:
- monorepo;
- 历史包袱较重的业务系统;
- 前后端混合仓库;
- 测试、构建、部署脚本散落在多个目录的项目;
- 接手前需要先做技术债评估的项目。
如果你还在设计 Codex 和 Claude Code 的接力方式,可以把这类“读仓库、摸结构”的任务放在 Claude Code subagent 侧,再把结论交给 Codex 执行更长的修改流程。相关思路可以看站内这篇:/2026/07/10/codex-claude-code-task-handoff-guide/。
适合场景二:代码审查拆角色
subagent 很适合做代码审查,因为审查本身天然可以按关注点拆开。
例如一次较大的 PR,可以拆成:
bug-reviewer:找逻辑错误、空值、边界条件、回归风险。security-reviewer:看权限、输入校验、密钥、注入、越权。performance-reviewer:看循环、查询、缓存、渲染、并发瓶颈。test-reviewer:看测试是否覆盖真实风险,而不是只补快照。
这样做的好处是,每个 subagent 都不需要理解所有事情。它只需要按照自己的角色,从同一批 diff 里找问题。
但要注意一个边界:审查型 subagent 最好默认只读。
如果你让四个 subagent 同时拥有写权限,它们可能会在同一块代码上做出不同方向的修改。更稳妥的流程是:
- 主会话收集 diff。
- 多个只读 subagent 分别审查。
- 主会话合并结论,决定改哪些。
- 由主会话或一个明确的
fixersubagent 做小范围修改。
如果你关注“Claude Code 和 Codex 代码审查流程怎么搭”,可以把 subagent 用作 Claude Code 侧的专项审查角色,再由 Codex 做 repo 级修复和验证。站内已有一篇更偏闭环流程的文章:/2026/07/10/claude-code-codex-code-review-workflow/。
适合场景三:测试失败和日志噪音处理
自动化测试失败时,主会话最容易被海量输出拖慢。尤其是前端 E2E、后端集成测试、CI 日志,失败信息往往夹在几百行输出里。
这类任务很适合交给 test-runner subagent:
- 运行指定测试命令;
- 截取失败用例;
- 归纳失败原因;
- 标出最可能相关的文件;
- 不直接修代码,只返回排查建议。
它的工具可以控制在:
| subagent | 建议工具 | 适合任务 |
|---|---|---|
test-runner |
Bash, Read, Grep |
跑测试、读日志、定位失败 |
log-analyzer |
Read, Grep, Glob |
分析日志和错误堆栈 |
coverage-reviewer |
Read, Grep, Glob |
找缺失测试和高风险分支 |
如果你已经在用 Claude Code hooks 自动运行测试,可以把 hooks 负责“触发”,subagent 负责“解释失败”。这两者不是替代关系,而是上下游关系:/2026/07/10/claude-code-hooks-auto-run-tests/。
适合场景四:大重构前的影响面分析
大重构最怕一上来就改。subagent 更适合先做“只读侦察”。
比如你要替换认证模块、升级数据库访问层、重构前端状态管理,可以让多个 subagent 分别回答:
- 哪些文件直接依赖旧接口?
- 哪些测试覆盖了这块逻辑?
- 哪些调用路径最容易破坏兼容性?
- 是否存在文档、脚本、配置也要同步改?
- 哪些地方应该先加测试再动手?
这类任务的关键是:subagent 输出影响面,不要急着输出补丁。
主会话拿到影响面后,再决定是一次性改、分阶段改,还是先补测试。对于长任务来说,这也有助于中断后恢复,因为每个阶段都有清晰结论和可追踪上下文。长任务恢复的写法可以参考:/2026/07/10/ai-agent-long-task-resume-guide/。
不适合场景:别把所有任务都拆成 subagent
subagent 有成本。它会消耗额外上下文、额外等待时间,也会增加协调复杂度。
下面这些场景通常不建议使用:
1. 小到可以直接解决的问题
比如:
- 改一个 typo;
- 修一个明显的 import;
- 调整一个 CSS class;
- 给一个函数补一行空值判断;
- 更新一个配置项。
这类任务主会话直接做最快。拆 subagent 只会增加调度成本。
2. 边界不清的需求
如果你自己还没想清楚“要什么结果”,不要先拆 subagent。
例如“帮我优化这个项目”“让这个页面更好看”“重构一下架构”,这些任务在拆分前需要主会话先问清楚目标、约束、验收标准。否则 subagent 会各自理解,最后返回一堆互相冲突的建议。
3. 需要频繁协商的任务
subagent 适合独立工作,不适合来回拉扯。
如果一个任务需要每改两行就重新讨论设计,主会话直接推进更稳。
4. 多个代理同时写同一批文件
这是最容易出问题的场景。
例如你让 frontend-agent、style-agent、accessibility-agent 同时修改同一个 React 组件,它们可能分别做出正确但互相覆盖的修改。更好的方式是让它们先只读审查,再由一个执行者统一落地。
5. 高风险外部操作
涉及生产环境、真实账号、付费 API、删除数据、改权限、发邮件、发消息的任务,不要轻易交给后台 subagent 自动执行。即使要用,也应该限制工具、限制范围,并让主会话做人类可检查的确认点。
项目级 subagent 应该怎么设计
Claude Code 支持把 subagent 写成 Markdown 文件。项目级 subagent 通常放在:
|
|
全局可复用的 subagent 通常放在:
|
|
项目级适合写进仓库,因为它反映的是这个项目自己的约定,比如测试命令、目录结构、审查重点、禁止修改的文件、输出格式。
一个最小的只读代码审查 subagent 可以这样写:
|
|
这里最重要的不是正文有多长,而是 description 要写清楚。Claude Code 会根据 description 判断什么时候该调用这个 subagent。描述越模糊,自动委派越不稳定。
常见 subagent 组合
实际项目里,不建议一开始就建十几个 subagent。先从 3 到 5 个高频角色开始:
| 名称 | 工具 | 作用 |
|---|---|---|
code-reviewer |
Read, Grep, Glob |
只读审查 bug、回归和测试缺口 |
test-runner |
Bash, Read, Grep |
运行测试并解释失败 |
docs-researcher |
Read, Grep, Glob |
整理项目文档、迁移说明、约定 |
security-reviewer |
Read, Grep, Glob |
审查权限、输入、密钥、注入风险 |
refactor-planner |
Read, Grep, Glob |
大改前分析影响面和分阶段计划 |
如果某个 subagent 经常只输出泛泛而谈的建议,说明它的角色太虚。要么缩小任务范围,要么补充项目规则。
怎么调用 subagent
你可以用自然语言显式调用:
|
|
也可以在会话里点名具体 subagent,例如使用 @code-reviewer 这类方式确保调用指定角色。对于需要从一开始就套用某个 agent 规则的场景,也可以用命令行方式启动:
|
|
我的建议是:关键任务尽量显式点名,不要完全依赖自动委派。尤其是审查、测试、迁移评估这类任务,明确说“只读”“不要改文件”“只返回结论”,会稳定很多。
一个实用判断公式
如果你不确定某个项目要不要用 subagent,可以按这 5 个问题判断:
- 任务能不能按模块、目录、角色或关注点拆开?
- 子任务之间是否相对独立,不需要频繁互相沟通?
- 子任务输出能不能压缩成明确结论,而不是一堆过程日志?
- 是否需要不同工具权限,比如有的只读、有的能跑测试、有的能编辑?
- 拆分带来的上下文隔离收益,是否大于额外 token 和等待成本?
如果 5 个问题里有 3 个以上答案是“是”,就适合尝试 subagent。
如果只有 1 个答案是“是”,那大概率不值得拆。
避坑清单
最后给一个更像项目规范的清单:
- subagent 名称要具体,不要叫
helper、assistant、worker。 - description 要写触发场景,不要只写“帮助写代码”。
- 审查型 subagent 默认只读。
- 写代码型 subagent 一次只负责一个小范围。
- 大重构先让 subagent 做影响面分析,再决定谁来改。
- 测试 subagent 应该返回失败摘要,不要把完整日志塞回主会话。
- 多个 subagent 的输出由主会话合并,不要让它们互相改对方结果。
- 高风险操作要限制工具和范围。
- 项目级规则放
.claude/agents/,通用个人习惯放~/.claude/agents/。 - 每隔一段时间删掉低频、重复、输出质量差的 subagent。
总结
Claude Code subagent 最适合的项目,不是“所有想用 AI 的项目”,而是那些有明确模块、明确角色、明确边界的大中型开发任务。
它适合做代码库摸底、专项审查、测试失败分析、迁移影响面评估和项目级固定角色沉淀;不适合小改动、模糊需求、频繁协商和多个代理同时写同一批文件。
真正好用的 subagent,不在于数量多,而在于边界清楚。主会话负责目标、取舍和最终落地;subagent 负责把某个局部问题查深、查准、查干净。这样用,它才会从“多一个 AI”变成项目工作流里真正可靠的一环。