Claude Code 源码分析Claude Code 源码分析
首页
源码统计
系统架构
UML 图表
工具系统
CodeGraph
首页
源码统计
系统架构
UML 图表
工具系统
CodeGraph

Claude Code 源码分析

Claude Code v2.1.88 反编译源码深度分析 · CodeGraph 知识图谱

系统架构

四层架构 · CLI → query 循环 → 工具/UI

查询引擎

Agent 心脏:tool_use 主循环与 SDK 模式

消息系统

五种 Message 类型与 API 管道

工具系统

51 内置工具 + MCP 扩展

权限与安全

canUseTool 链与用户信任模型

CodeGraph

4.4 万节点源码知识图谱

本章总览

欢迎来到 Claude Code 源码教学站。本站不是 API 文档式的信息罗列,而是带你从零理解一个生产级 AI Agent CLI 如何设计、如何运转。建议按侧边栏顺序阅读,每章都有「导读 → 原理 → 源码对照 → 小结」。

总览图

渲染图表中…

学完本章你应该能

  • 建立 Claude Code 整体心智模型:入口、引擎、工具、UI 四层如何协作
  • 知道 53 万行代码里,哪些模块最值得优先深入
  • 能向他人解释「用户输入一句话后,系统内部发生了什么」

核心概念(先读懂这些)

Agent CLI 是什么

Claude Code 不是聊天网页,而是运行在终端里的编程 Agent:它读文件、跑命令、改代码,并在 Anthropic Messages API 的 tool_use 协议下循环工作。理解这一点,后面所有模块都围绕「对话 + 工具循环」展开。

为什么用 CodeGraph

纯人工读 50 万行不现实。本站结合静态分析与知识图谱,把调用关系、模块边界可视化,让你学会「先抓主干、再钻细节」的阅读方法。

建议学习步骤

  1. 先浏览本章统计数字,感受项目规模
  2. 记住「核心架构一图流」
  3. 从「系统架构」章节开始系统学习

常见误区

注意

不要试图一次读完所有工具页——先掌握 query 主循环

注意

反编译源码缺少部分内部模块,遇到 feature gate 阻断是正常的

项目概览

Claude Code 是 Anthropic 出品的 AI 编程 Agent CLI,本分析基于 @anthropic-ai/claude-code v2.1.88 反编译源码,结合 CodeGraph 知识图谱(44,402 节点 / 121,958 边)生成。

指标数值
代码行数536,325
内置工具51
斜杠命令87
服务子系统22
src 模块38
图谱节点44,402

核心架构一图流

渲染图表中…

推荐学习路线(活动图)

渲染图表中…

8 大核心模块

入口层 (entrypoints / main / cli)

CLI 启动、参数解析、OAuth 认证、GrowthBook 特性开关初始化,决定走 REPL 交互还是 Headless/SDK 模式。 4,167 行 · 14 文件

查询引擎 (query.ts / QueryEngine)

Claude Code 的心脏:驱动 tool_use 循环、流式 API 调用、上下文压缩、工具编排、权限检查。 12,155 行 · 22 文件

工具系统 (tools/ + Tool.ts)

53 个内置工具 + MCP 动态工具,统一 Tool 接口,支持并发安全标记、权限弹窗、Progress 流式回报。 51,099 行 · 199 文件

服务层 (services/)

22 个子系统:API 通信、MCP 客户端、上下文压缩、OAuth、插件、遥测、语音、记忆提取等。 53,949 行 · 148 文件

终端 UI (components/ + ink/)

React + Ink 渲染的 TUI:消息流、权限弹窗、Spinner、任务面板、MCP 配置界面。 101,975 行 · 506 文件

斜杠命令 (commands/)

87 个 /command:/model、/compact、/mcp、/memory、/doctor 等,用户可直接操控 Agent 行为。 26,692 行 · 213 文件

桥接层 (bridge/)

Claude Desktop / 远程控制桥接:JWT 认证、会话同步、消息中继。 12,652 行 · 33 文件

基础设施 (utils/)

最大模块:消息格式化、会话持久化、配置、权限、Hooks、Token 计数、Bash 解析等通用能力。 181,060 行 · 570 文件

技术难点预览

1. 流式 Tool Use 并发执行

Claude API 以 streaming 方式返回 content blocks,tool_use 块可能在 text 块之前/之间到达。Agent 需要在收包过程中就开始执行工具,而非等完整响应。

2. 上下文窗口管理与自动压缩

多轮对话 + 工具结果会快速填满 200K token 上下文。需在合适时机压缩历史,且压缩后不能丢失关键信息或破坏 API message 格式。

3. 编译期 Feature Gate (Bun DCE)

内部功能(KAIROS/DAEMON/COORDINATOR)不能泄露到公开发布包。需要编译期条件剔除,而非运行时 if。

4. 权限系统与用户信任

Agent 可执行 Shell/写文件/访问网络。需在安全与效率间平衡:每次弹窗确认 vs 自动批准 vs 完全绕过。

推荐学习路线(约 2 周)

第 1 步 · 建立全局观(1-2 天)

首页 → 源码统计 → 系统架构 → 核心流程。目标:能画出从输入到 tool call 的路径。

第 2 步 · 吃透引擎(3-4 天)

查询引擎 → 消息系统 → 状态管理 → API 通信层。目标:能解释一轮 turn 内 messages 如何变化。

第 3 步 · 能力与扩展(3-4 天)

工具系统 → 权限与安全 → MCP → Hooks。目标:知道扩展 Agent 的三条路径(Tool / MCP / Hook)。

第 4 步 · 按需深潜(持续)

模块详解、工具详解、CodeGraph 调用链。目标:对负责领域能定位到具体文件与函数。

本章小结与延伸

Claude Code = 终端 Agent + 流式 tool_use 循环 + 权限与压缩。下一章建议阅读「源码统计」了解模块体量,再进入「系统架构」。 继续学习:

  • 源码统计
  • 系统架构