Initial commit
这不是 Anthropic 官方仓库。 这个仓库用于归档和阅读从公开 npm 发布包中可提取出的 Claude Code TypeScript 源码。
这不是 Anthropic 官方仓库。
这个仓库用于归档和阅读从公开 npm 发布包中可提取出的 Claude Code TypeScript 源码。
Claude-Code 收录的是 Anthropic Claude Code CLI 工具的 TypeScript 源码提取结果。Claude Code 是 Anthropic 官方推出的命令行编程助手,可直接在终端里与 Claude 交互,完成编辑文件、执行命令、搜索代码库、处理 Git 工作流等软件工程任务。
Claude-Code
这里展示的内容并不是来自官方开源仓库,而是从官方发布到 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 文件批量恢复出来。
@anthropic-ai/claude-code
cli.js.map
sourcesContent
.ts
.tsx
因此,这次事件更像是一次发布流程上的源码暴露,而不是传统意义上的代码仓库被攻破。源码并非通过入侵获得,而是随着 npm 发布产物一起被公开分发了出去,最终导致 Claude Code 的主要 TypeScript 源码可以被低成本提取和重建。
git clone git@github.com:OrcaWhisper/Claude-Code.git cd Claude-Code
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/ 目录中。
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/bootstrap-entry.ts
src/main.tsx 看 CLI 初始化、命令装配、权限和全局配置是如何接起来的。
src/main.tsx
src/commands.ts 看所有 slash 命令是如何聚合和加载的。
src/commands.ts
src/tools.ts 看模型真正能调用哪些工具,例如 Bash、读写文件、搜索、MCP、任务控制等。
src/tools.ts
src/query.ts 看 agent loop 的核心逻辑,包括消息拼接、工具调用、compact、继续执行等。
src/query.ts
src/screens/REPL.tsx 看终端交互 UI 主界面是怎么组织的。
src/screens/REPL.tsx
这个仓库中的代码知识产权归 Anthropic 所有。
Claude-Code 仅作为学习、研究与技术参考用途的整理归档,不代表 Anthropic 官方立场,也未获得 Anthropic 的认可、授权或支持。关于源码使用限制,请以对应 npm 包的官方许可条款为准:
https://www.npmjs.com/package/@anthropic-ai/claude-code/v/2.1.88
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Claude-Code
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 源码可以被低成本提取和重建。
如何自行提取
直接克隆这个仓库
或者从 npm 包中自行提取
unpack.mjs文件:提取后的源码会出现在
unpacked/目录中。仓库结构
当前这份整理后的源码树,不只是一个简单的 CLI 入口文件,而是一套相当完整的终端 agent 应用。按现有仓库内容,大致可以这样理解:
这份源码里最值得关注的部分
如果你是第一次阅读 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