Mindket

Claude Code 子智能体是什么,怎样创建一个?

浅桃色英文横幅,标签意为 Claude Code、AI 智能体和指南,标题意为“Claude Code 子智能体是什么,怎样创建一个?”,下面一行意为“自带上下文窗口、提示词和工具,只需交回一份摘要的帮手”。旁边一张“主对话”卡片(你给出目标和更大的上下文)分出三张卡片:调研、规划和执行。

Claude Code 子智能体(subagent)专门接手一件任务,在自己的上下文窗口里完成,最后只把摘要交回主对话。Claude 搜索代码库时用的 Explore 就是内置的一个。自己做的子智能体是一个带 YAML 文件头的 Markdown 文件,放在 .claude/agents/ 或 ~/.claude/agents/ 里。任务和它的描述对得上,Claude 就会交给它。

要点

  • 每个智能体文件都写上 tools 一行,它能动哪些东西,由 Claude Code 来把关。
  • Claude 靠描述决定交给谁,所以描述要写清楚。一定要用某个智能体时,输入 @ 选中它。
  • /agents 只打印一行提醒的话,就让 Claude 替你写,或者自己写文件。
  • 想试一个,就把示例存进 .claude/agents/,命名为 docs-link-checker.md,再点名使用它。
本页目录
  1. 子智能体启动时知道什么,最后交回什么
  2. 动手做一个:示例智能体文件
  3. 智能体文件放在哪里,出了问题先查什么
  4. Claude 怎样挑子智能体,你又怎样自己挑
  5. 用子智能体还是技能,子智能体什么时候值得用
  6. 参考:智能体文件从哪里加载,以及默认上限
  7. 常见问题
  8. 资料来源

子智能体启动时知道什么,最后交回什么

你问 Claude 一个牵涉整个代码库的问题,它会主动把搜索交给 Explore。Explore 在自己的上下文窗口里读文件,读完把摘要放进你的对话。它打开过的文件、跑过的命令,都不会进来。

子智能体看不到你们之前的对话,也看不到你调用过的技能和 Claude 已经读过的文件。它的工具和权限单独设定。系统提示词由这个智能体自己的提示词和 Claude Code 附上的环境信息组成,不是 Claude Code 本身的系统提示词(见 Anthropic 的子智能体文档)。

CLAUDE.md 文件倒是会跟着加载,一起带上的还有一份 git status 快照,以及它预载技能的全文。所以 CLAUDE.md 写得越长,每个自定义子智能体启动时重复加载的内容就越多,占用的上下文也越多。内置的 Explore 和 Plan 不加载 CLAUDE.md,也不带 git 快照。

  1. Claude 拿你的请求对照每个子智能体的描述和当前上下文

  2. 新的上下文窗口打开,里面是这个智能体自己的提示词和工具

  3. 子智能体在后台运行

    这期间你可以接着忙。它需要权限时,提示会出现在你的主会话里,并写明是哪个子智能体在请求。

来源:Claude Code 文档:创建自定义子智能体 (2026年11月3日 查阅)

内置子智能体,依据 Anthropic 的子智能体文档
子智能体Claude 用它做什么工具
Explore搜索和分析代码库,不做任何修改只读:禁用 Write 和 Edit
Plan在计划模式下先收集背景,再给出计划只读:禁用 Write 和 Edit
General-purpose既要探索又要修改,或者步骤环环相扣的任务子智能体能用的全部工具

动手做一个:示例智能体文件

整个定义就是一个文件。顶部的 YAML 写名称、描述,以及工具、模型这类限制,下面的 Markdown 正文就是子智能体的系统提示词。必填的只有 name 和 description。其余可选字段,从 maxTurns、skills 到 memory、isolation,字段说明里都列了。

下面的示例是我们为这篇文章写的,用来检查 docs 文件夹里的链接,正是 Anthropic 建议交给 Haiku 的那种简单任务。它的 tools 一行只列了 Read、Grep 和 Glob,改文件这件事由 Claude Code 直接挡住。要是只在提示词里写一句“不要修改任何文件”,那只是请求,不算限制。

---
name: docs-link-checker
description: Checks relative links and anchors in Markdown files under docs/ and reports broken ones. Use proactively after editing files in docs/.
tools: Read, Grep, Glob
model: haiku
---

You check links in the Markdown files you are given, or in docs/ if none are named.

1. Find every relative link and every #anchor.
2. Confirm each target file exists and each anchor matches a heading in it.
3. Skip links that start with http:// or https://.

Reply with one line per broken link: file, line, target and the reason.
If every link resolves, reply "All links resolve" and nothing else.
  • name 是 Claude 和钩子看到的标识,不能有冒号,也不必和文件名一致。
  • tools 是允许清单。不写这一项,子智能体会继承子智能体能用的全部工具。
  • model 可以填 sonnet、opus、haiku、fable、完整的模型 ID,也可以填 inherit,表示沿用主对话的模型。
  1. 团队共用的智能体,放进项目里的 .claude/agents/ 文件夹。想在所有项目里都能用,就放进 ~/.claude/agents/。
  2. 把示例存进去,文件名叫 docs-link-checker.md。
  3. 点名使用,比如说“对 docs/ 使用 docs-link-checker 子智能体”。

智能体文件放在哪里,出了问题先查什么

输入 /agents 只看到一行提醒,没有弹出菜单,这不是出了故障。在当前版本里,这个命令只会提醒你去找 Claude,或者直接编辑 .claude/agents/ 和 ~/.claude/agents/。原来那个交互向导,只存在于 v2.1.197 及更早的版本。

让 Claude 来写,也是文档快速上手里走的路。说清楚要什么样的智能体、存在哪里,比如放在 ~/.claude/agents/、只读、用 Sonnet 的代码改进助手。写好之后打开文件,看文件头和你的要求是否一致,包括模型选得对不对。

Claude Code 会从五个地方读取智能体文件,两个定义重名时,优先级高的位置胜出。同一个 .claude/agents/ 文件夹及其子文件夹里,就没有这种排序了:两个文件声明了同一个名字,Claude Code 只加载其中一个,挑哪个取决于文件系统返回的顺序。名字别重复。

字段拼错了,不会有任何提示。字段名用驼峰写法,Claude Code 碰到不认识的字段会直接忽略,也不报错。maxTurns 或 permissionMode 好像不起作用时,先查拼写。

插件能把智能体连同技能、钩子和 MCP 服务器一起带到别的团队,但插件里的智能体还有一处要注意。出于安全考虑,它们会忽略 hooks、mcpServers 和 permissionMode 三个字段,写在这几项里的设置不会生效。

Sid(@sidbid)在 X 上的帖子:Claude Code 将新增自定义子智能体功能,输入 /agents 即可开始,发布于 2025 年 7 月 24 日
Sid(@sidbid)在 X 上,2025 年 7 月 24 日

2025 年那条发布帖在 X 官方嵌入卡片里的截图,拍摄于 2026 年 11 月 3 日,时间为美国太平洋时间,没有收入帖子里的视频。点击截图可到 X 上打开原帖。

Claude 怎样挑子智能体,你又怎样自己挑

Claude 决定交给哪个子智能体时会看几样东西,其中只有 description 是你事先写好的。像示例那样,在描述末尾写上“Use proactively”和适用场景,Claude 就更可能主动用它。

描述还是要写短。所有子智能体的描述加起来超过 15,000 个 token,Claude Code 启动时就会警告,不过照样全部加载。

  • 直接说:“用 test-runner 子智能体修复失败的测试”。Claude 通常会照办,但用不用还是由它决定。
  • 输入 @,从联想列表里选中它,跟引用文件一样。这样运行的一定是你选的那个,不过整条消息仍然交给 Claude,任务提示词也由 Claude 来写。
  • 用 claude --agent code-reviewer 启动会话,主线程就变成这个智能体,套用它的工具限制和模型。在 .claude/settings.json 里设置 agent,就能把它设成项目的默认值。

用子智能体还是技能,子智能体什么时候值得用

技能会加载进你当前的对话,占用这段对话的上下文。技能是可以反复使用的内容,比如操作说明或参考资料。

子智能体的 skills 字段会预先载入所列技能的全文,设了 context: fork 的技能则会放到子智能体里运行。

互不依赖、可以同时进行的几件事,适合交给子智能体。整轮测试这类很长的输出也一样,交出去就不会堆进你的对话。代码评审是另一种用法:没写这段代码的智能体,不会带着你们对话里的那些预设去看它。

每个子智能体都单独发请求,和主对话共用同一份用量上限,所以主要开销是 token。新的子智能体还得重新收集主对话已经有的背景,比如把读过的文件再读一遍,所以可能比直接在主对话里做更慢。答案也不会更好:默认情况下,它就是同一个模型,或者更小的模型,在做同一件事。

要是你每次改完文档都派一个子智能体去查链接,交代的话也都一样,就把它存成示例那样的智能体文件。

主对话还是子智能体:任务适合哪一种
主对话子智能体
需要频繁来回沟通,或者反复打磨是否
几个阶段共享大量上下文,比如规划、实现和测试是否
改动小而明确是否
在意延迟是否
会产生大量输出,而你的对话里不需要它们否是
需要自己的工具限制或权限否是
任务自成一体,能以摘要的形式交回否是

来源:Claude Code 文档:创建自定义子智能体 (2026年11月3日 查阅)

参考:智能体文件从哪里加载,以及默认上限

Claude Code 给子智能体设的三条上限

15,000

个令牌:所有子智能体的描述加起来超过这个数,Claude Code 启动时会发出警告

来源:Claude Code 文档:创建自定义子智能体 (2026年11月3日 查阅)

3

层:默认情况下,主对话之下最多允许嵌套的子智能体层数

来源:Claude Code 文档:创建自定义子智能体 (2026年11月3日 查阅)

20

个:默认情况下,同时运行的子智能体达到这个数,新的就启动不了

来源:Claude Code 文档:创建自定义子智能体 (2026年11月3日 查阅)

子智能体文件的加载位置,按优先级从高到低
位置范围优先级
组织托管设置整个组织1,最高
--agents 参数,以 JSON 传入只限当前会话,不会存到磁盘2
.claude/agents/当前项目3
~/.claude/agents/你的所有项目4
插件的 agents/ 文件夹启用了该插件的地方5,最低

这里的每个事实都来自下方来源里列出的 Anthropic 页面,阅读日期为 2026 年 11 月 2 日和 3 日。本文是对官方文档的解读,不是实际测试,Claude Code 的字段、默认值和命令也会随版本变化。

常见问题

子智能体能再启动自己的子智能体吗?

能,默认最多到主对话以下三层。到了这个深度,除了分叉(fork),Claude Code 会收回所有子智能体的 Agent 工具。最深的那一个只能自己完成任务,交回一份摘要。层数可以用 CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH 来改。数量另有上限:一个会话里已有 20 个子智能体在跑时,第 21 个会启动失败。

添加子智能体之后,要重启 Claude Code 吗?

一般不用。Claude Code 会监视 .claude/agents/ 和 ~/.claude/agents/,新建或修改的文件几秒钟内就会被发现,下一次委派任务时就能用上。要重启的情况只有三种:会话启动时还没有 agents 文件夹,智能体放在用 --add-dir 添加的目录下,或者会话是用 --disable-slash-commands 启动的。

子智能体和分叉(fork)有什么区别?

分叉会继承到目前为止的整段对话,普通子智能体则按自己的定义从零开始。分叉和主会话共用系统提示词、工具和模型,还能复用主会话的提示词缓存。需要相同背景的任务,交给分叉比交给新的子智能体更省。想自己开一个,输入 /subtask 再跟上任务。分叉不能再分叉。

怎样禁止 Claude 使用某个子智能体?

在权限设置的 deny 列表里加上 Agent(name),比如 Agent(Explore)。内置和自定义的子智能体都适用。旧的 Task(...) 写法也照样有效:Claude Code v2.1.63 把 Task 工具改名为 Agent,旧名字留作别名。

子智能体能在不同会话之间记住东西吗?

能,在文件头里加一行,打开持久记忆就行。设为 memory: user,笔记存在 ~/.claude/agent-memory/ 下,所有项目通用。设为 project,笔记存在 .claude/agent-memory/ 下,可以提交进仓库。设为 local,则存在 .claude/agent-memory-local/ 下,不进版本控制。这和你自己的自动记忆是两回事,普通子智能体不会加载它。

不写 model 字段,子智能体用哪个模型?

默认沿用主对话的模型。如果设置了 CLAUDE_CODE_SUBAGENT_MODEL 环境变量,就用它。Claude 针对某一次调用传入的模型别名,优先级比这两者都高。想让所有子智能体都用同一个模型,再加上 CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1。这个变量要 Claude Code v2.1.257 或更高版本才支持。

别人写好的子智能体,去哪里找?

插件里会带,插件能把智能体连同技能、钩子和 MCP 服务器一起带过来。Mindket 的套件也能装智能体文件,套件是纯文本文件的压缩包,里面的东西不会自己运行。不是自己写的智能体文件,用之前先看一遍文件头。Mindket 的智能体页列的是另一种:交给浏览器智能体的指令,每个都完整列出,你先看清它会做什么,再交给智能体。

资料来源

  1. Claude Code 文档:创建自定义子智能体 (2026年11月3日 查阅)https://code.claude.com/docs/en/sub-agents
  2. Claude Code 文档:最佳实践 (2026年11月2日 查阅)https://code.claude.com/docs/en/best-practices
  3. Claude Code 文档:扩展 Claude Code (2026年11月2日 查阅)https://code.claude.com/docs/en/features-overview
  4. Claude Code 文档:用技能扩展 Claude (2026年11月2日 查阅)https://code.claude.com/docs/en/skills
  5. Claude Code 文档:Claude 如何记住你的项目 (2026年11月2日 查阅)https://code.claude.com/docs/en/memory

分享本文

先把每个子智能体都会继承的内容写短

你定义的每个子智能体,启动时都会加载 CLAUDE.md。我们的指南讲了这个文件里该留什么、该删什么。

阅读 CLAUDE.md 指南

本文的 Markdown 版本 · 博客 RSS 订阅 · 全部文章