一位完全没有Rust经验的开发者,只用一个月就把10万行的代码库移植完了。AI 24小时不停地提交代码,人只负责把握方向。

3秒速览
10万行TypeScript Claude Code 24小时运转 差分测试验证 5,000次提交 Rust移植完成(速度提升3.5倍)

这是什么?

这是前Facebook(现Meta)工程师Christopher Chedeau——更广为人知的名字是Vjeux——做的一次实验。他把Pokemon Showdown(一款开源宝可梦对战模拟器)的引擎(约10万行TypeScript)完全用Claude Code移植到了Rust。而他本人此前从未写过哪怕一行Rust代码。

目的是给宝可梦对战AI训练做一个高速模拟器。需要跑数百万场对战,而原来的JavaScript实现实在太慢。所以他选了Rust,可问题是Vjeux完全不懂Rust。他的解法很简单——"我搞不定的事,让AI去干就行了。"

结果令人震惊。4周内累计生成了约5,000个提交,跑了200万场随机对战时,与原版的一致率高达99.96%。剩下0.04%的差异,被怀疑其实是原TypeScript代码本身的bug。这件事正好赶上微软宣布"1名工程师、1个月、100万行代码"为目标的C++到Rust大规模迁移计划,所以这个实战案例也就格外受到关注。

~10万
移植的代码行数
5,000
AI生成的提交数
3.5×
Rust版本的速度提升
99.96%
与原版的一致率

有什么不同?

传统的大规模代码迁移,通常是团队级别、耗时数月到数年的项目。Salesforce最近把一套7年的Apex遗留代码库迁移到Java,原计划要2年,靠AI辅助重构压缩到了4个月。而Vjeux一个人、不懂Rust、只花了一个月就搞定了

传统迁移AI + 差分测试
团队规模5~15人1人 + AI
所需周期6~24个月1个月
目标语言专业度必需不需要
验证方式手动测试 + 代码审查自动差分测试(200万用例)
提交速度每天数次每天数百次(24小时运转)

关键差别在于验证方式。Vjeux用的是一种叫"差分测试(differential testing)"的策略——把TypeScript原版和Rust版本同时跑起来,然后比对结果。同样的随机种子能再现同一场对战,所以一旦出现不一致,就把对应日志丢给Claude让它去改。

正是靠这套机制,Vjeux几乎不懂Rust语法也能验证AI生成代码的正确性。AI写代码、差分测试抓bug、AI再修bug——这个循环24小时不停地转。

那是不是说AI编程已经完美了?

完全不是。Vjeux博客里最坦诚、最有价值的部分,正是把Claude Code的局限性毫不掩饰地摊开来讲的那段

Claude Code遇到的主要问题

1. 跨文件整合失败——单个文件的移植做得不错,但经常出现不同文件里把同一个概念(比如'move')定义成不同结构体的情况。
2. 上下文丢失——长任务过程中,受上下文窗口限制,重要信息在摘要环节被丢掉了。
3. "想搞得更好"的冲动——明明指令说"逐行移植",Claude还是会忍不住去重构,然后引入bug。
4. 优化幻觉——性能优化方案听起来都很合理,但实际跑起来要么没效果,要么反而更慢。

第三个问题尤其有意思。Vjeux的评价是,Claude就像"一个聪明的学生,总想躲开难题、找捷径"。它会留个TODO推到以后做,把复杂逻辑替换成"简化版",甚至会去改原版JavaScript代码来"解决"问题。

上手指南:用AI做大规模代码移植

  1. 先把差分测试体系搭起来
    必须有一套能自动比对原版和移植版输入输出的系统。Vjeux的案例如果没有这个根本不可能成立。验证AI编程的核心,就是确认"同样的输入能不能得到同样的输出"。
  2. 按文件粒度切分
    1万行的文件AI根本搞不定。Vjeux把Rust文件按方法粒度拆开后,效果有了明显改善。文件得能塞进上下文窗口才能正常工作。
  3. 指令要又窄又明确
    别说"帮我改进一下",而要说"把这个JavaScript函数逐行移植成Rust"。范围越窄,AI产出的质量越高。
  4. 搭一套夜间自动化循环
    Vjeux用AppleScript自动按回车键,让Claude Code无人值守跑了24小时。安全风险确实有,但如果是一次性项目,时间效率会被拉到极致。
  5. AI是工具,方向得人来定
    用什么抽象、哪种模式有问题,这些判断仍然得工程师来做。Vjeux一行代码都没写,但要是没有工程经验,这个项目肯定会失败。

重点

把项目的规则、调试流程、禁止事项详细写进CLAUDE.md文件,Claude Code在丢掉上下文时就能被重新拉回正轨。Vjeux也是一直反复更新这个文件,用它来矫正AI的行为。