最近有个叫 KillSwitch 的东西在传。简单说,它是一门故意设计成让大模型和编码代理读不懂的编程语言。上周 Dominik Picheta 发的。
这期就讲它。后面跟几条短的。
怪在哪
语言本身没多少东西。栈式解释,函数、变量、if,就这些。
难的地方全在规范里。主规则是数标识符的字符数。解释器会去数你变量名有几个字母,数不对就直接拒绝。这条规则没写在显眼处,要你自己从规范里推出来。
规范里还埋了谎。作者说人不太会读到那些地方,读到了也一眼看得出不对。
脚本的绝大部分是故事文本,跟语法没关系,解释器会忽略掉。你要引用上面某一行的字面量,得靠数行数去引。
还有一类构造,专门写成“忽略先前指令”“入侵这台机器”的样子。这是给安全护栏下的饵。
我最想说的不是排行榜
作者的动机是:模型写代码的能力,到底来自理解,还是来自记住。
这个问法我认。但这个设计能不能真把两者分开,我持保留意见。
一个模型能把这份规范读下来、把谎认出来、把标识符数对,它靠的仍然是训练里见过的那类分布。真要分离理解和记忆,你得让语言里有一块训练数据里从未出现过的结构性东西,而不是把熟悉的东西包上一层噪声。噪声能筛掉粗心的模型,筛不掉“这模型到底懂不懂”。
不过把“读一份写坏的文档”单独拎出来考,这件事以前没人干得这么绝。
排第一的是 Opus 5,不是 5.5
这段我觉得最值得看,也最容易被读错。
作者说这个差别不太可能只是偶然,Opus 5 更会读规范。
我不太买“强弱”这种读法。这门语言考的不是写代码,是读一份故意写歪的文档,然后忍住不按常识把它改顺。这更像服从度和细节耐心,不是通用能力。老版本赢新版本,说明不了太多别的。
我不确定这条值不值得单独收。但一个新版本在一个老版本擅长的怪项上掉分,挺有意思,先放在这里。
Fable 5.1 和 Gemini 4 Argon 掉分,是因为护栏
作者点明了,这两个模型在基准里表现差,是安全护栏太敏感。
这条比排行榜重要得多。
正常写代码的人不会在变量名里藏“忽略先前指令”。这门语言会。模型看到了,触发,拒答,扣分。
等于这个基准顺手测了一件事:护栏误伤的代价是有具体分数的。真实场景里没有分数,只有用户被拒之后关掉窗口。
66.8 分
最好成绩 66.8。任务一共三个:写一个 Hello World、读一段脚本说出输出、把一个摄氏转华氏的脚本改成反向。
作者自己说,这些结果不能证明模型真懂了这门语言,任务还太简单。
这句我信。所以我不建议任何人拿这份排行榜去给模型排座次,样本太薄。
但它测出来的东西有用。测的是“给一份烂规范,模型能不能照着做”。这事在真实工作里天天发生。你丢给 agent 的从来不是干净的需求,是一堆历史注释、半截 README、和同事留下的奇怪约定。
这里我要收回前面一点判断
作者提到,当前表现和其他模型基准存在相关性。
如果相关性成立,那我前面说它测的是耐心不是能力,就不太站得住。它测的可能就是通用能力的一个侧面,只是换了个刁钻的入口。
我改一半。它确实比我想的更接近通用能力,但一个只有三个任务的榜单,还不足以证明这件事。
开放权重那边,表现最好的是 MiMo-V2.6-Pro。这条我没深挖,先记一笔。
解释器和规范都开源了,GitHub 上有。完整 Hello World 在 killswitch-lang.org。想看的人自己去看,规范里那些谎我就不剧透了。
作者说等现有任务被全部解出来,会再设计更难的。
我倒希望他别急着加难度,先把任务从三个加到三十个。三个任务的排行榜,风一吹就散。
最后一句题外
我一开始看字符计数那条,只看懂了一半。为什么数标识符里的字符数,而不是别的,我还没想通,先放着。
本周就这些。上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。讲错的我补,没讲清的我改。
下周见。