Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
claude code源码分析报告
| Date | Stars |
|---|---|
| 2026-07-31 | 282 |
| 2026-08-02 | 282 |
| 2026-08-06 | 282 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# Claude Code v2.1.88 源码分析报告
hello,我是applek,某个软件站的站长。
今天拿到了泄露的map文件,本项目已经解析成了报告。
并且,如何制作第三客户端,也写出来了,本项目旨在学习claude code的功能,请勿用于违法用途
## 目录
1. [概述](#1-概述)
2. [程序启动流程](#2-程序启动流程)
3. [核心架构](#3-核心架构)
4. [模块详解](#4-模块详解)
5. [API 通信与数据流](#5-api-通信与数据流)
6. [工具系统](#6-工具系统)
7. [权限与安全系统](#7-权限与安全系统)
8. [UI 渲染系统](#8-ui-渲染系统)
9. [扩展机制](#9-扩展机制)
10. [关键数据流图](#10-关键数据流图)
11. [构建系统与运行测试](#11-构建系统与运行测试)
12. [如何构建第三方客户端](THIRD_PARTY_CLIENT_GUIDE.md)
---
## 1. 概述
Claude Code 是 Anthropic 官方的 CLI 编程助手,基于 TypeScript 开发,使用 React Ink 进行终端 UI 渲染。整个程序打包为单个 `cli.js` 文件(13MB),源码包含 **1906 个自有源文件** 和 2850 个第三方依赖文件。
### 技术栈
| 层级 | 技术 |
|------|------|
| 语言 | TypeScript |
| 运行时 | Node.js (Bun 构建) |
| 终端 UI | React Ink (自定义 fork) |
| 状态管理 | Zustand |
| API 客户端 | @anthropic-ai/sdk |
| CLI 框架 | Commander.js |
| 搜索引擎 | ripgrep (内置二进制) |
| 协议扩展 | MCP (Model Context Protocol) |
### 源码规模
| 模块 | 文件数 | 说明 |
|------|--------|------|
| tools/ | 40+ 个工具目录 | 每个工具一个子目录 |
| services/ | 15+ 个服务目录 | API、MCP、分析、OAuth 等 |
| components/ | 100+ 组件 | React Ink UI 组件 |
| utils/ | 200+ 工具文件 | 权限、Bash 解析、设置等 |
| commands/ | 90+ 命令 | 斜杠命令实现 |
---
## 2. 程序启动流程
### 2.1 入口点 (entrypoints/cli.tsx)
程序启动采用"快速路径"设计,根据命令行参数尽早分流,避免加载不需要的模块:
```
node cli.js [args]
│
├─ --version → 直接输出版本号,零导入退出
├─ --dump-system-prompt → 输出系统提示词(内部调试)
├─ --chrome-native-host → Chrome 浏览器扩展集成
├─ --computer-use-mcp → Computer Use MCP 服务器
├─ --daemon-worker → 内部守护进程 worker
├─ remote/bridge → 远程会话桥接模式
├─ daemon → 长时运行守护进程
├─ ps/logs/attach/kill → 会话管理命令
├─ new/list/reply → 模板任务命令
└─ [default] → 加载完整 CLI (main.tsx)
```
### 2.2 初始化阶段 (entrypoints/init.ts)
`init()` 函数采用 memoize 模式确保只执行一次,按顺序执行:
**第一阶段:配置系统**
1. `enableConfigs()` — 启用并验证配置系统
2. `applySafeConfigEnvironmentVariables()` — 设置安全的环境变量
3. `applyExtraCACertsFromConfig()` — 加载 TLS 证书(必须在首次 TLS 连接前)
**第二阶段:系统设置**
4. `setupGracefulShutdown()` — 注册退出清理处理
5. `registerCleanup()` — LSP 服务、Team 资源清理
6. `ensureScratchpadDir()` — 创建临时目录
**第三阶段:异步初始化(非阻塞)**
7. OAuth 账户信息获取
8. JetBrains IDE 检测
9. GitHub 仓库检测
10. 远程设置加载
11. 策略限制加载
**第四阶段:网络配置**
12. `configureGlobalMTLS()` — mTLS 双向认证
13. `configureGlobalAgents()` — HTTP 代理配置
14. `preconnectAnthropicApi()` — **TCP+TLS 握手预热**(提前建立连接)
15. `initUpstreamProxy()` — 上游代理中继
### 2.3 全局状态初始化 (bootstrap/state.ts)
模块加载时立即初始化全局状态单例 `STATE`,包含 **260+ 属性**:
- 会话标识:sessionId、projectRoot、originalCwd
- 指标:totalCostUSD、totalAPIDuration、tokenUsage
- 遥测:meter、counters、tracerProvider
- 配置:mainLoopModel、permissionMode、autoMode
- 认证:oauthToken、apiKey、sessionIngressToken
- 工具:plugins、skills、cronTasks
- UI:agentColorMap、slowOperations
通过 **210+ getter/setter 函数** 提供原子访问。
### 2.4 主循环启动 (main.tsx)
1. 启动性能分析检查点
2. 从 Keychain 预取 OAuth + API Key
3. 加载 GrowthBook 特性开关
4. 调用 `init()` 完成初始化
5. 配置模型和权限
6. 加载 Plugins、Skills、Agents
7. 启动 MCP 服务器
8. 注册 Commander.js 命令
9. 渲染 React Ink UI (`REPL.tsx`)
---
## 3. 核心架构
### 3.1 整体架构图
```
┌─────────────────────────────────────────────────────────┐
│ 用户输入 (PromptInput) │
└────────────────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ 主消息循环 (query.ts) │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
│ │系统提示构建│ │消息标准化│ │ 上下文管理/压缩 │ │
│ └──────────┘ └──────────┘ └──────────────────────┘ │
└────────────────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Anthropic API 客户端 (claude.ts) │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
│ │流式请求 │ │重试逻辑 │ │ 多供应商支持 │ │
│ │ │ │ │ │ (Direct/Bedrock/ │ │
│ │ │ │ │ │ Vertex/Azure) │ │
│ └──────────┘ └─────────Excerpt of 28,623 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
Not classified yet. Classification runs as part of npm run ingest.