全球顶尖 AI 公司 Anthropic 今天因构建配置失误,导致其旗舰产品 Claude Code 的完整源码意外泄露。在发布到 npm 的官方安装包中,一个高达 57MB 的 Source Map 文件(cli.js.map)未做过滤直接被打包。该文件明文包含了 4756 个源文件的完整代码,其中涉及 1906 个核心业务逻辑文件。这意味着 Claude Code 的系统提示词(System Prompts)、工具调用逻辑、架构设计乃至内部注释,对任何下载者而言都已完全透明。尽管 Anthropic 已紧急修复并发起下架投诉,但早期版本的源码已在社区广泛流传。这一事件为所有软件开发者敲响了关于生产环境配置的警钟。
- GitHub:https://github.com/instructkr/claude-code (网友备份)
- 网盘下载:https://pan.quark.cn/s/a8a525271ffd 提取码:Frtm

事件回顾:不是黑客攻击,是配置失误
近日,开发者在分析 Anthropic 发布的 @anthropic-ai/claude-code npm 包时,发现了一个严重的配置错误:包内包含一个名为 cli.js.map 的文件,体积高达 57MB。
Source Map 文件通常仅用于开发环境的调试,帮助将压缩后的代码映射回源代码。然而,Anthropic 的构建脚本在生成该文件时,错误地开启了 sourcesContent 选项,并将该文件直接打包进了生产环境的发布物中,未通过 .npmignore 或 files 字段进行排除。
泄露的具体内容
这个 JSON 格式的 .map 文件中包含了两个关键数组:
sources:列出了所有源文件的路径。sourcesContent:直接存储了这些文件的完整原始代码内容。
提取过程无需反编译或逆向工程,只需读取 JSON 数组即可还原出 4756 个文件。其中:
- 1906 个文件是 Claude Code 的核心业务逻辑(TypeScript/TSX)。
- 2850 个文件是其依赖的
node_modules源码。
暴露的关键信息
还原后的代码让外界得以窥见 Anthropic 的工程细节:
- 技术栈:确认 CLI 界面基于 React + Ink 构建,核心是一个 REPL 循环。
- 核心逻辑:最敏感的 System Prompts(系统提示词)、Tool Definitions(工具定义)、安全过滤逻辑以及API 交互流程全部明文可见。
- 架构设计:从状态管理到插件系统设计,整个应用的实现细节一览无余。
官方应对与现状
意识到问题后,Anthropic 迅速采取了以下措施:
- 修复发布:立即发布了新版本 npm 包,移除了 Source Map 文件。
- 法律维权:向 GitHub 发起 DMCA 投诉,要求下架托管了提取后源码的公开仓库。
- 传播现状:尽管官方进行了下架处理,但在官方行动之前,已有大量网友将源码克隆并上传至多个镜像站点。目前,源码已在技术社区中广泛流传,难以彻底清除。
影响分析:Anthropic 会因此开源吗?
面对源码泄露,社区中有声音猜测 Anthropic 是否会顺势开源。分析认为,这种可能性极低。
1. 核心资产未完全流失
泄露的代码虽然包含了 System Prompts,但这只是“静态配方”。Anthropic 真正的核心竞争力在于:
- 动态调整策略:服务端根据用户行为实时调整 Prompt 的机制。
- RLHF 微调数据:训练模型理解指令背后的海量人类反馈数据。
- 评估框架:决定输出质量的内部评估体系。
这些“软性资产”并未随代码泄露。
2. 商业模式与安全考量
- 去中心化风险:正式开源可能导致第三方构建绕过官方计费系统或安全审计的客户端。
- 攻击面扩大:开源将使全球黑客能系统性地扫描代码寻找漏洞,极大增加防御成本。
- 品牌责任:作为商业公司,Anthropic 需对产品安全性负责。主动开源可能被解读为防御失败后的妥协,损害品牌形象。
历史经验表明,此类泄露事件后,公司通常会选择修补漏洞并加强防护,而非转向开源。
后续影响与技术调整
此次事件将促使 Anthropic 在技术架构上做出调整:
1. 加速“瘦客户端”战略
未来的 Claude Code 可能会将核心决策树、敏感 Prompt 组装、复杂权限判断等逻辑从本地 CLI迁移至云端服务端。客户端将仅作为展示终端,即使再次被反编译,也无法获取核心逻辑。
2. 强化构建流程审计
Anthropic 必将在 CI/CD 流水线中引入严格检查:
- 禁止在生产构建中包含含源码内容的 Source Map。
- 自动扫描发布包大小,拦截异常文件。
- 实施“零信任”构建原则,确保只有最小必要文件被发布。
给开发者的警示
Anthropic 的失误给所有发布 npm 包或其他软件库的开发者提出了明确要求:
- 审查
package.json:
明确使用files字段白名单机制,只列出需要发布的文件(如dist/,README.md)。"files": [ "dist", "README.md" ] - 配置
.npmignore:
显式排除危险文件:**/*.map src/ tests/ .env - 检查构建工具配置:
确保生产环境构建关闭了 Source Map,或配置为生成不包含源码内容的映射文件(如 Webpack/Vite 中设置devtool: false)。 - 发布前自动化扫描:
在 CI/CD 流程中加入脚本,自动检测即将发布的包中是否包含.map文件或源码目录,一旦发现立即阻断发布。 - 坚持零信任原则:
永远不要假设客户端是安全的。 任何核心的 Secret、关键的 Prompt 逻辑、敏感的算法,都必须部署在服务端。















