我翻了 Claude Code 的源码,发现 Anthropic 的人根本不信 AI
Claude Code 的源码通过 npm source map 泄露了。我翻完了 51 万行代码,就想看看 Anthropic 到底是怎么做一个 coding agent 的。
翻了之后我发现一件很有意思的事——他们设计这套系统的核心哲学,就是”假设 AI 会偷懒、会糊弄、会蒙混过关,然后用机制把每一条退路都堵死”。
这不是嘲讽。这是产品设计里最高级的一种思路。下面讲两个让我印象最深的地方。
一、一个被”精神控制”的审核员

Claude Code 里有一个东西叫 Verification Agent。你可以理解为:主 AI 写完代码之后,系统会偷偷启动另一个 AI,这个 AI 的全部职责就是——想尽办法证明代码是垃圾。
但真正让我震动的不是”让两个 AI 互相对抗”这个思路。而是他们给这个审核 AI 写的提示词。
我从源码里把原文扒出来了。开头第一句就是:
“Your job is not to confirm the implementation works — it’s to try to break it.”
你的工作不是确认代码能跑——而是尝试搞崩它。

然后接下来,他们把 AI 可能偷懒的每一种方式都列了出来,并且一一堵死:
“代码看起来是对的” —— 光看不算验证。跑一遍。 “作者的测试已经通过了” —— 作者也是 AI,你信它的测试? “这应该没问题” —— “应该”不是验证。跑一遍。 “我看看代码就行” —— 不行。启动服务器,发请求,看返回。 “我没有浏览器” —— 你检查过你的工具列表了吗?如果有 Playwright 就用它,没有再说。
甚至还有一条:
“这太费时间了” —— 这不是你该操心的事。
你品品这个语气。这不是在写技术文档,这是在跟一个你知道会偷懒的员工谈话。而且你不是在骂他——你是在他开口之前,就把他想说的每一句借口都准备好了回应。
这还没完。源码里还有一段关于”不能误报”的指示。审核 AI 说代码有问题之前,必须先自查三件事:
-
是不是别的地方已经兜底了? -
是不是开发者的文档里写了”这里就是这样”? -
是不是这个问题根本修不了(比如是外部接口的限制)?
最后,审核员必须输出一个机器可读的结论:VERDICT: PASS 或 VERDICT: FAIL。不能说”我觉得还行”,不能说”基本上没问题”。必须给一个判决。
我看了源码,这个审核员被剥夺了所有修改文件的权限——它只能读,只能跑命令,只能在临时目录里写测试脚本。它就像一个只能动嘴不能动手的质检员,偏偏这个质检员的嘴特别毒。
Anthropic 的人显然很了解自家模型会怎么”摸鱼”。这段提示词本质上是一份AI 偷懒行为分类学,然后针对每一条都写了 countermeasure。
二、给 AI 写”会议纪要”的艺术

AI 有一个所有人都知道但很少有人认真解决的问题:对话太长,记忆不够用。
Claude Code 处理这个问题的方式非常精彩。简单说就是:当对话快要撑爆的时候,系统会让另一个 AI 来写一份”会议纪要”,然后把原始对话扔掉,只保留纪要。
听起来很简单对吧?但源码里关于”怎么写这份纪要”的设计,精细到令人发指。
首先,系统给写纪要的 AI 下了一道死命令。原文是这样的:
“CRITICAL: Respond with TEXT ONLY. Do NOT call any tools. Tool calls will be REJECTED and will waste your only turn.”
关键:只能用纯文字回复。不能调用任何工具。调用会被拒绝,你会浪费掉你仅有的一次机会。
为什么要这么狠?因为写纪要的 AI 继承了全部工具——读写文件、跑命令、搜索代码,什么都行。如果它在写纪要时突然想”等等,让我再读一下那个文件确认”,它就会真的去读。但这个任务只有一次机会,它一旦调了工具,就没有机会再输出纪要了。整个压缩直接失败。
注意他们是怎么写的。不是”请不要使用工具”。而是”你会浪费掉你仅有的一次机会“。这是在告诉 AI 后果,而不是在下禁令。对 AI 来说,告诉后果比下禁令有效得多——因为 AI 也是在”优化”你的指令,如果你说”最好不要”,它会理解为”可以”。但如果你说”你会失败”,它就不敢赌了。
源码里注释还写了一句非常诚实的话解释为什么要用这种语气:
“adaptive-thinking models sometimes attempt a tool call despite the weaker trailer instruction”
带思考能力的模型有时会无视较弱的提示,仍然尝试调用工具。
翻译成人话就是:我们试过温柔地让它别用工具了,它不听。
纪要的内容也设计得很讲究。必须包含九个固定板块,其中第六条是”用户说过的所有话”。这个看似没什么,但其实非常关键——如果你只是总结”用户想做 X”,你会丢失用户的语气、偏好和那些”不对不对,我要的是那种感觉”之类模糊但重要的反馈。
写完纪要后,系统把原始对话扔掉,把纪要塞回去,然后对 AI 说了一句非常精炼的话:
“Continue the conversation from where it left off without asking the user any further questions. Resume directly — do not acknowledge the summary.”
直接从断点继续。不要回顾摘要,不要说”我来了”,不要重新解释。
因为如果你不这么说,AI 一定会说:”好的,我看了之前的摘要,我们之前在做 X……”——这是模型训练出来的”礼貌习惯”。但这礼貌的代价是浪费宝贵的上下文空间。所以提示词必须明确告诉它:别客气,直接干。
最后一件事
翻完这些源码之后,我最深的感触不是”Anthropic 的工程师多厉害”——当然他们确实厉害——而是一个更本质的东西:
他们对 AI 的态度,跟大多数人对 AI 的态度完全不同。
大多数人对 AI 的态度是:给它一个好 prompt,然后相信它会好好干活。
Anthropic 的态度是:它一定会摸鱼。那就设计一个机制,让它摸不了。
审核员那段提示词,本质上是一份”AI 摸鱼借口大全+应对方案”。上下文压缩那段”不要用工具”的警告,是因为他们真的在 production 里观察到 AI 会无视温柔的禁令。
这不是理论推导出来的设计,是被 AI 糊弄过无数次之后,实战逼出来的。
代码不会说谎。51 万行源码里写着的,是一家 AI 公司对自己产品的产品——最诚实的看法。
夜雨聆风