.qwen/design/tui-user-message-half-line-pr2.md
PR1 通过去除工具组内部多余空行,初步收紧了 TUI 垂直间距。但在实际使用中仍有两个体验问题:
在用户消息上下各添加一条半高的淡色线条,内容区域设置同色 backgroundColor,形成三层无缝色带:
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ← foreground = bandColor(底半格着色)
> 用户的提问内容 ← backgroundColor = bandColor(整行背景)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ← foreground = bandColor(顶半格着色)
subtleBandColor() 计算:在背景色基础上做 6% 纯亮度偏移(暗色终端 → 稍亮,浅色终端 → 稍暗),不引入色相变化| 位置 | 改动前 | 改动后 |
|---|---|---|
| 用户消息上方 | 1 行空白 | 0(由色带提供视觉分隔;降级时保留 marginTop=1) |
| 模型输出上方 | 1 行空白 | 1 行空白(保留,区分思考过程和最终输出) |
| 工具调用/状态消息上方 | 1 行空白 | 0 |
| 思考文本末尾 | 可能有多余换行 | trimEnd() 避免双空行 |
同一轮对话内的"回复 → 工具调用 → 回复"序列不再有多余空行,信息更紧凑连贯。
改动前:
(1 行空白)
> 帮我读取 package.json
(1 行空白)
✦ 好的,我来读取文件。
(1 行空白)
┌ Read package.json ─────────┐
│ ✓ Read package.json │
└────────────────────────────┘
(1 行空白)
✦ 文件内容如下:...
(1 行空白)
┌─ 输入框 ──────────────────┐
改动后:
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
> 帮我读取 package.json
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
✦ 好的,我来读取文件。
┌ Read package.json ─────────┐
│ ✓ Read package.json │
└────────────────────────────┘
(1 行空白)
✦ 文件内容如下:...
(1 行空白)
┌─ 输入框 ──────────────────┐