Paul Dix那句话最近被转得很凶:AI写了100万行代码,又花了几个月打磨,变成一款可靠软件,现在跑在数百万开发者的机器上。单看这句话,很容易理解成"AI已经能从零造出复杂软件"。
但这句话的真实语境窄得多。它说的是Bun把核心实现从Zig迁移到Rust的一次具体工程——旧的Zig代码全程当参照答案摆在那,AI不是在凭空创作,是在做一次有标准答案的翻译。这个差别,决定了这个案例到底能证明什么,又不能证明什么。
11天,64个代理,一份现成的标准答案
工程师Jarred Sumner搭了约50个自动化工作流,高峰时64个Claude代理并行跑,负责翻译文件、修编译错误、跑测试、做对抗性审查。初版重写只用了11天(2026年5月3日到14日)。
合并进主干后,官方仓库记录的diff是新增1,009,272行,涉及6,778次提交。有意思的是,Dix自己博客里引用的合并记录写的是+1,009,257/-4,024行——两个数字对不上。就连这次被当作里程碑来讲的合并,记录口径都没统一,这本身就是个提醒:细节越具体,越容易发现"官方叙事"其实是拼出来的。
被替换掉的Zig实现约53.5万行,这就是整个工程的oracle——AI不需要猜"这个功能应该怎么设计",只需要保证新代码和旧代码行为一致。这和从模糊需求里生成全新系统,完全是两种难度。
重写覆盖全部六个目标平台,每个平台超过100万条测试断言,且没有删除或跳过任何一个原有测试用例。Rust版本在Bun 1.4正式发布前,从2026年6月17日起就已经被Claude Code自己嵌入使用。发布后,二进制体积缩小约两成,又多通过约1,400个Node.js兼容性测试。听起来确实扎实。
测试全过,不代表代码是对的
问题出在这句话的下半段:团队后来自己报告并修复了19个迁移后的回归缺陷。这19个bug是在"全部测试通过"之后才被发现的,说明测试套件覆盖的只是测试套件已经想到的行为,覆盖不到的地方,照样会漏。
更扎心的是Rust那边。GitHub上有issue指出,迁移后的代码里PathString::init会产生悬垂引用和未定义行为,即便是通过"安全"API调用也会触发,用Miri就能复现。维护者后来把相关API标成unsafe,审计了调用点,加了编译失败测试来堵漏洞。
这个细节的讽刺之处在于:这次迁移的一大卖点就是Rust比Zig更安全。结果发现,类型系统能证明"类型是对的",但证明不了"unsafe代码块被正确使用了"。换语言从来不是免费的安全升级,它只是把风险搬到了另一个位置。
- 风险.oracle只能证明"新旧行为一致",证明不了"旧行为本身就是对的"——旧实现里的设计缺陷,很可能被原样带进了新代码。
审查方式变了,责任没有消失
Dix论点里真正站得住的部分,不是"AI能写复杂软件",而是审查这件事本身的形态变了。一份百万行的diff,人类不可能逐行读完。这次真正撑起"可靠"两个字的,是差分测试、模糊测试、Miri、11轮AI安全审查加上后续的生产遥测——审查从"读每一行代码",变成了"设计一套能筛出错误类别的系统"。这个转变是真实的,也是这次案例里最值得记住的一点。
但还有一层不太方便的事实:Anthropic既拥有Bun,Claude Code自己又内嵌用着Bun。目前公开的所有细节——迁移流程、测试覆盖、review轮数——全部来自这一个利益相关方,没有独立第三方做过覆盖率、变异测试或安全发现的对照评估。运动员自己发的成绩单,参考价值打个折扣,不算苛刻。
古人说"其兴也勃焉,其亡也忽焉",用在这里未必贴切——这不是一次兴衰,而是一次能力边界的具体案例。但那种"叙事跑得比验证快"的感觉,是相通的:一句励志引言先火了,具体条件后补上。
编程没有终结,只是审查的方式,从读代码变成了设计能发现错误的系统。
编程这事没有被终结。人类不再逐行写实现代码,但选择要解决的问题、设计规格、搭建验证闭环、承担发布风险,这几件事一样都没少。接下来该盯的,是Bun后续版本还会不会再冒出unsafe漏洞,以及有没有一份不是Anthropic自己写的评估报告。
