上周落地了李开复的"反谄媚提示词"(让 AI 别讨好我),这周看到一个更狠的实验。
一个叫"明"的开发者,花了 5000 美金(约 3.6 万人民币),跑了 111 次实验。他要搞清楚一件事:人类给 AI 定的那些编码规范,到底是在帮它还是害它?
实验怎么做的
让 AI 从零写一个 Scheme 解释器,反复修改扩展 28 轮,每轮都要通过所有之前的测试。
两组对比:
- 屎山组:放手不管,AI 爱怎么写怎么写,一个函数写到 5000 行也不管
- QG 组(质量门控组):严格执行人类规范——函数不超过 50 行、嵌套不超过 3 层、代码要通过 lint 检查
作者自己站 QG 组这边。规则是他定的,裁判是他,参赛的也是他,他想让自己赢。
结果:屎山组完赛率 65%,QG 组 62%。认认真真写的规范,把自己的组给打崩了。
三次打脸
第一次:早期 10 关,屎山组一次性通关。QG 组在多个小文件之间反复跳转,token 都烧完了还没写完。
第二次:深入分析发现 QG 组 70% 的 token 花在了满足 lint 规则和 50 行函数上限上——拼命重构已经能跑的代码,而不是让测试通过。
第三次:作者专门设计了"技术债务惩罚关卡"想制裁屎山组。结果惩罚关卡反而卡死了 QG 组——因为拆得太散了,AI 跨文件推理负担爆炸。
为什么会这样
核心差异在"认知缓存"大小。
人的工作记忆很小,一次只能记 4-7 个东西,所以代码要拆成小块、分层、分文件——每个小块人能看懂。
AI 的工作记忆大得多,最优的局部性粒度是人类的 3-5 倍。你把代码拆成 20 个小函数散落在 5 个文件里,对人来说是分治,对 AI 来说是碎片化——它要反复加载、跳转、重建上下文。
实验测出的硬数字:
- 函数 500 行以内:AI 基本不出错
- 文件 1500 行以内:安全区
- 5000 行以上:出错率跳到 26-42%
那个 50 行函数上限,相当于让一个能举 200kg 的人只用 10kg 的哑铃做组——不是帮它,是绑它。
对普通 AI 用户有什么用
一个反直觉的原则:规则越具体、越长、越一刀切,AI 反而越省 token。
你说"务实一点",AI 不知道你心里务实的分界线在哪。你说"别过度设计",AI 不知道多过度算过度。模糊的规则会让 AI 猜出两三种理解,每条路各分析一遍——token 全烧在揣摩你的意图上。
这跟李开复的反谄媚提示词形成了一对:
- AI 不要讨好人类(反谄媚)
- 人类不要用老标准束缚 AI(这篇)
两边对齐,才是人机协作的正解。
我的落地
我在 Claude Code 工作区做了三件事:
- 把"禁止暗示性句式"改成了具体的黑名单——不要求 AI 自己判断什么叫暗示,直接列禁止词
- 归档规则加了映射表——哪些信息写哪个目录,一刀切,AI 不自己分类
- 触发条件从模糊的"需明确触发"改成了关键词匹配——消息里有"配图""画板"才触发
都是小改动,但每一条都在消除"AI 需要揣摩我"的模糊空间。
一个更大的故事
明在文章最后讲了个场景:
周六晚上加班上线,一个函数堆了 800 行,20 个 lint 错误,测试挂了 20 个。CTO 动用了超级管理员权限强行合了代码。建了个 Jira 任务说"以后再重构"。
三年后你成了 TL。某天灵光一现想到了更好的写法,花一下午把那坨代码改成了 100 行和 300 行。真漂亮。
然后你把代码提交到一个新分支上,连 PR 都没开。
"能跑的代码就不要去改"——这些年看过太多血淋淋的案例了。
但如果重构的成本趋近于零呢?如果不需要加班到半夜、只需要一句话呢?
这就是 AI 时代要重新回答的问题。
实验数据开源在 GitHub: mingyang91/ming-bench。作者提醒:每跑一轮会烧掉 100-300 美金 Opus token,谨慎复现。
评论