Skip to Content
设计TUI 间距与密度 PR1

TUI 间距与密度 PR1

为什么

当前的 TUI 经常在助手输出前、状态/工具块之间以及展开的工具组内部占用额外的行进行留白。在常规会话中,这导致简单回答、文件列表、工具输出、错误状态、diff 以及长流式输出更难快速浏览,因为用户需要滚动查看大量空白区域而非实际内容。

本 PR 是针对 QwenLM/qwen-code#4588 的首次专项优化。它仅处理间距和密度问题,以便在代码审查时能够纯粹对比前后的行数使用情况,而无需同时评估思考过程可见性、工具边框、SubAgent 布局、品牌标识或主题颜色等变更。

实现方案

本次实现保持了现有的信息结构和渲染层不变:

  • 历史项间距统一在 HistoryItemDisplay 附近处理。用户提示和独立命令视图仍以轮次分隔符开头,而助手续写、工具组、状态消息、工具摘要及相关的轮次内输出不再添加额外的前导空白行。
  • 展开的工具组保留现有的边框和状态/标题结构,但不再在相邻的工具条目之间插入空白行。
  • 工具结果直接渲染在工具标题/状态行下方。这消除了工具标题与其输出之间的额外空行,且不会改变输出内容、截断逻辑、shell 焦点、确认提示或紧凑模式行为。

Markdown 的空行行为有意保持不变。渲染器已能将连续的空白行折叠为一个空白行,并保留表格、代码块和数学块等复杂块结构。

间距规范

  • 独立的用户轮次保留一个视觉分隔符。
  • 助手输出及轮次内的后续块不再添加额外的分隔符。
  • 工具标题与工具结果内容紧密相邻。
  • 展开的多工具组不在各工具条目之间插入空白行。
  • 复杂的 Markdown 块保留其现有的内部布局。

预期效果

在相同的终端宽度和渲染内容下,目标场景应减少可见行数:

  • 简单问答场景至少减少 1 行可见行。
  • 展开的工具输出中,对于之前存在标题/结果空白分隔符的每个工具结果,至少减少 1 行。
  • 多工具组中,每两个相邻工具条目之间减少 1 行。
  • 项目检查、diff、文件列表、错误和长流式输出场景不应增加行数,除非终端自动换行导致不可避免的增加。

效果度量

自动化间距断言和终端证据针对修改后的规则使用了 100 列宽度的测试 fixture:

场景宽度基准行数PR1 行数差值证据
简单的助手回复10021-1移除了前导历史空白行
包含单行结果的工具标题10032-1标题与结果紧密相邻
包含渲染结果的三工具展开组1001611-5每个工具结果移除一个标题/结果空白行,并在相邻工具之间移除一个工具间分隔符
完整代表性测试 fixture1002619-7在 tmux 中捕获的相同渲染内容

快照 diff 还涵盖了现有的 80 列宽度测试 fixture,以确认在当前组件测试框架中产生相同的行数差值。

不在本次范围内

  • 隐藏思考过程。
  • 移除工具边框。
  • 重新设计 SubAgent 输出。
  • 更改启动品牌标识或横幅。
  • 更改主题颜色。
  • 添加每轮助手耗时。
  • 更改表格内联代码高亮。
Last updated on