Jarred Sumner 利用由 Claude 驱动的对抗性审查工作流,将 Bun 运行时从 Zig 重写为 Rust。他通过 6,778 次提交推送了超过一百万行代码,并解决了 16,000 个编译器错误。这项工作运行了 50 个 Claude Code 工作流,峰值达到 64 个并发 Claude 智能体 (agents),并为大规模语言迁移留下了一套可复用的指南 (playbook)。

为什么这次重写至关重要

对于任何正在与遗留代码作斗争或进行战略性语言迁移的项目,“Sumner 方法”提供了一个具体的模板,而非模糊的承诺。

让 AI 从替代者变为合作伙伴的工作流

Sumner 的流程是一个紧密的循环:

  1. 任务分配 – 一个智能体接收具体的迁移任务。
  2. 实现 – 第二个智能体编写 Rust 代码。
  3. 对抗性审查 – 第三个智能体假设代码是错误的,仔细检查差异 (diff),并尝试利用源文件和测试来证明每一个断言都是错误的。
  4. 修复 – 实现智能体整合审查者的发现。
  5. 自动化门禁 – 通过编译器、测试套件和静态分析检查来验证更改。

关键规则是分离。编写者永远看不到审查者的推理过程,而审查者也永远看不到编写者的意图。通过消除偏见,系统迫使审查者去寻找隐藏的 Bug,而不是敷衍了事地给出“看起来不错”的确认。

Rust 机器可检查的反馈将数千个潜在的人类可读错误转化为一个可管理的队列。每一个编译器错误、借用检查器 (borrow-checker) 失败或 Clippy 警告,都成为了对抗性审查者可以直接针对的工作项。

八阶段指南

Sumner 将工作流提炼为八个连续阶段,每个阶段都有自己的任务队列、完成定义 (definition of done)、审查提示词 (review prompts) 和自动化门禁:

  • 阶段 A – 事实提取与指南编写 – 收集架构事实并编写迁移指南。
  • 阶段 B – 机械化文件转换 – 将 Zig 文件转换为 Rust 骨架。
  • 阶段 C – 编译错误修复 – 解决转换过程中记录的 16,000 个编译器错误。
  • 阶段 D – 运行时行为匹配 – 验证 Rust 的输出是否与 Zig 的行为一致。
  • 阶段 E – 测试套件完善 – 通过所有现有的测试。
  • 阶段 F – 性能恢复 – 消除因重写而引入的任何性能下降。
  • 阶段 G – 代码质量润色 – 应用惯用的 Rust 模式并进行重构以提高可读性。
  • 阶段 H – 安全加固 – 进行 unsafe 审计并解决发现的任何漏洞。

每个阶段都为下一阶段提供输入,确保没有步骤被跳过,并能及早发现回归问题。

在哪里可以找到该指南

Sumner 已在 https://github.com/Lumafy/sumner-method 开源了全套模板、提示词和阶段定义。一篇配套文章详细介绍了 Bun 的迁移过程:https://dev.to/lumafy/the-sumner-method-what-buns-ai-assisted-zig-rust-rewrite-teaches-about-large-migrations-2gpo。用于持续讨论的 Telegram 社区位于 https://t.me/GyaanSetuAi。