Gemini CLI 一行转义码清空滚动历史,PR 改用非破坏性刷新

diegogodinezr · ghdev · 2026-10-17

有开发者向 google-gemini/gemini-cli 提交 PR,修复交互式会话中终端滚动历史被意外清空的问题。根因是 refreshStatic 使用了 ansiEscapes.clearTerminal,其中 \x1b[3J(ED 3)会让终端模拟器清掉保存的滚动缓冲区,导致窗口缩放或切换展开输出(Ctrl+O)时之前的输出丢失——而标准缓冲模式正是默认配置。

修复方案是改用非破坏性的视口清除:\x1b[2J 只擦可见区域 + 光标归位,不再发出 \x1b[3J,其余刷新管线(stdout corking、DEC 同步输出、宽度变化防抖)保持不变。副作用是刷新后 <Static> 重渲染的历史会追加在旧内容之后,滚动区可能保留上一次宽度的渲染。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →