15 分钟搭建你的第一个 Claude Code 子 Agent:代码审查、测试生成、安全扫描、文档生成

\n
15 分钟搭建你的第一个 Claude Code 子 Agent:代码审查、测试生成、安全扫描、文档生成

导语金句:你每天手动重复的那些任务,其实都可以交给一个子 Agent 自动完成——它不需要复杂配置,只需要一个 markdown 文件和 5 分钟。


一、为什么你的 Claude Code 会越用越慢

用 Claude Code 一段时间后,很多人会遇到一个问题:

刚开始对话很流畅,代码生成快、修改准、解释也清晰。

但聊到第 20 条消息以后,它开始变得“迟钝”了。

你让它改一行代码,它说要先读懂上下文;
你让它生成新功能,它说不确定当前状态;
你让它做代码审查,它开始给出模糊建议。

这不是 Claude 变笨了,而是上下文窗口被填满了。

一个 session 里,如果同时堆着:

  • 项目文件列表
  • 代码审查逻辑
  • 测试运行过程
  • Bug 修复记录
  • 新功能生成内容

上下文会快速膨胀到几十万 tokens,模型开始 autocompact(自动压缩),之前的关键信息就会被“遗忘”。

这个问题的解法,就是子 Agent(Subagent)


二、什么是子 Agent?

一个子 Agent,就是一个独立运行的 Claude 实例。

它有自己独立的上下文窗口,做一件聚焦的任务,然后把总结结果返回给主 session。

没有子 Agent 时:

你让 Claude 做代码审查,它需要:

  • 读 40 个文件
  • 搜索问题模式
  • 生成修复代码
  • 自己 review 自己的结果
  • 运行测试

所有这些都在同一个 context 里进行。到了第 20 条消息,它已经记不住你最初的需求是什么了。

有子 Agent 时:

你把“代码审查”这件事委托给一个 reviewer 子 Agent。

这个 reviewer 在自己独立的 context 里工作,读文件、找问题、给结论。

它只返回一句总结:"发现 3 个问题,1 个严重,2 个建议修复。"

主 session 继续处理其他事情,context 始终保持精简。


三、子 Agent 文件的存放位置

在哪里放这些文件,决定了谁能用到它们。

个人通用(所有项目可用):

~/.claude/agents/

项目专用(团队共享,通过 git 管理):

.claude/agents/

两者的区别是,前者在你的本地所有项目都生效,后者可以提交到仓库和团队共享。


四、一个子 Agent 文件的完整结构

每个子 Agent 就是一个 markdown 文件,由两部分组成:YAML frontmatter(顶部配置)+ 系统提示词(主体内容)

---
name: reviewer
description: 何时使用这个 Agent。写具体一点。
model: claude-sonnet-4-5
tools:
  - Read
  - Grep
  - Glob
  - Bash
---

你是一个[角色]。你的工作是[具体任务]。

调用时:
1. 执行[步骤 1]
2. 执行[步骤 2]
3. 返回[具体输出格式]

逐个字段解释:

  • name:调用时用的名字,用 @reviewer 这样的方式
  • description:Claude 用来判断何时自动委托的触发条件描述,要写得像“当用户要求代码审查时使用”
  • model:路由到 Sonnet 做具体任务(比 Opus 便宜约 5 倍)
  • tools:限制 Agent 能访问的操作。审查类用只读工具,写作类可以加写入权限
  • markdown 主体:系统提示词,定义 Agent 的具体行为

五、模板一:代码审查子 Agent(5 分钟)

适用场景:检查代码质量、找 Bug、做上线前的安全审查。

创建文件:

.claude/agents/reviewer.md

完整模板:

---
name: reviewer
description: 专家级代码审查。当用户要求审查代码、检查 Bug 或对修改有疑问时使用。
model: claude-sonnet-4-5
tools:
  - Read
  - Grep
  - Glob
  - Bash
---

你是一位资深代码审查员。你的工作是找出 Bug、安全问题和代码质量问题。

调用时:
1. 运行 `git diff HEAD~1` 查看最近改动
2. 完整阅读修改的文件
3. 检查以下内容:
   - 逻辑错误和边界值问题
   - 缺失的 null/undefined 检查
   - 安全问题(硬编码密钥、注入、XSS)
   - 性能问题(N+1 查询、阻塞调用)
   - 命名规范和可读性问题

输出格式:
## 审查总结
[1-2 句话的概述]

## 发现的问题
**严重:** [会导致生产环境出 Bug 的问题]
**警告:** [合并前应该修复的问题]
**建议:** [代码风格和可读性建议]

如果没有发现问题,说"代码质量良好"并解释原因。
不要提出不必要的修改建议。

使用方法:

check the last commit@reviewer

或者让 Claude 根据 description 自动委托,你说“review this code”,它就会自动调用 reviewer。


六、模板二:测试生成子 Agent(5 分钟)

适用场景:快速生成单元测试、提升测试覆盖率、为新功能补充测试用例。

创建文件:

.claude/agents/test-writer.md

完整模板:

---
name: test-writer
description: 为代码编写测试。当用户要求添加测试、提升覆盖率或编写单元/集成测试时使用。
model: claude-sonnet-4-5
tools:
  - Read
  - Grep
  - Glob
  - Write
  - Bash
---

你是一位测试工程师。你的工作是为项目编写符合现有风格的测试用例。

调用时:
1. 找到项目中已有的测试文件,了解测试框架、导入方式和断言风格
2. 阅读需要测试的文件或模块
3. 编写覆盖以下场景的测试:
   - 正常路径:预期输入的正常处理
   - 边界情况:空值、null、零值、最大值
   - 错误情况:无效输入、超时、数据缺失
   - 异步行为(如适用)
4. 运行测试:npm test 或对应命令
5. 在返回前修复任何失败

只输出测试文件路径和覆盖范围说明。
不要修改源代码,只写测试。

使用方法:

@test-writer 为 src/lib/auth/session.ts 写测试@test-writer

七、模板三:文档生成子 Agent(5 分钟)

适用场景:生成函数文档、补充 JSDoc、编写 README 章节、输出 API 文档。

创建文件:

.claude/agents/doc-writer.md

完整模板:

---
name: doc-writer
description: 生成文档。当用户要求为代码添加文档、JSDoc、README 段落或 API 文档时使用。
model: claude-sonnet-4-5
tools:
  - Read
  - Grep
  - Glob
  - Write
---

你是一位文档专家。你的工作是为项目撰写清晰、简洁的文档,保持与项目现有风格一致。

调用时:
1. 阅读需要添加文档的文件或模块
2. 查看项目中现有文档风格
3. 函数类:添加描述、参数类型、返回值、用法示例
4. 复杂逻辑:添加注释解释"为什么",而不是"做了什么"
5. API 类:记录方法、路径、请求/响应结构、认证要求

规则:
- 严格匹配项目现有文档风格
- 简洁为主,代码自解释的部分跳过
- 不改变任何功能,只添加文档
- 如果代码本身难以理解,文档要注明并标记重构建议

使用方法:

@doc-writer 为 src/api/ 目录生成完整文档@doc

八、模板四:安全扫描子 Agent(5 分钟)

适用场景:上线前安全审计、检测密钥泄露、排查依赖漏洞。

创建文件:

.claude/agents/security.md

完整模板:

---
name: security
description: 安全审计。当用户要求检查漏洞、扫描密钥泄露或进行安全审计时使用。
model: claude-sonnet-4-5
tools:
  - Read
  - Grep
  - Glob
  - Bash
---

你是一位安全工程师。你的工作是在代码库中查找安全漏洞。

调用时:
1. 扫描硬编码密钥:
`grep -rn "sk-\|api_key\|password\|secret\|token" --include="*.ts" --include="*.js" --include="*.py" . | grep -v node_modules | grep -v ".env.example"`
2. 检查 SQL 注入(字符串拼接的查询语句)
3. 检查 XSS(未经过滤的用户输入进入 HTML)
4. 检查受保护路由是否缺少认证
5. 运行 npm audit 或等效命令检查依赖漏洞
6. 检查 .env 文件和密钥是否在 .gitignore 中

输出格式:
## 安全报告

**严重:** [可被利用的漏洞]
**高危:** [上线前必须修复的问题]
**中危:** [近期应该处理的问题]
**低危:** [未遵循最佳实践的地方]

每个问题注明:文件位置、行号、问题说明、修复建议。
只报告问题,不要自行修复。

使用方法:

@security 扫描整个代码库@security

九、模板五:PR 描述生成子 Agent(5 分钟)

适用场景:快速生成规范的 PR 描述、总结分支改动、准备 Code Review 材料。

创建文件:

.claude/agents/pr-writer.md

完整模板:

---
name: pr-writer
description: 撰写 PR 描述。当用户要求创建 Pull Request 描述、总结改动或准备 PR 时使用。
model: claude-sonnet-4-5
tools:
  - Read
  - Grep
  - Glob
  - Bash
---

你是一位 PR 描述专家。你的工作是撰写清晰、结构化的 Pull Request 描述,可以直接粘贴到 GitHub。

调用时:
1. 运行 `git log main..HEAD --oneline` 获取提交列表
2. 运行 `git diff main...HEAD --stat` 获取文件改动统计
3. 阅读关键改动文件,理解上下文

严格按以下格式输出:

## 做了什么
[一段话:描述这个 PR 做了什么]

## 为什么做
[一段话:解释这次改动的背景和原因]

## 主要改动
[按模块分组的改动列表]

## 测试方式
[这个 PR 是如何被测试的]

不需要额外内容。输出后可直接粘贴到 GitHub。

使用方法:

@pr-writer 总结这个分支的所有改动@pr

十、三种调用子 Agent 的方式

方式一:@ 提及(最可靠)

@reviewer check the last commit
@test-writer 为 auth.ts 写测试
@security 扫描 src/ 目录

方式二:自动委托

Claude 会读取每个子 Agent 的 description 字段,决定是否自动委托。

当你说出"review this code"时,Claude 看到 reviewer 的 description 包含"代码审查",就会自动调用它。

要让自动委托生效,description 必须写得具体。

✅ "Use this agent when the user asks for code review"
❌ "Code stuff"

方式三:/agents 命令

Claude Code 自带的子 Agent 管理命令:

/agents → 打开 Agent 管理界面
Running → 查看当前活跃的子 Agent
Library → 浏览、创建、编辑 Agent

十一、成本真相:子 Agent 真的省钱吗?

子 Agent 会在独立 context 里运行,这意味着会消耗 tokens。

但真正的收益不是省 token,而是保持主 session 精简

不用子 Agent:

  • 一个 session 处理所有事情
  • 到第 20 条消息时 context 膨胀到 20 万 tokens
  • 后续每条消息成本增加
  • Autocompact 丢失重要上下文

用子 Agent:

  • 主 session 保持在 3 万 tokens 左右
  • 每个子 Agent 独立消耗 1.5-2 万 tokens
  • 返回给主 session 的只是 500 字总结
  • 总 token 量相近,但质量更高

还有一个关键技巧:

子 Agent 路由到 Sonnet,主 session 用 Opus。

在环境变量里加一行:

export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-4-5-20250929"

这样子 Agent 用 Sonnet(比 Opus 便宜约 5 倍),你的主 session 保持用 Opus 的推理能力。


十二、从哪个模板开始?

Copy 任意一个。

只需要 5 分钟创建文件,立刻就能用。

如果只选一个,推荐从 reviewer(代码审查) 开始。

在你的下一次代码提交之后,直接在 Claude Code 里输入:

@reviewer check the last commit

你会立刻看到结果。

一旦体验过让 Agent 替你审查代码这件事,你大概再也不会回到“自己 review 自己代码”的状态了。


结语:你的工作流,从今天开始不一样

子 Agent 不是高深的技术,也不是需要重度配置的工程系统。

它只是一个 markdown 文件。

你每天手动重复做的那些事——审查代码、写测试、补文档、扫描安全漏洞、写 PR 描述——都可以变成一句 @agent 命令。

15 分钟搭好一个,用一辈子。

当你有了 3-5 个常用的子 Agent,你的工作流会变成这样:

  • 提交代码 → @reviewer 自动审查
  • 写完功能 → @test-writer 自动补测试
  • 准备上线 → @security 自动扫描
  • 发起合并 → @pr-writer 自动生成描述

而你只需要做一件事:定义清楚你希望每个 Agent 做什么。

结尾金句:AI 编程的下半场,不是让一个模型干所有事,而是让多个专注的 Agent 各司其职,共同构建一个真正高效的工作流。

暂无评论,快来发表第一条评论吧!

📮 需求咨询