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>