Skip to content

[TUI] 流式 Markdown 表格在后续宽行到达后出现列宽错位 #343

Description

@zhnt

问题

流式输出 Markdown 表格时,如果后续行某个单元格比前面更宽,表格中途会改变列边界:前面的行保留旧的窄列宽,后续行使用新的宽列宽。最终同一张 box table 的分隔线不再对齐。

该现象可以在 Loushang CLI 中复现,Claude 的终端输出也能观察到相同现象,因此看起来是流式终端表格渲染问题,而不是某个模型特有的格式问题。

复现步骤

  1. 启动 uv run loushang
  2. 输入:请你输出一个表格,30行,最后一行的第一列特别宽
  3. 观察表格输出。

复现结果通常表现为:前约 10 行使用窄列宽,从后续某一行开始第一数据列突然变宽;最后一行可能继续换行。

更大的回归场景:构造 100 行表格,前 99 行第一列较短,最后一行第一列明显更宽,并在流式追加过程中多次触发重绘。

预期行为

同一张表应始终使用一套列宽。发现后续宽单元格后,应满足以下任一策略:

  • 等表格结束后再使用 box table 渲染;或
  • 从表格顶部完整重绘整个表格块;或
  • 流式阶段使用不会产生固定列边界的降级格式。

不能只重绘当前 viewport 或表格后缀,导致已输出的前缀保留旧列宽。

相关观察

静态地对完整 Markdown 表格进行一次渲染时,列宽可以正确统一。问题出现在流式输出和终端重绘/scrollback 交互阶段。

建议的回归断言

  • 最后一行变宽后,所有分隔线的列边界位置一致;
  • 重绘范围应覆盖表格顶部,而不是只覆盖后缀;
  • 100 行场景下,终端最终可见/输出结果不能混合旧宽度和新宽度。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions