Claude Code SubAgent 实战:一个任务拆给多个AI并行干活
上周接了个需求:给一个老项目加国际化支持,涉及 38 个文件、4 种语言。我估了一下,一个人干大概要两天。用 Claude Code 单线程跑,也得四五个小时——因为它得一个文件一个文件地改,改完一个才能看下一个。
然后我试了 SubAgent。
结果:47 分钟搞定。不是我在吹,是任务日志里白纸黑字写着的。
SubAgent 是什么
SubAgent 是 Claude Code 内置的子任务分发机制。简单说就是:主 Agent 可以把一个大任务拆成几个小任务,每个小任务交给一个独立的 SubAgent 去跑,它们之间互不影响,并行执行。
跟你开了几个终端窗口同时干活差不多,只不过每个窗口里都坐着一个 AI。
它不是什么新功能,Claude Code 从 2025 年底就支持了。但大多数人没用过,或者用了觉得效果一般。问题往往出在任务拆分的方式上,而不是 SubAgent 本身。
什么时候该用 SubAgent
不是所有任务都适合拆。我踩过坑,总结了一条判断标准:
任务之间有没有数据依赖?
- 没有依赖 → 拆。比如:翻译多个独立文件、给多个模块写单元测试、批量重构同一模式的代码
- 有依赖 → 别拆。比如:先建数据库表,再写 ORM,再写 API——这种链式任务拆了反而出错
还有一种灰色地带:部分依赖。比如 5 个文件里有 3 个互相引用。这时候把那 3 个放一组、剩下 2 个各自一组,分成 3 个 SubAgent。
实战:用 SubAgent 做国际化
回到开头那个例子。项目结构大概长这样:
src/
components/
Header.tsx
Footer.tsx
Sidebar.tsx
...(共 15 个组件)
pages/
Home.tsx
About.tsx
Settings.tsx
...(共 12 个页面)
utils/
format.ts
validate.ts
...(共 11 个工具文件)
要做的事情: 1. 把所有硬编码的中文字符串提取成 i18n key 2. 生成 4 个语言包(中/英/日/韩) 3. 每个组件用 useTranslation hook 替换硬编码文本
第一步:在 CLAUDE.md 里配置 SubAgent 策略
# SubAgent 使用规范
## 并行任务拆分原则
- 按目录或功能模块拆分,每个 SubAgent 负责一个独立区域
- 共享类型定义和工具函数由主 Agent 先处理,再分发子任务
- 每个 SubAgent 完成后输出修改文件清单,主 Agent 做最终检查
## i18n 任务专用规则
- 所有 SubAgent 使用同一份 key 命名规范:{模块}.{组件}.{描述}
- 语言包由独立 SubAgent 生成,不要让改代码的 Agent 同时写语言包
第二步:让主 Agent 做前置工作
在 Claude Code 里输入:
先帮我做 i18n 的前置准备:
1. 安装 react-i18next 和 i18next
2. 创建 src/i18n/config.ts 初始化配置
3. 在 App.tsx 里引入 I18nextProvider
4. 创建空的语言包文件结构 src/i18n/locales/{zh,en,ja,ko}.json
做完这些之后,再分 SubAgent 处理各模块的文本提取。
Claude Code 会先把基础设施搭好,然后自动拆分子任务。
第三步:SubAgent 并行执行
Claude Code 拆出了 4 个 SubAgent:
| SubAgent | 负责范围 | 文件数 |
|---|---|---|
| #1 | components/ 目录 | 15 |
| #2 | pages/ 前 6 个 | 6 |
| #3 | pages/ 后 6 个 | 6 |
| #4 | utils/ 目录 | 11 |
每个 SubAgent 独立运行,互不阻塞。在终端里你能看到类似这样的日志:
[SubAgent #1] Processing Header.tsx... extracting 12 strings
[SubAgent #2] Processing Home.tsx... extracting 23 strings
[SubAgent #3] Processing Settings.tsx... extracting 18 strings
[SubAgent #4] Processing format.ts... extracting 7 strings
四个同时在跑。
第四步:主 Agent 收尾
SubAgent 全部完成后,主 Agent 自动执行: 1. 合并所有提取出的 key 到语言包 2. 检查有没有重复 key 3. 跑一遍 tsc --noEmit 确认类型没问题 4. 跑一遍 npm test 确认没有破坏现有功能
最后输出汇总:
完成 i18n 改造:
- 修改文件:38 个
- 提取字符串:247 个
- 新增 key:198 个(去重后)
- 语言包:4 个(zh/en/ja/ko,中文已填充,其余待人工翻译)
- 测试:全部通过
- 耗时:47 分钟
手动触发 SubAgent 的方法
除了让 Claude Code 自动拆分,你也可以手动指定:
用 SubAgent 并行处理以下 3 个任务:
任务 1:给 src/api/ 下所有接口函数加上 JSDoc 注释
任务 2:给 src/hooks/ 下所有自定义 hook 写单元测试
任务 3:检查 src/utils/ 下所有函数的错误处理,缺少 try-catch 的补上
关键是描述清楚每个任务的输入范围和预期输出。含糊的指令("优化一下代码")会让 SubAgent 不知道干什么。
5 个踩坑提醒
1. 别让 SubAgent 改同一个文件
两个 SubAgent 同时改 index.ts,后写入的会覆盖先写入的。解决办法:按文件分配,而不是按功能分配。
2. 共享配置先搞定
如果多个 SubAgent 都需要用到某个类型定义或配置文件,让主 Agent 先创建好,再分发子任务。不然每个 SubAgent 可能各自创建一份,命名还不一样。
3. SubAgent 数量不是越多越好
我试过把 38 个文件拆成 38 个 SubAgent,一对一。结果反而慢了——调度开销太大。实测下来,3-6 个 SubAgent 是效率和稳定性的平衡点。
4. 在 CLAUDE.md 里写清规范
SubAgent 不会自动读你脑子里的编码规范。你得在 CLAUDE.md 里写清楚命名规则、代码风格、import 顺序等。所有 SubAgent 都会读这份文件。
5. 留意 token 消耗
每个 SubAgent 都是独立的上下文,都会消耗 token。4 个 SubAgent 跑下来,token 消耗大概是单 Agent 的 2.5-3 倍(不是 4 倍,因为省掉了重复的中间等待)。
适合 SubAgent 的场景清单
| 场景 | SubAgent 拆法 | 预期加速比 |
|---|---|---|
| 批量文件重构 | 按目录拆 | 3-5x |
| 多模块单元测试 | 按模块拆 | 2-4x |
| 代码审查 + 修复 | 按问题类型拆 | 2-3x |
| 文档生成 | 按文件/模块拆 | 3-4x |
| 多语言翻译 | 按语言拆 | 接近线性 |
| API 接口批量开发 | 按实体/路由拆 | 2-3x |
不适合的场景:有严格执行顺序的任务、需要全局状态的重构(比如改数据库 schema)、文件之间强耦合的改动。
跟 Cursor、Windsurf 对比
Cursor 目前(2026 年 5 月)的 Agent 模式是单线程的,不支持原生 SubAgent 拆分。你可以手动开多个 Composer 窗口并行,但没有自动合并和冲突检测。
Windsurf 有 Cascade 模式,支持多步骤但也是串行执行。
Claude Code 的 SubAgent 目前是终端 AI 编程工具里唯一原生支持并行子任务的。这个差距在小任务上不明显,但任务规模一上来(20+ 文件),时间差距就很大了。
结尾
SubAgent 不是万能药。任务拆得不好,比单 Agent 还慢。但如果你的任务是"对一批独立文件做同一类操作",那它能省掉大量等待时间。
我现在的习惯是:看到任务涉及超过 10 个文件,先想想能不能拆。能拆就拆,拆不了就老老实实单线程跑。
47 分钟和两天的差距,试一次就回不去了。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)