3.2 多 Agent 并行编排
预计耗时:15 分钟
本关任务简报
你可能已经注意到:让 Claude 干一个大活时,它有时会自己"派分身"去跑——界面上冒出一个独立的小任务,跑完把结果带回来。这就是子 Agent(Subagent)。
子 Agent 的本质不是"为了并行而并行",而是上下文隔离:把那些会产生大量中间输出的活(翻一堆文件搜代码、跑测试、查文档)丢给一个有独立上下文窗口的分身去做,它只把结论带回主对话,那些噪音不会污染你的主上下文。并行(多个分身同时跑)只是顺带的好处。
这一关讲清楚:子 Agent 到底是什么、Claude 什么时候会用它、你怎么主动调它、怎么看它在干嘛、以及它和 Worktree、Agent 团队的分工。
通关奖励:解锁以下技能
- 🧬 理解子 Agent 的核心价值是上下文隔离,并行是附带收益
- 🎯 能主动让 Claude 派子 Agent 去处理可独立完成的活
- 👁️ 会查看和切换正在跑的子 Agent(输入框下方
↑/↓切对话界面、/agents) - ⏱️ 分得清前台 / 后台子 Agent,知道
Ctrl+B转后台、Ctrl+X Ctrl+K全停 - 🧩 知道内置的 Explore / Plan / general-purpose,也知道能自定义子 Agent
开始前先检查装备
| 前置知识 | 说明 |
|---|---|
| 2.1 界面概览 → | 了解如何发消息、如何中断执行 |
| 2.5 文件引用与上下文 → | @src/ 等引用语法——派子 Agent 时常要精确指定范围 |
机制解析
子 Agent 是什么:有独立上下文的"分身工人"
每个子 Agent 运行在自己独立的上下文窗口里,有自己的系统提示词、工具权限和独立的权限设置。Claude 把一个子任务委派给它,它独立干完,只把结果摘要返回主对话。
它帮你解决四件事:
- 省上下文:探索、跑测试这类会刷屏的活留在子 Agent 的上下文里,不挤占主对话
- 加约束:可以限制某个子 Agent 只能用哪些工具(比如只读不写)
- 专精:给它聚焦的系统提示词,让它在某个领域更专业
- 控成本:把简单活路由给更快更便宜的模型(如 Haiku)
三个内置子 Agent
Claude Code 自带几个子 Agent,会在合适时机自动调用,不用你配:
| 子 Agent | 模型 | 工具 | 干什么 |
|---|---|---|---|
| Explore | Haiku(快) | 只读 | 搜文件、读代码、摸清代码库结构,不改动 |
| Plan | 跟随主对话 | 只读 | plan mode 下先调研代码库,再出计划 |
| general-purpose | 跟随主对话 | 全部 | 既要探索又要动手的复杂多步任务 |
所以你在 plan mode 看到它"先去翻代码再给方案",或者它派个 Explore 去定位文件——都是内置子 Agent 在起作用。
Claude 怎么决定派子 Agent
Claude 会根据子 Agent 的 description(描述)判断该不该委派。你不需要特殊命令,但可以主动要求,最直接:
用一个子 Agent 去调查我们的认证系统是怎么处理 token 刷新的它会派一个子 Agent 在独立上下文里读相关文件,只把结论带回来——你的主对话不会被一堆文件内容塞满。
如果一个任务能拆成几块互相独立的活,你也可以明确要求并行:
帮我对这个代码库做全面审查,分别用子 Agent 并行处理:
1. TypeScript 类型安全问题
2. 安全漏洞(SQL 注入、XSS、不安全依赖)
3. 性能瓶颈(N+1 查询、不必要的重渲染)
4. 测试覆盖率缺口
最后汇总成一份报告它不是"魔法并行器"
别误以为"把任务写清楚 Claude 就会自动开 N 个分身狂奔"。是否拆、拆几个、前台还是后台,都是 Claude 按任务结构判断的。你能做的是把可独立的子任务列清楚、明确说要并行,提高它拆分的概率。
查看和切换正在跑的子 Agent
子 Agent 跑起来后,你不是只能干等:
- 输入框下方会出现一个切换栏,列出正在跑 / 刚跑完的子 Agent。用键盘
↑/↓选中某一个,就能切进它的对话界面,实时看它在读什么、干到哪一步。 - 运行
/agents打开管理界面,Running 标签同样能看到所有活着的和刚结束的子 Agent,可以打开或停止它们。
前台 vs 后台
子 Agent 有两种跑法:
| 前台(默认) | 后台 | |
|---|---|---|
| 主对话 | 阻塞,等它跑完 | 不阻塞,你能继续干别的 |
| 权限提示 | 会弹给你确认 | 自动拒绝需要确认的操作(用已授权的权限跑) |
| 适合 | 要你盯着、可能要授权的活 | 明确、不需中途授权的长任务 |
由 Claude 按任务判断走哪种,你也可以干预:
- 让它"把这个放到后台跑"
- 按
Ctrl+B把正在跑的任务转到后台(tmux 用户按两次) - 按
Ctrl+XCtrl+K停掉本会话所有后台子 Agent(3 秒内按两次确认)
后台子 Agent 若因缺权限失败,重新用前台子 Agent 跑同一个任务,让它把需要授权的地方弹出来确认即可。
自定义子 Agent(进阶)
除了内置的,你可以定义自己的子 Agent——比如一个"只读的安全审查员"。它们是带 YAML frontmatter 的 Markdown 文件:
| 位置 | 作用范围 |
|---|---|
.claude/agents/<name>.md | 当前项目(可纳入版本控制、团队共享) |
~/.claude/agents/<name>.md | 所有项目 |
最省事的创建方式是运行 /agents → Library 标签 → Create new agent,让 Claude 帮你生成 name / description / 系统提示词,再挑工具、选模型、定颜色。frontmatter 里能配 tools(限制工具)、model(指定模型)、isolation: worktree(给它独立工作树,见 3.3)等。
和 Worktree、Agent 团队的分工
并行干活有几套机制,别搞混:
- 子 Agent(本关):一个会话内,派分身去做隔离的子任务,主要图上下文干净
- Git Worktree(3.3):多个分支物理隔离同时开发,图文件不打架。子 Agent 也能加
isolation: worktree各自隔离 - Agent 团队 / 后台会话:要跑很多个互相独立的会话并集中监控,是另一套机制(agent teams / background agents),属于更重的编排,本站暂不展开
开始闯关
目标:主动派一个子 Agent 去做隔离的活,并切进去看它干。
第 1 步:派一个探索型子任务
在你的项目里说:
用一个子 Agent 去摸清这个项目的目录结构和各模块职责,给我一份简报第 2 步:切进子 Agent 的界面看
它跑起来后,看输入框下方的切换栏,用 ↑ / ↓ 选中这个子 Agent,切进去看它在读哪些文件。
第 3 步:试一个并行任务
分别用子 Agent 并行检查:① 有没有循环依赖 ② 公共工具函数的复用情况
最后合并成一份报告观察:是否起了多个子 Agent、完成顺序是否和列举顺序不同、汇总质量如何。
第 4 步:试试后台
让它跑一个稍长的活,按 Ctrl+B 转后台,继续干别的,回头再看结果。
通关检定
- [ ] 知道子 Agent 的核心价值是上下文隔离,并行是附带
- [ ] 能主动让 Claude 派子 Agent 处理可独立完成的活
- [ ] 会用输入框下方
↑/↓切进某个子 Agent 的对话界面,或用/agents查看 - [ ] 分得清前台 / 后台,知道
Ctrl+B转后台、Ctrl+X Ctrl+K全停 - [ ] 知道有内置的 Explore / Plan / general-purpose,也知道能在
.claude/agents/自定义
全部点亮就算通关 ✓
卡关了?翻车指南在这
说了"并行",Claude 还是一个个顺序做
把子任务逐条列清楚、明确说"分别用子 Agent 并行处理"。但也接受现实:是否拆是 Claude 按任务结构判断的,强行要求不一定拆——任务本身得真的可独立。
切换栏里看不到子 Agent / 找不到在哪切
只有真的派了子 Agent 时切换栏才有内容。没派出来时是空的。也可以直接 /agents 看 Running 标签确认有没有活着的子 Agent。
后台子 Agent 没干成,说缺权限
后台子 Agent 会自动拒绝需要确认的操作。把同一个任务用前台子 Agent 重跑一遍,需要授权的地方它会弹出来让你确认。
子 Agent 结果质量参差不齐
某个子任务输出差,通常是对它的要求不够清晰。把不满意的那个单独再发一次、补充约束和期望格式,再合并回去。
担心子 Agent 太费 token
每个子 Agent 有独立上下文,总 token 确实高于单轮。权衡:只在任务量大、并行能明显省时,或中间输出会严重污染主上下文时才用;小活直接在主对话做更省。
下一关
子 Agent 解决"同一会话里的隔离与并行",下一关解决"不同分支上的并行开发"——用 Git Worktree 让多个 Claude 实例在不同分支上同时推进、文件互不打架。