Bend:用证明阻断AI编码错误的新语言
「Bend 是一门面向 AI 编程时代的编程语言,通过类型检查器兼任证明检查器来验证 AI 生成的代码是否符合所声明的规则。它编译为原生代码,单核性能接近 C,同一二进制可自动在十六核或 GPU 上并行运行,最高提速百倍,并在 Linux 与 macOS 上支持后端开发场景。」
在 AI 大规模参与代码生成的背景下,如何确保模型写出的代码符合人类意图,正在成为一个核心工程问题。开发者社区近期关注到一门名为 Bend 的编程语言,它试图用数学证明的方式,从语言层面阻断 AI 编码过程中可能出现的逻辑错误。
Bend 的核心理念是:在未来的开发流程中,人类可能不再逐行阅读代码,但仍然需要一种无歧义的方式告诉 AI 究竟要实现什么。自然语言的描述往往模糊,而 Bend 提出了两条路径来弥补这一缺陷——用 laws 让意图比自然语言更精确,用 proofs 来验证 AI 是否正确实现了提示词所要求的行为,再配合一个高速编译器把结果真正跑起来。
从性能设计上看,Bend 编译为原生代码。官方描述显示,在单个核心上它的运行速度接近 C 语言;而同一个二进制文件还能直接运行在十六个核心上,或者运行在 GPU 上,速度最高可达单核的一百倍。这意味着开发者无需重写代码,就能把同一份程序从 CPU 平滑迁移到 GPU 执行。
Bend 的关键技术特征在于,它的类型检查器同时就是一个证明检查器,思路类似于 Lean 和 Rocq 这类证明助手。但官方强调,Lean 和 Rocq 在中型代码库上可能需要数分钟才能完成检查,而 Bend 最多只需要一秒。这一速度差异对 AI 代理场景至关重要——因为 AI 可以在每一次代码改动之后立即运行检查,而不是等待漫长的验证周期。
在并行编程方面,Bend 尝试消除传统多线程开发的复杂性。开发者不需要手写线程、锁或者 GPU kernel。只需要把工作一分为二,Bend 就会自动把调用分配到它能找到的所有核心上,然后再把结果合并回来。官方给出的演示是 pow2 在 4096 个 GPU 核心上运行。
Bend 最具话题性的能力,是针对“无法阅读的代码如何被信任”这一问题给出的答案:要求提供证明。项目引入了 LAWS.bend 文件,用于声明不可违反的规则。一旦规则被声明,任何 AI 都无法提交违反这些规则的一行代码。官方用一个游戏示例展示了这一机制:当要求 AI 实现“让棋盘环绕”这一新功能时,如果没有 LAWS.bend,这个 bug 会直接进入线上;而有了 LAWS.bend,AI 必须不断重试,直到构建出墙壁并证明该规则成立为止。在 Bend 的语境下,合并一个 bug 在数学上是不可能的,因为它会被当作一个定理来对待。
具体用法上,开发者可以在 LAWS.bend 中声明诸如“不存在任何移动序列能够导致获胜”这样的规则,并在 PROOF.bend 中提供对应证明。官方甚至把 LAWS.bend 直接类比为 AGENTS.md,只不过它背后有证明支撑,“不要犯错”这句话从此变成了可以被类型检查的约束。
为了降低接入门槛,Bend 提供了简单的安装方式,一条 curl 命令即可完成安装。官方建议在 AGENTS.md 中加入四条使用约定:运行 bend guide 学习语言,使用 LAWS.bend 保存重要规则,提交前运行 bend PROOF.bend,以及尽可能并行化代码。之后只需要告诉 AI“使用 Bend”即可。官方还给出了两条提示:让 AI 为任何不应被破坏的行为编写规则,并把所有希望快速运行的部分并行化。
目前 Bend 仍处于早期阶段。官方坦承它还很年轻,适用范围以 Linux 和 macOS 上的后端为主,并且预计会出现 bug,鼓励使用者遇到问题时提交 issue。语言本身的完整说明集中在 GUIDE.md 中,运行 bend guide 即可打印全部内容。项目还提供了两篇论文:BendTT 描述其核心的仿射依赖类型理论,BendRT 则介绍面向 CPU 与 GPU 的并行运行时虚拟机。
对于正在探索 AI 辅助开发工作流的团队来说,Bend 提供了一个值得观察的方向:把代码正确性的保证从人工审查前移到语言与证明系统本身,让 AI 生成的每一行代码都必须通过数学层面的检验。
来源:Heooo AI工具导航