乐于分享
好东西不私藏

Claude Code 凭什么是最强 AI 编程助手?51万行代码泄露后,我看到了Claude Code真正的“骨架”

Claude Code 凭什么是最强 AI 编程助手?51万行代码泄露后,我看到了Claude Code真正的“骨架”

点击蓝字 关注我们 持续更新

Claude Code 凭什么是最强 AI 编程助手?先看它的骨架

你以为的 AI 编程,和真正的 AI 编程

2026 年,“AI 写代码”已经不是什么新鲜事了。

打开 ChatGPT,把需求贴进去,等它吐出一段代码,复制,粘贴,跑一下,改改 bug——这大概是大多数人对”AI 编程”的全部想象。

但如果我告诉你,有一个 AI 工具,它能自己打开你的项目自己翻阅代码自己修改文件自己跑测试,发现测试没过还会自己回去改——你会不会觉得,这才是 AI 编程该有的样子?

这个工具叫 Claude Code,由 Anthropic 开发。它不是一个”对话框”,而是一个住在你终端里的自主程序员

今天,我们不聊怎么用它,我们来聊一个更有意思的问题——

🤔 一个能自主编程的 AI Agent,它的”身体”长什么样?


第一个震撼:这不是玩具,是个庞然大物

很多人第一次听说 Claude Code,可能以为它就是个”终端版 ChatGPT”——套个壳,调个 API,加点文件读写功能,完事。

2026 年 3 月底,Claude Code 的完整源码通过 npm 包中的 source map 文件意外泄露。当开发者们打开源码的那一刻,整个社区都沉默了:

  • • 📁 约 1,900 个 TypeScript 文件
  • • 📏 超过 51.2 万行代码
  • • 🔧 40+ 个内置工具
  • • ⌨️ 80+ 个斜杠命令
  • • 🎨 389 个 UI 组件文件
  • • 🪝 104 个自定义 React Hooks
规模感对比图

规模感对比图

51 万行代码是什么概念?Express.js 整个框架不到 2 万行,Vue.js 核心代码大约 3 万行。Claude Code 的代码量,顶得上十几个知名开源框架加在一起。

这显然不是一个”API 包装器”能解释的规模。它是一个完整的、工程化的软件系统

那么问题来了:这 51 万行代码,到底在干什么?


交响乐团:理解 Claude Code 架构的最佳类比

如果让我用一个类比来解释 Claude Code 的整体架构,我会选择交响乐团

想象一场大型交响乐演出。台上有几十位乐手,每人负责不同的乐器,但他们能协同演奏出气势磅礴的乐章。这背后需要什么?

🎼 乐谱——告诉每个人该演奏什么

🎻 乐手——各自精通自己的乐器

🎵 指挥——决定什么时候谁演奏、用多大的力度

📝 排练记录——记住之前演过的曲目和积累的经验

🔒 安保团队——确保没人冲上台乱来

Claude Code 的架构,恰好对应这五个角色:

交响乐团
Claude Code
核心职责
🎵 指挥
查询引擎

(Query Engine)
接收”任务”,决定调用谁、怎么调用
🎻 乐手
工具系统

(Tools)
40+ 个专业工具,各司其职执行具体操作
🎼 乐谱
上下文系统

(Context)
收集项目信息、组装提示词,告诉 AI “你在哪、要干嘛”
📝 排练记录
记忆系统

(Memory)
记住历史对话、项目规范、用户偏好
🔒 安保
权限安全系统

(Permissions)
每个操作都要过安检,防止 AI 越权

这五个模块,就是 Claude Code 的骨架


五大核心模块:拆开骨架看细节

🎵 指挥:查询引擎——整个系统的大脑

查询引擎是 Claude Code 最核心的模块,由两个关键文件组成:QueryEngine.ts(1,296 行)和 query.ts(1,730 行)。

它的工作方式是一个循环

  1. 1. 接收用户的输入
  2. 2. 把输入和上下文组装成完整的提示词
  3. 3. 发送给 Claude API
  4. 4. 解析模型的回复——如果模型说”我需要先看看某个文件”,那就调用对应的工具
  5. 5. 把工具的执行结果反馈给模型
  6. 6. 重复 3-5,直到模型觉得任务完成了

这个”想→做→看→再想”的循环,就是 Claude Code 能”自主编程”的核心秘密。它不是一问一答,而是一轮又一轮地自主推进,直到把事情做完。

🎻 乐手:工具系统——40+ 个专业选手

Claude Code 内置了超过 40 个工具,它们就像乐团里精通不同乐器的乐手:

  • • Bash 工具:能在终端里执行任意命令——跑测试、装依赖、查日志
  • • 文件编辑工具:能精准地修改代码文件中的某几行
  • • 搜索工具:集成 ripgrep,在整个代码库里闪电般搜索
  • • MCP 工具:能连接外部服务,比如数据库、API、浏览器

每个工具都是独立的模块,有自己的输入参数定义、执行逻辑、权限要求。当查询引擎”指挥”说”第二小提琴准备”,对应的工具就会站起来演奏自己的部分。

🎼 乐谱:上下文系统——AI 的”全局视野”

AI 模型本身是”无状态”的——每次调用,它都不记得上一次说了什么。上下文系统的工作,就是在每次调用前,把 AI 需要知道的一切都”塞”进提示词里

这些上下文包括:

  • • 系统上下文:当前的 git 状态、文件结构、操作系统信息
  • • 用户上下文:你在项目根目录写的 CLAUDE.md 文件——项目规范、编码偏好、特殊说明
  • • 对话历史:之前的对话轮次和工具调用结果
  • • 工具描述:当前可用的所有工具及其使用说明

这就像指挥在开演前,把总谱分发给每位乐手——你得知道整首曲子是什么,才能演好自己那个声部

📝 排练记录:记忆系统——越用越懂你

Claude Code 有一个 memdir/(持久化记忆目录)模块,它会记住:

  • • 你之前的对话和操作历史
  • • 你的项目结构和编码习惯
  • • 你在 CLAUDE.md 中写下的偏好和规范

这意味着,Claude Code 不只是一个工具,它会随着使用越来越”懂”你的项目。就像一个和你排练了很多次的乐团,哪怕你只说一句”从副歌开始”,他们就知道该怎么演。

🔒 安保:权限安全系统——给 AI 套上缰绳

让 AI 自主操作你的代码,听起来有点刺激。但 Claude Code 在安全上下了狠功夫。

每当模型说”我要执行一个 bash 命令”或”我要修改这个文件”,这个请求不会直接执行,而是要经过一条五级安检流水线

  1. 1. Deny 规则:有没有明确禁止这个操作?
  2. 2. 工具级别检查:这个工具本身允许这样用吗?
  3. 3. 安全检查:操作内容有没有风险?
  4. 4. 模式检查:当前的权限模式允许这样做吗?
  5. 5. AI 分类器:用另一个 AI 来判断这个操作是否安全

只有五道关卡全部通过,工具才会真正执行。这就像音乐厅的安保不只查票,还要过安检、核身份、检查包裹。


三种运行模式:不止在终端里

Claude Code 不只是一个终端工具。它设计了三种运行模式,覆盖不同的使用场景:

模式
使用场景
你可以理解为
CLI 模式
在终端里直接交互
乐团在音乐厅现场演出
MCP Server 模式
作为服务端,供 IDE 等客户端连接
乐团在录音棚里,等制作人远程指挥
SDK 嵌入模式
作为库被其他程序调用
乐团被请去给电影配乐,融入更大的制作中

这种”入口层”的抽象设计,让 Claude Code 的核心能力可以被各种场景复用——无论是你在终端里直接用,还是 VS Code 插件在幕后调用,底层跑的都是同一套引擎。


技术选型的叛逆与智慧

Claude Code 的技术选型,初看之下让很多人觉得”画风不对”:

🚀 Bun,不是 Node.js

在 Node.js 一统天下的 2026 年,Claude Code 选择了 Bun 作为运行时。为什么?快。

启动速度更快,模块加载更快,文件操作更快。对于一个需要频繁读写文件、启动子进程的编程助手来说,运行时的每一毫秒都是体验。Claude Code 甚至利用 Bun 的 bun:bundle 特性,在编译时就把用不到的代码剔除,让最终产物更精简。

⚛️ 终端里跑 React?

没错,Claude Code 用 React + Ink 来构建终端 UI。

“在终端里用 React?这也太杀鸡用牛刀了吧?”——很多人第一反应是这样的。但看看数据:389 个 UI 组件文件、104 个自定义 Hooks。这不是一个简单的命令行工具,而是一个有着复杂交互逻辑的终端应用。

React 的组件化、状态管理、生命周期——这些在 Web 开发中被验证过的范式,放到终端 UI 里同样管用。Ink 库让你可以用 JSX 写终端界面,就像写网页一样自然。当 UI 复杂度到了一定程度,React 不是杀鸡用牛刀,而是唯一能管住复杂度的选择

🏗️ 34 行的状态管理

Claude Code 没有用 Redux、MobX 这些”正统”状态管理库。它自己写了一个仅 34 行代码的 Store,配合 React 18 的 useSyncExternalStore 就搞定了全局状态管理。

这种”够用就好”的工程哲学,在整个项目中随处可见。不是为了炫技,不是为了”架构正确”,而是为了解决实际问题用最合适的方案


数据流全景:一次完整的”演出”

把所有模块串起来,一次完整的 Claude Code 交互是这样的:

你在终端输入:"帮我给登录接口加上参数校验"
     │
     ▼
📥 CLI 入口接收输入
     │
     ▼
🎼 上下文系统收集信息
   ├── git 状态:当前在 main 分支,有 3 个未提交文件
   ├── 项目结构:这是一个 Express 项目
   └── CLAUDE.md:项目要求使用 Zod 做校验
     │
     ▼
🎵 查询引擎组装提示词,发送给 Claude API
     │
     ▼
🤖 Claude 思考后回复:"我需要先看看登录接口的代码"
     │
     ▼
🔒 权限系统检查:读文件?五道安检,全部通过 ✅
     │
     ▼
🎻 搜索工具执行:找到 src/routes/auth.ts
     │
     ▼
🎵 查询引擎把文件内容反馈给模型
     │
     ▼
🤖 Claude:"我来修改这个文件,加上 Zod 校验"
     │
     ▼
🔒 权限系统检查:写文件?五道安检,全部通过 ✅
     │
     ▼
🎻 文件编辑工具执行:精准修改 auth.ts
     │
     ▼
🤖 Claude:"让我跑下测试确认没问题"
     │
     ▼
🎻 Bash 工具执行:npm test
     │
     ▼
✅ 测试全部通过,任务完成
架构全景图

整个过程,你只说了一句话。 查找代码、理解结构、修改文件、运行测试——全部由 Claude Code 自主完成。这就是”自主程序员”和”对话框”的本质区别。


写在最后:骨架之下,还有什么?

今天我们看到了 Claude Code 的”骨架”——五大核心模块、三种运行模式、精心选择的技术栈,以及一条贯穿始终的数据流。

但骨架只是开始。真正让 Claude Code 强大的,是骨架之下那些精密运转的”器官”:

  • • 查询引擎那个”想→做→看→再想”的循环,具体是怎么实现的?
  • • 40 多个工具是怎么注册、怎么被模型发现和调用的?
  • • 那条五级安检流水线,每一层到底在检查什么?
  • • 51 万行代码的项目,启动速度是怎么优化到毫秒级的?

这些问题,我们下一篇见。

📌 下篇预告:《当 Claude Code 开始”思考”——拆解查询引擎的核心循环》

我们将深入 Claude Code 最核心的 3,000 行代码,看看一个 AI Agent 是如何实现”自主推理→执行→反思”的完整闭环的。


本文是「拆解 Claude Code」系列的第 1 篇。这个系列将从架构到细节,带你看懂一个工业级 AI 编程助手是怎么构建的。如果你觉得有收获,欢迎点赞、在看、转发——你的支持是我继续拆解下去的动力 💪

— 分享 —


世界很大,吾来看看。努力活出自己的姿态~