近日,Anthropic 官方的 CLI 编程助手 Claude Code 的完整源码因发布流程中的疏忽而泄露。泄露的源码版本为 @anthropic-ai/claude-code v2.1.88,这个基于 TypeScript 开发、使用 React Ink 进行终端 UI 渲染的工具,其内部架构设计和实现细节因此被公开。
至于泄露原因,据网络社区传播的一张社交媒体截图显示,一位自称前 Anthropic 工程师的用户承认,他为了改善团队的调试体验,在发布到 npm 的包中包含了源码映射(source map)文件,这直接导致整个内部代码库被暴露。

整个泄露的程序被打包为单个 cli.js 文件(大小约 13MB),源码则包含了惊人的 1906 个自有源文件和 2850 个第三方依赖文件。这无疑为开发者社区提供了一个极佳的源码分析学习案例。
技术栈与核心架构
技术栈概览
Claude Code 主要采用 TypeScript 开发,运行时环境为 Node.js(使用 Bun 进行构建)。其终端用户界面(UI)基于 React Ink 的一个自定义分支开发。在状态管理上,项目选用了轻量级的 Zustand。其他关键依赖还包括:
- API 客户端:
@anthropic-ai/sdk
- CLI 框架:Commander.js
- 内置文本搜索引擎:ripgrep(以二进制形式集成)
- 协议扩展:MCP (Model Context Protocol)
核心工作模块
从泄露的代码来看,Claude Code 主要围绕 5 大模块构建:
- tools 模块:包含 40 多个工具目录,每个工具对应一个子目录,如 BashTool(执行Shell命令)、FileEditTool(编辑文件)等。
- services 模块:包含 15 个以上的服务目录,涵盖了 API 通信、MCP 客户端、数据分析、OAuth 认证等核心后台服务。
- components 模块:包含超过 100 个 React Ink UI 组件,构成了用户交互界面。
- utils 模块:包含约 200 个工具文件,实现了权限引擎、Bash 语法解析、沙盒隔离、设置管理、Git 集成等复杂功能。
- commands 模块:实现了 90 多个斜杠命令(如
/help, /compact, /model)。
系统架构设计
Claude Code 的整体架构采用了清晰的分层设计,其工作流程如下图所示:

这张架构图清晰地展示了其职责分层的设计思路:
- Layer 1 用户输入层:由
PromptInput 组件负责,作为用户与助手对话的入口。
- Layer 2 主消息循环层:核心是
query.ts 文件,它负责在同一轮对话中完成系统提示的构建、多轮消息的规范化,以及对话上下文的智能压缩与管理,确保发送给 AI 模型的信息规模是可控的。
- Layer 3 API 客户端层:
claude.ts 作为 Anthropic API 的统一抽象层,封装了流式请求、失败重试与回退逻辑,并支持对接 Direct、Bedrock、Vertex、Azure 等多个后端供应商。
- Layer 4 工具执行引擎层:
StreamingToolExecutor 负责编排 AI 模型调用的各种工具。它会根据工具是否支持并发安全,来决定并行执行(有上限约束)还是串行执行,从而驱动 Bash、文件读写、网页抓取甚至创建子 Agent 等操作。
- Layer 5 UI 渲染层:基于 React Ink,负责实时展示消息流、弹出敏感操作权限确认对话框、管理后台任务面板,将异步、长耗时或需要人工裁决的行为与主交互界面无缝贯通。
这套架构形成了一个从“用户输入 → AI 推理 → 工具执行 → 结果反馈”到“终端呈现与治理”的完整闭环。
源码目录结构解析
泄露源码的根目录结构也揭示了其模块化设计。主要源代码位于 src/src/ 目录下,其组织结构关系如下图所示:

目录包含从程序启动入口 (bootstrap/)、主交互界面 (screens/REPL.tsx)、各类 UI 组件,到工具实现、服务层、命令系统、状态管理 (state/ 使用 Zustand)、后台任务执行器、技能/插件系统、多 Agent 协调器等完整模块。
其中,utils/ 工具库目录尤其值得关注,它包含了体量庞大的权限引擎(超过 400KB)和 Bash 抽象语法树解析器(超过 600KB),这两个模块无疑是保障工具执行安全和准确性的基石。
相关资源地址
目前,已有开发者对泄露的源码进行了整理和分析:
此次泄露事件为技术社区提供了一个难得的机会,可以深入研究一个成熟商业 AI 辅助工具的内部技术栈和工程实践。对于从事 Node.js 应用开发、AI 应用架构设计或 CLI 工具开发的工程师而言,这些资料具有很高的参考价值。在 云栈社区,我们也将持续关注此类前沿技术动态,为开发者提供更多深度解析和讨论。
|