Claude Code 源码被从 npm source map 完整还原

cover

GitHub 上出现名为 claude-code-sourcemap 的非官方仓库,通过 npm 发布包 @anthropic-ai/claude-code 附带的 source map(cli.js.map)中的 sourcesContent 字段,还原了 Claude Code 2.1.88 的完整 TypeScript 源码,共计 4756 个文件,其中 1884 个为 .ts 与 .tsx 源文件。

仓库说明中写明,内容基于公开 npm 包与 source map 分析整理,不代表 Anthropic 官方内部开发仓库结构,仅供研究使用。

还原出了什么

还原的目录结构覆盖了 Claude Code 的主要功能模块:

  • main.tsx — CLI 入口
  • tools/ — 30+ 工具实现,包括 Bash、FileEdit、Grep、MCP 等
  • commands/ — 40+ 命令,包括 commit、review、config 等
  • services/ — API、MCP、分析等服务层
  • coordinator/ — 多 Agent 协调模式
  • assistant/ — 助手模式(代号 KAIROS)
  • plugins/ — 插件系统
  • skills/ — 技能系统
  • voice/ — 语音交互
  • vim/ — Vim 模式

body

从还原出的架构来看,Claude Code 的内部实现远比外部可见的 CLI 交互复杂。多 Agent 协调、插件和技能系统、语音与 Vim 模式的存在,说明 Anthropic 在 CLI 层面做了大量功能扩展,这些模块在正常使用中大多不可见。

source map 的供应链风险

source map 是前端和 Node.js 工程中常见的构建产物,用于将压缩后的代码映射回原始源码,方便调试。问题在于:当 source map 中包含完整的 sourcesContent 时,任何人拿到发布包就能还原出原始代码。

这在 Web 前端领域是一个被反复讨论的供应链安全问题——许多项目会在构建配置中移除 sourcesContent,或在发布前清理 source map。Claude Code 作为一个 npm 公开包,将带有完整 sourcesContent 的 source map 一同发布,等于把源码公开放在了每个用户的 node_modules 里。

目前该仓库仍在 GitHub 上可见,Anthropic 尚未对此作出公开回应。

来源: https://github.com/ChinaSiro/claude-code-sourcemap