Sooua
登录
返回文章列表
Claude Code··10 分钟阅读

子代理:分工协作处理复杂任务

子代理(Sub-agent) 是让 Claude 创建独立的"小助手"来处理特定任务:

目标:使用子代理拆分复杂任务,提高并行处理效率
预计时间:30 分钟
对应官方文档:Sub-agentsAgents


什么是子代理?

子代理(Sub-agent) 是让 Claude 创建独立的"小助手"来处理特定任务:

主会话(你)
  ├── 子代理 A:重构数据库模型
  ├── 子代理 B:更新 API 接口
  └── 子代理 C:修改前端调用

每个子代理:

  • 有独立的上下文和记忆
  • 可以并行执行
  • 完成后向主会话报告结果

为什么使用子代理?

问题:上下文窗口限制

Claude 能记住的内容有限(约 20 万 token)。大项目下:

  • 加载太多文件 → 超出限制
  • 长对话历史 → 早期内容被遗忘

解决:任务拆分

主会话:协调全局
  ├─ 子代理 1:专注模块 A(加载 A 相关文件)
  ├─ 子代理 2:专注模块 B(加载 B 相关文件)
  └─ 子代理 3:专注测试(加载测试框架)

每个子代理只加载相关上下文,不会超限。


创建子代理

方式一:命令行

> /subagent "重构用户认证模块"

创建子代理 "auth-refactor"...
分配给它的上下文:
- src/auth/
- src/models/user.py
- tests/test_auth.py

[子代理开始工作,你可以继续其他操作]

方式二:编程式(Agent SDK)

from claude import Agent
 
parent = Agent()
 
# 创建子代理
auth_agent = parent.create_subagent(
    name="auth-refactor",
    instructions="专注重构认证模块,保持向后兼容",
    files=["src/auth/*", "tests/test_auth.py"]
)
 
# 并行执行
result = auth_agent.run("将 session 认证改为 JWT")

子代理配置

专用指令

给子代理特定的 CLAUDE.md:

# 认证模块重构规范
 
## 约束
- 不修改数据库 schema
- 保持现有 API 接口不变
- 所有修改必须有对应测试
 
## 检查清单
- [ ] 单元测试通过率 100%
- [ ] 集成测试通过
- [ ] 性能不下降

权限控制

subagent = parent.create_subagent(
    name="safe-refactor",
    mode="ask",           # 子代理必须询问确认
    allowed_commands=["pytest", "black", "git diff"],  # 只允许这些命令
    denied_commands=["git push", "rm -rf", "docker"]
)

实战:代码审查

场景:大型 PR 审查

> 请审查这个 PR 的所有更改

主会话分析:
- 修改了 15 个文件
- 涉及 3 个模块

创建子代理:
├─ reviewer-db:     审查数据库相关更改
├─ reviewer-api:    审查 API 接口更改
└─ reviewer-tests:  审查测试完整性

并行审查完成,汇总报告:
- P0 问题:1 个(SQL 注入风险)
- P1 问题:3 个
- 建议:5 条

与子代理交互

查看状态

> /subagents

Active subagents:
  1. auth-refactor    [运行中]  已完成 3/5 任务
  2. api-update       [等待中]  等待 auth-refactor 完成

发送消息

> /msg auth-refactor "注意:User 模型新增了 email_verified 字段"

合并结果

> /merge auth-refactor

将子代理的更改合并到主会话...
应用 diff:
- src/auth/login.py
- src/auth/jwt.py
- tests/test_auth.py

动态工作流(进阶)

更复杂的场景可以使用动态工作流

# workflow.py
workflow = {
    "steps": [
        {
            "agent": "analyzer",
            "task": "分析代码库,确定需要重构的模块",
            "output": "refactor_plan.json"
        },
        {
            "parallel": [
                {"agent": "refactor-a", "input": "refactor_plan.json", "filter": "module=A"},
                {"agent": "refactor-b", "input": "refactor_plan.json", "filter": "module=B"},
            ]
        },
        {
            "agent": "integrator",
            "task": "合并所有重构结果,解决冲突",
            "depends": ["refactor-a", "refactor-b"]
        },
        {
            "agent": "tester",
            "task": "运行全量测试,验证重构",
            "depends": ["integrator"]
        }
    ]
}

参考:Dynamic Workflows


最佳实践

✅ 推荐❌ 避免
任务明确、可独立完成的子代理过度拆分,协调成本过高
给子代理明确的完成标准模糊的"帮我看看"
设置合理的超时时间让子代理无限期运行
合并前审查 diff直接接受所有更改
使用 --worktree 隔离在同一工作目录并行修改

补充:子代理工作流与实战

子代理任务分发与合并流程

高级配置与代码示例

示例 1:Agent SDK 创建子代理(完整代码)

# refactor_workflow.py
from claude import Agent
import asyncio
 
async def main():
    parent = Agent()
    
    # 创建三个并行的子代理
    auth_agent = parent.create_subagent(
        name="auth-refactor",
        instructions="""
        你负责重构认证模块。约束:
        - 不修改数据库 schema
        - 保持现有 API 接口不变
        - 所有修改必须有对应测试
        - 使用 JWT 替代 session,但保留原有 session 的兼容层
        """,
        files=["src/auth/*", "tests/test_auth.py", "src/models/user.py"],
        mode="auto-edits",  # 自动编辑,但限制在指定文件
        timeout_minutes=30
    )
    
    api_agent = parent.create_subagent(
        name="api-adapter",
        instructions="""
        你负责更新 API 层以适配新的认证方式。
        约束:
        - 所有接口的 request/response 格式不变
        - 在 header 中支持 Authorization: Bearer <token>
        - 同时兼容旧的 session cookie(双轨运行 1 个版本)
        """,
        files=["src/routes/*", "src/middleware/auth.py", "tests/test_api.py"],
        mode="auto-edits",
        timeout_minutes=30
    )
    
    test_agent = parent.create_subagent(
        name="test-updater",
        instructions="""
        你负责更新测试用例以覆盖新的 JWT 认证逻辑。
        要求:
        - 原有测试必须继续通过(兼容层保证)
        - 新增 JWT 专门的测试场景
        - 测试覆盖率不下降
        """,
        files=["tests/*", "src/auth/jwt.py"],
        mode="auto-edits",
        timeout_minutes=20
    )
    
    # 并行执行
    results = await asyncio.gather(
        auth_agent.run("将 session 认证核心改为 JWT,保留兼容层"),
        api_agent.run("在 API 路由中支持 JWT Bearer Token"),
        test_agent.run("补充 JWT 测试并确保旧测试通过"),
        return_exceptions=True
    )
    
    # 检查结果
    for agent, result in zip([auth_agent, api_agent, test_agent], results):
        if isinstance(result, Exception):
            print(f"❌ {agent.name} 失败: {result}")
        else:
            print(f"✅ {agent.name} 完成")
    
    # 合并前审查
    print("\n--- 变更摘要 ---")
    for agent in [auth_agent, api_agent, test_agent]:
        diff = agent.get_diff()
        print(f"\n{agent.name}:\n{diff[:500]}...")
    
    # 用户确认后合并(或手动处理冲突)
    # parent.merge_subagent(auth_agent)
    # parent.merge_subagent(api_agent)
    # parent.merge_subagent(test_agent)
 
if __name__ == "__main__":
    asyncio.run(main())

示例 2:子代理专用 CLAUDE.md 模板

创建 .claude/subagent-templates/refactor.md

# 子代理任务规范:代码重构
 
## 任务信息
- 目标模块:{{module}}
- 重构类型:{{type}}
- 预计影响文件数:{{affected_files}}
 
## 强制约束
- [ ] 不修改数据库 schema(除非任务描述明确允许)
- [ ] 所有公开 API 保持向后兼容
- [ ] 修改前先运行测试,记录基线通过率
- [ ] 修改后测试通过率必须 >= 基线
- [ ] 单函数行数不超过 50 行(重构后)
 
## 工作流程
1. 读取相关文件,理解当前逻辑
2. 编写/更新测试用例(先写测试再重构)
3. 执行重构
4. 运行全量测试
5. 生成变更摘要(改了哪些文件、为什么改、风险点)
 
## 输出格式

变更摘要

  • 修改文件:list
  • 新增文件:list
  • 删除文件:list

风险说明

  • ...

测试状态

  • 基线通过率:X%
  • 当前通过率:Y%

调用时:

subagent = parent.create_subagent(
    name="order-refactor",
    instructions_template=".claude/subagent-templates/refactor.md",
    template_vars={
        "module": "订单模块",
        "type": "拆分 fat service",
        "affected_files": "5-8"
    }
)

示例 3:动态工作流 JSON 配置(进阶)

{
  "workflow": "大型重构流水线",
  "steps": [
    {
      "id": "analyze",
      "agent": "analyzer",
      "type": "sequential",
      "task": "分析 src/monolith.py,输出重构计划 refactor_plan.json",
      "output_files": ["refactor_plan.json"],
      "timeout": 600
    },
    {
      "id": "refactor-parallel",
      "type": "parallel",
      "branches": [
        {
          "id": "module-a",
          "agent": "refactor-a",
          "task": "按 refactor_plan.json 重构模块 A",
          "input": "refactor_plan.json",
          "filter": "module=A",
          "files": ["src/module_a/*"],
          "timeout": 900
        },
        {
          "id": "module-b",
          "agent": "refactor-b",
          "task": "按 refactor_plan.json 重构模块 B",
          "input": "refactor_plan.json",
          "filter": "module=B",
          "files": ["src/module_b/*"],
          "timeout": 900
        },
        {
          "id": "module-c",
          "agent": "refactor-c",
          "task": "按 refactor_plan.json 重构模块 C",
          "input": "refactor_plan.json",
          "filter": "module=C",
          "files": ["src/module_c/*"],
          "timeout": 900
        }
      ]
    },
    {
      "id": "integrate",
      "agent": "integrator",
      "type": "sequential",
      "depends_on": ["module-a", "module-b", "module-c"],
      "task": "合并所有重构结果,解决模块间接口冲突",
      "timeout": 600
    },
    {
      "id": "test",
      "agent": "tester",
      "type": "sequential",
      "depends_on": ["integrate"],
      "task": "运行全量测试 + 性能基准测试,输出测试报告",
      "timeout": 1200
    }
  ]
}

实战场景

场景一:大型认证模块改造(Session 转 JWT)

背景:一个运行 3 年的 Python 后端项目,认证仍基于服务端 session,需要迁移到 JWT 以支持移动端和第三方集成。涉及 8 个文件、3 个模块,改造复杂度高。

步骤

  1. 主会话分析影响范围:路由层、中间件、测试、前端调用
  2. 创建 3 个子代理并行工作:
    • auth-refactor:重写核心认证逻辑,保留 session 兼容层
    • api-adapter:更新所有路由以支持 Bearer Token
    • test-updater:补充 JWT 测试场景,确保旧测试通过
  3. 各子代理独立加载相关文件,互不干扰,不会超出上下文限制
  4. 完成后主会话审查 3 份 diff,发现 api-adapter 有一处 header 解析逻辑与 auth-refactor 的 token 格式不统一
  5. 主会话协调修正后,合并所有变更

结果

  • 原本需要串行处理 8 小时的任务,3 个子代理并行后 2.5 小时完成
  • 每个子代理只关注 3-4 个文件,上下文清晰,AI 理解深度更高
  • 合并时发现的接口不一致问题,在主会话层面被及时拦截
  • 全程测试通过率保持在 98% 以上,上线后无回归故障

场景二:大规模代码审查(15 文件 PR 审查)

背景:一个涉及 15 个文件、跨 3 个模块的大型 PR 需要审查,包括数据库迁移、API 变更、前端适配。人工审查容易遗漏跨模块影响。

步骤

  1. 主会话加载 PR diff,分析文件归属:
    • 数据库相关:3 个 migration 文件 + 2 个 model 文件
    • API 相关:5 个 route/service 文件
    • 前端相关:3 个组件 + 2 个 API 调用文件
  2. 创建 3 个审查子代理,分别专注不同领域:
    • reviewer-db:检查 migration 安全性、回滚策略、索引合理性
    • reviewer-api:检查接口兼容性、输入验证、错误处理
    • reviewer-fe:检查前端状态管理、API 调用适配、错误边界
  3. 并行审查完成后,主会话汇总报告,特别关注跨模块一致性(如 API 返回字段是否被前端正确使用)

结果

  • 发现 1 个 P0 问题:migration 中删除列的操作没有先备份数据,且无回滚脚本
  • 发现 2 个 P1 问题:API 新增必填参数但前端未传递;JWT token 过期时间不一致
  • 审查时间从人工的 3 小时缩短到 40 分钟
  • 子代理的专业化分工让各领域审查更深入(DBA 视角、安全视角、前端架构视角)

下一步

07. 成本管理与优化

分享

评论

登录 后参与讨论。

加载中…

相关文章