Skip to content

UI 与交互层概览

Claude Code 的 UI 基于 React 19 + Ink(自定义 fork) 构建,是一个完整的终端 UI 框架。

技术栈

技术版本用途
React19组件模型与状态管理
Ink自定义 fork (~96 文件)终端渲染引擎
Yoga Layout原生 N-API 绑定Flexbox 布局引擎
React Compiler编译时优化自动 memo 与缓存

UI 架构

┌───────────────────────────────────────────────────┐
│                 App (根组件)                        │
├───────────────────────────────────────────────────┤
│ KeybindingProvider → ModalProvider → ...Providers  │
│  ┌─────────────────────────────────────────────┐  │
│  │              REPL Screen                     │  │
│  │ ┌───────┬──────────────┬──────────────┐     │  │
│  │ │Status │  Messages    │  CompSprite   │     │  │
│  │ │Line   │ ┌──────────┐│              │     │  │
│  │ │       │ │ UserMsg  ││              │     │  │
│  │ │       │ │ AIMsg    ││              │     │  │
│  │ │       │ │ ToolUse  ││              │     │  │
│  │ │       │ │ ToolRes  ││              │     │  │
│  │ │       │ └──────────┘│              │     │  │
│  │ │       │              │              │     │  │
│  │ ├───────┴──────────────┴──────────────┤     │  │
│  │ │          Prompt Input                │     │  │
│  │ │  ┌──────────────────────────────┐   │     │  │
│  │ │  │  TextInput (多行编辑器)       │   │     │  │
│  │ │  └──────────────────────────────┘   │     │  │
│  │ │          Footer Bar                 │     │  │
│  │ └────────────────────────────────────┘     │  │
│  └─────────────────────────────────────────────┘  │
└───────────────────────────────────────────────────┘

组件数量统计

类别文件数说明
components/389UI 组件库
hooks/104React Hooks
screens/3主屏幕 (REPL, Doctor, ResumeConversation)
keybindings/14快捷键系统
vim/5Vim 模式引擎
buddy/6虚拟伙伴系统
ink/96自定义 Ink fork

渲染管道

React render() → Virtual DOM diff → Yoga Layout (Flexbox 计算) → Terminal Output (ANSI 序列) → stdout

为什么是终端

在终端里做 AI 编程 Agent 而不是 Web/Desktop,有几个原因:

  1. 开发者的自然栖息地 — 不用切窗口
  2. SSH 友好 — 远程服务器也能用
  3. 轻量 — 不需要 Electron 这种重量级容器
  4. 可组合 — 可以和其他 CLI 工具配合

文档导航

文档涵盖内容
Ink 渲染引擎自定义 Ink fork、Yoga 布局、渲染管道
组件库389 个组件详解
Hooks 系统104 Hooks 分类
快捷键系统14 文件快捷键引擎
Vim 模式完整 Vim 状态机
设计系统主题、颜色、输出样式
语音模式语音输入系统
Buddy 伙伴ASCII 虚拟宠物