Skip to content

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>