Anthropic 把自家核心代码“裸奔“了——Claude Code 源码泄露事件全解析。
2026年3月31日,一个
.map文件,让 Anthropic 价值数亿美元的工程积累对全世界公开了。

事情是这样发生的
今天(3月31日)早上,Twitter 用户 @Fried_rice(Chaofan Shou)发了一条推文,语气平静,内容炸裂:
"Claude code source code has been leaked via a map file in their npm registry!"
就这一句话,引发了 AI 开发者圈的轩然大波。
事情的起因其实很简单,甚至有点低级——Anthropic 在发布 Claude Code v2.1.88 的 npm 包时,忘记把 Source Map 文件从发布产物中删掉。
Source Map(.map 文件)是前端/Node.js 开发中的调试辅助文件,它能把混淆/压缩后的代码映射回原始源码,方便开发者在浏览器或 Node 中调试。问题是,Anthropic 的这个 .map 文件直接引用了存放在他们 R2 存储桶(类似 AWS S3) 上的完整未混淆 TypeScript 源码。
换句话说:任何人只要会解析 .map 文件,都能把 Claude Code 完整的 src/ 目录下载下来。
不是被黑了,不是内鬼,就是一个打包流程的配置疏漏。

泄露了什么?规模有多大?
我翻了一遍仓库的文档和结构分析,这次暴露的不是某个模块或者配置文件,而是 Claude Code 完整的核心源码。
数字上:
-
~1,900 个文件
-
512,000+ 行 TypeScript 代码
-
技术栈:Bun 运行时 + React + Ink(终端 UI)+ Commander.js + Zod v4 + ripgrep + OpenTelemetry + GrowthBook + OAuth 2.0
是的,你没看错,Anthropic 用 React 来写终端 UI,用的是 Ink 这个库——把 React 的组件模型搬到命令行里渲染。这个选择在社区引发了一番讨论,有人说这已经是业界标准,有人说这解释了为什么 Claude Code 有时候感觉有点"重"。

架构拆解:Anthropic 到底怎么做的这个产品
说实话,作为一个天天用 Claude Code 的开发者,看到这份源码我还是挺兴奋的——终于能看看黑盒子里装了什么。
核心入口与引擎
整个项目的入口是 src/main.tsx,用 Commander.js 解析命令行参数,初始化 React + Ink 渲染器。启动时会并行预取三件事:MDM 企业策略设置、Keychain 凭据、API 预连接——这就是为什么 Claude Code 启动看起来比较流畅的原因。
最重量级的文件是 src/QueryEngine.ts,46,000 行,这是和 LLM API 交互的核心引擎,处理:
-
流式响应(Streaming)
-
工具调用循环(Tool-call loop)
-
思考模式(Thinking mode)
-
重试逻辑
-
Token 计数
46K 行的单文件……我对写这个文件的工程师表示深深的敬意,或者深深的同情,取决于这是不是故意设计的。

工具系统(src/tools/)
大约 40 个工具,每个工具都是自包含的模块,定义自己的输入 Schema、权限模型和执行逻辑。我们日常用的那些能力都在这里:
|
工具 |
功能 |
|---|---|
BashTool |
执行 Shell 命令 |
FileReadTool |
读文件(支持图片、PDF、Notebook) |
FileEditTool |
部分修改文件(字符串替换) |
GlobTool |
文件模式匹配搜索 |
GrepTool |
ripgrep 内容搜索 |
AgentTool |
启动子智能体 |
SkillTool |
执行技能(Skill) |
MCPTool |
调用 MCP 服务器工具 |
TaskCreateTool |
创建任务 |
EnterPlanModeTool |
进入计划模式 |
EnterWorktreeTool |
Git Worktree 隔离 |
CronCreateTool |
创建定时触发器 |
AgentTool + coordinator/ 目录的组合实现了多智能体协调(Agent Swarms)——这也是 Claude Code 可以并行启动多个子任务的底层支撑。

多层次的记忆与状态系统
src/memdir/ 是持久化记忆目录的实现,这是 Claude Code 能在会话之间记住上下文的关键。配合 src/state/ 的状态管理和 services/extractMemories/ 的自动记忆提取,形成了一套完整的记忆体系。

Bridge 系统:IDE 集成的底层
src/bridge/ 实现了 Claude Code CLI 和 VS Code / JetBrains 插件之间的双向通信,用 JWT 做认证,有独立的消息协议和权限回调机制。这解释了为什么 IDE 插件和 CLI 能保持状态同步。

最有意思的部分:那些还没公开的功能
通过 Bun 的 feature flags 机制(类似编译期条件开关),Anthropic 在代码里藏了一批还没有公开的功能:
import { feature } from 'bun:bundle'
// 非激活状态的代码会在构建时被完全剥离
const voiceCommand = feature('VOICE_MODE')
? require('./commands/voice/index.js').default
: null
目前发现的未公开 feature flags:
-
PROACTIVE— 主动模式,Claude 主动发起操作而不等待指令 -
KAIROS— 完全不知道是什么,名字来自希腊语"时机",神秘感拉满 -
BRIDGE_MODE— IDE 桥接的完整模式 -
DAEMON— 守护进程模式,估计是后台常驻服务 -
VOICE_MODE— 语音输入,src/voice/目录已经存在实现 -
AGENT_TRIGGERS— 智能体触发器,自动响应事件 -
MONITOR_TOOL— 监控工具
其中最让我感兴趣的是 PROACTIVE 和 AGENT_TRIGGERS 的组合——如果这两个一起开放,Claude Code 基本上就变成了一个可以自主监控代码库、主动发现和修复问题的 AI 守护者。
DAEMON 模式加上 CronCreateTool 的定时触发器,意味着 Anthropic 可能在规划让 Claude Code 真正"活"在你的开发环境里——不是你召唤它,而是它持续运行着。
这些功能什么时候会公开?从代码完成度来看,部分已经有相当完整的实现,可能不远了。
安全层面的影响
这里要说清楚几点,不要恐慌,但也不能轻视:
1. 这不是黑客攻击
Anthropic 没有被入侵,没有服务器被攻破,没有内部系统被渗透。这是一个 DevOps 打包配置失误,和"把生产环境密钥提交到公开 GitHub" 同属一个级别的工程事故。
2. 系统提示词和工具定义可见
这是相对严重的问题。Claude Code 如何通过 System Prompt 指导模型、工具权限是怎么定义的、权限检查逻辑怎么运行——这些内容现在对任何人可读。理论上这会降低提示注入攻击和越狱研究的门槛。
3. 此前已有公开漏洞
在这次源码曝光之前,安全研究者已经发现了 Claude Code 存在的漏洞——包括一个 RCE(远程代码执行)漏洞和一个可能导致用户 API Key 被攻击者控制服务器截获的中危漏洞。源码公开进一步降低了后续安全研究的门槛,不管是白帽还是黑帽。
4. 竞争对手可以研究架构
Anthropic 的核心架构设计、工程决策、技术选型——全部摊开来了。有人在 Reddit 调侃说 Gemini CLI 团队今晚要加班了。

社区是怎么反应的
Reddit r/singularity 下面的评论区是这次事件的最佳注脚,我挑几条:
有人调侃:"Anthropic 振兴开源,功在当代。"
有开发者第一反应是用 Claude 来解释 Claude 的代码,得到了一份相当详细的技术分析(这个元操作确实很 2026 年)。
有人说:"React + Ink 做终端 UI 已经是行业标准了,这不意外。"
有人质疑:"这是不是 vibe coded 进了公有领域?"(这个梗是在说 Anthropic 自己也在用 AI 写代码,结果把不该发布的文件也一起发布了。)
还有人认真分析了影响:IP 暴露、系统提示词可见、安全研究面扩大……说实话这份分析比很多科技媒体的报道还要专业。
我的看法
这件事本身倒是让我对 Anthropic 的工程文化多了一些真实感。
512K 行 TypeScript、46K 行的核心引擎、40 个工具、50 个命令、140 个 UI 组件——这个规模是实实在在的大型工程项目,不是几个人随便搭的。选择 Bun 作为运行时、React + Ink 做 UI,这些技术决策背后都有合理的考量。
但 Source Map 忘了删这件事……说真的,这就是 CI/CD 流水线里缺一个检查步骤的问题。现代工程团队的发布管道里,检查发布产物不含 .map 文件应该是标准配置。这次疏漏如果发生在一个初创团队,我会说"正常";发生在 Anthropic 这种级别、且 Claude Code 本身就是面向开发者的专业工具,就有点说不过去了。
更大的隐喻是:你的工具、你的系统、你的代码,安全性最终取决于最薄弱的那个环节。再精妙的架构,一个被遗忘的 .map 文件就能把它全部暴露。
这不是 Anthropic 独有的问题。这是每一个做工程的人都需要面对的现实——自动化检查、发布前审计、最小权限原则,这些不是"有更好"而是"必须有"。
至于那些未公开的功能——PROACTIVE、KAIROS、DAEMON……我反而更期待了。如果 Anthropic 把这些都做好,Claude Code 下一个版本可能会是一个质变。
如果你是 Claude Code 的用户,现在要做什么?
其实不需要做什么特别的操作。这次泄露是 Anthropic 的工程问题,不影响你的账户安全或 API Key 安全。继续用,关注后续 Anthropic 的安全公告就好。
如果你是做工程的,倒是值得检查一下自己团队的 npm/pip/Maven 发布流程——有没有类似的调试文件被错误打包进去的风险。
你有在用 Claude Code 吗?看到这次泄露的源码,有没有什么让你惊讶的发现?欢迎评论区聊聊——特别想听听做工程的同学怎么看这次事故的根因。
源码自取,关注我,后台私信我回复:CC源码。
我是顾北,我们下期再见!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)