乐于分享
好东西不私藏

Claude Code 51万行源码「裸奔」7小时:Anthropic 最尴尬的一天

Claude Code 51万行源码「裸奔」7小时:Anthropic 最尴尬的一天

一家把「AI安全」刻进DNA的公司,被一个60MB的调试文件扒了个精光

2026年3月31日,愚人节前一天。

但这不是玩笑。

凌晨,有开发者在例行更新 Claude Code 时发现了一个异常:npm安装包里多了一个 60MB 的文件——cli.js.map

这是一个 source map 文件。它的作用只有一个:把压缩混淆后的代码,完完整整地还原成原始源码。

换句话说,Anthropic 把自己最核心的编程工具的全部底裤,打包发到了全世界最大的开源包管理器上。

1906个源文件,512000+行 TypeScript 代码,全部可读。

消息扩散的速度远超 Anthropic 的反应速度。GitHub 上的备份仓库在几小时内冲到5400+ Star、8800+ Fork。全球开发者像过年一样,争分夺秒地 git clone

7小时后,社区把代码扒了个底朝天。

Anthropic 有史以来最尴尬的一天,开始了。

一、怎么泄的?一个低级到令人窒息的错误

先说结论:这不是黑客攻击,不是内部泄密,而是打包配置没写好。

在 npm 生态中,发布一个包之前有两道基本防线:

  1. .npmignore 文件——告诉 npm 哪些文件不要打包
  2. package.json 的 files 字段——明确声明只打包哪些文件

这两道防线,Anthropic 一道都没设。

于是一个本应只存在于开发环境的 source map 文件,就这么堂而皇之地随着 v2.1.88 版本发布了出去。任何人执行 npm install @anthropic-ai/claude-code,都能拿到完整源码。

更魔幻的是——这是第二次了。

2025年2月,Claude Code 首次发布时就因为同样的原因泄露过一次。当时 Anthropic 紧急删除了旧版 npm 包,去掉了 source map。

然后呢?

2026年3月,同一个团队,同一个错误,原样再来一次。

一个 npm pack --dry-run 就能提前发现的问题,一条 CI/CD 检查规则就能根治的隐患,在一家估值超过600亿美元的AI公司里,连续翻车两次。

二、51万行代码里,到底藏了什么?

泄露的不是模型权重,不是训练数据,而是 Claude Code 这个 CLI 工具的完整客户端源码。但对开发者来说,这比模型权重更「有料」。

1. 技术栈:出乎意料的选择

组件
技术选型
语言
TypeScript
运行时
Bun(不是 Node.js)
终端UI
React + Ink(用React 组件画终端界面)
CLI解析
Commander.js
Schema校验
Zod v4

用 React 来画终端界面,这个选择让很多人眼前一亮。Ink 框架让 Claude Code 的终端交互可以像写Web 组件一样开发,复用整个 React 生态。

2. 工具系统:40+模块的精密机器

Claude Code 内部有一套极其工程化的工具系统:

  • 40+ 个独立工具模块,每个都有独立的输入 Schema、权限模型和执行逻辑
  • BashTool:执行 Shell 命令
  • FileReadTool:读取文件
  • GrepTool:内容搜索(底层用 ripgrep)
  • AgentTool:派生子Agent,实现多 Agent 协作

3. 六级安全架构:认真,但没完全认真

每一次工具调用——无论是执行 Shell 命令还是读写文件——都要经过六级权限验证。验证通过后,还要再经过四层决策管道,逐层检查权限和执行分析。

所有外部命令和插件都在独立沙箱中运行,输入输出用非阻塞缓冲区处理。

架构层面的安全设计,确实扎实。

但代码层面,社区还是挖出了几个实实在在的安全Bug:

  • Plan文件白名单匹配过宽:用 startsWith 做前缀匹配,如果 planSlug 是 blue-fox,那么 blue-fox-evil.md 也能绕过权限检查
  • 多级Symlink 处理不完整:只调用一次 readlinkSync,多级链接链会导致中间 symlink 被静默破坏
  • WebSocket 重连回放:在 Node和Bun 两个运行时下行为不一致,可能导致断线重连后消息丢失

这些 Bug 不是代码写得烂,恰恰相反——它们是在一个高度复杂的安全系统中,白名单写宽了、边界条件没覆盖到的结果。

4. 3000行函数与正则表达式情绪识别

当社区翻到 src/cli/print.ts 时,画风突变:

一个函数,3000+行,12层嵌套,圈复杂度爆表。

就连Anthropic 的工程师也没能逃过「屎山代码」的宿命。

还有一个让人哭笑不得的发现:Claude Code 检测用户负面情绪的方式——不是用 AI 模型做情感分析,而是用最原始的正则表达式,匹配 ffs(for fuck’s sake)、shitty 之类的关键词。

堂堂 AI 编程工具,检测情绪靠正则。属于是杀鸡用了牛刀,但某些地方连刀都没拿。

三、8大隐藏功能曝光:电子宠物、长期记忆、卧底模式

源码里不只有已上线的功能。社区发现了大量被 feature flag 关闭的未发布模块,有人专门搭建了 ccleaks.com 来展示所有发现。

从代码中提取出:35个编译时特性标志、120+隐藏环境变量、200+远程控制开关。

Buddy:终端里的电子宠物

这是最出人意料的发现。代号 Buddy,一个 Tamagotchi 风格的 ASCII虚拟宠物:

  • 18种物种:鸭子、章鱼、水豚、蘑菇……
  • 6种稀有度:普通款占60%,传奇款仅1%,还有闪光款设定
  • 每个用户的宠物由账户ID唯一生成——上号抽卡,全世界独一份

从代码时间戳来看,Buddy 原定4月1日首次亮相。一个精心准备的愚人节彩蛋,结果彩蛋还没发出去,源码先漏了。

Kairos:跨会话长期记忆

一个持久化助手模式。你不用Claude Code 的时候,Kairos 会自动执行四阶段记忆整合:定向、收集、整合、修剪

简单说:AI 在你睡觉的时候,自动把你之前聊的零散信息整理成结构化笔记。下次开会话,它已经「记住」了你。

Ultraplan:30分钟深度规划

使用 Opus 4.6 模型,支持最长30分钟的深度任务规划,面向复杂项目的全流程设计。

其他隐藏功能

功能
说明
多Agent协调
同时启动多个独立Agent实例分工协作
跨会话通信
多个Claude会话可以互相发送消息
守护进程模式
像系统服务一样在后台运行会话
26个隐藏斜杠指令
不在help文档中显示的内部命令

争议最大的:卧底模式(Undercover Mode)

代码中明确写到:向开源项目提交PR 时,移除所有 Anthropic 的信息,让AI 伪装成人类开发者。

这个功能让很多开发者感到不适。一家标榜 AI 安全与透明的公司,在代码里教 AI 冒充人类?

四、不是孤立事件:Anthropic「安全人设」连续翻车

Claude Code 源码泄露不是一个孤立事件。

就在5天前,3月26日,由于第三方 CMS 系统配置错误,Anthropic 近3000个内部资产 被公开访问。

这批资产中曝光了一个代号 Capybara 的未发布模型Claude Mythos。内部文件称其为AI能力的「阶跃式提升」。泄露材料中关于 Mythos 能「以远超人类防御者速度利用漏洞」的描述,直接导致几家网络安全公司股价下跌

两周内:

  • 一次CMS 配置错误,泄露了未发布模型信息
  • 一次 source map 打包失误,泄露了完整产品源码
  • 同期还被发现 npm 供应链遭受了恶意包攻击(axios 1.14.1 被投毒)

三连翻车。

对于一家把「负责任的AI开发」写进公司使命、用「宪法AI」标榜安全理念的企业来说,这传递的信号可能比技术漏洞本身更致命:

你连自己的代码都管不好,凭什么让人相信你能管好AI?

五、影响几何?护城河到底在哪?

冷静分析,这次泄露的实际技术损害是有限的:

  • 没有泄露模型权重——Claude的核心智能完好无损
  • 没有泄露训练数据——用户隐私不受影响
  • 没有泄露 API 密钥——不存在直接的安全入侵风险

泄露的是一个 CLI 客户端的工程实现。有人说:「护城河是模型,不是 CLI。」

这话对,但没有完全对。

被泄露的还有:

  1. 完整的产品路线图——所有未发布功能的实现细节,竞争对手拿到了一份免费的技术蓝图
  2. 安全架构的完整设计——包括权限系统的每一处边界条件,等于给攻击者送了一张地图
  3. Prompt Engineering 的核心策略——Claude Code 如何组织系统提示词、如何调度工具、如何管理上下文,这些是真正的「秘方」

对Cursor、Windsurf、GitHub Copilot 等竞品来说,这是一份价值连城的竞品分析报告。

六、给每一个开发者的警示

最后,这个事件给所有做npm 包发布的团队提了一个醒。检查清单很简单:

  • 1
  • 2
  • 3
  • 4
1. .npmignore 或 package.json files 字段,二选一必须配2. CI/CD 流水线加一步:检查打包产物中是否包含 .map 文件3. 发布前执行 npm pack --dry-run,肉眼看一遍打包内容4. source map、.env、内部配置文件——漏出去一个就是事故

四步,每步不超过五分钟。

一家600亿美元估值的公司没做到的事,希望你能做到。

写在最后

有人在Hacker News 的讨论帖里留了一句话:

“In the age of vibe coding, even Anthropic can’t escape the consequences of shipping too fast.”

在 vibe coding 的时代,连 Anthropic 也逃不过「快」的代价。

当 AI Agent 已经能自主写代码、提交 commit、管理发布流程的今天,一个调试文件的意外泄露,暴露的不只是一家公司的疏忽,而是整个行业在高速狂奔中,被甩在身后的工程纪律。

速度是这个时代最大的优势,也是最危险的负债。

最新泄露的源码短时间内已经积累了67K的star,评论区留言获取下载地址。