Bend推出LAWS.bend:用形式化证明拦截AI错误代码

Bend语言新增LAWS.bend机制,要求AI代理在修改代码时提供数学证明。开发者声明代码约束后,编译器将强制检查,阻止违反规则的代码合并。相比仅依赖自觉的AGENTS.md,该机制通过形式化验证确保AI生成的代码符合逻辑定律。

Bend 引入 LAWS.bend 机制:用形式化证明阻止 AI 写入错误代码

Bend 语言新增了一项名为 LAWS.bend 的功能,目标很明确:让 AI 代理(agent)在修改代码时提供数学证明,而不是仅凭生成的代码本身。

工作方式如下。开发者在项目中编写一个 LAWS.bend 文件,在其中声明"法律"——即代码必须满足的约束。文件一经提交,任何 AI 都无法直接写入一行违反这些法律的代码。官方用一个小游戏演示了这一机制:AI 被要求改写游戏逻辑,如果它的改动会破坏"赢是不可能的"这条规则,系统就会拒绝合并。

编译器强制拦截违反法律的AI代码

法律:赢是不可能的

到目前为止,它工作!

在演示中,开发者在编辑器里要求 Claude 修改棋盘逻辑。

对照实验的结果区分明确:没有 LAWS.bend 时,AI 的改动悄悄引入了违反规则的 bug,代码被合并;启用 LAWS.bend 后,AI 的提交被直接封锁,系统强制其重新尝试,直到改动满足法律为止。

没有 LAWS.bend:违反了法律,一个错误被合并。

无约束状态下,bug 进入代码库。

启用 LAWS.bend:法律是完整的,一个错误被封锁!

有约束状态下,非法改动被拒绝。

核心差别在于:没有 LAWS.bend,bug 只是被生成出来并存活下去;有了 LAWS.bend,AI 必须重新尝试。由于证明的存在,"合并一个 bug"在数学上不可能成立——它被表达为一个定理。

法律本身用 Bend 语言表达,以一个关于棋盘状态的声明为例:

# LAW: no move sequence leads to victory.
law you_cant_win:
  for moves: List<Move>            # any sequence of moves
  board = replay(start(), moves)   # replayed from the start
  is_won(board) == False{}         # never leads to victory

与法律配套的是证明(proof),由 AI 自动生成并随改动提交:

# PROOF: you_cant_win holds.
def Laws.you_cant_win(moves):
  # ... written by the AI

项目方将 LAWS.bend 定位为对 AGENTS.md 一类约定的升级:后者只是写给 AI 的规范文字,依赖模型自觉遵守;而 LAWS.bend 的约束由编译器强制检查。

对该机制的效果存疑的开发者,可以直接试用官方提供的游戏,尝试让 AI 在启用法律的情况下写入一个能获胜的 bug。

评论 0

0/500

评论需审核后展示,请文明发言

💬
还没有评论,来说两句

相关阅读