Skip to content

00 — Claude Code 完整架构解析

🌐 语言: 中文 | English → 📖 在线阅读 → — 支持侧边栏导航、暗色模式与全文搜索,体验更佳。

本文档是什么。 这是 Claude Code 深度解析 系列的压轴篇章——一部将 17 篇架构分析浓缩为单一参考手册的微缩百科全书。在深入各章之前用它做地图,或在探索完各章后用它做复习。

本文档不是什么。 它不能替代各篇深度解析。下文每个小节都是一段"电梯演讲"——用 60 秒讲完一个在专篇中可能跨越 500-900 行的子系统。



第一部分 — 导航

§1 全局架构图

Claude Code 的强大不是来自某个杀手锏功能,而是六大支柱协同运作——每一个都在放大其他支柱的效果:

                        ┌─────────────────────────┐
                        │     System Prompt        │
                        │  (身份 + 规则 +           │
                        │   42+ 工具描述)           │
                        └────────────┬────────────┘

                  ┌──────────────────┼──────────────────┐
                  │                  │                  │
         ┌───────▼────────┐ ┌──────▼───────┐ ┌───────▼────────┐
         │  工具系统       │ │  查询循环    │ │    上下文      │
         │  (42+ 工具,    │ │  (12 步      │ │  管理          │
         │   每个 30+方法) │ │   状态机)    │ │  (4 层压缩)    │
         └───────┬────────┘ └──────┬───────┘ └───────┬────────┘
                  │                  │                  │
                  └──────────────────┼──────────────────┘

                  ┌──────────────────┼──────────────────┐
                  │                  │                  │
         ┌───────▼────────┐ ┌──────▼───────┐ ┌───────▼────────┐
         │  权限与安全     │ │  多 Agent    │ │  Skill &       │
         │  (7 层纵深防御) │ │  集群        │ │  Plugin        │
         │                │ │  (3 后端,   │ │  (6 源,       │
         │                │ │   7 种任务)  │ │   MCP 协议)    │
         └────────────────┘ └──────────────┘ └────────────────┘

一句话数据流:

用户输入 → CLI (cli.tsx) → QueryEngine.query() → System Prompt 组装
  → 流式 API 调用 → 工具提取 → 权限检查 → 工具执行
  → 结果注入 → 继续/结束决策 → 下一次迭代或响应

六大设计哲学:

#哲学一句话
1LLM = 大脑,Harness = 身体LLM 负责推理;Harness 负责感知、行动、记忆和约束
2工具 = 能力边界Claude 只能做注册工具允许的事情
3上下文是最稀缺的资源200K token 听起来很多,一个中等项目就能填满
4零信任安全每一次工具调用都经过多层权限检查
5循环直到完成不是请求-响应,而是 调用 → 工具 → 结果 → 重复
6可扩展性决定上限Skill、Plugin、MCP 让能力无限延伸

§2 篇章索引:每章一句话

标题电梯演讲行数
01QueryEngine:大脑将 LLM 变成 Agent 的 while(true) 循环——12 步流水线、AsyncGenerator 流式处理、错误恢复711
02工具系统:42 模块统一接口每个工具 30+ 方法契约,Schema 驱动注册,三层过滤,流式并行执行665
03多 Agent 协调器tmux/iTerm2/进程内后端,AsyncLocalStorage 隔离,自动环境检测342
04Plugin 系统:全生命周期Plugin = Skills + Hooks + MCP 服务器;6 种 Skill 来源,后台安装协调548
05Hook 系统:20 种事件类型PreToolUse / PostToolUse / Notification 钩子,MCP 传输,否决与变异语义299
06Bash 引擎:沙箱与管道6 层纵深防御,tree-sitter AST 解析,macOS Seatbelt 沙箱458
07权限管道:从规则到内核7 种规则来源,Bash AST 安全,投机性 YOLO 分类器,OAuth 2.0 PKCE619
08Agent 集群:团队协调7 种 TaskState 变体,SendMessage 协议,DreamTask 记忆整理,UltraPlan503
09会话持久化JSONL 追加存储,恢复/分叉/搜索,跨会话记忆411
10上下文组装System Prompt 分层,Token 预算分配,动态附件,斜杠命令473
11压缩系统4 层压缩(微 → 截断 → 自动 → 紧急),电路断路器,Prompt Cache 共享372
12启动与引导Import-Gap 并行,快速路径分发,记忆化初始化,state.ts 叶模块模式393
13桥接系统CLI ↔ IDE WebSocket 桥接,3 种 Spawn 模式,Chrome 扩展集成346
14UI 与状态管理Fork Ink + React 19,终端中的 W3C 事件模型,35 行 Store,Vim 状态机980
15服务层与 APIqueryModel() 700 行核心,多提供商工厂,SSE 流管道,重试引擎691
16基础设施与配置Bootstrap 单例,5 层设置合并,安全存储,CLAUDE.md 记忆系统876

合计:16 篇深度解析 + 本总纲,共 8,600+ 行架构分析。


§3 阅读顺序:六条认知路径

00 overview

路径名称适合人群篇章
🟢 A核心循环初次阅读者00 → 12 → 01 → 02
🔵 B安全与资源安全工程师、成本优化者→ 06 → 07 → 10 → 11
🟣 C协作与扩展插件开发者、多 Agent 构建者→ 03 → 08 → 04 → 05
🟠 D基础设施后端工程师、平台团队→ 15 → 16 → 09
🔴 E体验层UI 开发者、IDE 集成者→ 13 → 14
🟡 F暗面隐私研究者、运维工程师→ 17

最小可行阅读:仅路径 A(4 篇,~2,100 行)即可获得 60% 的架构理解。加上路径 B 达到 85%。路径 F 是独立的压轴篇——在任意路径之后阅读,了解生产环境中的遥测管道、模型代号隐匿和远程运营控制系统。


第二部分 — 核心架构速览

§4 Harness:大脑周围的身体

LLM 是大脑,Harness 是其他一切——赋予大脑感知、行动、记忆和安全的运行时基础设施:

能力实现大脑看到的
感知文件FileReadTool, GlobTool, GrepTool"我能看到代码库"
修改代码FileEditTool, FileWriteTool"我能修改东西"
执行命令BashTool(沙箱化)"我能运行和测试"
搜索网络WebSearchTool, WebFetchTool"我能查资料"
与用户交互AskUserQuestionTool, 权限对话框"我能提问"
分派工作AgentTool, TeamCreate, SendMessage"我能委派任务"
记忆CLAUDE.md, memdir, auto-memory"我有长期记忆"
扩展能力MCPTool, SkillTool, Plugin 系统"我能学新技能"

System Prompt 的分层构建:

System Prompt 构建(按 Token 优先级排序):
  1. 核心身份与规则    ← 我是谁,能/不能做什么
  2. 工具描述(42+)   ← ~10K+ tokens 的能力定义
  3. Git 状态与项目上下文 ← 当前分支、最近提交
  4. CLAUDE.md 内容    ← 项目级指令
  5. 用户/企业规则     ← 偏好、组织策略
  6. 动态附件          ← 技能发现、记忆注入、MCP 资源

→ 深度解析: EP12: 启动与引导 | EP16: 基础设施


§5 核心循环:12 步状态机

Claude Code 不是"发送提示,得到回答",而是一个 while(true) 循环——将单次调用的 LLM 变成迭代式 Agent 的核心放大器:

步骤名称目的
1applyToolResultBudget裁剪超大工具结果
2snipCompact截断最旧对话轮次
3microcompact清理过期工具输出(时间衰减)
4contextCollapse折叠冗余上下文
5autocompactAI 生成对话摘要
6tokenWarningState预算检查与用户告警
7callModel流式 API 调用
8StreamingToolExecutor边流式输出边执行工具
9stopHooks评估停止条件
10tokenBudget check硬预算限制
11getAttachmentMessages注入记忆、技能发现
12state transition更新状态,继续循环

错误恢复策略矩阵: 429 → 指数退避;529 → 降级到 Sonnet;prompt-too-long → 紧急压缩;max_output_tokens → 自动提升 8K→64K。

→ 深度解析: EP01: QueryEngine


§6 工具系统:契约式能力边界

每个工具实现 30+ 方法的完整契约——身份、执行、安全、并发、UI 渲染。buildTool 工厂提供 fail-closed 默认值(isConcurrencySafe: falseisReadOnly: false)。三层工具过滤确保模型只看到当前上下文适用的工具,assembleToolPool() 的稳定排序保证 Prompt Cache 键稳定。

BashTool 是最复杂的工具(~156K 代码),采用 6 层纵深防御——从安全包装器剥离到 tree-sitter AST 解析再到 macOS Seatbelt OS 级沙箱。

→ 深度解析: EP02: 工具系统 | EP06: Bash 引擎


§7 上下文管理:最稀缺的资源

四层压缩保持系统活力: Layer 0(API 侧自动清除)→ Layer 1 微压缩(时间衰减清理旧结果)→ Layer 2 截断(丢弃最旧轮次)→ Layer 3 自动压缩(AI 生成摘要,带电路断路器)→ Layer 4 紧急压缩(仅在 API 返回 prompt-too-long 时触发)。

Token 估算三级精度: 粗略(bytes/4,零成本)→ 代理(Haiku usage.input_tokens,便宜)→ 精确(countTokens API,准确但慢)。

Prompt Cache 三层策略 + Beta header 锁存保持缓存键稳定,避免 12 倍成本惩罚。

→ 深度解析: EP10: 上下文组装 | EP11: 压缩系统


§8 权限与安全:地基而非天花板

安全采用纵深防御——每层假设上一层已被绕过:工具级验证 → 7 源权限规则合并 → Bash AST 安全分析(23 种注入检测 + fail-closed)→ 投机性 YOLO 分类器(2 秒超时)→ 用户确认对话框 → OS 级沙箱。

设计原则: 安全相关 fail-closed(未知 → 拒绝);可用性相关 fail-open(策略服务宕机 → 允许所有,使用本地缓存)。

→ 深度解析: EP07: 权限管道 | EP06: Bash 引擎


§9 多 Agent:从独奏到交响乐

当任务超出单一上下文窗口时,系统分治而非压缩。三种执行后端自动检测(iTerm2 标签页 / tmux 面板 / 进程内 AsyncLocalStorage)。七种任务类型覆盖所有后台工作。团队协调使用 TaskList 共享状态 + SendMessage 异步通信 + 结构化消息类型。UltraPlan 模式启用分层规划。

→ 深度解析: EP03: 协调器 | EP08: Agent 集群


§10 Skill 与 Plugin:自我进化的架构

Skill 是可复用的 Prompt 工作流(YAML 前置元数据 + Markdown),6 种来源层级合并。Plugin 是组合单元(skills + hooks + mcpServers 捆绑)。MCP 是万能扩展管道(6 种传输类型,工具发现,OAuth 认证)。Hook 系统 提供 20 种事件类型的全生命周期拦截。

→ 深度解析: EP04: Plugin 系统 | EP05: Hook 系统


第三部分 — 工程卓越

§11 七个值得研究的工程实践

11.1 编译时死代码消除

feature('VOICE_MODE') 在编译时被替换为 true/falsefalse 分支被 Bun 打包器完全移除。三种条件加载层级共存:编译时 DCE → 运行时环境检查 → 运行时能力检测。

11.2 循环依赖消除:叶模块模式

bootstrap/state.ts(~55KB)被所有模块依赖,解决方案是让它成为依赖图的叶节点——禁止从 src/ 导入任何东西。这不是建议,而是由自定义 ESLint 规则(custom-rules/bootstrap-isolation强制执行的架构约束。

11.3 35 行 Store 替代 Redux

35 行 createStore 函数提供 getState/setState/subscribe 接口,配合 React 19 的 useSyncExternalStore 完成状态管理。Object.is 引用相等跳过避免不必要的重渲染。依赖成本:0 字节。

11.4 Fork Ink:在终端中构建浏览器

原版 Ink 的 LegacyRoot → ConcurrentRoot(React 19),无事件系统 → W3C 捕获/冒泡模型,单缓冲 → 双缓冲 + ANSI diff。渲染管线:stdin → 按键解析 → DOM 事件分发 → React 更新 → Yoga 布局 → 屏幕缓冲 → ANSI diff → stdout(16ms 节流)。

11.5 Vim 模式:教科书级状态机

四态有限状态机:Normal → Insert / Operator Pending / Find Pending。每个状态有明确的进入/退出动作和有限的状态转换集——行为可预测、可测试、可扩展。

11.6 Import-Gap 并行化

import 语句之间启动异步操作,利用 ES 模块评估的"空闲窗口"(~135ms)作为免费并行时间。无需 Promise.all,只需把异步启动放在 import 之间。

11.7 Fail-Open 与 Fail-Closed 的工程抉择

Fail-Closed(安全优先): Bash 解析错误 → 拒绝执行;权限超时 → 默认拒绝。Fail-Open(可用性优先): 策略加载失败 → 允许所有;远程配置超时 → 用本地缓存;GrowthBook 不可用 → 用默认值。边界清晰:涉及用户数据/系统访问用 fail-closed,涉及配置/外部服务用 fail-open。

→ 深度解析: EP12: 启动 | EP14: UI 与状态 | EP16: 基础设施


第四部分 — 独特视角

§12 第一人称视角:我是如何运作的

12.1 我的思维循环

每次工具调用都是一次完整的 API 往返。你感受到的"思考 → 行动 → 观察"循环,在底层是:API 响应(tool_use)→ Harness 执行 → 结果注入 → 下一次 API 调用。修复一个 bug 可能需要 5 次 API 调用:读文件 → 搜索 → 确认 → 编辑 → 测试。

12.2 我的并行能力

我可以在一次 API 响应中调用多个工具,Harness 通过 StreamingToolExecutor 并行执行所有 isConcurrencySafe: true 的工具。读操作并行,写操作串行。

12.3 我的上下文感知

我通过六个通道感知世界:System Prompt(我的"DNA")、CLAUDE.md(我的"项目记忆")、对话历史(我的"短期记忆")、工具结果(我的"感官")、Memory/memdir(我的"长期记忆")、动态附件(我的"外部知识")。

12.4 我的局限性

有限的上下文窗口 → 4 层压缩自动管理;不能直接执行代码 → BashTool 代劳;可能输出不安全命令 → 6 层安全管道拦截;单次输出有限 → max_output_tokens 自动提升;可能产生幻觉 → 工具结果提供事实反馈;API 不稳定 → 重试+降级+错误恢复;单一上下文不够 → 多 Agent 分治。

12.5 我为什么能高效工作

42+ 种工具覆盖几乎所有场景;可以迭代试错;可以并行化;有跨会话记忆;被安全约束(用户放心给权限);能自我修复(错误恢复机制)。


第五部分 — 可迁移的设计模式

§13 你可以带走的设计模式

以下模式从 17 篇架构分析中提炼而来。每条遵循场景 → 方案 → 效果闭环结构,可直接应用于任何 Agentic 系统、CLI 工具或复杂 TypeScript 应用。

#模式核心洞察来源
1Import-Gap 并行预取在 ES 模块评估间隙获得免费并发EP12
2AsyncGenerator 状态机yield = 天然背压 + 可取消 + 可组合EP01
3多层压缩管道逐级升级成本:便宜 → 昂贵,各层独立电路断路EP10, EP11
4纵深防御安全每层假设上一层已被绕过EP06, EP07
5Fail-Closed + Fail-Open安全默认拒绝;服务优雅降级EP07, EP16
6Schema 驱动注册一份 Zod Schema → 验证 + API + 权限 + UIEP02
7投机执行 + 逐级升级在确认需要之前就启动昂贵检查EP07
8叶模块隔离被依赖最多的模块不导入任何东西;ESLint 强制EP12, EP16
9锁存模式一旦激活永不关闭,防止缓存键不稳定EP15
10Agent 分治用独立上下文窗口的子 Agent 突破容量限制EP03, EP08
1135 行替代整个库只写你需要的 API 表面EP14
12错误恢复是一等公民每种错误码 → 专指恢复策略EP01, EP15
13Stale-While-Error(独有发现)读取失败时返回上次已知好值EP16
14闭包工厂替代 Class(独有发现)函数返回对象,非类实例;代际计数器防竟态EP15, EP16

详解:锁存模式(Pattern 9)

场景: API beta header 影响 Prompt Cache 键。问题: 中途切换 header 导致所有缓存失效(12 倍成本增加)。方案: 三态锁存——null(未知)→ true(锁定)→ 永远保持 true效果: 整个会话缓存键稳定,一个决策,无翻转。

详解:闭包工厂(Pattern 14)

场景: LSP 服务器管理器需要私有状态 + 公共接口。问题: Class 带来继承诱惑和 this 绑定问题。方案: 工厂函数返回闭包对象,私有状态在闭包作用域中。代际计数器(++generationCounter)防止过期的异步操作覆盖新状态。效果: 比 class 更干净的 API,无 this 困惑。


结语

Claude Code 的强大不是来自某个天才般的设计决策,而是来自数百个正确工程选择的累积效应

  • 启动优化节省的每一毫秒
  • 纵深防御拦截的每一个危险操作
  • 多层压缩保住的每一个 token
  • 缓存稳定性避免的每一次重复计算
  • 错误恢复挽救的每一个即将中断的会话
  • Agent 编排倍增的每一个上下文窗口

共同的主线:尊重每一个资源——时间、token、安全、用户信任。

                    ╭─────────────────────────╮
                    │                         │
                    │   尊重每一个资源。        │
                    │                         │
                    │   从每一个故障中恢复。     │
                    │                         │
                    │   迭代直到完成。          │
                    │                         │
                    ╰─────────────────────────╯

下一步: 选择一条阅读路径,深入各篇章。每篇 15-30 分钟,将改变你对 Agentic 系统设计的思考方式。


本文档是 Claude Code 深度解析 系列的一部分——17 篇架构分析,覆盖 8,600+ 行技术内容,中英双语提供。


下一篇: → 01 — 查询引擎

基于 MIT 许可证发布