乐于分享
好东西不私藏

Claude Code 2.1.88 源码恢复记:一次由 Source Map 引发的技术考古

Claude Code 2.1.88 源码恢复记:一次由 Source Map 引发的技术考古

我从一个 npm 包里,挖出了一整套可阅读的 Claude Code TypeScript 源码结构

前几天,我注意到一件很特别的事:@anthropic-ai/claude-code@2.1.88[1] 的 npm 包里,曾经包含 cli.js.map。

基于这份 Source Map,我恢复出了一套可阅读的 TypeScript 源码目录。

虽然它还不是一个可直接构建运行的官方工程副本,但已经足够让我们观察 Claude Code 这类 AI Coding CLI 的大量核心结构:

  • • CLI 启动链路
  • • 命令系统
  • • Tool 系统
  • • Agent / Task 模型
  • • MCP 集成
  • • React + Ink 终端 UI 的组织方式

如果你平时会关注 AI Coding、Agent、CLI 工程,或者对 Claude Code 这类产品的内部实现一直很好奇,那这个项目你大概率会感兴趣。


一次有意思的”源码考古”

Source Map 对前端和 Node 开发者来说并不陌生,它本来是为了帮助调试压缩后的构建产物而存在的。但有时候,Source Map 里会留下足够多的结构信息,让人得以重新观察一套工程的原始组织方式。

基于这份 Source Map,我把 Claude Code 2.1.88 的大量 TypeScript/TSX 源码目录恢复了出来,并整理成了一个可阅读的仓库。

先说明:这不是 Anthropic 官方开源仓库,也不代表官方立场。它更适合作为一个研究、归档和源码阅读项目,而不是”拿下来就能直接跑”的那种完整工程副本。

但即便如此,这份恢复结果的信息量依然很大。


CLI 启动链路

从目前恢复出的代码来看,Claude Code 的整体工程结构已经相当清晰。

现在能看到 src/entrypoints/cli.tsx 和 src/main.tsx 这样的核心入口文件,也能看到初始化流程相关的代码:配置系统启用、环境变量注入、代理与证书预处理、遥测初始化等。

对于理解一个成熟 CLI 工具是如何启动、分流和做环境准备,这部分非常有参考价值。


命令系统

通过 src/commands.ts,可以看到 Claude Code 内部注册了大量命令,并且很多命令采用懒加载和特性开关控制。

像 mcpreviewtaskspluginagentsmemoryteleportdoctorconfig 这些能力,都已经能看到对应痕迹。

单从命令层面,就足以帮助理解它是如何把一个 AI Agent 产品组织成完整 CLI 体验的。


Tool 系统

在 src/tools.ts 里,可以看到很多熟悉的能力模块:

  • • Bash
  • • 文件读取与编辑
  • • Web 搜索
  • • MCP
  • • Agent
  • • Todo
  • • Plan Mode
  • • Worktree

这份恢复结果已经不仅仅是”命令行壳子”,而是能让人看到 Claude Code 内部工具抽象的一部分。

如果你在做自己的 Coding Agent,或者正在思考”Agent 到底应该如何组织可调用能力”,这一层会特别值得看。


Agent / Task 模型

比如 src/tasks/src/tools/AgentTool/src/tools/shared/ 这些目录,已经能看出它在任务编排、多代理协作、本地 Shell 执行和远程能力接入上的一些设计思路。

虽然还不等于完整复原所有细节,但已经足够让人看到一个成熟产品在架构层面的取舍。


终端 UI

很多人会把 CLI 理解成”命令 + 文本输出”,但 Claude Code 这类产品显然不止于此。

从恢复出来的 src/components/ 和 src/ink/ 来看,它大量使用了 React + Ink 去构建复杂终端交互界面。这部分对终端产品设计、交互流组织,以及”如何在命令行里做出应用感”都很有参考意义。


MCP 相关内容

仓库里既能看到 mcp 命令,也能看到 MCPToolListMcpResourcesToolReadMcpResourceTool 这类实现线索。

对于正在研究 Model Context Protocol 如何真正落地到产品中的人来说,这部分会比单纯看概念更有帮助。


这个项目的边界

当然,这个项目现在依然有很强的”恢复现场”特征。

比如当前仓库根目录里,还没有完整恢复出官方工程级的 package.jsonbun.locktsconfig、lint/build 配置等文件。源码中还存在 bun:bundlefeature(...)MACRO.VERSION 等构建期能力,这意味着它并不是一个可以直接本地复刻官方构建流程的仓库。

所以:

  • • 如果你的目标是”阅读源码,分析结构、观察设计” → 这份仓库已经很有价值
  • • 如果你的目标是”直接跑起来” → 它现在还缺不少关键拼图

这个项目最有意思的地方

不只是”恢复出了多少文件”,而是它让我们有机会更近距离地观察一个成熟 AI Coding CLI 产品是怎么组织起来的。

它不是某一个单点功能的实现,而是一整套工程系统:

入口、初始化、命令、工具、任务、代理、终端 UI、MCP、Feature Flags、远程能力 —— 这些东西组合在一起,才构成了 Claude Code。


如果你对以下方向感兴趣

  • • AI Coding Agent 的工程实现方式
  • • CLI 产品的架构设计
  • • 终端 UI 的组织方式
  • • MCP 的实际接入方式
  • • TypeScript 大型工程的模块划分
  • • 单纯喜欢”技术考古”

那这个项目很值得一看。


最后强调

这个项目不是官方开源项目,也不代表官方立场。 原始代码、商标及相关权利归原权利方所有。当前仓库更适合作为归档、研究、结构分析与源码阅读材料。

但仅仅作为”研究样本”,它已经足够有意思了。


如果你对 AI Coding、Agent、MCP 或 CLI 架构感兴趣,欢迎点个在看,或者把这篇文章转给可能感兴趣的朋友。

项目地址:https://github.com/beyondlong/claude_code_sources


免责声明:本文提及项目为非官方研究归档,不代表 Anthropic 官方立场。相关版权、商标及其他权利归原权利方所有。本文仅作技术研究、结构分析与源码阅读分享。

引用链接

[1] claude-code@2.1.88: mailto:claude-code@2.1.88