这不是 Anthropic 官方仓库。
这个仓库用于归档和阅读从公开 npm 发布包中可提取出的 Claude Code TypeScript 源码。
Claude-Code 收录的是 Anthropic Claude Code CLI 工具的 TypeScript 源码提取结果。Claude Code 是 Anthropic 官方推出的命令行编程助手,可直接在终端里与 Claude 交互,完成编辑文件、执行命令、搜索代码库、处理 Git 工作流等软件工程任务。
这里展示的内容并不是来自官方开源仓库,而是从官方发布到 npm 的安装包中附带的 source map 里还原出来的源码。
2026 年 3 月 31 日,开发者 Chaofan Shou(@Fried_rice) 公开提到,Claude Code 的源码可以直接通过 npm 包中的 source map 还原出来。
问题的关键在于,官方发布的 @anthropic-ai/claude-code 包中包含了 cli.js.map 文件。这个 source map 不只是调试辅助文件,它的 sourcesContent 字段里还内嵌了打包前的原始源码内容。也就是说,只要拿到这个 map 文件,就可以把构建前的 .ts / .tsx 文件批量恢复出来。
因此,这次事件更像是一次发布流程上的源码暴露,而不是传统意义上的代码仓库被攻破。源码并非通过入侵获得,而是随着 npm 发布产物一起被公开分发了出去,最终导致 Claude Code 的主要 TypeScript 源码可以被低成本提取和重建。
git clone git@github.com:OrcaWhisper/Claude-Code.git
cd Claude-Code- 下载并解压 npm 包:
mkdir claude-code-extract && cd claude-code-extract
npm pack @anthropic-ai/claude-code@2.1.88
tar -xzf anthropic-ai-claude-code-2.1.88.tgz
cd package- 创建一个
unpack.mjs文件:
import { readFileSync, writeFileSync, mkdirSync } from "fs";
import { dirname, join } from "path";
const mapFile = join(import.meta.dirname, "cli.js.map");
const outDir = join(import.meta.dirname, "unpacked");
console.log("Reading source map...");
const map = JSON.parse(readFileSync(mapFile, "utf-8"));
const sources = map.sources || [];
const contents = map.sourcesContent || [];
console.log(`Found ${sources.length} source files.`);
let written = 0;
let skipped = 0;
for (let i = 0; i < sources.length; i++) {
const src = sources[i];
const content = contents[i];
if (content == null) {
skipped++;
continue;
}
const outPath = join(outDir, src.replace(/^\.\.\//g, ""));
mkdirSync(dirname(outPath), { recursive: true });
writeFileSync(outPath, content);
written++;
}
console.log(`Done! Wrote ${written} files to ${outDir}`);
if (skipped > 0) console.log(`Skipped ${skipped} files with no content.`);- 运行提取脚本:
node unpack.mjs提取后的源码会出现在 unpacked/ 目录中。
当前这份整理后的源码树,不只是一个简单的 CLI 入口文件,而是一套相当完整的终端 agent 应用。按现有仓库内容,大致可以这样理解:
.
├── README.md # 项目说明
├── package.json # 包信息、依赖与启动脚本
├── bun.lock # Bun 锁文件
├── preview.png # 项目预览图
├── src/ # 还原出的主要 TypeScript 源码
│ ├── bootstrap-entry.ts # 最外层启动入口,处理版本号和若干 fast path
│ ├── main.tsx # 主程序初始化入口
│ ├── query.ts # 模型对话与工具调用的核心循环
│ ├── commands/ # Slash 命令实现
│ ├── tools/ # 模型可调用工具实现
│ ├── components/ # Ink / React 终端 UI 组件
│ ├── hooks/ # 各类 React Hooks 与状态逻辑
│ ├── services/ # 核心服务层,如 MCP、LSP、提示、分析、同步等
│ ├── state/ # 全局状态与 store
│ ├── tasks/ # 后台任务、子代理、工作流相关逻辑
│ ├── bridge/ # Remote control / bridge 能力
│ ├── remote/ # 远程会话与连接管理
│ ├── commands/ # 用户输入的命令体系
│ ├── skills/ # 技能系统与内置 skill
│ ├── plugins/ # 内置插件与插件接入逻辑
│ ├── context/ # 上下文与 provider
│ ├── constants/ # 常量、文案、限制与配置项
│ ├── types/ # 类型定义
│ ├── utils/ # 各种底层工具函数
│ ├── ink/ # 终端 UI 渲染框架适配层
│ ├── assistant/ # assistant 模式相关逻辑
│ ├── coordinator/ # 多 agent / 协调器模式
│ ├── server/ # 本地服务与 direct connect 相关代码
│ ├── ssh/ # SSH 会话支持
│ ├── vim/ # Vim 风格输入和动作支持
│ └── ...
└── vendor/ # 部分原生能力或外部源码目录
如果你是第一次阅读 Claude Code 的实现,建议优先关注这几块:
-
src/bootstrap-entry.ts看启动链路和 fast path 分流。 -
src/main.tsx看 CLI 初始化、命令装配、权限和全局配置是如何接起来的。 -
src/commands.ts看所有 slash 命令是如何聚合和加载的。 -
src/tools.ts看模型真正能调用哪些工具,例如 Bash、读写文件、搜索、MCP、任务控制等。 -
src/query.ts看 agent loop 的核心逻辑,包括消息拼接、工具调用、compact、继续执行等。 -
src/screens/REPL.tsx看终端交互 UI 主界面是怎么组织的。
这个仓库中的代码知识产权归 Anthropic 所有。
Claude-Code 仅作为学习、研究与技术参考用途的整理归档,不代表 Anthropic 官方立场,也未获得 Anthropic 的认可、授权或支持。关于源码使用限制,请以对应 npm 包的官方许可条款为准:
https://www.npmjs.com/package/@anthropic-ai/claude-code/v/2.1.88