# Claude Code 源码架构总览 > 基于 2026-03-31 公开暴露的源码快照分析 ## 项目基本信息 | 属性 | 值 | |------|-----| | 语言 | TypeScript (strict) | | 运行时 | Bun | | 终端 UI | React + Ink | | CLI 框架 | Commander.js | | Schema 验证 | Zod v4 | | 代码搜索 | ripgrep | | 通信协议 | MCP SDK, LSP | | API | Anthropic SDK | | 遥测 | OpenTelemetry + gRPC | | 特性开关 | GrowthBook / Bun feature flags | | 认证 | OAuth 2.0, JWT, macOS Keychain | | 规模 | ~1,900 文件, 512,000+ 行代码 | ## 整体架构 ```mermaid graph TB subgraph 用户层 CLI[CLI 入口
main.tsx] IDE[IDE 扩展
VS Code / JetBrains] Desktop[桌面应用] Mobile[移动应用] end subgraph 命令层 CMD[命令注册器
commands.ts] CMD_IMPL[命令实现
commands/ ~82个] end subgraph 工具层 TOOL_REG[工具注册器
tools.ts] TOOL_IMPL[工具实现
tools/ ~40个] TOOL_TYPE[工具类型定义
Tool.ts] end subgraph 核心引擎 QE[查询引擎
QueryEngine.ts] QS[查询管道
query.ts] CTX[上下文管理
context.ts] end subgraph 服务层 API_SVC[API 服务
services/api/] MCP_SVC[MCP 服务
services/mcp/] AUTH_SVC[OAuth 认证
services/oauth/] LSP_SVC[LSP 服务
services/lsp/] ANALYTICS[分析/特性开关
services/analytics/] end subgraph 基础设施 BRIDGE[IDE 桥接
bridge/] COORD[多代理协调
coordinator/] PLUGINS[插件系统
plugins/] SKILLS[技能系统
skills/] PERM[权限系统
hooks/toolPermission/] end subgraph UI 层 COMP[UI 组件
components/ ~140个] SCREENS[全屏界面
screens/] VIM[Vim 模式
vim/] KB[快捷键
keybindings/] end CLI --> CMD --> CMD_IMPL CLI --> TOOL_REG --> TOOL_IMPL IDE --> BRIDGE --> QE QE --> QS --> API_SVC TOOL_IMPL --> PERM QE --> CTX CMD_IMPL --> TOOL_IMPL TOOL_IMPL --> MCP_SVC TOOL_IMPL --> LSP_SVC QE --> ANALYTICS BRIDGE --> AUTH_SVC CLI --> COMP --> SCREENS COMP --> VIM COMP --> KB COORD --> TOOL_IMPL PLUGINS --> TOOL_REG SKILLS --> CMD ``` ## 目录结构 ``` src/ ├── main.tsx # 入口:Commander.js CLI + React/Ink 渲染 ├── commands.ts # 命令注册器 ├── tools.ts # 工具注册器 ├── Tool.ts # 工具类型定义 ├── QueryEngine.ts # LLM 查询引擎 ├── query.ts # 查询管道 ├── context.ts # 系统/用户上下文收集 ├── cost-tracker.ts # Token 成本追踪 │ ├── commands/ # 命令实现 (~82 个命令, 189 个文件) ├── tools/ # 工具实现 (~40 个工具) ├── components/ # Ink UI 组件 (~140 个) ├── hooks/ # React hooks (~70 个) ├── services/ # 外部服务集成 ├── screens/ # 全屏界面 (Doctor, REPL, Resume) ├── types/ # TypeScript 类型定义 ├── utils/ # 工具函数 │ ├── bridge/ # IDE 和远程控制桥接 (30+ 文件) ├── coordinator/ # 多代理协调器 ├── plugins/ # 插件系统 ├── skills/ # 技能系统 ├── keybindings/ # 快捷键配置 ├── vim/ # Vim 模式 ├── voice/ # 语音输入 ├── remote/ # 远程会话 ├── server/ # 服务模式 ├── memdir/ # 持久化内存目录 ├── tasks/ # 任务管理 ├── state/ # 状态管理 (AppState) ├── migrations/ # 配置迁移 ├── schemas/ # 配置 Schema (Zod) ├── entrypoints/ # 初始化逻辑 ├── ink/ # Ink 渲染器包装 ├── buddy/ # 伙伴精灵 ├── native-ts/ # 原生 TypeScript 工具 ├── outputStyles/ # 输出样式 ├── query/ # 查询管道子模块 ├── assistant/ # 助手相关 ├── bootstrap/ # 引导逻辑 ├── cli/ # CLI 相关 ├── constants/ # 常量定义 ├── context/ # 上下文子模块 ├── moreright/ # 扩展权限 └── upstreamproxy/ # 代理配置 ``` ## 启动流程 ```mermaid sequenceDiagram participant User as 用户 participant Main as main.tsx participant Commander as Commander.js participant MDM as MDM 设置 participant Keychain as macOS Keychain participant GB as GrowthBook participant Ink as Ink 渲染器 participant REPL as REPL 主循环 User->>Main: claude [command] Main->>MDM: 并行预取 MDM 设置 Main->>Keychain: 并行预取 Keychain Main->>GB: 并行初始化 GrowthBook Main->>Commander: 解析 CLI 参数 Commander->>Main: 路由到对应命令 Main->>Ink: 初始化 React/Ink 渲染 Ink->>REPL: 启动 REPL 主循环 REPL->>REPL: 进入查询-响应循环 ``` ## 核心设计模式 ### 1. 并行预取 (Parallel Prefetch) 启动时并行预取 MDM 设置、Keychain 读取和 API 预连接,优化启动时间。 ### 2. 惰性加载 (Lazy Loading) 重型模块(OpenTelemetry、gRPC、分析等)通过动态 `import()` 延迟加载。 ### 3. 特性开关 (Feature Flags) 通过 Bun 的 `bun:bundle` 实现编译时死代码消除: ```typescript const SleepTool = feature('PROACTIVE') || feature('KAIROS') ? require('./tools/SleepTool/SleepTool.js').SleepTool : null ``` ### 4. 代理集群 (Agent Swarms) 通过 `AgentTool` 生成子代理,`coordinator/` 处理多代理编排,`TeamCreateTool` 支持团队级并行工作。 ### 5. 工具搜索延迟发现 `ToolSearchTool` 允许在工具数量超过阈值时延迟加载工具定义,减少 prompt token 开销。