← 返回Agent 和 Subagent 是什么?
1 / 7
Tutorial·7

Agent 和 Subagent 是什么?

Agent 和「工作流」差在哪、它的循环怎么转、为什么还要再派 Subagent 出去。讲清这两个词的官方定义、配置长什么样,以及什么时候该用

TL;DR · 一句话结论

Agent 指的是「由大模型自己动态决定流程和工具使用」的系统,与之相对的是路径被代码写死的工作流。它靠一个循环干活:看目标 → 决定下一步 → 调用工具 → 看结果 → 再决定,直到完成。Subagent(子代理)是 Agent 派出去的专用助手,有自己独立的上下文窗口、系统提示词和工具权限,干完只把结论带回主对话——用来处理那些会把主对话淹没的脏活,比如翻一遍代码库、跑一轮测试、读一堆日志。

1
Step 1

开篇:两个天天见的词

用 agent 工具的时候,这两个词绕不开:

  • 「这个任务交给 agent 跑就行」
  • 「开一个 subagent 去查,别把主上下文搞脏」

1.2 已经讲过 Agent 工具和聊天框的区别。这一篇往里再走一层,把两件事讲清楚:

  1. Agent 到底是什么,它和「自动化流程」差在哪
  2. Subagent 是什么,为什么有了 agent 还要再派一个出去

这两个概念搞清楚,你看任何一个 agent 工具的文档都不会再晕。

2
Step 2

Agent 的定义:路径不是写死的

Anthropic 在官方工程文章里给了一组对照定义,是目前业界引用最多的一版:

工作流(workflow):大模型和工具通过预先写好的代码路径被编排起来的系统。 Agent:大模型自己动态决定流程和工具使用、自主掌控如何完成任务的系统。

差别就在谁决定下一步

工作流Agent
步骤事先定死:第一步做 A,第二步做 B每一步现场决定
遇到意外走不下去,报错换个办法再试
适合步骤明确、每次都一样的事事先说不清要几步的事
可预测性较低,但灵活

官方也说明了什么时候该用 agent:当你难以预测需要多少步、也没法写死一条固定路径的时候。 反过来,如果流程每次都一样,用工作流更稳、更便宜。

所以「AI 自动化」和「Agent」不是一回事。定时把表格转成 PDF,那是工作流;「把这个文件夹整理干净」——要几步、遇到什么情况事先不知道——那才需要 agent。

工作流由代码固定步骤,Agent 由模型动态决定下一步
工作流由代码固定步骤,Agent 由模型动态决定下一步
3
Step 3

它是怎么干活的:一个循环

Agent 干活的过程,拆开看就是一个不断重复的循环:

  1. 读目标:你的要求 + 当前掌握的信息
  2. 决定下一步:是先看看文件?还是直接改?还是先问你一句?
  3. 调用工具:真的去读、去写、去执行
  4. 看结果:成功了?报错了?和预期不一样?
  5. 回到第 2 步,直到任务完成、或者卡住来找你

举个例子,你说「这个页面在手机上排版乱了,修一下」:

  • 它先找到相关的文件(工具:搜索)
  • 打开看样式是怎么写的(工具:读文件)
  • 判断问题出在哪,改掉(工具:写文件)
  • 跑一下看有没有报错(工具:执行命令)
  • 报错了 → 回到第 2 步,继续改

这个循环就是 agent 的全部秘密。 它之所以看起来「聪明」,是因为每一轮它都能看到上一轮的真实结果,而不是凭空往下猜。

Agent 通过读取目标、调用工具和查看结果不断循环
Agent 通过读取目标、调用工具和查看结果不断循环

注意代价:循环转一圈就是一次模型请求,工具返回的内容还会不断堆进上下文。这就是下一步要解决的问题。

4
Step 4

Subagent:派出去的专用助手

循环转久了会遇到一个必然的问题:上下文被塞满了。

它读了 20 个文件、跑了 3 轮测试、翻了一堆日志——这些内容你根本不需要看,但它们全都占着上下文额度,还会稀释真正重要的信息(2.2 讲的 context rot)。

Subagent 就是为这件事设计的。Claude Code 官方文档的定义:

Subagent 是处理特定类型任务的专用 AI 助手,拥有自己独立的上下文窗口、自定义系统提示词、指定的工具权限和独立的权限设置。当一个附带任务会用搜索结果、日志、文件内容淹没你的主对话,而这些东西你之后根本不会再看的时候,就该用它:subagent 在自己的上下文里干完,只把结论带回来。

关键就在最后半句:只把结论带回来。

Subagent 在独立上下文中处理过程,只向主 Agent 返回摘要
Subagent 在独立上下文中处理过程,只向主 Agent 返回摘要
主 agentSubagent
上下文你的整个会话独立的一份,干完就丢
看得到历史吗看不到,只收到一段任务说明
工具权限全部可以限制,比如只读
用的模型你选的可以单独指定(脏活用便宜的)
返回什么只有摘要
5
Step 5

为什么值得单独派一个出去

官方列的几条理由,翻译成人话:

理由实际意义
保住上下文探索、翻找、试错这些过程留在 subagent 那边,主对话保持干净
隔离啰嗦的输出跑测试、翻日志、抓文档动辄几千行,这些不进你的主上下文
限制权限比如「代码审查」只给读权限,它就不可能改坏东西
控制成本简单的重活可以指定用便宜的小模型跑
可复用同一套配置在不同项目里共用,行为一致

一个直观的对比:让 AI「在这个项目里找出所有用到某个旧接口的地方」。

  • 不用 subagent:它翻 40 个文件,40 个文件的内容全进你的上下文,你的会话瞬间变重
  • 用 subagent:它派一个出去翻,回来只说「这 6 个文件用到了,分别在这些行」

你要的本来就只有那一句结论。

Subagent 隔离文件日志和测试输出,保护主对话上下文
Subagent 隔离文件日志和测试输出,保护主对话上下文
6
Step 6

配置长什么样

以 Claude Code 为例,一个 subagent 就是一个 Markdown 文件,放在 .claude/agents/(项目级)或 ~/.claude/agents/(个人级):

---
name: code-reviewer
description: 审查代码质量与最佳实践。写完或改完代码之后使用。
tools: Read, Glob, Grep
model: sonnet
---

你是代码审查专家。对发现的每个问题,说明问题是什么、
贴出当前代码、给出改进后的版本。不要修改任何文件。

字段的含义:

字段作用
name名字,小写字母加连字符
description什么时候该派它出去——主 agent 靠这句判断
tools允许它用哪些工具,不写就继承全部
model指定模型,可以用更便宜的档

怎么触发? 两种方式:主 agent 根据 description 自动判断并派发;或者你直接点名「用 code-reviewer 这个 agent 看一下改动」。

和 Skill 一样,description 是最关键的一行:写清「做什么 + 什么时候用」,它才会在该出场的时候出场。

7
Step 7

什么时候该派,什么时候别派

适合交给 subagent 的:

  • 大范围查找:在整个项目里找某样东西
  • 读大量材料:翻文档、读日志、看测试输出
  • 有明确边界的重复检查:代码审查、格式检查
  • 你只关心结论、不关心过程的活

不适合的:

  • 需要你来回确认的任务——它看不到你的对话历史,来回沟通成本更高
  • 一两步就能做完的小事——派出去的开销比自己做还大
  • 需要连续上下文的创作类工作

一个提醒:subagent 拿不到你主对话里的上下文,它只收到一段任务说明。所以任务说明要写全,别指望它知道你们前面聊过什么。

根据中间内容规模和沟通需求判断是否派 Subagent
根据中间内容规模和沟通需求判断是否派 Subagent

Agent 是会自己决定下一步的 AI,Subagent 是它派出去干脏活、只带结论回来的帮手。 两个词背后是同一个动机:保护上下文。这也是第 4 段的主线(4.2 如何管理上下文)。

FAQ · 常见问题
Agent 和 Agent 工具是一回事吗?

Agent 指的是「模型自己决定流程并调用工具」这套机制;Agent 工具是把这套机制做成的产品,比如 Claude Code、Codex。日常交流里混着说没问题,但看文档时区分一下会更清楚。

Subagent 会额外花钱吗?

会。它是独立的模型调用,有自己的 token 消耗。但通常反而更省——因为它把大量中间内容挡在了主对话之外,主对话不用一直背着这些内容重复发送。给它指定便宜的模型可以进一步降成本。

什么是多 agent(multi-agent)?

指多个 agent 分工协作完成一个大任务,比如一个负责调研、一个负责写作、一个负责校验。Subagent 是实现它最常见的方式。对新手来说不用急着上手,先把单个 agent 用顺再说。

我不写代码,需要关心 Subagent 吗?

了解概念就够了。当你的任务需要读很多材料、而你只想要一份结论时,知道有这么个东西可以用就行。默认情况下工具也会在合适的时候自动派发,不需要你手工配置。

1 / 7