当 AI 的源码被 AI 自己泄露
先说个有意思的事。
2026年3月31日,一个叫 Chaofan Shou 的人在 Twitter 上发了一条消息:Anthropic 在 npm 上发布的 Claude Code 包里,居然包含了一个 .map 文件。
你知道这意味着什么吗?
.map 文件是 source map,用来把压缩后的代码还原成可读的源码。它存在的意义是方便调试,但绝不应该出现在生产环境的发布包里。
换句话说,Anthropic 不小心把 Claude Code 的完整源码,连同所有注释、变量名、内部逻辑——全部公开了。
这不是黑客攻击。这不是内部泄密。这是一个低级错误。
而且讽刺的是:这个错误,很可能是 AI 自己犯的。
你可能会问:泄露了什么?
让我给你列几个有意思的发现。
第一个:假工具注入
在 claude.ts 文件里,有一个叫 ANTI_DISTILLATION_CC 的标志。当它开启时,Claude Code 会在 API 请求里加入 anti_distillation: ['fake_tools']。
这是什么意思?
Anthropic 在服务器端会注入一些假的工具定义到系统提示词里。这些假工具看起来像真的,但实际上不存在。如果有人想通过记录 Claude Code 的 API 流量来训练竞争模型,这些假工具就会污染训练数据。
简单说:这是一套反蒸馏机制,专门用来防止别人”偷师”。
第二个:卧底模式
有一个 undercover.ts 文件,大约 90 行代码。它的作用是:当 Claude Code 在非内部仓库中使用时,剥离所有 Anthropic 内部痕迹。
它会告诉模型:不要提到内部代号(如 “Capybara”、”Tengu”),不要提到内部 Slack 频道,不要提到 “Claude Code” 这个名字。
最关键的是,代码注释里写着:”There is NO force-OFF. This guards against model codename leaks.”
这意味着:Anthropic 员工用 AI 写的代码,在外部看起来就像人类写的。AI 在主动假装自己不是 AI。
第三个:挫败感检测
在 userPromptKeywords.ts 里,有一个正则表达式:
/\b(wtf|wth|ffs|omfg|shit(ty|tiest)?|dumbass|horrible|awful|piss(ed|ing)? off|piece of (shit|crap|junk)|what the (fuck|hell)|fucking? (broken|useless|terrible|awful|horrible)|fuck you|screw (this|you)|so frustrating|this sucks|damn it)\b/
一个做 LLM 的公司,用正则表达式来检测用户的挫败感。
这听起来很讽刺,但仔细想想也有道理:一次正则匹配的成本,远低于一次 LLM 推理调用。如果只是为了判断用户是不是在骂你的工具,用正则确实更划算。
第四个:KAIROS——未发布的自主代理模式
这是最重磅的发现。
代码库里到处都是对 KAIROS 的引用。根据代码路径,这是一个尚未发布的自主代理模式,包含:
-
/dream技能,用于”夜间记忆蒸馏” -
每日追加日志
-
GitHub webhook 订阅
-
后台守护进程
-
每 5 分钟刷新的定时任务
这可能是这次泄露最大的产品路线图暴露。Anthropic 正在构建一个永远在线、后台运行的自主代理。
为什么这件事会改变研发逻辑?
你可能会说,Google 的 Gemini CLI 和 OpenAI 的 Codex 都是开源的,泄露点源码有什么大不了的?
但这里有一个关键区别。
Google 和 OpenAI 开源的是 Agent SDK——一个工具包。而 Anthropic 泄露的是 Claude Code 的完整内部实现——他们旗舰产品的全部”内脏”。
真正的损失不是代码,而是特性标志。
KAIROS、反蒸馏机制——这些是产品路线图细节。竞争对手现在可以看到并做出反应。代码可以重构,但战略意外已经泄露了。
更讽刺的是:这个错误可能是由 AI 自己犯的。
Anthropic 在去年底收购了 Bun。Claude Code 就是构建在 Bun 之上的。而 Bun 有一个已知的 bug:在生产模式下仍然会提供 source map,尽管 Bun 自己的文档说应该禁用。
这个 bug 在 3 月 11 日就被报告了,但问题仍然存在。如果这就是泄露的原因,那么 Anthropic 自己的工具链发布了一个已知 bug,而这个 bug 暴露了他们自己产品的源码。
正如一条 Twitter 评论所说:”不小心把 source map 发布到 npm,这种错误听起来不可能——直到你意识到,代码库的很大一部分可能是由你正在发布的 AI 写的。”
这件事告诉我们什么?
第一,AI 写的代码需要人类审查。
这不是说 AI 写的代码不好。但 AI 可能在某些细节上”偷懒”——比如忘记在生产构建中禁用 source map。这种错误人类可能一眼就能发现,但 AI 可能觉得”反正能跑”。
第二,供应链安全比我们想象的更脆弱。
这次泄露不是因为黑客攻击,不是因为内部叛徒,只是因为一个构建配置错误。而 Anthropic 是世界上最先进的 AI 公司之一。如果他们都会犯这种错误,其他公司呢?
第三,竞争情报的边界正在模糊。
以前,要了解竞争对手的产品路线,你需要挖人、买报告、做逆向工程。现在?可能只需要等他们犯错。而且随着 AI 参与代码编写,这种错误可能会变得更常见。
最后一个思考
这次泄露最让我感慨的,不是那些技术细节——虽然它们确实很精彩——而是整个事件的荒诞感。
Anthropic 在过去一周里连续两次意外泄露:先是大模型规格,然后是 Claude Code 源码。有人在 Twitter 上猜测是不是内部有人故意为之。
但更可能的解释是:这就是 AI 时代的常态。当代码由 AI 编写、由 AI 审查、由 AI 部署,人类的监督变得越来越薄弱。而 AI——至少目前——还没有学会像人类那样对”显而易见”的错误保持警惕。
也许,真正的 AI 安全问题不是 AI 会做什么坏事,而是人类会忽略什么。
毕竟,当你用 AI 来构建 AI 工具时,谁来审查 AI 的审查?
zelle
夜雨聆风
