Claude Code 52 万行源码裸奔了,全行业开卷考试开始
今天Claude Code 的52 万行源码裸奔了。512,000 行 TypeScript,1,906 个文件,全部曝光。
Claude Code 用 Bun 打包。Bun 本身不会默认生成 source map,但 Anthropic 的构建配置里开启了——大概是为了开发调试。发布到 npm 的时候没把它排除掉。发布前检查包内容、排除调试文件,这属于前端基本功,大概排在“别把 API Key 提交到 GitHub”后面一位。
Anthropic 没排除。npm 包里多了一个 60MB 的 .map 文件,本身就是个 JSON,里面的 sourcesContent 字段直接包含了所有原始 TypeScript 源文件的完整内容。写个几行的脚本解析一下,1,906 个源文件就全部还原出来了。
发现者是区块链安全公司 Fuzzland 的实习研究员 Chaofan Shou,他在 X 上发了条推,然后全世界都知道了。
源码被人搬到了 GitHub 上。最大的镜像仓库 instructkr/claude-code,11 小时内的数据:
-
⭐ 10,340 Stars
-
🍴 15,911 Forks
-
📋 525 Open Issues
Fork 比 Star 多了五千多。
正常开源项目的 Star/Fork 比是 3:1 到 10:1,大部分人点个收藏就走了。这个仓库反过来——Fork 是 Star 的 1.5 倍。大家不是来学习的,是来囤货的。都知道 DMCA 随时会到,先 Fork 到自己名下再说。
525 个 Issues 也挺有意思,一个只读归档仓库被当论坛用了,里面全是各种源码分析和发现分享。
半天破万星,大概是 GitHub 上增长最快的“非自愿开源”项目。
52 万行代码摊开,社区已经挖出来不少东西:
Undercover Mode:帮你藏住 AI 写代码的痕迹
代码里有个叫 Undercover Mode 的功能。当你用 Claude Code 给开源项目提交代码时,它会自动隐藏 AI 痕迹——不在 git commit 里留下内部代号,不让别人看出这段代码是 AI 写的。说白了就是帮用户在开源社区里“装人类”。开源社区一直在争论 AI 生成代码该不该标注,Anthropic 的选择是——做个功能帮你不标注。
你骂 Claude 的时候,它在记
代码里有个正则表达式,专门匹配用户的负面情绪输入:
“fuck you|screw (this|you)|so frustrating|this sucks|damn it`
命中了就触发一个 tengu_input_prompt 事件,标记 is_negative: true。Anthropic 在统计用户对 AI 发火的频率。同样被追踪的还有“continue”和“keep going”——用来量化模型中途断掉的问题有多普遍。产品埋点本身是行业常规操作,但骂人检测这个颗粒度还是挺少见的。
内部版 Claude ≠ 外部版 Claude
源码确认了一件很多人猜过但没有实锤的事:Anthropic 内部员工用的 Claude 和外部用户用的不是同一个配置。据社区对源码的分析,内部版设定是“更有主见、更深入、更果断”,外部版是“简洁直接”。从产品角度说得通——内部用户做开发测试需要更详尽的输出。但写在代码里被全世界看到,还是有点微妙。你觉得 Claude 有时候回答差点意思,可能真不是模型的问题。
Buddy:一个正经的电子宠物系统
不是彩蛋,是一个完整的 Tamagotchi 风格伴侣系统。18 个物种(鸭子、鹅、水豚、龙),分 Common 到 Legendary 五个稀有度等级,还有 1% 概率出闪光变体。每只宠物由用户 ID 哈希确定物种,Claude 会在宠物“孵化”时亲自写一段“灵魂描述”。宠物用 ASCII 字符画渲染,有待机动画和互动反应,会蹲在你的终端输入框旁边。代码里标注的上线窗口是 2026 年 5 月。
Auto-Dream: Claude 会做梦
Claude 在你不用它的时候会自动整理和巩固记忆,内部就叫“做梦”。触发条件是三重门:距离上次做梦超过 24 小时、期间至少有 5 次会话、并且拿到了并发锁。做梦时 Claude 会回顾近期的对话日志,把值得长期记住的信息写入记忆文件,删除过时内容,保持记忆文件不超过 200 行。整个过程用的是只读权限——它能看你的项目但不能改任何东西。系统提示词原文写的是:“You are performing a dream.”
Penguin Mode(企鹅模式)
一个快速响应模式,API 端点直接叫 penguin,配置项叫 penguinModeOrgEnabled,关闭开关叫 tengu_penguins_off,报错事件叫 tengu_org_penguin_mode_fetch_failed。从上到下全是企鹅。至于为什么叫企鹅,源码里没解释。
内部代号全是动物
Tengu(天狗)是 Claude Code 项目本身的代号,出现了几百次。Capybara(水豚)是未发布的新模型 Claude Mythos。Fennec(耳廓狐)也在代码里反复出现。整个代码库弥漫着一种“动物园管理系统”的气质。
泄露的产品路线图
这次真正有信息量的是一堆未发布功能。这些功能都通过编译期 feature flag 控制,不一定都会上线,但至少能看出 Anthropic 在探索什么方向:
KAIROS——始终在线的 Claude 常驻模式,后台持续运行的 AI Agent。不用你唤醒,它自己盯着。
ULTRAPLAN——把复杂任务扔到远程云容器,用 Opus 4.6 跑最长 30 分钟的深度规划,你在浏览器里审批结果。
Agent Swarms——多 Agent 团队协调。创建一组 Agent,在指挥中心统一调度,各自分工干活。
Computer Use(代号 Chicago)——完整的计算机操作能力,截屏、点击、键盘输入,限 Max/Pro 用户。
加上前面提到的 Buddy 和 Auto-Dream(这两个也在 feature flag 后面),这些功能放一起看,Anthropic 做的不是编程助手,更像是一个有记忆、能组队、会做梦、还养宠物的 Agent 操作系统。
全行业的开卷考试
这次泄露对竞品来说是一份现成的参考资料(当然,直接使用泄露代码有法律风险,但架构思路和设计方向是挡不住的)。
Claude Code 的完整架构——40 个带权限控制的工具怎么设计的、46,000 行查询引擎怎么处理 LLM 调用的、多 Agent 调度怎么做的、VS Code 和 JetBrains 的插件通信层怎么写的、上下文压缩用了什么策略——全都是明文 TypeScript,想看多久看多久。
OpenAI 的 Codex CLI 团队、Google 的 Gemini Code Assist、Cursor、Windsurf,包括所有在做 AI 编程工具的创业公司,今天大概都在加班读代码。以前做竞品分析靠猜,现在原始源码直接摆在面前。
15,000 多个 Fork 里面,肯定会有人把 Claude Code 的架构拆出来接上开源模型。Anthropic 可能很快就会看到一批“基于自家架构但跑 Llama/Qwen”的开源替代品。
Anthropic 大概没想过自己会以这种方式完成一次全行业技术输出。
这已经是 Anthropic 5 天内第二次因为配置没弄好导致的泄露了。
5 天前,3 月 26 日,一个 CMS 配置失误把近 3,000 份未发布内部资料暴露了出来,包括代号“Capybara”的新模型 Claude Mythos 的详细信息。
两次都不是什么高级攻击,就是配置没弄对。
对一家产品需要用户授权文件系统和终端访问权限的公司来说,连续的低级运维失误,确实会让人想多问一句。
而且泄露当天,npm 生态里周下载量 8300 万的 Axios 也被供应链攻击了。同一天,两件事。整个 JavaScript 生态的安全感大概到了历史低点。
泄露的只是 CLI 客户端代码,不涉及模型权重和用户数据,普通用户不用恐慌。但 512,000 行源码摊在阳光下,内部架构、安全机制、数据埋点、产品路线图全部透明,这个影响是长期的。
Anthropic 用 512,000 行代码做了一个世界级的 AI 编程工具,然后倒在了 .npmignore 上。
下次发 npm 包之前跑一下 npm pack --dry-run 吧。真的。
夜雨聆风