跳到主要内容

子智能体与并行智能体

高级
What you'll learn
  • 什么是子智能体——一个独立的 Claude,拥有自己的上下文窗口和一组受限的工具
  • 委派的三个理由:保护上下文、专门化、并行化
  • Claude 已经会自动委派的内置智能体:Explore、Plan、General-purpose
  • 如何在 .claude/agents/ 中定义你自己的子智能体,以及为什么 description 与 tools 是两个起决定作用的字段
  • 何时不该并行化,以及它如何与 API 智能体和舰队级工作流相联系

一个子智能体是一个独立的 Claude 实例,拥有自己的上下文窗口和一组受限的工具,你的主会话把一块工作委派给它。它回报的是一个结果,而非它的整段记录——因此主会话保持聚焦、不被杂乱拖累。

为什么要委派

三项职责,一个工具。每次你伸手去用子智能体时都要记住这些:

  • 保护主上下文。 一次研究深挖或一次大文件扫读可能烧掉数千 token;在子智能体里做,只有结论会返回。
  • 专门化。 给子智能体一个量身定制的系统提示,并只给它所需的工具(例如一个只读的审查者)。
  • 并行化。 同时运行互相独立的子任务——例如同时探查三个模块。

你已经拥有的内置智能体

在你定义自己的之前,先要知道 Claude Code 自带了一些会自动委派的子智能体:

内置智能体它的作用
Explore一个快速、只读的智能体(运行在更便宜的模型上),用于在不触碰代码库的情况下搜索和理解它。
Plan在 plan 模式期间收集上下文,让研究工作不进入主要的、只读的对话。
General-purpose一个拥有完整工具的智能体,用于混合了探索与改动的复杂、多步骤工作。

你很少会按名字调用它们;当任务匹配时 Claude 会自行选用。自定义子智能体是为那些反复用同样的指令重新创建的工作者准备的。

如何定义你自己的

子智能体是一个带 YAML frontmatter 的 Markdown 文件(正文成为它的系统提示)。只有 namedescription 是必填的;其余都是可选的。可以按项目存放在 .claude/agents/(把它提交进 git,这样团队就能共享),或按用户存放在 ~/.claude/agents/。用 /agents 命令创建,或手动创建。

Guided walkthrough1 of 5
  1. 按项目放在 .claude/agents/(提交它,这样团队就能共享),或按用户放在 ~/.claude/agents/。

一个入门级的 code-reviewer 子智能体:

code-reviewer 子智能体(.claude/agents/code-reviewer.md)

---
name: code-reviewer
description: Expert code reviewer. Use proactively after code changes.
tools: Read, Glob, Grep
model: sonnet
---

You are a senior reviewer. Read the changed files, then report only
high-confidence issues: correctness bugs, security risks, and missing
tests. For each, show the file:line, the problem, and a concrete fix.
Do not restate what the code does. Never edit files.

让一个子智能体出色的有两件事:

  • description 是路由信号。 Claude 读取它来决定何时委派,所以要把它写得像一个触发器——“Use proactively after code changes”会自动把它拉进来;而含糊的“helps with code”则不会。这是文件里杠杆率最高的一行。
  • 把工具范围收得很紧。 tools 字段是一个允许清单(或者用 disallowedTools 作为拒绝清单)。一个只能 Read, Glob, Grep 的审查者不可能意外编辑你的代码——这个限制是一种保证,而非一个提示。省略 tools,子智能体就会继承主会话拥有的一切。

实战示例:并行审查的扇出

你刚完成了一个改动了三个模块的功能,想对每个模块做一次快速、独立的检查。在你的主会话里:

一次性扇出三个审查者

Review the changes in auth/, billing/, and api/ — use the code-reviewer subagent on each, in parallel.

Claude 一次性派生出三个 code-reviewer 实例。每个只读取自己的模块,把上下文烧在文件内容上,然后返回一份简短的发现清单。你的主会话从不看到原始 diff——只看到三份整洁的报告——而整件事大约在最慢那一个审查实例所需的时间内完成,而非三者之和。因为审查者是只读的,三个同时工作的智能体不会在写入上发生冲突。

何时不该并行化

Watch out
  • 有依赖关系的步骤必须串行——别把步骤 B 需要步骤 A 输出的工作扇出去做。
  • 共享的文件写入可能冲突;把它们隔离开(见 Git 工作树)或串行化。
  • 对于小任务,协调开销可能超过收益。当子任务规模可观且互相独立时再委派。

关于隔离冲突的写入,见 Git 工作树

子智能体 vs API/SDK 中的“智能体”

本页讲的是 Claude Code 内建的委派。以编程方式构建你自己的智能体见在 API 上构建智能体。其心智模型——一个目标、一个工具循环、隔离的上下文——是一样的。

常见错误

陷阱——翻转每张卡片看修正方法
按 Enter 或空格键翻转卡片。使用左右方向键在卡片之间切换。已显示术语。
1 / 4

当少数几个智能体还不够时

每一轮委派少数几个子智能体是本页的看家本领。当一个任务需要数十甚至数百个智能体——一次覆盖整个代码库的扫读、一次 500 个文件的迁移、跨多个来源交叉核对的研究——这种编排会超出单个上下文窗口的承载能力。这正是动态工作流与 ultracode的用武之地:Claude 写一个脚本来承载计划,由一个运行时在后台把智能体扇出去。

自我检测

0/3
  1. 子智能体 frontmatter 中的哪个字段是 Claude 读取以决定何时委派的路由信号?
  2. 给一个审查者子智能体配了 tools: Read, Glob, Grep。这个允许清单保证了什么?
  3. 什么时候并行化子智能体没有帮助?
Key takeaways
  • 子智能体是一个独立的 Claude,拥有自己的上下文窗口和受限的工具;它返回的是一个结果,而非它的记录。
  • 委派是为了保护主上下文、为了专门化,或为了并行化互相独立的工作。
  • Claude 已经自带 Explore、Plan 和 General-purpose 内置智能体,并会自动选用它们。
  • name 和 description 是仅有的必填 frontmatter 字段——而 description 是决定 Claude 何时委派的路由信号。
  • tools 允许清单把意图变成保证;只扇出互相独立的子任务,并隔离共享的写入。

下一步