“有人把 Anthropic 的 Claude Code 客户端(@anthropic-ai/claude-code@2.1.88)从 npm 包里扒了出来,用 source map 还原了 4756 个文件,扔上 GitHub 供人围观——这不是官方开源,是技术考古。”
项目地址: https://github.com/ChinaSiro/claude-code-sourcemap

事件起因
Claude Code 是 Anthropic 推出的 AI 编程助手,我们通常安装使用的是其编译打包后的 npm 包。然而,开发团队在构建发布时,似乎忘记移除或正确处理 source map 文件,导致打包产物中完整保留了原始的 TypeScript 源码映射。
一位名叫 ChinaSiro 的开发者(据称相关信息由 Linux.do 社区的“飘然与我同”提供)编写了一段脚本,从 cli.js.map 文件的 sourcesContent 字段中提取并还原了所有源码,使得 1884 个 .ts/.tsx 文件得以重见天日。

此次还原的版本锁定为 2.1.88,提交日期显示为 2026 年 3 月 31 日。该仓库上线后迅速引发关注,短时间内便获得了数千 Star 与 Fork,评论区也围绕着“法律风险”与“技术研究价值”展开了热烈讨论。这无疑是一次对 GitHub 社区生态的有趣观察。
目录结构窥探
通过还原的源码,我们可以一窥 Claude Code 客户端的内部工程结构:
restored-src/src/
├── main.tsx # CLI 入口
├── tools/ # 工具实现(Bash、FileEdit、Grep、MCP 等 30+ 个)
├── commands/ # 命令实现(commit、review、config 等 40+ 个)
├── services/ # API、MCP、分析等服务
├── utils/ # 工具函数(git、model、auth、env 等)
├── context/ # React Context
├── coordinator/ # 多 Agent 协调模式
├── assistant/ # 助手模式(KAIROS)
├── buddy/ # AI 伴侣 UI
├── remote/ # 远程会话
├── plugins/ # 插件系统
├── skills/ # 技能系统
├── voice/ # 语音交互
└── vim/ # Vim 模式
简而言之,这相当于一次对 Anthropic 内部工程能力的“快照”——从底层的 API 封装、工具链实现,到上层的交互逻辑与用户体验设计,其整体架构已基本清晰。
观点与思考
此事颇具讽刺意味。Anthropic 一面将 Claude Code 作为前沿的人工智能生产力工具大力推广,一面却在基础的软件工程发布流程上出现如此疏漏——将包含完整源码映射的 source map 文件打包进生产环境,无异于为自家的闭源软件留下了一道可被逆向的“后门”。
社区中不乏将其欢呼为“开源”的声音,但需要明确的是,真正的开源建立在明确的授权协议之上,而非源于偶然的技术漏洞。这对于所有开发者而言,都是一个关于构建安全与发布规范的重要提醒。
对这一技术考古事件感兴趣的开发者,可以前往 云栈社区 的开发者广场板块,与其他同行交流看法。
|