172 lines
5.1 KiB
Markdown
172 lines
5.1 KiB
Markdown
# Claude Code 源码中文 Wiki
|
||
|
||
本文件说明:总索引文档,介绍整个 Wiki 的结构和各部分内容。
|
||
|
||
## 概述
|
||
|
||
Claude Code 是 Anthropic 开发的 CLI 工具,用于在终端环境中与 Claude 交互完成软件工程任务。本 Wiki 基于 2026-03-31 通过 npm source map 泄露的源码进行详细分析。
|
||
|
||
## 项目规模
|
||
|
||
- **文件数量**:约 1900 个文件
|
||
- **代码规模**:512K+ 行代码
|
||
- **源码泄露时间**:2026-03-31(通过 npm source map)
|
||
|
||
## 技术栈
|
||
|
||
| 组件 | 技术 |
|
||
|------|------|
|
||
| 运行时 | Bun |
|
||
| 语言 | TypeScript |
|
||
| 终端 UI | React + Ink |
|
||
| CLI 框架 | Commander.js |
|
||
| 参数校验 | Zod v4 |
|
||
| 代码搜索 | ripgrep |
|
||
| 构建工具 | Bun bundle |
|
||
|
||
## Wiki 结构
|
||
|
||
### 1. 架构总览 (`01-架构总览.md`)
|
||
|
||
介绍 Claude Code 的整体架构设计,包括:
|
||
- 项目背景与定位
|
||
- 技术栈详解
|
||
- 核心架构设计
|
||
- 源码泄露事件
|
||
|
||
### 2. 核心模块详解 (`02-核心模块详解.md`)
|
||
|
||
详细分析以下核心文件的实现原理:
|
||
|
||
| 文件 | 功能 |
|
||
|------|------|
|
||
| `src/main.tsx` | CLI 入口点,应用程序初始化 |
|
||
| `src/QueryEngine.ts` | LLM 查询引擎核心,处理流式响应、工具调用循环、思考模式、重试逻辑、token 计数 |
|
||
| `src/Tool.ts` | 工具基类和接口定义,工具注册表核心 |
|
||
| `src/commands.ts` | 命令注册中心,所有 slash command 的注册和管理 |
|
||
| `src/context.ts` | 系统/用户上下文收集,Git 状态、CLAUDE.md 处理 |
|
||
| `src/cost-tracker.ts` | Token 成本追踪,费用计算 |
|
||
| `src/query.ts` | 查询管道,消息处理循环 |
|
||
|
||
### 3. 工具系统 (`03-工具系统.md`)
|
||
|
||
详细介绍所有内置工具的实现:
|
||
|
||
**文件操作工具**
|
||
- `BashTool` - 执行 Shell 命令
|
||
- `FileReadTool` - 读取文件(支持文本、图片、PDF、Jupyter Notebook)
|
||
- `FileWriteTool` - 写入文件
|
||
- `FileEditTool` - 编辑文件(支持 Search/Replace 模式)
|
||
- `GlobTool` - 文件模式匹配
|
||
- `GrepTool` - 代码搜索
|
||
- `NotebookEditTool` - Jupyter Notebook 编辑
|
||
|
||
**Web 工具**
|
||
- `WebFetchTool` - 获取网页内容
|
||
- `WebSearchTool` - 网络搜索
|
||
|
||
**Agent 与团队工具**
|
||
- `AgentTool` - 创建和管理子 Agent
|
||
- `TeamCreateTool` - 创建 Agent 团队
|
||
- `TeamDeleteTool` - 删除团队
|
||
- `SendMessageTool` - 向团队成员发送消息
|
||
|
||
**任务管理工具**
|
||
- `TaskCreateTool` - 创建任务
|
||
- `TaskGetTool` - 获取任务详情
|
||
- `TaskUpdateTool` - 更新任务状态
|
||
- `TaskListTool` - 列出任务
|
||
- `TaskStopTool` - 停止任务
|
||
- `TaskOutputTool` - 获取任务输出
|
||
- `TodoWriteTool` - 待办事项管理
|
||
|
||
**模式与工作流工具**
|
||
- `EnterPlanModeTool` - 进入计划模式
|
||
- `ExitPlanModeTool` - 退出计划模式
|
||
- `EnterWorktreeTool` - 进入 Git Worktree
|
||
- `ExitWorktreeTool` - 退出 Git Worktree
|
||
|
||
**搜索与技能工具**
|
||
- `ToolSearchTool` - 工具搜索
|
||
- `SkillTool` - 技能执行
|
||
- `MCPTool` - Model Context Protocol 工具
|
||
|
||
**其他工具**
|
||
- `LSPTool` - 语言服务器协议工具
|
||
- `CronCreateTool` - 创建定时任务
|
||
- `RemoteTriggerTool` - 远程触发器
|
||
- `SleepTool` - 延迟执行
|
||
- `SyntheticOutputTool` - 结构化输出
|
||
|
||
## 核心概念
|
||
|
||
### 1. 工具系统 (Tool System)
|
||
|
||
Claude Code 的工具系统基于 `Tool` 基类构建,每个工具实现:
|
||
- `call()` - 工具执行逻辑
|
||
- `description()` - 工具描述
|
||
- `inputSchema` - 输入参数校验
|
||
- `checkPermissions()` - 权限检查
|
||
- `renderToolUseMessage()` - 渲染工具使用消息
|
||
- `renderToolResultMessage()` - 渲染工具结果消息
|
||
|
||
### 2. 查询引擎 (Query Engine)
|
||
|
||
QueryEngine 是核心查询处理组件:
|
||
- 管理对话生命周期
|
||
- 处理流式 API 响应
|
||
- 执行工具调用循环
|
||
- 支持思考模式 (Thinking Mode)
|
||
- 实现自动压缩 (Auto-compact) 机制
|
||
|
||
### 3. 命令系统 (Command System)
|
||
|
||
命令系统支持多种命令类型:
|
||
- `prompt` - 展开为提示文本发送给模型
|
||
- `local` - 本地执行的命令
|
||
- `local-jsx` - 本地执行并渲染 Ink UI
|
||
|
||
### 4. 上下文管理 (Context Management)
|
||
|
||
上下文系统收集:
|
||
- Git 状态信息
|
||
- CLAUDE.md 文件内容
|
||
- 用户上下文
|
||
- 系统上下文
|
||
|
||
### 5. 成本追踪 (Cost Tracking)
|
||
|
||
成本追踪系统记录:
|
||
- 输入/输出 Token 数量
|
||
- 缓存读写 Token
|
||
- Web 搜索请求次数
|
||
- API 调用时长
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
claude-code-源码/
|
||
├── src/
|
||
│ ├── main.tsx # CLI 入口
|
||
│ ├── QueryEngine.ts # 查询引擎
|
||
│ ├── Tool.ts # 工具基类
|
||
│ ├── commands.ts # 命令注册
|
||
│ ├── context.ts # 上下文收集
|
||
│ ├── cost-tracker.ts # 成本追踪
|
||
│ ├── query.ts # 查询管道
|
||
│ ├── tools/ # 工具实现
|
||
│ │ ├── BashTool/
|
||
│ │ ├── FileReadTool/
|
||
│ │ ├── FileEditTool/
|
||
│ │ ├── AgentTool/
|
||
│ │ └── ...(其他工具)
|
||
│ └── ...(其他模块)
|
||
└── package.json
|
||
```
|
||
|
||
## 扩展阅读
|
||
|
||
- 深入理解工具系统请阅读 `03-工具系统.md`
|
||
- 深入理解核心模块请阅读 `02-核心模块详解.md`
|
||
- 架构概览请阅读 `01-架构总览.md`
|