Skip to content

Subagents 子代理

Subagent 是一个独立上下文的子任务执行者。主会话把活派给它,它自己去读文件、跑命令,最后只把结论交回来。

核心价值:上下文隔离

搜索一个函数在哪定义,可能要读 30 个文件。如果在主会话里做,这 30 个文件的内容会永久留在上下文里,后面每一轮都要为它们付费。交给 subagent,主会话只收到一句「在 service/auth.go:142」。

用法

直接说就行:

用一个子代理去搜索所有调用了 deprecated API 的地方,只告诉我文件和行号

或者显式指定:

起三个子代理并行:一个查前端调用、一个查后端实现、一个查测试覆盖

自定义 Subagent

放在 .claude/agents/<name>.md(项目级)或 ~/.claude/agents/<name>.md(个人级):

markdown
---
name: sql-reviewer
description: 审查 SQL 变更的跨数据库兼容性。当改动涉及 migrations/ 或原生 SQL 时使用。
tools: Read, Grep, Glob
model: claude-haiku-4-5-20251001
---

你是数据库兼容性审查员。

检查这些点:
1. 是否用了 MySQL 专有函数(`IF()``GROUP_CONCAT``ON DUPLICATE KEY`
2. 是否用了 PostgreSQL 专有语法(`RETURNING``::` 转换、数组类型)
3. SQLite 是否支持(`ALTER COLUMN` 不支持,只能 `ADD COLUMN`
4. 保留字是否加了引号(`group``key``order`

只输出问题清单,格式:`文件:行号 — 问题 — 建议改法`
不要修改任何文件。

frontmatter 字段

字段作用
name代理名,用来 @ 调用
description什么时候用它,主模型据此自动委派
tools限制它能用哪些工具(不写 = 全部)
model指定用哪个模型

model 省钱

这是 subagent 最实用的用法:把机械活派给便宜模型

markdown
---
name: file-finder
description: 在代码库里定位文件和符号定义。
tools: Grep, Glob, Read
model: claude-haiku-4-5-20251001
---

你只负责定位,不做分析。
输出格式:一行一个 `路径:行号 — 一句话说明`
最多 20 条。

搜索这种活 Haiku 完全够用,价格是 Opus 的五分之一。主模型继续用 Opus 干需要脑子的事。

任务类型建议模型
搜索、定位、列清单claude-haiku-4-5-20251001
读代码、总结、写测试claude-sonnet-4-6
架构设计、疑难 bug、代码审查claude-opus-4-8

快米兔 API 上的 subagent

Subagent 的每次调用都是独立的 API 请求,会按对应模型单独计费。 在 控制台日志 里能清楚看到 Haiku 和 Opus 的调用分别有多少——这是校验「省钱策略有没有生效」的最直接方式。

并行

多个 subagent 可以并行跑,适合:

  • 跨模块调研:「前端怎么调的」「后端怎么实现的」「测试覆盖到没有」
  • 多方案对比:让三个 agent 分别设计三种方案,主模型综合
  • 大范围审查:按目录切片,每个 agent 审一块
并行起 4 个子代理,分别审查 router/ controller/ service/ model/ 四个目录,
每个只报告「明确的 bug」,不要报风格问题

什么时候不该用

场景为什么不适合
需要来回追问的任务Subagent 拿不到主会话的完整上下文,问不清楚
改代码隔离上下文意味着它看不到你刚才的讨论,容易改跑偏
只读一两个文件起 agent 的开销比直接读还大

判断标准:这个任务会不会产生大量「过程垃圾」而结论很短?会 → 用 subagent。

验证

列出当前可用的所有 subagent

控制台日志 里按模型筛选,能直观看到 subagent 用的是哪个模型——如果你配了 Haiku 但日志里全是 Opus,说明 model 字段没生效(检查模型 ID 拼写)。

配套阅读

文档持续更新 · 以 站内价格页 与控制台实际配置为准