架构概览

1,902 个文件,512K 行 TypeScript,一个 AI 编程助手的完整解剖

~5 分钟阅读

项目规模 #

Claude Code 有多大?

想象一本 1,000 页的技术书,每页 500 行代码 — 这就是 Claude Code 的体量。它用 TypeScript 编写,运行在 Bun 上(比 Node.js 更快的 JavaScript 运行时),用 React 画界面 — 不过不是画在浏览器里,而是画在你的终端里。

0

源文件

0

代码行数

0

.ts 文件

0

.tsx 文件

模块全景 #

每个气泡的面积代表代码量,颜色代表所属层级

技术栈 #

Claude Code 用了什么技术?

Bun

JavaScript/TypeScript 运行时,比 Node.js 快 3-5x

TypeScript

类型安全的 JavaScript,所有代码都有严格类型

React + Ink

React 渲染到终端而非浏览器,组件化 TUI

Yoga

Facebook 的 Flexbox 布局引擎,用于终端布局

Zod

运行时类型验证,用于工具输入和配置校验

tree-sitter

Bash 命令的 AST 解析,用于安全分析

目录结构 #

点击文件夹展开查看

src/
·main.tsx
·QueryEngine.ts
·query.ts
·Tool.ts
·tools.ts
·commands.ts
·hooks/
·ink/
·bridge/
·utils/
·state/
·commands/
·skills/
·plugins/

设计亮点 #

Claude Code 最值得学习的工程实践

Async Generator 驱动一切

从 API 流式响应到工具执行,所有数据流都用 async generator 实现。内存占用平稳,UI 实时更新,取消操作天然支持。

读并行、写串行的工具调度

读操作(Glob、Grep、Read)可以安全并行,写操作(Edit、Write、Bash)必须串行。这个简单的分区策略大幅提升了速度,同时避免竞态条件。

三层纵深防御的权限系统

ML 分类器处理 80% 的常见情况,规则引擎覆盖用户自定义策略,最后才弹出确认对话框。速度和安全的完美平衡。

特性门控的渐进发布

通过 feature('FLAG_NAME') 函数控制功能开关,支持按用户类型、环境、百分比灰度发布。Bun 打包时未使用的代码会被消除。

← → 键盘切换页面