Claude Code 自定义子 Agent — .claude/agents/ 角色定义、模型分配与 @mention
简介
Claude Code 支持在
.claude/agents/目录中定义自定义子 Agent,这是一种将复杂任务分解为多个专业角色的强大机制。通过子 Agent,你可以为不同领域(如代码审查、安全审计、文档编写、测试生成)创建专门的 AI 角色,每个角色拥有独立的系统提示、能力声明和工具权限,并通过@mention在主对话中灵活调用。
想象你正在开发一个大型 Web 项目:主 Agent 负责整体架构设计和任务协调,一个专门的"安全审查 Agent"负责检查代码漏洞,一个"前端优化 Agent"专注于 CSS 和 JavaScript 性能,还有一个"测试 Agent"负责生成和维护测试用例。每个 Agent 各司其职,组合起来就是一个完整的 AI 开发团队。
子 Agent 的核心理念是"关注点分离"(Separation of Concerns)。正如在软件工程中我们将复杂系统拆分为多个模块一样,子 Agent 让你将复杂的 AI 任务拆分为多个专业化的角色。每个角色拥有自己的知识边界和行为准则,这不仅能提高输出质量,还能减少上下文污染和指令冲突。
目录
- 一、子 Agent 基础概念
- 二、创建第一个子 Agent
- 三、Agent 配置文件详解
- 四、模型分配策略
- 五、@mention 调用机制
- 六、多 Agent 协作模式
- 七、高级配置:工具权限与作用域
- 八、实战案例
- 九、PR 审查报告
- 十、并行子 Agent 与 disallowed-tools(v2.1.154+ 新特性)
- 十一、真实经验与踩坑
- 十二、落地检查清单
- 十三、总结
- 十四、下篇预告
一、子 Agent 基础概念
1.1 什么是子 Agent?
子 Agent(Sub-Agent)是 Claude Code 中一种特殊的项目级配置实体,定义在 .claude/agents/ 目录中。与主 Agent 不同,子 Agent:
- 不直接接收用户输入:只能通过
@mention在主对话中被调用 - 拥有独立的系统提示:每个子 Agent 有自己的行为准则和专业领域
- 可以被赋予不同的模型:允许为不同任务分配最适合的模型
- 共享项目上下文:子 Agent 继承主项目的 CLAUDE.md 上下文
1.2 子 Agent 与自定义命令的区别
| 特性 | 子 Agent (.claude/agents/) |
自定义命令 (.claude/commands/) |
|---|---|---|
| 定义方式 | 角色描述 + 能力声明 | 执行步骤列表 |
| 调用方式 | @agent-name |
/command-name |
| 交互模式 | 可作为独立对话参与者 | 一次性执行流程 |
| 持久状态 | 可在对话中持续参与 | 执行完毕即结束 |
| 模型分配 | 可为每个 Agent 指定不同模型 | 共享主对话模型 |
二、创建第一个子 Agent
2.1 目录结构
.claude/
├── agents/
│ ├── reviewer.md # @reviewer - 代码审查专家
│ ├── tester.md # @tester - 测试生成专家
│ ├── security.md # @security - 安全审计专家
│ └── docs.md # @docs - 文档编写专家
└── CLAUDE.md2.2 创建代码审查 Agent
mkdir -p .claude/agents
cat > .claude/agents/reviewer.md << 'EOF'
# 角色: 代码审查专家
## 能力声明
- 代码质量审查
- 设计模式建议
- 性能优化建议
- 命名规范检查
## 行为准则
你是一个专注于代码质量审查的 AI 专家。在审查代码时,你需要:
1. **首先理解上下文**:了解代码所属模块的功能和目的
2. **逐层审查**:从架构层面到实现细节
3. **分类反馈**:将发现的问题分为:
- 🔴 必须修复(Bug、安全问题)
- 🟡 建议修改(可读性、性能)
- 🟢 可选优化(风格、约定)
4. **提供具体建议**:不仅要指出问题,还要给出改进方案
5. **保持建设性语气**:专注于代码而非开发者
## 审查清单
- [ ] 是否有内存泄漏风险
- [ ] 是否有未处理的异常
- [ ] 是否有硬编码的值
- [ ] 函数/方法是否过长(>50 行)
- [ ] 命名是否清晰且符合项目约定
- [ ] 是否有重复代码可以提取
- [ ] 注释是否充分且准确
EOF三、Agent 配置文件详解
3.1 必需部分
每个 Agent 配置文件必须包含以下核心部分:
# 角色: [Agent 名称]
## 能力声明
- [能力 1]
- [能力 2]
- [能力 N]# 角色:— Agent 的名称,同时也是@mention时使用的标识符## 能力声明— Agent 的能力范围,帮助主 Agent 理解何时调用该子 Agent
3.2 可选部分
## 行为准则
[详细的行为描述和工作方式]
## 知识领域
- [领域 1]
- [领域 2]
## 工具偏好
[指定该 Agent 偏好使用的工具]
## 输出格式
[指定输出格式要求]
## 约束条件
- 不做的事情
- 不应越权的范围3.3 完整的 Agent 配置示例
# 角色: 安全审计专家
## 能力声明
- 静态代码安全分析
- 依赖漏洞检查
- 认证授权审查
- 数据泄露检测
- OWASP Top 10 对照
## 行为准则
你是一个专注于软件安全的 AI 审计专家。你的职责是发现代码中的安全隐患,
并提供可操作的修复建议。
### 审计流程
1. **扫描阶段**:识别所有潜在的安全风险点
2. **分类阶段**:按严重程度(Critical/High/Medium/Low)分类
3. **报告阶段**:生成结构化安全报告
4. **建议阶段**:为每个问题提供修复代码
### 关注领域
- SQL 注入、XSS、CSRF
- 硬编码密钥和凭证
- 不安全的反序列化
- 权限提升路径
- 敏感数据暴露
- 不安全的加密实现
## 输出格式
使用以下模板报告每个发现:
| 项目 | 内容 |
|------|------|
| 类型 | [漏洞类型] |
| 严重程度 | [Critical/High/Medium/Low] |
| 位置 | `文件:行号` |
| 描述 | [问题描述] |
| 修复 | [修复建议和代码] |
| 参考 | [OWASP/CWE 编号] |
## 约束条件
- 不修改任何代码文件,仅提供审计建议
- 不执行实际的渗透测试
- 对于不确定的问题,标记为 "需要人工确认"四、模型分配策略
Claude Code 允许为不同的子 Agent 分配不同的底层模型,这是优化成本和性能的关键策略。
4.1 模型分配配置
# 在 .claude/ 目录下创建模型分配配置
cat > .claude/model-config.json << 'EOF'
{
"agents": {
"reviewer": {
"model": "claude-sonnet-4-20250514"
},
"security": {
"model": "claude-opus-20250514"
},
"docs": {
"model": "claude-sonnet-4-20250514"
},
"tester": {
"model": "claude-sonnet-4-20250514"
}
},
"default": "claude-sonnet-4-20250514"
}
EOF4.2 模型选择策略
| 任务类型 | 推荐模型 | 理由 |
|---|---|---|
| 代码审查 | Sonnet 4 | 代码理解能力强,性价比高 |
| 安全审计 | Opus | 需要深度推理和模式识别 |
| 文档编写 | Sonnet 4 | 语言生成质量高,速度快 |
| 测试生成 | Sonnet 4 | 模式化任务,Sonnet 足够 |
| 架构设计 | Opus | 需要综合分析和权衡 |
| 简单查询 | Haiku | 快速响应,成本极低 |
4.3 成本对比分析
场景:审查 1000 行代码 + 安全审计 + 生成测试 + 编写文档
方案 A:全部使用 Opus
- 总 Token 消耗: ~2,000,000
- 估算成本: ~$30.00
- 执行时间: ~8 分钟
方案 B:按任务分配模型
- 代码审查 (Sonnet): ~800K tokens → ~$6.00
- 安全审计 (Opus): ~500K tokens → ~$15.00
- 测试生成 (Sonnet): ~400K tokens → ~$3.00
- 文档编写 (Haiku): ~300K tokens → ~$0.45
- 估算总成本: ~$24.45
- 执行时间: ~5 分钟
节省: 18.5% 成本,37.5% 时间五、@mention 调用机制
5.1 基本用法
在主对话中,使用 @ 符号后跟 Agent 名称来调用子 Agent:
@reviewer 请审查 src/auth/ 目录下的所有文件
@security 对当前的 API 实现进行一次完整的安全审计
@tester 为 src/utils/ 目录下的函数生成单元测试
@docs 为 auth 模块编写 API 文档5.2 智能路由
Claude Code 的主 Agent 具备智能路由能力:
用户: 检查这个 PR 的安全性
# Claude 内部处理:
# 1. 识别任务类型为"安全检查"
# 2. 匹配到 @security Agent 的能力声明
# 3. 自动调用 @security Agent
# 4. 将结果返回给用户你也可以显式指定:
@security 请检查这个 PR 的安全性5.3 上下文传递
子 Agent 接收到的上下文包括:
┌─────────────────────────────────────┐
│ 子 Agent 上下文 │
├─────────────────────────────────────┤
│ │
│ 1. 角色定义(来自 agents/xxx.md) │
│ 2. 调用指令(用户的 @mention 内容) │
│ 3. 项目 CLAUDE.md 上下文 │
│ 4. 当前对话历史 │
│ 5. 当前工作目录的文件系统状态 │
│ │
└─────────────────────────────────────┘5.4 带参数的调用
@reviewer 重点检查错误处理和日志记录部分
@tester 只关注边界条件和异常场景,覆盖率达到 80% 以上
@docs 使用中文输出,包含代码示例和故障排除章节六、多 Agent 协作模式
6.1 模式 1:串行流水线
一个 Agent 的输出作为下一个 Agent 的输入:
用户: 完成这个功能的开发、审查和测试
Claude Code 内部流程:
1. 主 Agent 完成代码编写
2. @reviewer 审查代码,输出审查报告
3. 主 Agent 根据审查报告修改代码
4. @tester 生成并运行测试
5. 主 Agent 汇总所有结果并报告6.2 模式 2:并行审查
多个 Agent 同时从不同角度审查同一份代码:
用户: @reviewer @security @tester 请分别审查 src/auth/login.py
并行执行:
┌──────────┐ ┌──────────┐ ┌──────────┐
│ @reviewer│ │ @security│ │ @tester │
│ 代码质量 │ │ 安全漏洞 │ │ 测试覆盖 │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
└─────────────┼─────────────┘
│
┌────────┴────────┐
│ 主 Agent 汇总 │
└─────────────────┘6.3 模式 3:分层架构
用户: 全面审查这个项目
执行架构:
┌──────────┐
│ 主 Agent │
│ 整体协调 │
└────┬─────┘
│
┌────────────────┼────────────────┐
│ │ │
┌────┴────┐ ┌──────┴──────┐ ┌─────┴─────┐
│@reviewer│ │ @security │ │ @tester │
│ 架构层 │ │ 安全层 │ │ 质量层 │
└────┬────┘ └──────┬──────┘ └─────┬─────┘
│ │ │
┌────┴────┐ │ ┌────┴────┐
│前端审查 │ │ ┌────┴────┐┌──┴──┐
└─────────┘ │ │单元 ││集成 │
┌────┴────┐│测试 ││测试 │
│网络审查 │└───────┘└─────┘
└─────────┘七、高级配置:工具权限与作用域
7.1 限制 Agent 的工具权限
某些 Agent 应该只有只读权限,比如代码审查 Agent:
# 角色: 代码审查专家
## 工具约束
- Read: 允许
- Glob: 允许
- Grep: 允许
- Edit: 禁止(审查者不应修改代码)
- Bash: 禁止(除非是运行 linter)
- Write: 禁止7.2 定义 Agent 的作用域
# 角色: 前端优化专家
## 作用域
仅处理以下目录中的文件:
- src/components/
- src/styles/
- src/assets/
- public/
超出作用域的请求应回复:
"我的职责范围限于前端资源优化,后端问题请交由 @reviewer 处理。"八、实战案例
8.1 案例 1:完整的 PR 审查工作流
# .claude/agents/pr-reviewer.md
# 角色: PR 审查专家
## 能力声明
- Pull Request 全面审查
- 代码变更影响分析
- 合并建议生成
## 行为准则
你是一个专门负责 PR 审查的 AI 专家。审查流程如下:
1. **变更摘要**:列出所有修改的文件和行数
2. **功能审查**:代码是否正确实现了需求
3. **质量审查**:代码质量、可读性、可维护性
4. **安全审查**:是否存在安全隐患
5. **测试审查**:测试是否充分
6. **合并建议**:给出明确的合并/修改/拒绝建议
## 输出格式九、PR 审查报告
9.1 变更摘要
| 文件 | 类型 | 新增 | 删除 |
|---|---|---|---|
| ... |
9.2 审查结论
- ✅ 通过 / ⚠️ 需要修改 / ❌ 建议拒绝
9.3 详细反馈
...
## 约束条件
- 审查时间不超过 5 分钟
- 只关注 diff 范围内的代码
- 对不确定的地方标记为 "需要人工确认"调用方式:
@pr-reviewer 请审查 PR #429.4 案例 2:文档生成 Agent 团队
# .claude/agents/api-docs.md
# 角色: API 文档专家
## 能力声明
- RESTful API 文档编写
- OpenAPI/Swagger 规范生成
- 代码示例编写
- 错误码文档维护
## 行为准则
1. 从代码中提取 API 签名
2. 补充参数说明和类型
3. 编写请求/响应示例
4. 标注认证要求
5. 列出所有错误码
## 输出格式
使用 Markdown 格式,遵循 OpenAPI 3.0 规范# .claude/agents/user-docs.md
# 角色: 用户文档专家
## 能力声明
- 用户手册编写
- 快速入门指南
- FAQ 文档
- 教程文章
## 行为准则
1. 面向非技术用户编写
2. 使用清晰的步骤描述
3. 包含截图说明(用占位符标记)
4. 提供故障排除章节9.5 案例 3:多 Agent 协作的 Bug 修复
用户: @bug-analyzer @fixer @tester 修复这个 bug: 登录页面在 Safari 上崩溃
执行流程:
Step 1: @bug-analyzer 分析
├── 定位问题: CSS flexbox 兼容性问题
├── 影响范围: Safari 15.x 及以下
└── 根因: 使用了 Safari 不支持的 CSS 特性
Step 2: @fixer 修复
├── 修改 login.css
├── 添加 Safari 前缀
└── 使用降级方案
Step 3: @tester 验证
├── 检查修复后的 CSS
├── 生成浏览器兼容性测试
└── 确认 Safari 和 Chrome 均正常
Step 4: 主 Agent 汇总
└── 生成修复报告# .claude/agents/bug-analyzer.md
# 角色: Bug 分析专家
## 能力声明
- Bug 根因分析
- 影响范围评估
- 修复方案建议
- 回归风险判断
## 行为准则
你是一个 Bug 分析专家。收到 bug 报告后:
1. 复现 bug(如果可能)
2. 定位根本原因
3. 评估影响范围
4. 提供 2-3 个修复方案
5. 评估每个方案的风险
## 输出格式
| 项目 | 内容 |
|------|------|
| Bug 类型 | [分类] |
| 严重程度 | [Critical/High/Medium/Low] |
| 根因 | [描述] |
| 影响范围 | [描述] |
| 修复方案 | [方案列表] |
| 推荐方案 | [方案 + 理由] |十、并行子 Agent 与 disallowed-tools(v2.1.154+ 新特性)
Claude Code v2.1.154 引入了动态工作流和并行编排能力,单个会话中最多可调度 16 个子 Agent 并行执行,累计可达上千个 Agent 实例。配合
disallowed-tools精细权限控制,子 Agent 的安全性和实用性大幅提升。
10.1 并行子 Agent 调度
调节 /effort 到 xhigh 或 max 后,Claude Code 会从“单 Agent 执行”升级为“多 Agent 并行”,自动将任务拆分给多个子 Agent 同时处理:
# 将投入度调至最高,触发并行调度
/effort max
# 然后发送复杂任务
请为 src/services/ 下所有服务类添加完整的单元测试,
每个服务类生成独立的测试文件并行调度的工作原理:
主 Agent: 任务拆分
├─ @test-agent-1 → UserService.test.ts ← 并行
├─ @test-agent-2 → OrderService.test.ts ← 并行
├─ @test-agent-3 → PaymentService.test.ts ← 并行
└─ ... (最多 16 个并行)
↓
主 Agent: 汇总结果10.2 disallowed-tools 配置
在 Agent 配置文件的 frontmatter 中声明 disallowed-tools,可以精确控制每个子 Agent 可用的工具集。这对只读分析类 Agent 尤为重要:
# .claude/agents/security-scanner.md
---
disallowed-tools: [Bash, Edit, Write]
model: claude-opus-4-20250514
---
# 角色: 安全扫描专家
## 能力声明
- 代码安全静态分析
- 依赖漏洞检查
- 架构风险评估
## 行为准则
你是一个只读的安全审计 Agent,不允许修改任何代码文件。
只输出审计报告和修复建议。参数说明表
| 工具名 | 说明 |
|---|---|
Bash |
Shell 命令执行 |
Edit |
修改现有文件 |
Write |
创建新文件 |
Read |
读取文件内容 |
Glob |
文件模式搜索 |
MCP |
调用 MCP Server 工具 |
10.3 落地检查清单
- 确认 Claude Code 版本 >= v2.1.154
- 在 frontmatter 中为只读 Agent 配置
disallowed-tools - 使用
/effort xhigh或/effort max触发并行调度 - 并行任务不超过 16 个同时执行
- 对并行结果做汇总和验证
十一、真实经验与踩坑
11.1 经验 1:子 Agent 工具权限过宽
- 场景:定义了安全审计 Agent,但没有设置
disallowed-tools - 问题:审计 Agent 发现漏洞后直接修改代码文件,丧失了独立审计的意义
- 解决方案:在 frontmatter 中配置
disallowed-tools: [Bash, Edit, Write],仅授予 Read 和 Glob 权限,确保只读分析
11.2 经验 2:并行子 Agent 超过 16 个上限
- 场景:用
/effort max让 Claude 为 50 个服务类生成测试,触发并行调度 - 问题:最多 16 个子 Agent 并行,剩余任务排队等待,总耗时比预期更长
- 解决方案:先手动将服务类按模块拆分为 3 批(每批 ≤ 16 个),分批执行
/goal,每次只处理一个模块
十二、落地检查清单
- Claude Code 版本 >= v2.1.154(支持并行调度和 disallowed-tools)
-
.claude/agents/目录已创建且每个 Agent 配置文件包含角色、能力声明和行为准则 - 只读类 Agent 的 frontmatter 中已配置
disallowed-tools - Agent 配置文件已提交到 Git 版本控制
- 已设置模型分配策略(复杂任务用 Opus,简单任务用 Sonnet)
- 使用
/effort max触发并行调度,并行子 Agent 不超过 16 个 - @mention 调用子 Agent 后验证其输出符合预期
- Agent 输出格式已在配置文件中明确定义
十三、总结
子 Agent 是 Claude Code 实现多角色协作的核心机制。通过 .claude/agents/ 目录,你可以为不同专业领域创建专门的 AI 角色,利用 @mention 灵活调用,并通过模型分配策略优化成本和性能。
关键要点:
- 子 Agent 定义在
.claude/agents/目录中,使用@name调用 - 每个 Agent 有独立的系统提示和能力声明
- 支持为不同 Agent 分配不同模型以优化成本
- 可以限制 Agent 的工具权限和作用域
- 通过 frontmatter 中的
disallowed-tools实现精细权限控制 - v2.1.154+ 支持最多 16 个子 Agent 并行执行(需
/effort max) - 支持串行、并行、分层等多种协作模式
- Agent 配置应纳入版本控制实现团队共享
十四、下篇预告
MCP 集成实战 — 深入学习 Model Context Protocol (MCP) 的实战应用,包括 GitHub Server、PostgreSQL Server、Puppeteer Server 的安装、配置和使用技巧,将 Claude Code 的能力扩展到外部服务和数据源。