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.ts46,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 独有的问题。这是每一个做工程的人都需要面对的现实——自动化检查、发布前审计、最小权限原则,这些不是"有更好"而是"必须有"。

至于那些未公开的功能——PROACTIVEKAIROSDAEMON……我反而更期待了。如果 Anthropic 把这些都做好,Claude Code 下一个版本可能会是一个质变。


如果你是 Claude Code 的用户,现在要做什么?

其实不需要做什么特别的操作。这次泄露是 Anthropic 的工程问题,不影响你的账户安全或 API Key 安全。继续用,关注后续 Anthropic 的安全公告就好。

如果你是做工程的,倒是值得检查一下自己团队的 npm/pip/Maven 发布流程——有没有类似的调试文件被错误打包进去的风险。

你有在用 Claude Code 吗?看到这次泄露的源码,有没有什么让你惊讶的发现?欢迎评论区聊聊——特别想听听做工程的同学怎么看这次事故的根因。


   源码自取,关注我,后台私信我回复:CC源码

   我是顾北,我们下期再见!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐