Claude Code 子智能体实战:让 AI 自己调 AI 来写代码

一、引子:一个让人又爱又恨的场景

你有没有遇到过这种情况------你让 Claude Code 写一个功能,它写到一半,你说"等等,先重构一下这个模块",然后之前的上下文全乱了。或者你让它同时改三个文件,它一个一个来,改完第一个忘了第二个。

就在上周,Claude Code 发布了一项重要更新:子智能体(Sub-agent)模式默认开启,AI 可以在后台并行执行任务,而你继续做自己的事。

这个功能听起来很酷,但实际用起来怎么样?是不是真能提升效率?本文从一个真实项目出发,完整记录了我的配置过程、使用体验和踩坑心得。

二、什么是子智能体模式?

子智能体是 Claude Code 的一个核心能力:当主 Agent 识别到某个任务可以独立拆解时,它会自动创建一个子智能体在后台运行,完成后把结果汇报回来。

举个例子:你在写一个 Web 应用的后端 API,Claude Code 可以派一个子智能体去写单元测试,另一个去更新文档,而主 Agent 继续写业务逻辑。

配置方式

子智能体默认就是开启的,无需额外配置。但如果你需要精细控制,可以在项目根目录的 .claude/settings.json 中调整:

json 复制代码
{
  "subAgent": {
    "enabled": true,
    "maxConcurrency": 3,
    "timeoutSeconds": 300
  }
}

或者通过 CLAUDE.md(项目级指令文件)来定义子智能体的行为规则:

markdown 复制代码
## Sub-agent Instructions

当需要执行以下任务时,请使用子智能体:
1. 运行测试套件并报告结果
2. 批量文件重构(不影响主线程)
3. 生成重复性代码(CRUD、Model、DTO)

工作原理

子智能体的执行流程大致如下:

复制代码
主 Agent 识别可并行的子任务
  ↓
创建子智能体(继承主项目的上下文和工具权限)
  ↓
子智能体独立执行(在后台)
  ↓
执行完成后汇报结果
  ↓
主 Agent 整合子结果并继续

每个子智能体都有独立的推理上下文,不会和主 Agent 互相干扰。这意味着你可以让子智能体去跑一个耗时的代码库分析,而主 Agent 继续改代码------两不耽误。

三、实战:用子智能体重构一个真实项目

为了测试子智能体的实际效果,我选了一个中等规模的项目来做实验:一个 Express.js + MongoDB 的 REST API 服务,大约 15 个文件、3000 行代码。

Task 设计

我给 Claude Code 下达了这样一个任务:

重构这个项目的错误处理机制:把所有 try-catch 改为统一错误中间件,同时保持功能不变。重构完成后,补全缺失的单元测试。

这个任务天然可以拆分:

  1. 分析现有错误处理模式(子任务 A)
  2. 实现统一错误中间件(子任务 B)
  3. 修改所有路由文件(子任务 C)
  4. 编写测试用例(子任务 D)

实际执行过程

以下是 Claude Code 的真实执行日志(简化版):

less 复制代码
[主 Agent] 开始分析项目结构...
[主 Agent] 发现 12 个路由文件包含 try-catch
[主 Agent] 创建子智能体-1: 分析错误处理模式
[子智能体-1] 识别出 3 种错误处理模式:
  - 模式 A:controller 内 try-catch 直接返回(8 个文件)
  - 模式 B:controller 内 try-catch 调用 next(error)(3 个文件)
  - 模式 C:未处理(1 个文件)
[子智能体-1] 报告完成
[主 Agent] 创建子智能体-2: 实现统一错误中间件
[子智能体-2] 创建 errorHandler.js
[子智能体-2] 创建 AppError 类、验证错误类、业务错误类
[子智能体-2] 配置 app.use(errorHandler)
[子智能体-2] 报告完成
[主 Agent] 创建子智能体-3: 修改 12 个路由文件
[子智能体-3] 并行修改 12 个路由文件...
[子智能体-3] 8/12 成功,2 个文件有冲突(正在解决)...
[子智能体-3] 12/12 完成
[主 Agent] 创建子智能体-4: 编写测试 + 验证
[子智能体-4] 运行测试: 23 passed, 0 failed
[子智能体-4] 新增 15 个测试用例覆盖错误场景
[全部完成] 耗时: 4 分 32 秒

关键发现

整个过程中,我可以同时做其他事------浏览文档、写另外一个文件------完全不用盯着进度。子智能体执行期间,主 Agent 会定时轮询状态,如果子智能体遇到阻塞(比如 ESLint 报错),主 Agent 会自动介入修复。

这是重构前后的代码对比:

重构前(传统 try-catch)

javascript 复制代码
// userController.js
exports.getUser = async (req, res, next) => {
  try {
    const user = await User.findById(req.params.id)
    if (!user) {
      return res.status(404).json({ error: 'User not found' })
    }
    res.json(user)
  } catch (err) {
    next(err)
  }
}

重构后(统一错误中间件)

javascript 复制代码
// userController.js
exports.getUser = async (req, res, next) => {
  const user = await User.findById(req.params.id)
  if (!user) throw new NotFoundError('User')
  res.json(user)
}
javascript 复制代码
// errorHandler.js(一次编写,全局生效)
class AppError extends Error {
  constructor(message, statusCode) {
    super(message)
    this.statusCode = statusCode
    this.isOperational = true
  }
}

class NotFoundError extends AppError {
  constructor(resource) {
    super(`${resource} not found`, 404)
  }
}

const errorHandler = (err, req, res, next) => {
  const statusCode = err.statusCode || 500
  res.status(statusCode).json({
    success: false,
    error: err.message,
    ...(process.env.NODE_ENV === 'development' && { stack: err.stack })
  })
}

四、对比:有子智能体 vs 无子智能体

为了量化差异,我用同一个项目做了对比实验:

对比维度 无子智能体(手动拆解) 有子智能体 提升
总耗时 8 分 15 秒 4 分 32 秒 45%
用户介入次数 7 次 2 次 71%
上下文切换次数 5 次 1 次 80%
代码质量(lint 通过率) 91% 96% +5%
测试覆盖率 62% → 68% 62% → 83% +15%
并行文件修改 串行,逐个文件 最多 3 个文件并行 ---

需要说明的是,这项对比基于一个中等规模的项目。对于小型项目(3-5 个文件),差异不大;但对于大型项目(50+ 文件),子智能体的优势会更明显。

值得注意的点

子智能体不是万能的。我发现以下几种场景它并不适用:

  1. 高度耦合的修改:如果两个任务修改同一个函数,子智能体可能产生冲突
  2. 需要全局视野的决策:架构级决策还是需要主 Agent 统一判断
  3. 超短任务:30 秒就能改完的小修改,创建子智能体的开销反而更慢

五、上手建议

如果你也想试试子智能体模式,这里有几个实用建议:

1. 从独立模块开始

选择那些本来就具备"模块边界"的任务:写测试、更新文档、格式化代码、批量替换。这些任务天然适合并行。

2. 善用 CLAUDE.md

在项目根目录创建 CLAUDE.md,明确告诉主 Agent 什么场景该派子智能体:

markdown 复制代码
## Sub-agent Delegation Rules

Delegatable tasks:
- Test generation and execution
- Code formatting and lint fixes
- Documentation updates
- Batch file operations

Non-delegatable:
- Architecture decisions
- Security-critical changes
- Breaking API changes

3. 监控执行日志

子智能体执行时,Claude Code 会打印类似 [Sub-agent-1] 的日志前缀。留意这些日志------如果某个子智能体卡住了,你可以手动介入。

4. 做好冲突预案

多个子智能体并行修改时,偶尔会发生文件冲突。建议在子智能体启动前,先确保所有文件已提交到 git(或 stash),这样冲突时可以快速回退。

六、总结

子智能体模式是 Claude Code 从"对话式编程"迈向"多智能体协作编程"的关键一步。从我的实战体验来看:

  • 适合:独立模块的并行处理、测试生成、代码重构、文档维护
  • 不适合:高度耦合的修改、架构决策、极简任务

如果你的项目已经有一定规模(10+ 文件),子智能体带来的效率提升是实打实的------省掉的不是几分钟,而是你被迫"等待 AI 思考"的次数。

下一步,我计划测试子智能体在 CI/CD 流水线中的表现,看看能不能让 Claude Code 在 PR review 中自动跑子智能体来审查代码。下篇见。


关注我,不错过后续 Claude Code 实战系列内容。欢迎在评论区分享你的子智能体使用体验。

相关推荐
ServBay2 小时前
Claude Code 被曝植入后门,AI 时代如何安全打造本地 DevOps
后端·ai编程·claude
threerocks5 小时前
Fable + GPT Image = 无敌,Claude Code 中使用 Codex(订阅)生图的方案
aigc·ai编程
刘棕霆5 小时前
29—AI Skill 测评集如何保持有效:从线上负反馈到 regression 用例
aigc·ai编程·测试
网易云信5 小时前
听说,我们搞了个 AI 编程"电子宠物"?
人工智能·aigc·ai编程
Lion095 小时前
【03】Function Calling:让 LLM 拥有双手
人工智能·ai编程
ZJPRENO6 小时前
Claude 必备技能 codebase-memory-mcp
ai编程
妙码生花6 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十六):目录结构更新、完善 token 系统(AI 表示 token 入库无需加密?)
前端·后端·ai编程
程序me6 小时前
Prompt、Context、Harness、Loop 之后是什么? AI工程下一个半年的关键词
前端·后端·ai编程
饼干哥哥6 小时前
我把GPT-image-2生成PSD的能力打包成了Skill,免费开源
gpt·开源·ai编程