Files
2026-04-03 13:01:19 +08:00

172 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`