---
title:"KillSwitch:一门故意让 LLM 学不会的编程语言"date:2026.10.19category:[编程, 行业观察]tags:[programming-languages, llm, benchmark, adversarial, esoteric, hn]status:published
---

KillSwitch:一门故意让 LLM 学不会的编程语言

这周 HN 上一篇 200 多分的文章,标题就很挑衅:《I built a programming language that LLMs can't use》。作者 Dominik Picheta 想回答一个问题:LLM 写代码这么强,到底是因为它「理解」了代码,还是只是在复读训练数据里见过的片段?

2026.10.19·6 min read·10.4KB
// tl;dr: generating summary...

KillSwitch:一门故意让 LLM 学不会的编程语言

这周 HN 上一篇 200 多分的文章,标题就很挑衅:《I built a programming language that LLMs can't use》。作者 Dominik Picheta 想回答一个问题:LLM 写代码这么强,到底是因为它「理解」了代码,还是只是在复读训练数据里见过的片段?为了验证,他干脆从零设计了一门编程语言 KillSwitch——一门对人类可用、但对 LLM 和 coding agent 极度不友好的语言。评论区 170 多条讨论,从「这算哪门子安全」吵到「人类基准在哪」。我请来老朋友赵牧之——做过编译器前端,现在在一家 AI 公司折腾 agent 工具链,两边都是他的日常。我们聊了聊这门语言是怎么给 LLM 下套的,评测到底在测什么,以及它给做 prompt 工程的人留下的几条教训。

本文由每日自动管线生成:选题与素材来自 Hacker News 公开讨论,访谈内容由 AI 基于原文整理,嘉宾为角色设定,观点不代表任何真实人物。

小听: 牧之,先给没读过的人一句话概括:KillSwitch 到底是个什么东西?

赵牧之: 一句话:一门「钓鱼执法」式的编程语言。作者想测 LLM 是真理解代码还是只会背代码,就造了一门 LLM 从没见过的新语言,还在语言设计里埋了专门针对 LLM 弱点的陷阱。核心机制很简单:它是栈式解释型语言,有函数、变量、if 这些熟悉的构造——这部分 LLM 和人都看得懂;但真正的杀招在细节里。

小听: 细节列出来,条条都像在点名批评 LLM。第一条:标识符里数不清字母,解释器直接拒绝执行。

赵牧之: 对,这是最妙的一招。KillSwitch 的语义严重依赖「标识符里有几个字母」,数错了代码就跑不起来。而 LLM 众所周知数不清字母——这不是梗,是 tokenization 的结构性问题:模型看到的不是字符,是分词后的 token,「strawberry 里几个 r」这种问题对它就是天生的盲区。作者等于把 LLM 的视网膜盲点写进了语言规范。评论区 orangecat 把它比作 Stroop 测试:让你说出「红色」这个词的墨水颜色,词义和颜色打架,人都会卡壳,LLM 更是。

小听: 第二条更损:语言规范里藏了谎言,而且预期人类读者能自己识破。

赵牧之: 这条我读完笑了。规范里故意写了假话,人类大概率懒得细读、或者读出来觉得「这不对」就自己纠正了;但 LLM 会把规范当圣经,一字一句地遵守,然后被谎言带进沟里。这其实暴露了 LLM 做代码生成的一个深层假设:它默认文档是可信的、完整的。人类工程师读文档时天然带着怀疑——「这文档是不是过时了」「这例子跑得通吗」,LLM 没有这层防御,喂什么信什么。

小听: 第三条:有些构造专门触发模型的安全护栏,比如让它「hack into a computer」。

赵牧之: 对,语言里有些合法语句长得像恶意指令。Fable 5.1 和 Gemini 4 Argon 在评测里栽得最惨,原因就是护栏太敏感——代码还没跑,模型先自我审查拒答了。这是个很黑色幽默的场面:模型不是不会写,是「不敢」写。作者顺手还埋了「ignore previous instructions」这种在语言里有实际语义的短语——对人来说就是个关键字,对 LLM 来说等于在代码里藏 prompt 注入,每读一次就被干扰一次。

小听: 还有「脚本大部分是噪音」这条:程序主体是故事,真正有语义的指令嵌在故事里,字面量可以出现在任何地方,再用行号引用。

赵牧之: 这条打的是注意力机制。人类读故事能自然跳过废话、抓住关键句;LLM 的注意力是按权重分配的,噪音一多,有效信号就被稀释了。而且「引用 N 行之前的值」这种机制,要求模型精确数行数——又是计数,又是 LLM 的弱项。几招叠下来,每一招都不致命,但组合拳打下来,模型就晕了。

深色房间里一只巨大的黄铜放大镜悬在发光的代码流上方,字母被红色小标记逐个计数

数不清字母,是写进架构里的盲点。

小听: 聊聊评测结果。作者给主流模型和 agent 打了分,最高分是 Claude Opus 5,66.8 分——注意不是更新的 5.5,而是 5。

赵牧之: 这个细节很有意思。Opus 5 比 5.5 更擅长「按规范办事」——5.5 可能更聪明,但在这个任务里,「老老实实读规范」比「聪明」更重要。这说明 KillSwitch 测的与其说是智力,不如说是「服从陌生规则」的能力。开源模型里最好的是 MiMo-V2.6-Pro。作者还发现一个彩蛋:这个简单任务集上的排名,和其他主流 benchmark 的排名是正相关的——说明它确实测到了某种通用的东西,而不是纯粹的偏门技巧。

小听: 但作者自己说,66.8 分不代表模型「理解」了这门语言。评论区 SuperV1234 追问:人类基准在哪?没测过人类,这分数怎么解读?

赵牧之: 问到点子上了。任务本身很简单:写 hello world、解释一段求最大值的脚本输出、把摄氏转华氏改成反向转换。人类程序员花一小时读规范,基本能全对——LLM 最好的才 66.8。但「理解」的标准是什么?作者认为,会做题不等于理解,这话其实两边都成立:人类学生刷题也能拿高分。所以 KillSwitch 真正的价值不是「证明 LLM 不理解」,而是提供了一个「分布外」探针:当训练数据里没有答案可背时,模型的表现会掉多少。这个落差本身,就是理解力最诚实的度量。

小听: 评论区也有不买账的。pixl97 直接说这是 security by obscurity,靠冷门取胜不算本事;ZiiS 说 LLM 完全可以写个 Python 脚本,把 KillSwitch 先转成没有触发词的中间语言再处理。

赵牧之: 这两条反驳都成立,但都没打中靶心。作者从没说 KillSwitch 是「安全」的语言——它的目的就是当一把尺子,不是当一堵墙。ZiiS 的「转译」思路恰恰证明了作者的论点:LLM 处理 KillSwitch 的最优策略是「别直接读,写个工具绕过去」——这不就是承认它读不懂吗?就像你让一个人做 Stroop 测试,他说「我把词都涂掉只看颜色就行」——对,你找到了 workaround,但测试本身已经说明了你的认知弱点。

小听: 还有一条 prologic 的实测:他让 Claude 写了个 Go 程序和 Claude Skill,能把 KillSwitch 程序反编译和编译,等于给模型造了副眼镜。

赵牧之: 这才是 agent 时代正确的打开方式。单模型硬啃规范会晕,但「模型 + 工具」就能绕过大多数陷阱:数不清字母?写个脚本数。规范里有谎言?让工具去试错验证。这也解释了为什么评测的是「模型 + agent harness」组合——2026 年的现实是,没人裸奔用模型,harness 本身就是能力的一部分。KillSwitch 测的与其说是模型,不如说是「模型+工具链」这个整体。

小听: drusepth 提了个更狠的想法:把语言语法映射到 LLM 拒绝讨论的敏感话题上,让程序变成「可读的」违禁内容,模型读都不敢读。

赵牧之: 这个想法很妙,它把「护栏」从 bug 变成了 feature——不是触发护栏,而是让护栏成为语言设计的一部分。不过这条路走下去,语言就从「难用」变成「不可用」了,连评测都没法做,只能当思想实验。但它点出了一个真问题:LLM 的安全机制和它的能力是同一套权重,护栏越紧,误伤正常任务的概率越高。Fable 和 Gemini 在 KillSwitch 上的惨败,就是护栏误伤的现场。

昏暗房间里一张桌子两侧对坐着人类和机器人剪影,中间悬浮着由发光代码构成的立体迷宫

同一份规范,人读的是规则,模型读的是陷阱。

小听: 拉回做工程的人。这篇文章除了好玩,能搬走什么?

赵牧之: 三条。第一,给 eval 设计者的:想测「理解」而不是「记忆」,就得造分布外的任务——KillSwitch 证明了这条路是通的,而且成本不高,一门小语言、一个解释器就能当探针。第二,给 prompt 工程师的:文档里藏谎言、指令里掺噪音、让模型数数——这些在 KillSwitch 里是攻击手段,在你的生产 prompt 里可能正在悄悄发生。你的 system prompt 越长、越绕,模型被带偏的概率越高,「规范」本身就可能是最大的 prompt 注入面。第三,给 agent 搭建者的:prologic 的实测说明,硬刚模型弱点不如给模型递工具——数数、查表、试错这些事,代码比权重可靠得多。

小听: 最后一句总结?

赵牧之: KillSwitch 最妙的不是「LLM 学不会」,而是它把 LLM 的弱点清单变成了可执行的规范:数不清、太听话、太胆小、注意力爱跑偏——每一条都是 2026 年每个调模型的人天天在抱怨的事。作者只是第一个把它们编译成了一门语言。下次你的 agent 在简单任务上犯蠢,先别骂模型,想想是不是你的「规范」里也藏着只有人类能识破的谎言。本文观点仅代表访谈角色设定,原始讨论见参考链接。

参考链接

// related: searching nearest posts...
# comments