返回 AI编程

Subagents 子代理详解

Subagents 子代理详解

Subagents 是 Claude Code 中可以并行处理任务的独立 AI 代理,每个子代理拥有独立的 200K 上下文窗口,可以分配不同任务以提高效率。

一、什么是 Subagents?

核心概念

Subagents 是可以并行处理任务的独立 AI 代理,具有以下特点:

  • 独立性:每个子代理独立运行
  • 并行性:多个子代理同时工作
  • 专用性:每个子代理专注于特定领域
  • 大上下文:每个子代理拥有 200K token 上下文窗口

核心理念

把常用工作流看作自动化运行的"子智能体",就像圣诞老人分派任务给精灵一样,每个子智能体专注于特定领域。

Subagent 架构

┌─────────────────────────────────────────────────────────────────┐
│                    主代理 Claude Code                            │
│                                                                 │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐      │
│  │子代理1    │  │子代理2    │  │子代理3    │  │子代理4    │     │
│  │代码审查   │  │测试编写  │  │文档生成  │  │性能优化   │     │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘  └────┬─────┘      │
│       │              │              │              │           │
│       └──────────────┴──────────────┴──────────────┘           │
│                              ↓                                  │
│                     ┌─────────────────┐                         │
│                     │    结果汇总      │                         │
│                     └─────────────────┘                         │
└─────────────────────────────────────────────────────────────────┘

二、Subagent 配置

方式一:通过 /agents 命令

# 查看和管理 Subagents
claude /agents

方式二:配置文件

~/.claude/agents.json 或项目 .claude/agents.json 中配置:

{
  "agents": {
    "code-reviewer": {
      "description": "专门负责代码审查的子代理",
      "model": "claude-opus-4-5",
      "instructions": "你是一个专业的代码审查专家,专注于检查代码质量、安全漏洞和性能问题。",
      "tools": ["read", "search", "git"],
      "permissions": {
        "allowWrite": false
      }
    },
    "test-writer": {
      "description": "专门负责编写测试的子代理",
      "model": "claude-sonnet-4-5",
      "instructions": "你是一个测试工程师,专注于编写全面的单元测试和集成测试。",
      "tools": ["read", "write", "bash"]
    },
    "doc-generator": {
      "description": "专门负责生成文档的子代理",
      "model": "claude-sonnet-4-5",
      "instructions": "你是一个技术文档专家,专注于生成清晰、准确的技术文档。",
      "tools": ["read", "write"]
    },
    "performance-optimizer": {
      "description": "专门负责性能优化的子代理",
      "model": "claude-opus-4-5",
      "instructions": "你是一个性能优化专家,专注于识别和解决性能瓶颈。",
      "tools": ["read", "bash", "search"]
    }
  }
}

配置参数说明

| 参数 | 说明 | 必填 |
|------|------|------|
| description | 子代理描述 | 是 |
| model | 使用的模型 | 否 |
| instructions | 系统指令 | 是 |
| tools | 允许使用的工具 | 否 |
| permissions | 权限设置 | 否 |

三、Subagent 使用示例

场景:完成一个功能开发

# 主任务
我需要完成用户认证功能,请帮我:

1. 使用 code-reviewer agent 审查现有认证代码
2. 使用 test-writer agent 编写测试用例
3. 使用 doc-generator agent 更新 API 文档

这三个任务并行执行

Claude Code 会自动:

  1. 创建三个独立的子代理
  2. 分配各自的上下文(200K × 3)
  3. 并行执行任务
  4. 汇总结果返回

执行流程

1. 接收主任务
         ↓
2. 解析子代理需求
         ↓
3. 创建子代理实例 (code-reviewer, test-writer, doc-generator)
         ↓
4. 并行执行 (同时进行)
         ↓
5. 收集结果
         ↓
6. 汇总报告

四、实战子代理案例

案例 1:code-simplifier

创建 .claude/agents/code-simplifier.md

# .claude/agents/code-simplifier.md

你是一个代码精简专家。在 Claude 完成工作后,你的任务是:

1. 分析代码的复杂度和可读性
2. 识别可以简化的逻辑
3. 提供优化建议但保持功能不变
4. 优先考虑性能和可维护性

## 工作流程

1. 阅读完整代码
2. 识别复杂部分
3. 提出简化方案
4. 给出具体建议

## 输出格式

```markdown
## 简化建议

### 建议1: [标题]
- 当前代码: [代码片段]
- 问题: [问题描述]
- 建议: [简化方案]
- 预期效果: [效果说明]

### 建议2: [标题]
...

注意事项

  • 不要改变代码功能
  • 优先使用标准库
  • 保持代码可读性

### 案例 2:verify-app

创建 `.claude/agents/verify-app.md`:

```markdown
# .claude/agents/verify-app.md

你是一个端到端测试专家。你的任务是验证应用功能:

1. 运行完整的测试套件
2. 检查所有关键路径
3. 验证边界情况
4. 确保用户体验"感觉对劲"
5. 如果发现问题,提供详细的修复步骤

## 验证步骤

1. **功能测试**
   - 核心功能是否正常
   - 用户流程是否顺畅

2. **边界测试**
   - 异常输入处理
   - 边界条件处理

3. **性能测试**
   - 响应时间
   - 资源占用

4. **用户体验**
   - 界面响应
   - 错误提示

## 输出格式

```markdown
## 验证报告

### ✅ 通过项目
- [项目1]
- [项目2]

### ❌ 失败项目
- [项目]: [原因]
- 修复建议: [建议]

### ⚠️ 需要关注
- [项目]: [说明]

注意事项

  • 如实报告,不要隐瞒问题
  • 提供具体的复现步骤
  • 给出可行的解决方案

### 使用方式

```bash
# 在 Claude Code 中
使用 code-simplifier agent 优化刚才写的代码

使用 verify-app agent 验证应用是否正常工作

五、自定义 Subagent 模板

模板结构

.claude/agents/
├── code-reviewer.md
├── test-writer.md
├── doc-generator.md
└── custom-agent.md

完整模板示例

# .claude/agents/[agent-name].md

你是一个[角色描述]。你的任务是[主要任务]。

## 核心职责

1. [职责1]
2. [职责2]
3. [职责3]

## 工作流程

1. [步骤1]
2. [步骤2]
3. [步骤3]

## 约束条件

- [约束1]
- [约束2]

## 输出格式

```markdown
## [任务]结果

### [部分1]
[内容]

### [部分2]
[内容]

注意事项

  • [注意事项1]
  • [注意事项2]

## 六、Subagent 最佳实践

### 1. 职责分离

```json
{
  "agents": {
    "frontend-dev": {
      "description": "前端开发子代理",
      "instructions": "专注于 React、Vue 等前端开发",
      "tools": ["read", "write", "bash"]
    },
    "backend-dev": {
      "description": "后端开发子代理",
      "instructions": "专注于 Node.js、Python 等后端开发",
      "tools": ["read", "write", "bash"]
    },
    "devops": {
      "description": "DevOps 子代理",
      "instructions": "专注于部署、运维、CI/CD",
      "tools": ["read", "bash", "git"]
    }
  }
}

2. 权限控制

{
  "agents": {
    "readonly-reviewer": {
      "description": "只读代码审查",
      "instructions": "只读代码,不进行修改",
      "permissions": {
        "allowWrite": false,
        "allowBash": false
      }
    }
  }
}

3. 工具限制

{
  "agents": {
    "safe-tester": {
      "description": "安全测试子代理",
      "instructions": "只使用安全的测试工具",
      "tools": ["read", "bash"],
      "allowedCommands": [
        "npm test",
        "npm run test:*"
      ],
      "deniedCommands": [
        "rm *",
        "format *"
      ]
    }
  }
}

七、常见问题

问题 1:Subagent 不执行

可能原因:

  1. 配置错误
  2. 工具权限不足
  3. 模型不可用

解决方案:

# 检查配置
cat ~/.claude/agents.json

# 验证工具权限
claude /agents <agent-name>

# 查看错误日志
claude /agents logs

问题 2:结果不完整

可能原因:

  1. 上下文窗口不足
  2. 任务过于复杂
  3. 指令不清晰

解决方案:

# 简化任务
将复杂任务拆分成多个简单任务

# 明确指令
在 instructions 中添加更详细的指导

# 增加上下文
提供更多背景信息

问题 3:并行任务冲突

可能原因:

  1. 多个 Subagent 操作同一文件
  2. 资源竞争
  3. 依赖顺序问题

解决方案:

# 串行执行冲突任务
使用顺序调用而非并行

# 分离职责
确保 Subagent 操作不同的文件

# 协调执行
使用主代理协调 Subagent 执行顺序

八、进阶技巧

1. 动态 Subagent

# 根据任务动态选择 Subagent
根据代码语言选择合适的 Subagent:
- JavaScript/TypeScript -> frontend-dev
- Python/Java -> backend-dev
- Go/Rust -> system-dev

2. 链式 Subagent

# 一个 Subagent 的输出作为另一个的输入
1. code-analyzer 分析代码
2. code-simplifier 简化代码
3. test-writer 编写测试
4. verify-app 验证结果

3. 条件 Subagent

{
  "agents": {
    "smart-router": {
      "description": "智能路由子代理",
      "instructions": "根据任务类型路由到合适的子代理",
      "tools": ["read", "bash"]
    }
  }
}

参考资源