终端里也能用鼠标点位置了!Claude Code 推出 NO_FLICKER 全新渲染模式
原来的渲染器每次更新都要向终端发送大量数据,遇到吞吐量是瓶颈的终端(VS Code、tmux、iTerm2)就会出现闪烁。如果你习惯依赖终端的原生选择机制,比如通过 tmux copy mode 或 Kitty hints 操作,需要适应新方式,或者设置。本质上,这是一套全新的终端渲染路径。Boris 也说,这个新渲染器目前是早期阶段,有 tradeoff,但内部用户测试下来大多数人更喜欢新方案。

用过 Claude Code 的人,多半被它的终端渲染折磨过。
对话变长,屏幕开始疯狂闪烁。VS Code 内置终端里,光标动不动就跳回顶部。工具输出刷新的时候,界面整个晃一下。内存随着对话轮数不断攀升……这些问题存在已久,社区里抱怨的声音从未断过。
Claude Code 的作者 Boris Cherny 宣布了一个新模式:NO_FLICKER。一行命令开启,上面那些问题据说全解决了。而且顺带带来了一个让人意外的功能:终端里可以用鼠标点击了。
一行命令,开启新渲染
CLAUDE_CODE_NO_FLICKER=1 claude
就这样。想每次都生效,把它加进 ~/.zshrc 或 ~/.bashrc 就行:
export CLAUDE_CODE_NO_FLICKER=1
需要 Claude Code v2.1.89 或更高版本。目前是 research preview 阶段,行为可能随反馈调整。
本质上,这是一套全新的终端渲染路径。原来的方式是把内容追加到终端的普通输出流,滚动靠终端的 scrollback buffer。新方式是接管终端的交替屏幕缓冲区(alternate screen buffer),也就是 vim、htop 那种方式——整个界面由程序自己管,只渲染当前可见的内容。
Boris 在推文里解释了技术背景:终端渲染的指令集本质上只有 ANSI escape codes,比 Web 和移动端受限得多。原来的渲染器每次更新都要向终端发送大量数据,遇到吞吐量是瓶颈的终端(VS Code、tmux、iTerm2)就会出现闪烁。新渲染器把整个 viewport 虚拟化,由应用层接管渲染控制权,只发送变化的部分。
实际效果是:
-
输入框固定在屏幕底部,不再随输出流动
-
屏幕不再闪烁和跳动
-
内存占用保持恒定,不随对话长度增长
-
CPU 使用更稳定
鼠标支持:真正让人惊喜的部分
渲染优化是大家期待的,但鼠标支持才是出乎意料的彩蛋。
在终端里用鼠标,这听起来有点奇怪,但实现了的功能相当实用:
点击输入框定位光标。 以前在输入框里改之前写的内容,只能用方向键一个字符一个字符移动。现在可以直接点。这一条单独拎出来就值得更新。
例如,下面这个,以前需要移动键盘的左右箭头来修改,现在可以直接点击到指定位置修改。(体验略有点 Bug,不过很方便了,这个方向还是很好的)
点击折叠的工具输出展开详情。 Claude Code 执行工具调用后会显示折叠的结果,以前只能用键盘展开,现在直接点就行。
点击 URL 和文件路径直接打开。 工具输出里的文件路径,点一下在默认应用里打开。http:// 和 https:// 链接点击后在浏览器里打开。
拖拽选择文本,松开自动复制到剪贴板。 双击选词,三击选行,支持文件路径作为一个整体被选中。
滚轮滚动对话历史。 配合键盘快捷键 PgUp / PgDn,以及 Ctrl+Home 跳到顶部、Ctrl+End 回到最新消息。
这套方案不是没有代价。Boris 在推文里也坦诚列出了 downside:
Cmd+F 不再能搜索对话内容。 因为内容在交替屏幕缓冲区里,不在终端的普通 scrollback 里,终端原生搜索看不到它。替代方案是按 Ctrl+O 进入 transcript 模式,再按 / 搜索,或者按 [ 把完整对话写入终端原生 scrollback 后再用 Cmd+F。
原生复制粘贴方式变了。 鼠标选择由 Claude Code 内部处理,松开自动复制。如果你习惯依赖终端的原生选择机制,比如通过 tmux copy mode 或 Kitty hints 操作,需要适应新方式,或者设置 CLAUDE_CODE_DISABLE_MOUSE=1 关掉鼠标捕获,只保留不闪烁的渲染。
tmux -CC 模式不兼容。 如果你用 iTerm2 的 tmux 集成模式(tmux -CC),不要开这个功能,会出问题。普通 tmux 没问题,但需要在 ~/.tmux.conf 里开启 set -g mouse on。
社区反应
用户 Curt Tigges 在 Boris 的推文下面说的那句话很有代表性:
“"please at least fix the uncontrollable scrolling/flickering before the next 3000 features"
这句话大概说出了很多 Claude Code 重度用户的心声。新功能不断往上叠,但基础的终端体验问题一直没被正面解决。这次 NO_FLICKER 模式,算是对这个反馈的一次正式回应。
Boris 也说,这个新渲染器目前是早期阶段,有 tradeoff,但内部用户测试下来大多数人更喜欢新方案。团队在积极根据反馈迭代。
更多推荐



所有评论(0)