乐于分享
好东西不私藏

【深度】Claude Code 源码大拆解:1902个文件里藏着什么秘密?

【深度】Claude Code 源码大拆解:1902个文件里藏着什么秘密?

一、它到底是什么?

Claude Code 是 Anthropic 官方推出的 CLI/终端 AI 编程助手。

官方给它的定位语只有一句话:

You are Claude Code, Anthropic official CLI for Claude.

它的能力边界非常广:在终端里直接与 Claude 模型交互,执行代码编辑、文件操作、Shell 命令、Git 操作、MCP 服务调用等任务。支持交互式 REPL、非交互式管道模式、远程桥接模式(Bridge)、SDK 嵌入模式、以及 Assistant/Daemon 后台常驻模式。

换句话说——这不是一个简单的聊天机器人,而是一个完整的编程工作台

二、技术栈:刀法精准

先看一下它的技术选型:

  • 语言
    :TypeScript(严格模式)
  • 运行时
    :Bun(用到了 bun:bundle feature flags 和 MACRO 宏)
  • UI 框架
    :React + Ink(终端渲染,别忘了这是纯终端工具)
  • API 客户端
    :@anthropic-ai/sdk(Beta Messages API)
  • Schema 校验
    :Zod v4
  • 协议扩展
    :MCP(Model Context Protocol)
  • 命令行框架
    :Commander(@commander-js/extra-typings)
  • 构建工具
    :Bun bundler + Dead Code Elimination(feature flags)

有意思的是用 Bun 作为运行时和构建工具——这对一个 CLI 工具来说是合理的,因为 Bun 的启动速度比 Node 快不少。

三、目录结构:一个工业级 CLI 的规模

src/ 目录下的模块划分非常清晰,说明这个项目的工程化程度相当高:

main.tsx(~4700行,总控逻辑)、commands/(76个斜杠命令)、tools/(43个内置工具)、query.ts(~1730行核心推理)、services/(21个模块)、components/(30个UI组件)、hooks/(104个React Hooks)、plugins/(插件系统)、skills/(技能系统)、mcp/(MCP协议)、coordinator/(多智能体协调)、memdir/(记忆目录)、server/(内嵌服务器)……

注意几个关键数字:

  • main.tsx 单文件 4700行——这是整个 CLI 的总控逻辑
  • query.ts 约 1730行——这是核心推理循环
  • 43个内置工具、76个斜杠命令
  • utils/ 下有 287个子项的工具函数库

这是一个真正意义上的工业级 CLI 项目。

四、启动流程:精心设计的性能优化

Claude Code 的启动流程做了大量性能优化:

entrypoints/cli.tsx(壳入口)→ main.tsx(主入口)→ entrypoints/init.ts(初始化)→ Commander 命令解析 → OAuth/Auth 认证 → GrowthBook 功能开关 → Tools 注册(43个内置工具)→ MCP 预取 → Plugin/Skill 初始化 → launchRepl()(进入交互式REPL主循环)

优化手段包括:

  • 并行预取
    :MDM配置、Keychain凭据在import阶段就并行启动子进程
  • 快路径
    :–version 零模块加载返回;–dump-system-prompt 等各有独立快路径
  • 惰性导入
    :大量使用 require() 动态加载打破循环依赖
  • Dead Code Elimination
    :通过 feature() 宏在构建期消除未启用功能的代码

五、核心推理循环:整个系统的心脏

query.ts 约1730行,实现了与 Claude API 的完整交互循环:

用户输入 → processUserInput → normalizeMessagesForAPI → API 流式调用(Anthropic Beta Messages API) → StreamEvent 处理 → AssistantMessage 累积 → Tool Use 检测 → canUseTool 权限校验 → Tool 执行 → ToolResult 返回 → 自动压缩检查 → autoCompact/reactiveCompact/contextCollapse → 循环回 API 或结束

关键特性:

  • 流式响应
    :支持SSE流式接收,实时渲染
  • 思维链支持
    :extended thinking / interleaved thinking
  • 自动压缩
    :达到token阈值时自动触发上下文压缩
  • Reactive Compact
    :反应式上下文折叠(feature flag控制)
  • Tool Use Summary
    :工具调用结果的自动摘要

六、工具系统:43个内置工具,权限分层

Claude Code 的工具系统设计非常精巧:通过 getTools() 统一注册,支持内置工具(43个)、MCP 工具、插件工具,统一合并到 useMergedTools。权限核心是 canUseTool 校验,分层控制:内核工具(直接可用)、标准工具(需授权)、危险工具(需明确确认)、禁止工具。

七、命令系统:76个斜杠命令

commands/ 目录下有76个斜杠命令,覆盖:文件编辑(/clipboard、/compose、/edit)、Git操作(/git、/commit)、任务管理(/task、/retry)、开发(/doctor、/lsp)、设置(/model、/permission)等。

八、UI层:Ink + React 的终端美学

Claude Code 用 React 来渲染终端 UI。ink/ 目录是自定义 Ink 引擎,在标准 Ink 之上做了大量定制。30个组件模块覆盖:teams/(团队面板)、mcp/(MCP管理)、skills/(技能管理)、Settings/、PromptInput/、grove/(可视化树)等。这说明它在用户体验上投入了大量工程资源——不是能用就行,而是要在终端里做到接近 IDE 的交互体验。

九、多智能体架构:不只是单人工具

Claude Code 远不止是一个单人 CLI,它内置了多智能体协作能力:

Agent 系统:AgentTool 创建子 Agent 执行任务(每个 Agent 有独立颜色标识);Agent Swarms(团队模式)通过 TeamCreateTool/TeamDeleteTool 管理;Coordinator Mode 多智能体协调模式。

任务类型:local_bash(本地Shell)、local_agent(本地Agent)、remote_agent(远程Agent)、in_process_teammate(进程内队友)、local_workflow(本地工作流)、dream(后台推理)。

Bridge 模式:远程桥接能力,支持 JWT Token 管理、会话生命周期、容量感知唤醒、可信设备令牌、Worktree 管理。

十、Feature Flags:工程级别的灵活性

Claude Code 大量使用 Bun 的 feature() 宏实现编译期 Dead Code Elimination:

构建时被替换为 true/false,触发 DCE,消除未启用功能的代码。

已识别的 Feature Flags 超过30个,包括:PROACTIVE(主动模式)、KAIROS(Kairos集成)、COMPUTER_USE(计算机使用)、TEMPLATES(模板系统)、WEB_BROWSER_TOOL(浏览器自动化)、CONTEXT_COLLAPSE(上下文折叠)、TERMINAL_PANEL(终端面板)、VIM(Vim模式)、VOICE(语音模式)等。

这套机制让它可以在同一个代码库里,通过构建时切换支持完全不同的功能集,而不需要维护多套分支。

十一、Hooks 系统:104个 React Hooks

Claude Code 的 UI 交互完全靠 React Hooks 驱动,共104个,分为三类:

核心交互 Hooks:useCanUseTool(工具权限决策)、useTextInput、useVimInput、useVirtualScroll、useCommandKeybindings、useQueueProcessor、usePasteHandler、useArrowKeyHistory

服务集成 Hooks:useIDEIntegration(IDE集成)、useMergedTools(合并工具)、useMergedCommands、useMergedClients、useSettingsChange、useSwarmInitialization、useScheduledTasks

通知 Hooks(17个):覆盖模型迁移、速率限制、MCP连接状态、插件安装、LSP初始化、弃用警告等。

十二、MCP:一等公民待遇

Claude Code 对 MCP(Model Context Protocol)的支持是一等公民级别:

  • 多传输支持
    :stdio、sse、sse-ide、http、ws、sdk
  • 多作用域配置
    :local、user、project、dynamic、enterprise、claudeai、managed
  • 官方注册表
    :prefetchOfficialMcpUrls 预取官方 MCP 服务
  • 权限隔离
    :channelPermissions 按 MCP Server 隔离权限
  • 独立入口
    :entrypoints/mcp.ts 提供独立的 MCP Server 入口

MCP 工具同样注册到统一的工具系统中,与内置工具共享权限机制。

十三、成本与遥测:严肃的工程态度

Claude Code 内置了完整的成本追踪和遥测系统:

成本追踪(cost-tracker.ts + costHook.ts):Token统计(Input/Output/Cache Read/Cache Creation)、API耗时统计、按模型分类的使用量、会话成本USD计算、代码行变更统计、Web Search请求计数、进程退出时自动保存与显示。

遥测系统(services/analytics/):GrowthBook(功能开关+A/B实验)、Datadog(性能监控)、第一方事件日志(结构化事件)、启动性能分析(startupProfiler、headlessProfiler)。

十四、插件与技能系统:可扩展性的两层设计

Claude Code 的可扩展性通过两层实现:

插件系统(plugins/):内置插件(plugins/bundled/)、插件CLI命令(安装、卸载、更新)、市场集成、自动更新通知。

技能系统(skills/,20个文件):内置技能 + 自定义技能,技能管理 UI。

两层设计让普通用户可以通过技能(Skills)快速扩展功能,而高级用户可以通过插件(Plugins)做深度定制。

十五、关键设计模式:工程品质的体现

1. Dead Code Elimination(DCE):通过 Bun 的 feature() 宏在构建期消除未启用功能的代码。

2. 惰性加载打破循环依赖:大量使用 require() 动态加载。

3. Store + Context 状态管理:AppState + React Context 的组合。

4. 权限分层:工具按危险等级分层授权。

5. 消息归一化:normalizeMessagesForAPI 将各种来源的消息格式统一。

十六、总结

拆解完这份报告,最直观的感受是:Claude Code 不是用 AI 随便写写做出来的工具,而是一个工程级别的大型 TypeScript 项目。

从数据来看:1902个源文件、main.tsx单文件4700行、query.ts核心循环1730行、43个内置工具、76个斜杠命令、104个Hooks、287个工具函数、30+ Feature Flags。

这些数字背后,是一套经过精心设计的架构:启动优化、权限分层、工具注册、消息归一化、MCP集成、多智能体协作、成本追踪……每一个子系统都值得单独研究。

对于想深入理解 AI 编程工具工程实现的开发者来说,Claude Code 的源码是一个非常好的学习样本。官方开源这件事本身,也体现了 Anthropic 对 AI 安全性和可控性的重视——把代码公开,让社区审视,才是真的负责任。


创建了一个ai联盟群,想要通过ai做副业的,可以加群一起探讨,有好东西也会第一时间分享