SupaStore

返回博客列表

Claude Code 子代理怎么用?Subagents 配置教程与实用示例(2026)

Claude Code 子代理怎么用?这篇 Claude Code Subagents 教程讲清子代理是什么、有哪些内置子代理,演示 .claude/agents 子代理文件的写法和 frontmatter 字段,说明自动委派与手动调用、前台与后台运行、模型选择和 Token 成本,并附代码审查、测试运行等可直接复制的子代理示例。

SupaStore 开发者体验组 ·

Claude Code 子代理怎么用?Subagents 配置教程与实用示例(2026)

Claude Code 子代理(Subagents)是 Claude 可以把任务委派出去的"专职助手":每个子代理有独立的上下文窗口、专门的系统提示词和受限的工具权限。把搜代码、跑测试、做代码审查这类会产生大量输出的工作交给子代理,主对话只拿回一份总结,上下文更干净,Token 也更省。

本文讲清 Claude Code 子代理是什么、内置了哪些子代理,演示如何编写自定义子代理文件,并说明调用方式、模型选择和成本控制。还不熟悉 Claude Code 的话,先看《Claude Code 教程:2026 Claude Code 安装与使用指南》。


Claude Code 子代理是什么

官方文档的说法是:每个子代理在自己的上下文窗口中运行,拥有自定义的系统提示词、特定的工具权限和独立的权限设置。使用子代理的好处:

  • 保持主对话干净:探索代码、跑测试产生的大量输出留在子代理里;
  • 限制权限:比如代码审查子代理只给读权限,不能改文件;
  • 复用配置:用户级子代理可以在所有项目中使用;
  • 专业分工:用专门的系统提示词处理特定领域的任务;
  • 控制成本:把简单任务交给 Haiku 这类更快、更便宜的模型。

子代理和 Skills 有什么区别

Skills 是在当前对话里加载一套流程说明;子代理则是开一个独立的上下文去完成任务,再把结果交回来。需要隔离大量中间输出、或者需要不同权限和模型时,用子代理更合适。


Claude Code 内置子代理

子代理 用途 权限
Explore 快速搜索和分析代码库,可选 quick、medium、very thorough 三档深度 只读,不能编辑文件
Plan 计划模式下收集上下文,为方案做调研 只读
general-purpose 需要同时探索和动手的复杂多步任务 可使用全部工具

日常使用中,Claude 会自动调用这些内置子代理,例如在大项目里找某个函数的所有调用位置时,常常会先派出 Explore。


自定义 Claude Code 子代理

子代理文件放在哪里

位置 生效范围 优先级
组织托管设置 整个组织 最高
--agents 启动参数 当前会话 2
.claude/agents/ 当前项目,可提交到 Git 共享 3
~/.claude/agents/ 你的所有项目 4
插件的 agents/ 目录 启用插件的项目 最低

同名子代理按优先级取高的那个。Claude Code 会监听 .claude/agents/ 和 ~/.claude/agents/,修改文件后几秒内生效。

子代理文件格式

子代理是一个 Markdown 文件:开头用 YAML frontmatter 写配置,正文就是它的系统提示词。官方示例:

---
name: code-reviewer
description: Reviews code for quality and best practices
tools: Read, Glob, Grep
model: sonnet
---

You are a code reviewer. When invoked, analyze the code and provide
specific, actionable feedback on quality, security, and best practices.

常用 frontmatter 字段

只有 name 和 description 是必填的。

字段 作用
name 子代理的唯一标识
description 什么时候应该委派给它,Claude 据此自动判断
tools 允许使用的工具,不写则继承全部可用工具
disallowedTools 禁止使用的工具
model sonnet、opus、haiku、fable、完整模型 ID 或 inherit(沿用主对话模型)
effort 思考强度:low ~ max
permissionMode 权限模式,如 default、acceptEdits、plan
maxTurns 最多执行多少轮
skills 启动时预加载的 Skills
mcpServers 这个子代理可用的 MCP 服务器
isolation 设为 worktree 时在临时 Git 工作树中运行
background 设为 true 时始终在后台运行

字段名区分大小写,写错的字段会被静默忽略,不会报错。


3 个实用 Claude Code 子代理示例

示例一:只读的代码审查员

.claude/agents/code-reviewer.md:

---
name: code-reviewer
description: 代码改动完成后主动使用。审查最近的改动,检查正确性、安全和可维护性。
tools: Read, Grep, Glob, Bash
model: sonnet
---

你是一名资深代码审查员。被调用时:

1. 运行 git diff 查看最近的改动
2. 只审查改动涉及的代码
3. 按"必须修复 / 建议修改 / 可以考虑"三级列出问题,每条附文件和行号
4. 不要直接修改代码

description 里写"主动使用"(use proactively 这类措辞),Claude 会更积极地自动委派。

示例二:用便宜模型跑测试

.claude/agents/test-runner.md:

---
name: test-runner
description: 运行测试并汇总失败原因。需要跑测试或检查测试是否通过时使用。
tools: Bash, Read, Grep
model: haiku
---

运行项目的测试命令,只汇报:

- 通过 / 失败的数量
- 每个失败用例的名称、报错信息和最可能的原因
- 不要贴完整日志,不要修改代码

测试日志往往有几千行,交给 Haiku 子代理处理,主对话只收到几行总结,既省上下文又省钱。

示例三:调试专家

.claude/agents/debugger.md:

---
name: debugger
description: 遇到报错、测试失败或异常行为时使用,定位根因并给出最小修复。
tools: Read, Edit, Bash, Grep, Glob
---

你是调试专家。按以下步骤工作:

1. 复现问题,记录完整报错
2. 定位根因,而不是只处理表面症状
3. 做最小范围的修复,并运行相关测试验证
4. 说明根因、修复方式和验证结果

没写 model 时,子代理按默认规则选择模型,通常沿用主对话的模型。


如何调用 Claude Code 子代理

自动委派

Claude 会根据你的请求、子代理的 description 和当前上下文,自动决定是否委派。description 写得越清楚,自动委派越准确。

手动指定

  • 自然语言:直接说"用 test-runner 子代理修复失败的测试";
  • @ 提及:输入 @agent-code-reviewer,后面跟上任务;
  • 整个会话都用它:启动时运行 claude --agent code-reviewer。

前台与后台

前台子代理会阻塞主对话直到完成,权限确认会转给你处理;后台子代理与主对话并行运行,你可以继续做别的事。从主对话派出的子代理默认在后台运行,运行中的任务也可以按 Ctrl+B 转到后台。


Claude Code 子代理的 Token 成本

子代理有独立的上下文,它不会看到你的对话历史,也会发出自己的请求,这些请求同样计入你的用量和账单。控制成本的几个要点:

  1. 给简单任务配便宜模型:读日志、跑测试用 model: haiku,复杂判断再用 sonnet 或 opus;
  2. 让子代理只返回总结:在系统提示词里明确"不要贴完整日志";
  3. description 写短:所有自定义子代理的描述都会加载到上下文,合计超过 1.5 万 Token 时 Claude Code 会在启动时警告;
  4. 频繁来回沟通的任务留在主对话:子代理适合"交出去、拿回结果"的独立任务。

更多降低 Claude Code Token 消耗的方法,见《Claude Code Token 消耗太快?10 个 Claude Code 省 Token 技巧》;各模型的价格差异见《Claude Opus 和 Sonnet 有什么区别?2026 Claude 模型对比与选型指南》。通过中转站使用时,子代理的请求同样走中转站,扣费明细可以在控制台日志中按模型查看,配置方法见《Claude API 中转怎么用?国内 Claude Code 中转站配置教程》。


常见问题 (FAQ)

Q: Claude Code 子代理文件放在哪里?

答: 项目级子代理放在 .claude/agents/ 目录,可以提交到 Git 与团队共享;个人在所有项目都能用的子代理放在 ~/.claude/agents/ 目录,同名时项目级优先。

Q: 子代理文件必须写哪些字段?

答: 只有 name 和 description 是必填的,name 是唯一标识,description 说明什么时候应该委派给它;tools、model 等字段不写时会继承默认设置。

Q: 子代理用什么模型?

答: 可以在 model 字段中指定 sonnet、opus、haiku、fable、完整模型 ID 或 inherit;不指定时按默认规则选择,通常沿用主对话的模型。

Q: 子代理会额外消耗 Token 吗?

答: 会,子代理发出的请求和主对话一样计入用量和费用;但它能把大量中间输出隔离在自己的上下文里,配合便宜的模型使用,整体往往更省。

Q: 怎么让 Claude 使用指定的子代理?

答: 可以直接用自然语言要求,例如"用 code-reviewer 子代理审查这次改动",也可以输入 @agent-子代理名 进行提及,或用 claude --agent 子代理名 让整个会话都使用它。