3

9天Claude Code重写100万行代码、6755次提交,Bun完成史上最大AI重构后,开发者质疑:99.8%测试通过率,真的代表安全?

去年底被 Anthropic 收购的 JavaScript 运行时 Bun,上周以一条 PR 完成 “AI 重写基础设施”:超 100 万行 Rust 代码、6755 次提交,几乎全部由 Claude Code 智能体在 9 天内自动生成,并通过现有测试套件 99.8% 的用例。Bun 创始人 Jarred Sumner “团队已好几个月没亲手敲代码”的发言在 Hacker News 引发 708 分热度的争论,PR 点赞与点踩各占一半。然而开发者 dreamreal 的长文《Bun Has Been Converted to Rust. Now What?》从另一视角重审这场重构:Bun 官方给出的迁移动机是 “借助 Rust 编译期保障内存安全”,但重写后分布在 700 多个文件里的 unsafe 代码块超过一万个,与同体量级别的 Rust 项目 uv 仅 73 个 unsafe 块相比,整整相差两个数量级。原因在于 Bun 迁移指南要求 Agent “忠实移植” Zig 代码、保持原架构和数据结构逐文件转换,当 Zig 手动内存管理逻辑过不了 Rust 借用检查器时,迁移过程就用 unsafe 绕过——而借用检查器恰恰在这些地方失去作用,这正是 Rust 内存安全保障机制 “本应发挥作用” 的地方。文章指出,99.8% 测试通过率与一万多个 unsafe 块并不矛盾:测试套件只能验证新实现在外部接口行为上与旧实现一致,无法判断底层是否真正安全。验证 unsafe Rust 安全性至今仍是研究难题——Amazon 与 Rust 基金会曾联合立项专门验证标准库中的 unsafe 代码,而 Rust 标准库本身在数十年专家审查下仍出现过 20 多个可追溯到 unsafe 的 CVE 漏洞。目前学术界最先进的半自动化验证工具也需要人工编写形式化规范,不存在 “一键让 unsafe 变安全” 的工具。更关键的是代码生成与验证的不对称:智能体在 9 天内产出百万行代码,而按这个速度阅读根本不是人类能做到的。Bun 团队坦言没有以审查关键基础设施应有的方式完整阅读这些代码。文章警告,0.2% 未通过的边缘场景、libc/musl 平台差异等未定义行为不会通过测试主动暴露,很可能在 18 个月后以 CVE 形式出现。而按 Anthropic 自身描述,该运行时会集成进 Claude Code、服务数百万用户。结论并非 “AI 不行” 或 “Rust 不行”,而是:当有人用测试通过率证明安全属性时,应先确认测试套件在不在测量那个属性——“行为一致性” 与 “内存安全” 是两个完全不同的维度,全部变绿只说明迁移做得好,无法说明系统真正安全。