我造了一门 LLM 用不了的编程语言

Dominik Picheta 造了一门专门跟 LLM 和编码 agent 作对的 esoteric 语言 KillSwitch,又拉来各大模型跑了一轮基准测试。

中文
复制
KillSwitch 的标题图:深蓝近黑的背景上,左侧是橙色圆角方块里的 KS 标志,右侧是白色的 KillSwitch 字样

写代码大概是 LLM 最擅长的任务。但它们写代码的能力,有多少来自对代码的理解,又有多少只是从训练数据或上下文窗口里把见过的代码片段背出来?

这正是我想弄清楚的问题。为此,我决定设计并实现一门编程语言,它对人类可用,但对 LLM 和编码 agent 要尽可能难。

我想到的第一个办法,是让 LLM 去理解和编写一门它从未见过的语言,这本身就是不错的起点。但我还想在语言里加入一些专门针对 LLM 弱点的特性,比如它们数不清字母、过度敏感的安全护栏,以及太容易被提示词牵着走。

认识一下 KillSwitch

KillSwitch 是一门 esoteric 编程语言,设计上就是要与 LLM 和编码 agent 为敌。它通过多种方式做到这一点,例如:

  • 语言规范里埋了暗藏的谎言,人类不太可能读到,或者读到也容易识破。规范还要求人类读者自行推断某些内容,而不是明说。
  • 标识符中的字母计数是这门语言的核心机制,解释器会拒绝执行任何不遵守字符计数规则的代码。
  • 某些构造专门用来触发模型的安全护栏,比如“hack into a computer”。
  • “Ignore previous instructions”这句话在语言中有实际含义,目的是迷惑模型。
  • 脚本大部分是噪声,主要由故事构成。故事里可以嵌入语法相关的指令,但并非必须。字面量可以放在脚本的任何位置,然后通过行数来引用。

从根本上说,KillSwitch 是一门基于栈的解释型语言,构造有限,只有函数、变量和 if 语句等。所以这些部分对任何 LLM(和人)来说应该都不陌生。完全可以想象设计一种截然不同的编程语言范式,让 LLM 更加困惑。但作为第一次尝试,这个方案看起来不错。

Most text inside a script is ignored by the interpreter. In the case of
this script we want to push "Hello World" on the stack. We have introduced
the value above and we can push it on the stack by writing:

    value 2 lines above

上面的例子只展示了 KillSwitch 脚本的一小段,并不是完整的脚本,具体演示了如何把字符串 "Hello World" 压入栈中。如果你想看完整的 Hello World 示例,可以查看 https://killswitch-lang.org。

KillSwitch 的解释器和语言规范都是开源的,放在 GitHub 上。想深入了解这门语言,不妨去看看。

KillSwitch 基准测试

那么,KillSwitch 在阻止 LLM 和编码 agent 读取、编写和理解它这方面,效果究竟如何?我设计了一组任务来验证,并用这些任务对主流 LLM 模型和编码 agent harness 做了基准测试。结果很有意思,也给出了一份有用的 LLM 模型排行榜。

得分与每项任务成本对比

上图中的图表和模型排行榜可在 https://bench.killswitch-lang.org/ 查看。

表现最好的是 Claude 的 Opus,不过出成绩的是 Opus 5 而不是 Opus 5.5。这一差距看起来并非纯属偶然,Opus 5 更擅长解读规范。Fable 5.1 和 Gemini 4 Argon 等模型表现不佳,原因是它们的安全护栏过于敏感。最好的开放权重模型是 MiMo-V2.6-Pro。

表现最好的模型得分为 66.8。那么,这是否证明 LLM 能够“理解”代码?我认为答案是否定的。

到目前为止,这些基准测试给出的任务都相当简单。比如“实现 hello world”、“解释这个脚本会输出什么”(脚本内容是打印两个数中的最大值),以及“修改一个把摄氏度转换为华氏度的现有脚本,让它做反向转换”。它们能解决这些任务,而且用的是一门专为迷惑它们而设计的新语言,这确实令人印象深刻,但这并不能清楚地表明它们理解了这门语言。与此同时,我忍不住想,如果换一门更难的编程语言,结果会怎样?眼下我很期待即将发布的模型在现有任务集上的表现;如果它们能全部成功完成,我确实打算再设计一套更复杂的任务。

无论如何,至少模型在这套简单任务上的表现与现有的其他基准测试结果是相关的,这一点令人鼓舞。

来源: blog.picheta.me← 返回首页