Claude Code 支持在 `.claude/agents/` 目录中定义自定义子 Agent,这是一种将复杂任务分解为多个专业角色的强大机制。通过子 Agent,你可以为不同领域(如代码审查、安全审计、文档编写、测试生成)创建专门的 AI 角色,每个角色拥有独立的系统提示、能力声明和工具权限,并通过 `@mention` 在主对话中灵活调用。

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 基础概念

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 目录结构

text
.claude/
├── agents/
│   ├── reviewer.md       # @reviewer - 代码审查专家
│   ├── tester.md         # @tester - 测试生成专家
│   ├── security.md       # @security - 安全审计专家
│   └── docs.md           # @docs - 文档编写专家
└── CLAUDE.md

2.2 创建代码审查 Agent

bash
mkdir -p .claude/agents

cat > .claude/agents/reviewer.md << 'EOF'
# 角色: 代码审查专家

## 能力声明
- 代码质量审查
- 设计模式建议
- 性能优化建议
- 命名规范检查

## 行为准则
你是一个专注于代码质量审查的 AI 专家。在审查代码时,你需要:

1. **首先理解上下文**:了解代码所属模块的功能和目的
2. **逐层审查**:从架构层面到实现细节
3. **分类反馈**:将发现的问题分为:
   - 🔴 必须修复(Bug、安全问题)
   - 🟡 建议修改(可读性、性能)
   - 🟢 可选优化(风格、约定)
4. **提供具体建议**:不仅要指出问题,还要给出改进方案
5. **保持建设性语气**:专注于代码而非开发者

## 审查清单
- [ ] 是否有内存泄漏风险
- [ ] 是否有未处理的异常
- [ ] 是否有硬编码的值
- [ ] 函数/方法是否过长(>50 行)
- [ ] 命名是否清晰且符合项目约定
- [ ] 是否有重复代码可以提取
- [ ] 注释是否充分且准确
EOF

三、Agent 配置文件详解

3.1 必需部分

每个 Agent 配置文件必须包含以下核心部分:

markdown
# 角色: [Agent 名称]

## 能力声明
- [能力 1]
- [能力 2]
- [能力 N]
  • # 角色: — Agent 的名称,同时也是 @mention 时使用的标识符
  • ## 能力声明 — Agent 的能力范围,帮助主 Agent 理解何时调用该子 Agent

3.2 可选部分

markdown
## 行为准则
[详细的行为描述和工作方式]

## 知识领域
- [领域 1]
- [领域 2]

## 工具偏好
[指定该 Agent 偏好使用的工具]

## 输出格式
[指定输出格式要求]

## 约束条件
- 不做的事情
- 不应越权的范围

3.3 完整的 Agent 配置示例

markdown
# 角色: 安全审计专家

## 能力声明
- 静态代码安全分析
- 依赖漏洞检查
- 认证授权审查
- 数据泄露检测
- 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 模型分配配置

bash
# 在 .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"
}
EOF

4.2 模型选择策略

任务类型 推荐模型 理由
代码审查 Sonnet 4 代码理解能力强,性价比高
安全审计 Opus 需要深度推理和模式识别
文档编写 Sonnet 4 语言生成质量高,速度快
测试生成 Sonnet 4 模式化任务,Sonnet 足够
架构设计 Opus 需要综合分析和权衡
简单查询 Haiku 快速响应,成本极低

4.3 成本对比分析

text
场景:审查 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:

text
@reviewer 请审查 src/auth/ 目录下的所有文件

@security 对当前的 API 实现进行一次完整的安全审计

@tester 为 src/utils/ 目录下的函数生成单元测试

@docs 为 auth 模块编写 API 文档

5.2 智能路由

Claude Code 的主 Agent 具备智能路由能力:

text
用户: 检查这个 PR 的安全性

# Claude 内部处理:
# 1. 识别任务类型为"安全检查"
# 2. 匹配到 @security Agent 的能力声明
# 3. 自动调用 @security Agent
# 4. 将结果返回给用户

你也可以显式指定:

text
@security 请检查这个 PR 的安全性

5.3 上下文传递

子 Agent 接收到的上下文包括:

text
┌─────────────────────────────────────┐
│         子 Agent 上下文              │
├─────────────────────────────────────┤
│                                     │
│  1. 角色定义(来自 agents/xxx.md)   │
│  2. 调用指令(用户的 @mention 内容) │
│  3. 项目 CLAUDE.md 上下文            │
│  4. 当前对话历史                     │
│  5. 当前工作目录的文件系统状态        │
│                                     │
└─────────────────────────────────────┘

5.4 带参数的调用

text
@reviewer 重点检查错误处理和日志记录部分

@tester 只关注边界条件和异常场景,覆盖率达到 80% 以上

@docs 使用中文输出,包含代码示例和故障排除章节

六、多 Agent 协作模式

6.1 模式 1:串行流水线

一个 Agent 的输出作为下一个 Agent 的输入:

text
用户: 完成这个功能的开发、审查和测试

Claude Code 内部流程:
1. 主 Agent 完成代码编写
2. @reviewer 审查代码,输出审查报告
3. 主 Agent 根据审查报告修改代码
4. @tester 生成并运行测试
5. 主 Agent 汇总所有结果并报告

6.2 模式 2:并行审查

多个 Agent 同时从不同角度审查同一份代码:

text
用户: @reviewer @security @tester 请分别审查 src/auth/login.py

并行执行:
┌──────────┐  ┌──────────┐  ┌──────────┐
 @reviewer   @security   @tester  
 代码质量     安全漏洞     测试覆盖  
└────┬─────┘  └────┬─────┘  └────┬─────┘
                               
     └─────────────┼─────────────┘
                   
          ┌────────┴────────┐
          Agent 汇总   
          └─────────────────┘

6.3 模式 3:分层架构

text
用户: 全面审查这个项目

执行架构:
                    ┌──────────┐
                    │ 主 Agent  │
                    │ 整体协调  │
                    └────┬─────┘
                         │
        ┌────────────────┼────────────────┐
        │                │                │
   ┌────┴────┐    ┌──────┴──────┐  ┌─────┴─────┐
   │@reviewer│    │ @security   │  │ @tester   │
   │ 架构层  │    │ 安全层      │  │ 质量层    │
   └────┬────┘    └──────┬──────┘  └─────┬─────┘
        │                │               │
   ┌────┴────┐           │          ┌────┴────┐
   │前端审查 │           │     ┌────┴────┐┌──┴──┐
   └─────────┘           │     │单元    ││集成 │
                    ┌────┴────┐│测试   ││测试 │
                    │网络审查 │└───────┘└─────┘
                    └─────────┘

七、高级配置:工具权限与作用域

7.1 限制 Agent 的工具权限

某些 Agent 应该只有只读权限,比如代码审查 Agent:

markdown
# 角色: 代码审查专家

## 工具约束
- Read: 允许
- Glob: 允许
- Grep: 允许
- Edit: 禁止(审查者不应修改代码)
- Bash: 禁止(除非是运行 linter)
- Write: 禁止

7.2 定义 Agent 的作用域

markdown
# 角色: 前端优化专家

## 作用域
仅处理以下目录中的文件:
- src/components/
- src/styles/
- src/assets/
- public/

超出作用域的请求应回复:
"我的职责范围限于前端资源优化,后端问题请交由 @reviewer 处理。"

八、实战案例

8.1 案例 1:完整的 PR 审查工作流

markdown
# .claude/agents/pr-reviewer.md

# 角色: PR 审查专家

## 能力声明
- Pull Request 全面审查
- 代码变更影响分析
- 合并建议生成

## 行为准则
你是一个专门负责 PR 审查的 AI 专家。审查流程如下:

1. **变更摘要**:列出所有修改的文件和行数
2. **功能审查**:代码是否正确实现了需求
3. **质量审查**:代码质量、可读性、可维护性
4. **安全审查**:是否存在安全隐患
5. **测试审查**:测试是否充分
6. **合并建议**:给出明确的合并/修改/拒绝建议

## 输出格式

九、PR 审查报告

9.1 变更摘要

文件 类型 新增 删除
...

9.2 审查结论

  • ✅ 通过 / ⚠️ 需要修改 / ❌ 建议拒绝

9.3 详细反馈

...

text

## 约束条件
- 审查时间不超过 5 分钟
- 只关注 diff 范围内的代码
- 对不确定的地方标记为 "需要人工确认"

调用方式:

text
@pr-reviewer 请审查 PR #42

9.4 案例 2:文档生成 Agent 团队

markdown
# .claude/agents/api-docs.md

# 角色: API 文档专家

## 能力声明
- RESTful API 文档编写
- OpenAPI/Swagger 规范生成
- 代码示例编写
- 错误码文档维护

## 行为准则
1. 从代码中提取 API 签名
2. 补充参数说明和类型
3. 编写请求/响应示例
4. 标注认证要求
5. 列出所有错误码

## 输出格式
使用 Markdown 格式,遵循 OpenAPI 3.0 规范
markdown
# .claude/agents/user-docs.md

# 角色: 用户文档专家

## 能力声明
- 用户手册编写
- 快速入门指南
- FAQ 文档
- 教程文章

## 行为准则
1. 面向非技术用户编写
2. 使用清晰的步骤描述
3. 包含截图说明(用占位符标记)
4. 提供故障排除章节

9.5 案例 3:多 Agent 协作的 Bug 修复

text
用户: @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 汇总
└── 生成修复报告
markdown
# .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 调度

调节 /effortxhighmax 后,Claude Code 会从“单 Agent 执行”升级为“多 Agent 并行”,自动将任务拆分给多个子 Agent 同时处理:

bash
# 将投入度调至最高,触发并行调度
/effort max

# 然后发送复杂任务
请为 src/services/ 下所有服务类添加完整的单元测试,
每个服务类生成独立的测试文件

并行调度的工作原理

text
主 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 尤为重要:

markdown
# .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 的能力扩展到外部服务和数据源。