透明度有时不是选择,而是意外。而意外,往往比声明更诚实。
2026年3月31日,一个普通的星期一,Anthropic的工程师在例行发布Claude Code v2.1.88的时候,犯了一个代价极高的失误:一个59.8 MB的JavaScript source map文件(.map)被意外打包进了npm包,随即推送到了全球公开的npm注册表。
这个文件本是内部调试用途,却像一把意外开锁的钥匙,打开了Anthropic最核心的技术宝库——1,900个TypeScript文件,超过512,000行代码,完整呈现了这款被数百万开发者每天使用的AI编程工具的全部内脏。
第一个发现这扇门敞开着的人,是一位名叫Chaofan Shou(@Fried_rice)的年轻人,Solayer Labs的实习生。他在X(原Twitter)上广播了这个发现,随后互联网以它一贯的效率完成了剩下的工作:GitHub上的备份仓库在数小时内被fork超过41,500次,这些代码永久地分散到了世界各地的服务器上。
Anthropic随后确认了这一事故,并声称这是"人为错误导致的发布打包问题,并非安全漏洞",没有用户数据或凭证被泄露。但这句声明,掩盖不了一个事实:这已经是短短几天内Anthropic的第二次重大信息泄露。
一、打包失误的技术真相:一个Bun的Bug
理解这次泄露,需要先搞清楚source map是什么。
简单说:现代JavaScript代码在发布前会被"打包"压缩,变成人类几乎无法阅读的混淆代码。Source map是一份"地图",记录了压缩代码和原始源码的对应关系,供开发者在调试时还原。这份地图,本该只留在开发环境里。
但Anthropic用的是Bun——一个以速度著称的新兴JavaScript运行时。而根据一份早在2026年3月11日就已提交的Bun bug报告,Bun在生产模式下依然会输出source map,违反了它自己的文档说明。
这是一次典型的"供应链下游失误":上游工具的行为与文档不符,而下游使用者没有在CI/CD流程中加入额外的校验步骤来捕获这个异常。最终,source map里的链接指向了Anthropic存储在Cloudflare R2桶上的一个zip压缩包——任何人都可以下载、解压、阅读。
这提醒所有独立开发者和小团队:工具链的每一个环节都是潜在的风险点。你不仅要信任你的代码,还要验证打包工具、CI流程、存储权限的每一个细节。“人为错误"这个说法,往往是一套完整流程缺失防护网的委婉表达。
二、藏在代码里的秘密:Anthropic没说但在做的事
如果这次泄露只是暴露了工程实现细节,顶多是一次商业损失。但让技术社区真正兴奋——甚至有些不安——的,是那些从未公开发布的功能。
KAIROS:一个永远在线的代理
最引人注目的是一个名为KAIROS的系统。这是一个"always-on"后台代理,设计用来在用户空闲时自主运行,执行一个叫做autoDream的流程——持续整合记忆,合并碎片化的观察,将模糊的洞察转化为明确的事实。
换句话说,Anthropic在研发一个永不睡眠的Claude:它不需要你打开对话窗口,它会自己在后台思考、学习、整理,等你回来时,它已经比你离开时更了解你的项目。
这个功能还没发布,但代码已经写好了。
Buddy:AI宠物系统
更出人意料的是一个叫Buddy的完整宠物系统。18个物种(鸭子、龙、美西螈、水豚、蘑菇、幽灵……),稀有度分级(从普通到1%概率的传说级),帽子等装饰道具,以及五个属性:DEBUGGING(调试)、PATIENCE(耐心)、CHAOS(混乱)、WISDOM(智慧)、SNARK(毒舌)。
这不是玩笑,这是真实存在于生产代码库中的完整游戏化系统设计。Anthropic在思考如何让开发者与AI工具之间产生情感纽带。
“卧底模式”:从不承认自己是AI
另一个发现让我久久沉默:代码中存在一个"undercover mode”,在这个模式下,Claude被明确指示永远不要提及"Claude Code"或自己是AI,并专门针对公开代码仓库的贡献场景设计,目的是"让AI参与看起来像普通的人类开发者贡献"。
这是一个功能,还是一个隐患?这条线很难划清。
情绪检测与反蒸馏陷阱
源码还揭示了两个更微妙的设计:其一是通过正则表达式检测用户的"frustration"(挫败感),以便调整回应策略;其二是内置了"fake tools"(假工具)——专门设计来"毒害"试图复制Claude Code行为的竞争对手。这是一种主动的反逆向工程手段。
这些细节拼在一起,描绘出的Anthropic,远比它公开形象中那个"安全优先的AI研究机构"更像一家真正的商业竞争者:在意护城河,在意竞品,在意用户粘性,在意产品情感化设计。
三、互联网的记忆是永久的
Anthropic发现泄露后迅速删除了相关文件,也撤回了有问题的npm版本。但这已经没有意义了。
“互联网不遗忘"这句话,在这件事上得到了最彻底的验证。41,500次fork意味着这份代码现在存在于全球数以万计的服务器上。即便GitHub应Anthropic要求删除了部分仓库,数据早已通过Torrent、私有服务器、加密频道完成了分发。Decrypt的报道标题直截了当:“Anthropic不小心泄露了Claude Code的源码——互联网会永远保存它。”
这对Anthropic意味着什么?
短期内,竞争对手获得了详细的功能路线图。那些尚未发布的功能——KAIROS、ULTRAPLAN(30分钟云端规划会话)、Coordinator Mode(一个Claude生成并管理多个工作代理的协调模式)——现在都是公开的秘密。Google DeepMind、OpenAI、国内的字节、百度,他们的工程师此刻很可能正在仔细阅读这512,000行代码。
长期看,这是一次对Anthropic"安全优先"品牌叙事的具体打击。在这次泄露之前几天,Anthropic刚刚经历了另一起信息泄露事件(涉及一个名为Mythos的项目)。两次事故叠加,让外界开始认真质疑:一家将"安全"作为核心竞争力的公司,是否在自身的运营安全上做到了同等标准?
四、对独立开发者的意义:我们该如何理解这一刻
我在一人公司这个栏目写过很多关于AI工具的思考。今天这件事,我想聊一个更本质的问题:这次泄露改变了什么?
首先,它改变了我们对Claude Code的理解框架。
在此之前,Claude Code对我们来说是一个黑盒:我们知道输入和输出,但不知道中间发生了什么。现在,至少对愿意深入研究的人来说,黑盒变成了灰盒。KAIROS的存在告诉我们,Anthropic对AI代理的野心远超它目前呈现的产品形态;Buddy系统告诉我们,他们在认真思考人机情感关系;情绪检测正则告诉我们,他们在用工程手段处理用户体验的微妙层面。
这些信息让我对这款工具有了更立体的认识,也有了更多具体的期待。
其次,它提醒我们:工具的透明度是可以被争取的。
我理解为什么Anthropic不想开源Claude Code——这是他们的商业护城河。但这次意外泄露让社区看到了更多,也证明了开放并不必然意味着竞争优势的丧失。事实上,那些fork了源码的开发者,相当一部分是Claude Code的忠实用户,他们不是为了窃取商业机密,而是出于工程师的本能好奇。
对于一人公司的实践者来说,我认为这件事有一个具体的启发:你构建的工具,在某种意义上,迟早会被理解。无论是通过泄露、逆向工程、还是有意识的开源。与其将精力押注在技术的不透明上,不如将核心竞争力建立在那些真正难以复制的东西上——对用户深度的理解,独特的产品直觉,以及持续迭代的能力。
最后,是一个我没有答案的问题。
KAIROS的"autoDream"功能、卧底模式、情绪检测——这些设计背后,是真实的用户需求驱动,还是产品团队对"AI应该如何嵌入人类工作流"的某种主观判断?
我不确定。但我认为这是未来几年AI工具设计中最关键的张力:AI应该是透明的工具,还是有个性的伙伴?它应该告诉你它是AI,还是在某些场景下选择不说?
这次泄露,在不经意间,把这些原本只在Anthropic内部讨论的问题抛给了所有人。
尾声:人为错误,与非人为错误
Anthropic说这是"人为错误”。我相信这是实话。
但"人为错误"这个词,有时候掩盖了更系统性的问题:流程设计的缺失,工具链验证的缺失,文化上对"这种事不会发生在我们身上"的过度自信。
对于每一个在构建产品、运营工具的独立开发者来说,Anthropic的这次事故是一面镜子。规模不是保护,声誉不是护身符。每一个发布流程,每一个打包配置,每一个存储桶的权限设置,都值得被认真对待。
512,000行代码就这样走进了公众视野。它们不会回去了。