犀牛鸟 2026 研究笔记 estelledc.github.io

Claude Code 架构精读

:本文是早期总览,后续拆分为 5 篇模块精读。如需最新架构分析,请参阅 总架构(五层架构、queryLoop)及其余模块文档。两者内容有交叉但侧重点不同——本文偏全景概览,模块精读偏实现细节。

项目定位

Claude Code 是 Anthropic 官方的 AI 编程助手,以 CLI 为核心形态,同时支持桌面应用、Web 端(claude.ai/code)和 IDE 扩展(VS Code / JetBrains)。它不是一个简单的”带工具的聊天机器人”,而是一个完整的 AI 辅助软件开发操作系统

技术栈:Bun runtime + TypeScript + React/Ink(终端 UI)+ Commander.js(CLI 解析)+ Zod v4(schema 校验)+ MCP/LSP 协议

规模:约 1,900 个 TypeScript 文件,512,000+ 行代码,44 个 feature flags 控制未发布功能。

源码泄露事件:2026-03-31,Anthropic 在发布 npm 包 v2.1.88 时未排除 .map(source map)文件,Bun 打包器默认生成的 source map 随生产包发布,任何人下载后可一键还原完整 TypeScript 源码。


五层架构模型

学术论文 arXiv:2604.14228(”Dive into Claude Code”)揭示了一个关键数据:仅 1.6% 的代码是 AI 决策逻辑,98.4% 是确定性基础设施。这意味着 Claude Code 的核心竞争力不在模型本身,而在围绕模型构建的 harness(运行外壳)。

┌─────────────────────────────────────────────────────────────┐
│  Layer 5: 表现层 (Presentation)                              │
│  React/Ink 终端 UI · Vim 模式 · 主题系统 · 进度动画          │
├─────────────────────────────────────────────────────────────┤
│  Layer 4: 意图层 (Intent)                                    │
│  ~80 斜杠命令 · Skill 系统 · Plugin 架构 · 输入路由          │
├─────────────────────────────────────────────────────────────┤
│  Layer 3: 规划层 (Planning)                                  │
│  QueryEngine 核心循环 · System Prompt 组装 · 上下文压缩       │
├─────────────────────────────────────────────────────────────┤
│  Layer 2: 执行层 (Execution)                                 │
│  43+ 工具 · 7 阶段 dispatch pipeline · 流式工具执行器         │
├─────────────────────────────────────────────────────────────┤
│  Layer 1: 基础设施层 (Infrastructure)                        │
│  权限系统 · MCP 生态 · Bridge(IDE) · 会话管理 · 记忆系统     │
└─────────────────────────────────────────────────────────────┘

核心引擎:QueryEngine

QueryEngine 是 Claude Code 的心脏,驱动完整的 LLM 对话循环:

// 简化的核心循环(实际约 1300 行)
class QueryEngine {
  async *submitMessage(): AsyncGenerator<SDKMessage> {
    // 1. 构造 system prompt(含 coordinator 上下文)
    // 2. processUserInput(预处理用户输入)
    // 3. 调用 API(流式)
    // 4. 处理流式响应
    // 5. 管理 tool calls(并行/串行分区)
    // 6. 循环直到模型不再调用工具
  }
}

关键机制

机制 作用
maxTurns 限制单次对话的工具调用轮数
maxBudgetUsd / taskBudget 成本上限控制
自动 compaction 上下文窗口满时自动压缩历史
recordTranscript 会话持久化,支持 resume
SyntheticOutputTool 结构化输出(强制模型按 schema 返回)
Prompt Cache 通过字节一致的请求前缀最大化缓存命中

任务类型系统

Task.ts 定义了 7 种异步任务类型,直接揭示了架构的全部工作模式:

TaskType 前缀 用途
local_bash b 本地 shell 命令执行
local_agent a 本地子 agent(AgentTool 产生)
remote_agent r 远程 CCR 环境中的 agent
in_process_teammate t 进程内 teammate(Swarm 系统)
local_workflow w 本地 workflow 脚本执行
monitor_mcp m MCP 服务器监控
dream d 后台”做梦”(知识整理)

每个任务有统一的状态机:pending → running → completed/failed/killed


工具系统概览

Claude Code 拥有 43+ 个工具,按功能域分组:

文件操作:FileRead、FileWrite、FileEdit、GlobTool、GrepTool、NotebookEdit

Shell 执行:BashTool、PowerShell、REPLTool

Agent/任务管理:AgentTool、TaskCreate/Get/List/Output/Stop/Update、TeamCreate/TeamDelete、SendMessage、TodoWrite

Web:WebFetchTool、WebSearchTool

MCP 集成:MCPTool、McpAuth、ListMcpResources、ReadMcpResource

模式切换:EnterPlanMode/ExitPlanMode、EnterWorktree/ExitWorktree

调度:ScheduleCron(Create/Delete/List)、RemoteTrigger、SleepTool

其他:SkillTool、ConfigTool、BriefTool、LSPTool、ToolSearch、SyntheticOutputTool

每个工具共享统一的 30 方法接口(Tool<Input, Output, P>),包含 inputSchema、checkPermissions、call、prompt、各种 render 方法。


工具执行管道

工具调用经过 7 个阶段:

用户消息 → QueryEngine → API 流式响应
                              ↓
                    StreamingToolExecutor
                    (流完整即启动,隐藏 ~1s 延迟)
                              ↓
                    ┌─────────────────────┐
                    │ 1. 验证 tool name    │
                    │ 2. 推测性分类器      │
                    │ 3. PreToolUse hooks  │
                    │ 4. 权限检查          │
                    │ 5. tool.call()       │
                    │ 6. PostToolUse hooks │
                    │ 7. Analytics event   │
                    └─────────────────────┘
                              ↓
                    并发分区:
                    - isConcurrencySafe=true → Promise.all 并行
                    - isConcurrencySafe=false → 串行执行

流式工具执行器StreamingToolExecutor)是性能关键:当 API 流式返回多个 tool_use blocks 时,已完整接收的工具立即启动执行,不等待整个响应完成。这隐藏了约 1 秒的工具延迟。

兄弟 abort 机制:如果一个 Bash 工具执行出错,会取消同一轮中尚未启动的兄弟工具调用,避免在错误基础上继续操作。


三层记忆系统

层次 存储位置 生命周期 用途
Session memory 会话 transcript 单次会话 对话上下文
Cross-session memory ~/.claude/memory/ 持久 用户偏好、项目知识
Project memory CLAUDE.md / .claude/ 持久 项目级配置和约定

记忆文件使用 frontmatter 格式,支持 [[name]] 双向链接。MEMORY.md 是索引文件,每次会话加载到上下文中。


Feature Flag 系统

Claude Code 通过 GrowthBook + bun:bundlefeature() 函数实现死代码消除和渐进式发布:

Feature Flag 功能
COORDINATOR_MODE Coordinator 多 agent 模式
ULTRAPLAN 远程深度规划
WORKFLOW_SCRIPTS Dynamic Workflow 脚本
FORK_SUBAGENT Fork 子 agent
UDS_INBOX Peers/inbox 系统
KAIROS 长期运行助手模式
PROACTIVE 主动模式
BRIDGE_MODE IDE 桥接
VOICE_MODE 语音输入
HISTORY_SNIP 历史截断/压缩
BUDDY 伴侣精灵
TORCH 调试/性能工具
MCP_SKILLS MCP 提供的 skills

性能工程

9 阶段并行启动:独立初始化任务并行执行,将启动关键路径压缩到约 235ms。

Prompt Cache 优化:fork 机制通过构建字节一致的 API 请求前缀最大化 cache 命中率。所有 fork 子进程共享相同的请求前缀。

工具延迟隐藏:StreamingToolExecutor 在模型生成期间预解析执行工具,用户感知延迟减少约 1 秒。

懒加载工具:通过 shouldDefer 标记,非常用工具不加载到初始 prompt 中,需要通过 ToolSearch 按需加载,节省 token。


System Prompt 结构

从 system_prompts_leaks 仓库获取的 Claude Code Opus 4.8 系统提示词揭示了完整的 prompt 架构:

<system-reminder>  ← harness 注入的延迟工具列表
  可用但未加载 schema 的工具(需 ToolSearch 激活)
</system-reminder>

<system-reminder>  ← MCP 服务器使用说明
  各 MCP 服务器的工具使用指南
</system-reminder>

<system-reminder>  ← 可用 Skills 列表
  deep-research / update-config / verify / code-review / ...
</system-reminder>

# System Prompt    ← 核心身份和行为规范
  角色定义 + 安全边界 + 输出格式

# Harness          ← 运行环境约束
  工具权限模式 / hook 机制 / 代码引用格式

# Memory           ← 记忆系统规范
  文件格式 / 索引维护 / 去重规则

# Environment      ← 运行时环境信息
  工作目录 / 平台 / 模型版本 / 可用形态

# Context management ← 上下文压缩说明

关键设计洞察

  1. Harness > Model:98.4% 确定性代码 + 1.6% AI 决策逻辑。核心竞争力在 harness 而非模型。

  2. Fail-closed 安全:权限系统默认拒绝,工具调用必须通过权限检查才能执行。

  3. 编排显式化:从 Coordinator 的 prompt 注入到 Dynamic Workflows 的代码化脚本,编排逻辑越来越显式和可审计。

  4. 模型即 Runtime:Claude Code 将 LLM 从”对话伙伴”变成了”执行引擎”——模型决定调用什么工具、以什么顺序、是否并行。

  5. 渐进式降级:从远程 CCR(最强)→ 本地 Opus(强)→ Haiku 子 agent(快),根据任务复杂度自动选择执行策略。


参考资源

资源 链接
源码泄露分析(学术) arXiv:2604.14228 — VILA Lab
System Prompt 档案 github.com/asgeirtj/system_prompts_leaks
架构分析仓库 github.com/VILA-Lab/Dive-into-Claude-Code
工具系统逆向 github.com/zong0728/claude-code-internals
Swarm 机制分析 github.com/cablate/claude-code-research
50 课完整逆向 github.com/stuinfla/claude-code-internals
官方文档 code.claude.com/docs