返回技术博客

AI 写的代码怎么信?这次答案不是 review,而是形式化验证

AI 写的代码怎么信?这次答案不是 review,而是形式化验证

AI coding 发展到今天,一个问题越来越尖锐:模型能写很多代码,但我们到底怎么相信这些代码是对的?传统答案是 review、测试、跑 CI。但一个近期在 Hacker News 上出现的 Lean 4 项目,给了另一个方向:别相信 AI 写的 1000 行实现,去相信 93 行形式化规格和机器检查器。

这个项目实现的是 3D constructive solid geometry 中的 mesh intersection,并用 Lean 4 做形式化验证。作者的核心观点很清楚:AI 可以生成复杂实现和大量证明,但人类 reviewer 不需要逐行相信这些 AI 生成内容。人只需要审查一小段形式化 spec,然后让 Lean checker 验证实现是否满足 spec。

这对 AI 编程很重要。现在大量 AI coding 的风险,不是模型写不出代码,而是它写出“看起来合理但细节错误”的代码。测试能抓很多问题,但测试只能覆盖样例;形式化验证试图证明“对所有满足前提的输入都成立”。在高可靠场景里,这种差异非常关键。

当然,形式化验证不会马上取代普通开发。它学习成本高、建模成本高、性能和工程集成也有挑战。这个项目自己也承认实现速度远慢于传统方案。但它展示了一个趋势:AI 生成代码越多,人类越需要把信任从“读实现”转移到“读规格、跑验证、查边界”。

这可能是 AI coding 的下一阶段。第一阶段是补全,第二阶段是 Agent 自动改代码,第三阶段也许是 Verified Coding:模型负责生成实现、测试和证明,人类负责定义规格、约束接口、确认边界条件。这样人类的审查负担不会随着代码量线性增长。

对普通工程团队来说,短期启发也很实际。不是所有项目都要上 Lean,但可以先做“轻量形式化”:强类型、契约测试、property-based testing、不可变接口、关键算法的数学规格、自动化回归。AI 写代码越多,这些验证层越值得投资。

我的判断是,未来好的 AI 编程工具不会只会写代码,还会帮你建立可信证据:测试、类型、规格、证明、trace、变更解释。只会生成更多代码的工具,会把维护压力甩给人;能压缩人类审查面积的工具,才更接近真正的工程生产力。

参考来源:verified-3d-mesh-intersection GitHub