Ink 渲染框架
Claude Code 没有直接用 Ink,而是 fork 了一份做了大量定制。87 个文件的自定义渲染器,基本上是重写了大半。
为什么要 fork
原版 Ink 对 Claude Code 的需求来说太"玩具"了:
- 不支持虚拟滚动(长对话会卡)
- 渲染性能不够(频繁更新时闪烁)
- 布局能力有限
- 缺少全屏模式
所以 Anthropic 团队基于 Ink 做了深度定制。
核心改进
自定义渲染循环
用 requestAnimationFrame 风格的帧调度代替原版的即时渲染,减少不必要的重绘。
虚拟滚动
VirtualMessageList 组件——只渲染可视区域内的消息,长对话不会卡。
全屏布局
FullscreenLayout 组件接管整个终端窗口,精确控制每一行的输出。
FPS 监控
FpsMetricsProvider 追踪渲染帧率,确保 UI 流畅。
Yoga Layout
布局引擎用的是 Yoga——和 React Native 同一个。支持 Flexbox 语法在终端里排版:
jsx
<Box flexDirection="row" justifyContent="space-between">
<Text>Left</Text>
<Text>Right</Text>
</Box>