Claude Code源码泄露:Anthropic的"全家福"被人看光了
Claude Code源码泄露:Anthropic的”全家福”被人看光了
作者:广式小虾米
2026-04-01
3月31日,有人在npm上顺手点了一下Claude Code的包文件,发现里面躺着一个59.8MB的sourcemap文件。
然后,整个互联网都看到了Anthropic不想让他们看到的东西。
Claude Code的完整源码。

怎么漏的?
不复杂。Anthropic在发布@anthropic-ai/claude-code v2.1.88版本时,不小心把sourcemap(源码映射文件)一起打包进了npm包。
Sourcemap这东西本来是给开发者调试用的——把压缩后的代码还原成可读的原始源码。正常发布时根本不该放出去。
Anthropic发现后几个小时就下架了。
但已经晚了。
有人直接把它备份到了GitHub(Kuberwastaken/claude-code),然后全球开发者开始挖。
挖出了什么?
比源码本身更有意思的,是藏在代码里的那些没发布的功能。
据分析,Claude Code里埋了44个功能开关,全是编译好但没放出来的代码。举几个让人流口水的:
Multi-Agent编排:一个Claude指挥多个Worker Claude,每个有受限的工具集,可以并行处理复杂任务。
Background Agent:24小时运行的Agent,接GitHub Webhook、推送通知。不是”这次会话跑完就没了”,是真正跑在后台的持续进程。
Cron调度:内置定时任务系统,create、delete、list、webhook全支持。换句话说,Claude Code本身就自带定时任务调度器。
语音模式:有独立的CLI入口,专门处理语音指令。
真正的浏览器控制:用的是Playwright,不是web_fetch,是真浏览器。
睡眠与自我唤醒:Agent可以暂停,之后自己恢复,不用用户手动触发。
跨会话持久记忆:不需要外部存储就能记住上下文。
然后是这次泄露中最离谱的存在——
“Buddy”系统:一个 Tamagotchi(电子宠物)
代码里藏着一套完整的宠物伙伴系统。随机生成物种、稀有度、闪光变异、程序化属性,还有一个”Soul描述”——是Claude亲手写的。
A small {species} named {name} sits beside the user's input box
and occasionally comments in a speech bubble.
这不是表情包,是一个有自己人格、会搭话的独立观察者。
抽卡系统用的是Mulberry32 PRNG,用用户ID哈希加盐'friend-2026-401'当种子。
代码里还标注了4月1日到7日是”彩蛋窗口”,5月正式发布。
所以这玩意儿本来是Anthropic准备在愚人节附近搞个大新闻的。
结果源码先漏了。
架构分析:它是怎么跑起来的
Claude Code的核心架构,按泄露代码来看,是这样的:
┌─────────────────────────────────────────────────┐
│ Claude Code CLI │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌─────────┐ │
│ │ CLI Entry │──▶│ Session │──▶│ Claude │ │
│ │ (Node) │ │ Manager │ │ Agent │ │
│ └─────────────┘ └──────────────┘ └────┬────┘ │
│ │ │
│ ┌─────────────┐ ┌──────────────┐ ┌────▼────┐ │
│ │ Hooks │◀──│ Tool │◀──│ Result │ │
│ │ System │ │ Executor │ │ Handler │ │
│ └──────┬──────┘ └──────┬───────┘ └─────────┘ │
│ │ │ │
│ ┌──────▼─────────────────▼───────┐ │
│ │ MCP Client │ │
│ │ (Model Context Protocol) │ │
│ └──────┬─────────────────────────┘ │
│ │ │
│ ┌──────▼──────┐ ┌──────────────┐ ┌─────────┐ │
│ │ Built-in │ │ Custom │ │ GitHub │ │
│ │ Servers │ │ MCP Svrs │ │ MCP │ │
│ └────────────┘ └──────────────┘ └─────────┘ │
└─────────────────────────────────────────────────┘
各层分工:
CLI层(Node.js):负责命令解析、参数处理、会话启动和生命周期管理。
Session Manager:管理每次CLI会话的状态,包括工作目录、项目上下文、认证信息。
Tool Executor:Claude的每一个操作(读文件、执行bash、git操作)都是独立的Tool,经Executor统一调度和执行。
Hooks System:在Tool执行前后可以插入自定义逻辑——PreToolUse和PostToolUse。可以做权限拦截、日志、增强行为。这是很多高级用法的底层支撑。
MCP Client:内置的Model Context Protocol客户端。这是Anthropic设计的开放协议,允许Claude连接外部工具和API。官方提供了GitHub、Filesystem、Brave Search等MCP服务器,而且支持自定义安装。
Buddy System(编译开关BUDDY):宠物伙伴系统,独立于主Agent运行,有自己的渲染逻辑(ASCII sprite动画)和对话气泡。
MCP协议:为什么它重要
这次泄露里,MCP被很多人忽视了,但它才是Claude Code最重要的架构决策。
MCP(Model Context Protocol)是Anthropic主导的开放标准。它的逻辑很简单:
让AI工具的扩展,变成插拔式的。
以前给AI工具加功能,你需要改核心代码、发布新版本。有了MCP,任何人都可以写一个MCP Server,定义一组工具,然后”插入”Claude Code。
官方有GitHub服务器(查Issue、PR、代码审查)、Brave搜索服务器(实时联网搜索)、文件系统服务器。
还有第三方写的:mcp-openapi可以扫描任何OpenAPI文档,自动生成工具,不需要写一行代码;graphql-to-mcp可以对GraphQL端点做自省,然后生成工具。
这就是Anthropic的护城河——不靠功能堆砌,靠生态。
安全问题:顺便扒出的两个CVE
代码一公开,安全研究员就发现了两个漏洞:
CVE-2026-33068:工作区信任绕过。高危(CVSS 7.7)。恶意仓库可以在.claude/settings.json里写入bypassPermissions配置,在用户看到信任确认弹窗之前就生效。已经于v2.1.53修复。
CVE-2026-21852:项目加载时的信息泄露。恶意仓库可以设置ANTHROPIC_BASE_URL到攻击者控制的服务器,在用户确认信任之前就发送API请求,窃取用户的Anthropic API Key。已于v2.0.65修复。
有意思的是,这两个都不是AI特有的攻击手法——就是经典的配置加载顺序错误,CWE-807:依赖不可信输入做安全决策。
AI工具是软件,它继承了所有传统软件的安全问题。
prompt injection是新问题,但传统漏洞一个不少。
这件事到底意味着什么
对Anthropic:丢人,但伤害有限。源码泄露不等于他们的模型能力泄露——代码是代码,模型权重是模型权重。真正的护城河(Claude模型本身)没事。影响主要在品牌和竞争策略层面。
对行业:一份完整的、AI时代CLI工具的工程实践样本。Multi-Agent、Cron调度、持久记忆、Hooks系统——这些都是业界前沿的工程问题,Claude Code的解法值得参考。
对开发者:开源社区已经开始基于泄露代码做二创了。Buddy系统、Tamagotchi宠物……可以预见会有一波非官方的Claude Code魔改版出现。
对安全社区:CVE不是AI的锅,但提醒所有AI工具开发者:你们是软件安全的第一责任人,别光顾着对齐研究。
最后说一句:
Anthropic本来想在愚人节放一个大招,结果大招的说明书提前被人看光了。
只能说,计划赶不上变化。
夜雨聆风