资讯动态

基于真实终端证据量化 TUI 行数占用:qwen-code 间距与密度优化 PR1 的测量方法与实践

发布时间:2026/9/11 4:07:06 来源:尧图企业网站定制
基于真实终端证据量化 TUI 行数占用qwen-code 间距与密度优化 PR1 的测量方法与实践【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code导读qwen-code 的终端 UITUI在历史会话中经常为助手输出、状态块与工具组分配额外的空行导致简单问答、文件列表、工具输出、错误态、diff 与长流式输出都需要滚动穿过空白才能看到内容。本文基于仓库中的设计文档与 e2e 证据文档系统拆解「TUI 间距与密度 PR1」这一轮聚焦改造它定义了怎样的间距标准、如何在保留全部内容的前提下集中移除冗余空行、以及如何用 100 列固定条件的 tmux/VHS 捕获把行数收益做成可复现、可审计的量化指标。读完后你将掌握这套「先定标准、再集中实现、最后用固定条件终端证据验收」的 TUI 密度优化方法论并能直接在 qwen-code 源码中定位每一处改动。背景TUI 的空行成本与 PR1 的边界qwen-code 的 TUI 在助手输出之前、状态/工具块之间以及展开的工具组内部常常额外占用若干行。在一次常见会话中这会让简单答案、文件列表、工具输出、错误状态、diff 和长流式输出更难扫读——用户需要滚动穿过空白而非内容。这一问题在仓库中以 issue 形式跟踪设计文档中提及 QwenLM/qwen-code#4588。PR1 被定义为该问题治理的第一轮聚焦改动见 设计文档。它刻意只处理间距spacing与密度density以便评审可以在不改动以下内容的前提下对比行数变化思考痕迹thinking trace的可见性工具边框tool borderSubAgent 布局启动品牌与横幅主题颜色每轮助手耗时显示表格内联代码高亮这套边界划分保证了「行数变少」的结论只能归因于间距调整而不是渲染范围或信息结构的改变——这是本文后续测量方法成立的前提。间距标准五个可执行的规则设计文档给出了 PR1 要达成的间距标准它是实现与验收的共同依据规则含义独立用户轮次保留一个视觉分隔符用户提问与其回复之间仍有一个分隔行保证「谁在说话」可辨认助手输出与回合内后续块不添加第二个分隔符助手续写、工具组、状态消息、工具摘要等不再额外增加前导空行工具标题与工具结果内容相邻移除工具头部与其输出之间的空行展开的多工具组不在相邻工具条目间插入空行组内每个工具紧凑排列复杂 Markdown 块保持既有内部布局表格、代码块、数学块等不因密度优化被破坏一个关键的「有意保留」是 Markdown 空行行为渲染器原本就把连续空行折叠为单个分隔行因此本文改不动这块复杂块结构维持原样。实现间距集中到 HistoryItemDisplayPR1 的实现理念是「保持既有信息结构与渲染表面不变」把间距决策集中到少量位置。历史条目前导距离开关历史条目的前导边距marginTop被集中到HistoryItemDisplay组件内的getHistoryItemMarginTop函数packages/cli/src/ui/components/HistoryItemDisplay.tsx。从源码可以清晰看到这套白名单逻辑独立用户轮次、独立的助手主回复gemini、思考块头gemini_thought返回1——保留回合分隔符其余全部类型——gemini_content助手续写、tool_group工具组、tool_use_summary工具摘要、info/success/warning/error等状态消息、compression、summary、memory_saved等——统一返回0即不再叠加前导空行。这段代码是「用户提示和独立命令视图仍以回合分隔符开头而助手续写、工具组、状态消息、工具摘要及相关回合内输出不再增加额外前导空行」的直接实现。工具组移除相邻条目间的空行展开的工具组保留既有边框与状态/标题结构但组内条目不再插入空行。ToolGroupMessage的外层容器使用gap{0}并将每个工具包裹在minHeight{1}的列容器中packages/cli/src/ui/components/messages/ToolGroupMessage.tsx保证条目紧邻排列且至少占一行高度。工具结果直接渲染在标题/状态行下方工具结果直接渲染在工具标题/状态行下方移除头部与输出之间的空行但明确不改动输出内容、截断策略、shell 焦点、确认提示与 compact 模式行为后者由 ToolMessage.tsx 中的结果渲染与高度预算逻辑维持。组件测试中的间距断言仓库的组件测试用「是否以换行开头」来锚定间距规则packages/cli/src/ui/components/HistoryItemDisplay.test.tsxrenders assistant replies with a leading spacer row在terminalWidth{100}下断言助手主回复输出startsWith(\n)为 true——独立回合保留分隔行renders tool summaries without a leading spacer row断言tool_use_summary输出startsWith(\n)为 false——工具摘要不再带前导空行。测量方法让行数收益可复现「少了几行」如果只是肉眼感受无法通过代码评审。PR1 的证据文档.qwen/e2e-tests/tui-spacing-density-pr1.md给出了严格的固定条件。固定条件终端宽度100 列80 列场景由组件测试的快照差异覆盖对比同一 prompt/输出 fixture 在 PR 前后的渲染计数前剥离 ANSI 控制序列从第一个非空 fixture 行数到最后一个非空 fixture 行——内部空白分隔行保留在指标内因为正是这些行要被移除fixture 直接渲染真实 Ink TUI 组件无需模型调用或网络访问保证确定性。覆盖场景Simple QA、文件列表输出、长 shell 输出、文件读取错误输出、多块项目巡检输出、diff 输出、长流式输出——共七个代表性场景。捕获命令终端捕获用 tmux 在 base 与 PR1 分支各跑一次并给每次捕获打上标签git checkout origin/main REPO_ROOT$PWD /tmp/qwen-pr1-spacing-evidence/run-tmux-capture.sh $REPO_ROOT base origin/main 34b7d472e base git switch feat/tui-spacing-density-pr1 /tmp/qwen-pr1-spacing-evidence/run-tmux-capture.sh $REPO_ROOT PR1 fixed 848d6a166 fixed视觉捕获用 VHS 录制两侧 GIF再经 ffmpeg 横向拼接成 base-vs-fixed 对比动图git checkout origin/main PATH/Users/gawain/.nvm/versions/node/v24.15.0/bin:$PATH vhs /tmp/qwen-pr1-spacing-evidence/base.tape git switch feat/tui-spacing-density-pr1 PATH/Users/gawain/.nvm/versions/node/v24.15.0/bin:$PATH vhs /tmp/qwen-pr1-spacing-evidence/fixed.tape ffmpeg -y -i /tmp/qwen-pr1-spacing-evidence/base.gif -i /tmp/qwen-pr1-spacing-evidence/fixed.gif -filter_complex [0:v]fps5,scale780:-1:flagslanczos[left];[1:v]fps5,scale780:-1:flagslanczos[right];[left][right]hstackinputs2,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse /tmp/qwen-pr1-spacing-evidence/base-vs-fixed-optimized.gif证据产物包括并排 GIF、最终截图、base/fixed 两侧的 tmux 文本捕获与 summary JSON。这种「文本捕获 结构化 summary 视觉动图」三层产物与仓库中 scripts/tui-parity 的确定性捕获 harness 思路一致——用机器可校验指标与可评审产物代替口头宣称。结果每类场景的行数收益在 100 列固定条件下证据文档记录的实际测量结果如下场景宽度Baseline 行数PR1 行数Delta说明Simple QA10021-1助手历史条目不再以前导空行开始文件列表 / shell 输出10032-1工具标题与首行结果相邻文件读取错误10032-1错误结果复用同一套标题/结果间距项目巡检1001611-5三个展开工具去掉了标题/结果空行与工具间空行Diff 输出10032-1diff 渲染器不变仅工具标题/结果间距变化长流式输出100N 2N 1-1内容行不变移除多余标题/结果空行完整代表性 fixture1002619-7同一内容经真实 Ink 组件渲染并 tmux 捕获设计文档中的自动化断言表格docs/design/tui-spacing-density-pr1.md给出了对应的基线简单助手回复 -1、单行结果的工具头部 -1、三工具展开组 -5、完整 fixture -7并说明快照差异同时覆盖现有 80 列 fixture以确认组件测试 harness 中同样的行数 delta。结论边界这套证据证明了什么、没证明什么证据文档对结论的边界做了明确划分值得在复用时严格遵守能证明的base 分支在真实终端捕获中可复现出额外空行PR1 移除了目标空行同时保留了同一 fixture 的内容在 100 列固定条件下行数改进可测量。不能证明的不覆盖后续 PR 的范围如思考痕迹可见性、工具边框移除、SubAgent 布局、品牌或主题色不能替代对极窄终端换行场景的人工评审。这也意味着未来任何密度类改动都应沿用「同 fixture、同宽度、剥离 ANSI、按非空行区间计数」的协议才能与本次基线数据直接对比。相关文件指引TUI 间距与密度 PR1 设计文档间距标准、预期效果与测量基线表TUI 间距与密度 PR1 e2e 证据固定条件、捕获命令、结果表与结论边界HistoryItemDisplay 组件getHistoryItemMarginTop间距白名单HistoryItemDisplay 组件测试前导空行断言ToolGroupMessage 工具组渲染gap{0}与工具条目布局ToolMessage 工具结果渲染结果类型分发与高度预算TUI parity harness 说明确定性终端捕获与参数校验协议【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价