
2026年3月31日,Anthropic 旗下的明星命令行工具 Claude Code,因一个不起眼的 .map 文件在 npm 注册表中意外暴露,导致其完整的 TypeScript 源代码被公开。超过51万行代码、近1900个文件——包括核心架构、系统提示词、安全权限逻辑和未发布的实验功能——全部被第三方镜像至 GitHub。
本期节目将复盘这场“源代码裸奔”事件的始末。你将看到,一个看似微小的打包失误如何让 AI 代理的内部设计一览无余;深入 Claude Code 的代码库,我们能窥见其技术栈(Bun + React + Ink)、并行预取优化、“代理集群”协作模式;更重要的是,这次泄露引发的安全连锁反应:远程代码执行风险、API密钥泄露、系统提示词暴露可能带来的提示词注入攻击。事件也引发了行业对 AI 工具知识产权保护及发布流程的深刻反思——在“氛围编程”时代,一次疏忽,足以让全部家当公之于众。
Claude Code 源码泄露事件,是 AI 工具供应链安全的一次重要警钟。它证明,在 AI 能力飞速进化的同时,基础的软件工程安全规范仍不可忽视。一次打包失误,就能让一家公司的核心知识产权瞬间透明。当我们的工具越来越智能,保护它们的“笨方法”——比如检查 .map 文件——反而显得愈发重要。当事人的回复:

通过 AI 可以快速了解 Claude Code CLI 的设计原理:





Claude Code 被动开源的仓库地址:github.com/instructkr/claude-code
当前仓库已将原始的 TypeScript 版本改为了 Python 版本。原始泄漏的 Fork 版本可参考这里,或者 X 帖子。


此仓库的提交记录:


以下为主要内容的图文介绍:










📦 第一章:泄露事件回顾——一个 .map 文件的“蝴蝶效应”
- 时间:2026年3月31日。
- 原因:Anthropic 在 npm 发布 Claude Code 时,错误地将
.map源映射文件包含在包中。该文件指向存储在 Anthropic R2 存储桶中的、未经混淆的 TypeScript 源代码。 - 规模:泄露的代码快照包含近1,900个文件,超过512,000行 TypeScript 代码,涵盖完整
src/目录。 - 扩散:第三方(包括高校学生)迅速将代码镜像至 GitHub 仓库,用于安全性研究、软件供应链分析和教育目的。
🛠️ 第二章:技术架构深度拆解——Claude Code 的内部世界
泄露的代码揭示了 Claude Code 的完整技术栈与设计模式:
- 运行时与语言:基于 Bun 运行时,采用 TypeScript 编写,终端 UI 由 React + Ink 构建。
- 核心引擎(
QueryEngine.ts):负责 LLM API 调用、流式响应、重试逻辑及 Token 计数。 - 工具系统(
src/tools/):实现各类操作模块,如BashTool(执行命令)、AgentTool(生成子代理)、MCPTool(调用 MCP 服务器工具)等。 - 指令系统(
src/commands/):处理以/开头的命令(如/commit、/review、/memory)。 - 权限系统:在每次调用工具前检查权限,支持提示用户或自动解析。
- 性能优化:采用并行预取(启动时并行读取配置、密钥链、预连接 API)和延迟加载(动态导入Telemetry、gRPC 等重型模块)。
🧠 第三章:核心设计模式与“代理集群”
- 代理集群:通过
AgentTool生成子代理,支持多代理协作和团队级并行工作,是 Claude Code 实现复杂任务的关键。 - 系统提示词暴露:泄露包含完整的系统提示词,清晰展示了 Anthropic 如何引导模型、定义工具及权限逻辑。这为潜在的提示词注入或越狱攻击提供了蓝图。
⚠️ 第四章:安全风险与连锁反应
- 知识产权泄露:竞争对手可直接研究并复制其内部架构、实现决策和未发布功能。
- 漏洞利用:源代码透明化使安全研究门槛降低,也助长了恶意利用。目前已发现包括远程代码执行(RCE)及API密钥泄露在内的安全隐患。
- 行业反思:社区普遍认为,此次泄露暴露了 Anthropic 在发布流程中的“低级错误”——在 npm 包中遗留
.map文件。事件也引发了对 AI 代理工具知识产权保护及代码打包安全性的广泛讨论。
🔮 第五章:余波与启示
- “氛围编程”的代价:此次泄露让外界得以窥见 Anthropic 内部的开发模式,也警示所有 AI 工具开发者:即使是顶尖公司,也可能因一个文件的疏忽而“裸奔”。
- 防御性开源:部分安全研究者认为,泄露的代码可帮助防御方提前发现并修补类似漏洞,形成一种“被迫的开源安全审计”。
- 未来预防:行业呼吁建立更严格的发布前检查机制,尤其是对
npm包中的源映射文件、密钥和调试信息进行强制过滤。

