Swarm Migration Pattern

Nikola Balic (@nibzard)· validated-in-production

问题

大规模代码迁移若按顺序执行会十分耗时:

  • 框架升级(例如,从测试库A迁移至测试库B)
  • Lint规则推广(覆盖数百个文件)
  • API迁移(依赖发生变更时)
  • 代码现代化(例如,从类组件转向Hooks)
  • 全代码库重构模式应用

人工手动完成这些工作繁琐乏味;单个Agent按顺序执行则速度缓慢。

方案

采用智能体集群架构(swarm architecture),由主Agent编排10个以上并行子Agent,同步处理迁移任务的独立分块工作。

模式流程

  1. 主Agent制定迁移计划:枚举所有需要迁移的文件/目标对象
  2. 创建任务清单:将工作拆分为可并行处理的任务块
  3. 启动子Agent集群:同时启动10个以上Agent,每个Agent承接N项任务
  4. 映射-归约执行:每个子Agent独立完成其负责分块的迁移工作
  5. 验证环节:主Agent验证结果,可按需启动额外Agent进行问题修复
  6. 合并整合:合并迁移结果(生成单个PR或协调完成合并)
graph TD
    A[主Agent] --> B[扫描代码库]
    B --> C[创建任务清单<br/>100个文件需迁移]
    C --> D[启动10个子Agent]
    D --> E1[子Agent 1<br/>文件1-10]
    D --> E2[子Agent 2<br/>文件11-20]
    D --> E3[...]
    D --> E10[子Agent 10<br/>文件91-100]
    E1 --> F[主Agent验证结果]
    E2 --> F
    E3 --> F
    E10 --> F
    F --> G[合并后的PR]

如何使用

实现方案

# 主Agent编排逻辑
main_agent.prompt = """
1. 查找所有匹配指定模式的文件(例如,基于旧框架开发的*.test.js文件)
2. 创建包含文件路径的待办事项清单
3. 将文件划分为每批10个的处理批次
4. 针对每个批次,启动子Agent(subagent)并下达以下指令:
   
- 迁移这批指定文件
   - 遵循docs/migration.md中的迁移指南
   - 每次修改后运行测试
   - 测试通过则提交代码
5. 监控所有子Agent的执行状态
6. 验证所有待办事项已完成
"""

# 启动Agent集群(swarm)
for batch in batches:
    spawn_subagent(
        task=f"将{batch.files}从框架A迁移至框架B",
        context=migration_guide,
        auto_commit=True
    )

Anthropic的实际落地案例

“Anthropic内部有越来越多的团队每月消耗大量调用额度,单月花费超1000美元,且这类用户的占比增长速度相当快。最普遍的使用场景是代码迁移……主Agent会生成一个覆盖全部任务的大型待办清单,随后通过大量子Agent实现类MapReduce的分布式处理逻辑。你可以这样指示Claude:‘启动10个Agent,每次并行处理10个批次,逐步完成所有代码迁移工作。’”——鲍里斯·切尔尼(Boris Cherny)

常见迁移类型

  • Lint规则强制执行:在全量文件中应用新的ESLint/Biome规则
  • 框架迁移:Jest → Vitest、Mocha → Jest等跨测试框架迁移
  • API更新:升级至新版依赖库的API规范
  • 代码现代化:var → const/let、回调函数 → async/await等语法升级
  • 导入路径调整:相对路径 → 绝对路径的统一改造

权衡

优点:

  • 大规模并行化:相较于串行迁移,速度提升10倍以上
  • 验证简便:每个子Agent处理易于管控的任务块
  • 故障隔离:单个子Agent故障不会影响其他Agent运行
  • 规模化场景性价比高:手动需耗时数周的迁移任务,成本仅约1000美元
  • 可复现性强:所有文件可应用完全一致的迁移规则

缺点:

  • Token成本高昂:同时运行10个以上Agent会产生高额Token消耗
  • 协调复杂度高:主Agent需全程跟踪所有子Agent的状态与任务进度
  • 合并冲突风险:并行修改操作可能引发冲突
  • 依赖独立性要求:仅适用于迁移目标可拆分的场景
  • 验证负担较重:需对10个以上Agent的输出结果逐一验证

前置条件:

  • 原子化迁移:每个文件可独立完成迁移操作
  • 明确的规范定义:迁移规则必须清晰无歧义
  • 完善的测试覆盖:通过自动化机制验证迁移正确性
  • 沙箱环境支持:可安全地同时运行多个Agent

优化建议:

  • 批量大小调优:初始设置为每个Agent处理10个文件,根据任务复杂度灵活调整
  • 分阶段部署:先迁移10%的目标,验证通过后再完成剩余部分
  • 故障处理机制:让主Agent对失败批次采用优化后的指令进行重试
  • 资源限制管控:限制并行Agent的数量,避免过度占用基础设施资源

参考文献

关键词

本内容来自《AI & I播客》的访谈实录,介绍Anthropic内部员工使用Claude Code的高频场景,包括通过主代理统筹多子代理完成跨框架代码迁移、处理无自动修复方案的Lint规则落地等,提及测试框架迁移这类输出易验证的典型需求,同时披露相关使用的成本规模。

\n\n

  • 鲍里斯·切尔尼(Boris Cherny):“Anthropic内部每月消耗大量平台额度(credits)的员工正越来越多,每月花费超过1000美元。最常见的使用场景是代码迁移——从框架A迁移至框架B。主代理会针对所有迁移事项生成一份详尽的任务清单,随后通过MapReduce模式调度多个子代理并行执行:启动10个代理,同时推进10项任务,完成全部代码的迁移工作。”

\n\n

  • 鲍里斯·切尔尼(Boris Cherny):“关于Lint规则……你们正在推行某类Lint规则,但没有对应的自动修复工具,因为静态分析的能力过于局限,无法实现自动修复。框架迁移也是高频使用场景——我们刚完成从一款测试框架到另一款测试框架的迁移。这类需求的输出结果极易验证,是相当典型的使用场景。”

\n\n

来源摘要

正在获取来源并生成中文摘要…

来源: https://every.to/podcast/transcript-how-to-use-claude-code-like-the-people-who-built-it

← 返回社区