Anthropic 学院中文导读 / 课程目录 / 09
子代理入门:把脏活分出去,主会话只收结论
路线 B · 用 Claude Code 写代码Introduction to subagents适合:用 Claude Code 做较长任务、经常遇到上下文不够用的开发者免费 · 英文 · 有结业证书
这是导读,不是翻译。先用 15 分钟拿到这门课的思想地图,再去 Anthropic Academy 原课程 → 注册学习(免费)。
一句话
子代理(subagent)是 Claude Code 临时派出的助手:它在自己独立的上下文窗口里完成一个子任务,只把总结交回主会话。主会话因此不会被大量搜索结果和日志塞满。课程讲 4 件事:子代理如何运作、用 /agents 建自定义子代理、设计可靠子代理的模式、什么时候值得用以及常见反模式。
这篇导读覆盖的课程
- Introduction to subagents —— 4 节课
课程结构
- 什么是子代理
- 独立上下文窗口怎么创建,输入怎么传进去,总结怎么传回来。
- 创建子代理
- 用 /agents 命令建自定义子代理,例如代码审查员、文档生成器。
- 设计有效的子代理
- 结构化输出格式、报告障碍、限制工具权限。
- 用好子代理
- 最适合的场景和应避免的反模式。
精华:这门课真正要你带走的东西
子代理解决的是上下文污染。假设你要找“项目里所有调用旧支付接口的地方”。主会话自己搜,会读几十个文件,上下文被塞满,后面写代码时质量下降。交给子代理:它在独立窗口里读完所有文件,只交回一张清单。主会话拿到的是结论,不是过程。
信息流是单向收窄的。主会话给子代理一段任务说明;子代理看不到主会话的完整历史,只能看到这段说明。它完成后返回一段总结;主会话看不到子代理的中间过程。所以两头都要写清楚:派活时说明背景和要什么,子代理返回时给出结构化结果。
自定义子代理是一个 Markdown 文件。用 /agents 交互式创建,或直接写文件放在 .claude/agents/(项目)或 ~/.claude/agents/(个人):
.claude/agents/code-reviewer.md --- name: code-reviewer description: 审查刚写完的代码改动。代码修改完成后主动使用。 tools: Read, Grep, Glob --- 你是代码审查员。只审查本次 diff。 按“必须修 / 建议修 / 可选”三级输出,每条注明文件和行号。 无法判断时写“需要人工确认”,不要猜。
设计可靠子代理的 3 个要点:
- 规定输出格式。主会话要根据返回结果继续工作,格式固定才好用,例如表格、分级清单。
- 要求报告障碍。告诉子代理:做不到、找不到、不确定时明说,不要编一个结果交差。
- 限制工具。审查员只给读权限;搜索员不需要编辑权限。工具越少,越不容易越界,也越专注。
什么时候不用子代理。任务很小,派活说明比自己做还长,就别派。子任务之间需要频繁来回沟通的,也不适合,因为子代理只能一次性交回结果。主任务需要子任务全部细节的(例如要逐行修改的代码),交回总结反而丢信息。经验法则:子任务“过程很长、结论很短”时最适合派给子代理。
关键概念
- 子代理(subagent)
- 在独立上下文窗口中执行子任务、只返回总结的助手。
- 上下文隔离
- 子代理的中间过程不进入主会话,主会话只接收最终结果。
- /agents
- 创建、编辑和管理自定义子代理的命令。
- tools 字段
- 子代理定义里的工具白名单,用来限制它能做的操作。
- 障碍报告(obstacle reporting)
- 要求子代理在无法完成时说明原因,而不是给出不可靠的结果。
- 并行子代理
- 多个互不依赖的子任务可以同时派给多个子代理,缩短总时间。
学前准备
- 会用 Claude Code 的基本操作(第 06 篇)。
- 建议先读第 08 篇 Skills,理解“按需加载”和“隔离”两种节省上下文的思路。
动手练一遍
- 观察内置子代理:在一个中等规模项目里问“这个项目的鉴权逻辑分布在哪些文件里?”。观察 Claude 是否派出探索型子代理,以及主会话收到了什么。
- 建一个审查员:用
/agents建一个只有读权限的代码审查子代理,按上面的格式写输出要求。 - 对比实验:改一段代码后,一次让主会话自己审查,一次让审查子代理审查。完成后分别运行
/context,比较上下文占用。 - 测障碍报告:让审查员审查一个不存在的文件,看它是否明确报告“文件不存在”而不是编造意见。
容易卡住的地方
- 派活说明太短。子代理看不到主会话历史,背景要写进任务说明。
- 不规定返回格式。主会话拿到一大段自由文字,还要再整理一遍。
- 给子代理全部工具。只读任务就只给读权限。
- 小任务也派子代理。派活和汇总本身有开销,小任务自己做更快。
- 需要细节的任务只要总结。要逐行修改的内容,应该由主会话直接读。
延伸阅读
- Claude Code 文档:自定义子代理 —— 配置字段、存放位置和内置子代理(英文)
- Claude Code 文档:并行运行代理 —— 子代理、代理团队、工作流等并行方式的比较(英文)
- 上一篇:Agent Skills 入门 —— 子代理可以预加载 Skills