Skip to content

[性能] 单轮超长回复后,再发消息时界面卡顿/闪烁 #1782

Description

@Iamwangzhaoyu

System details / 系统信息

deepchat:1.0.6,win系统

What's wrong? / 出了什么问题?

问题描述

当一轮对话中存在超长内容(尤其是 assistant 的长 Markdown 回复,含代码块、Mermaid 等)时,用户再发下一条消息会出现明显的卡顿或短暂闪屏

功能不受影响,消息能正常收发,但发送瞬间界面会卡一下。表现与硬件相关:性能更好的机器能撑更长的内容。

复现步骤

  1. 打开对话,让 assistant 生成一轮超长回复(长文档、大段代码、多章节报告;含多个代码块时更明显)
  2. 等待生成完成
  3. 发送一条普通短消息(如「继续」「好的」)
  4. 观察发送瞬间界面是否卡顿/闪烁

补充复现: 粘贴数千字以上的用户消息直接发送,也可能出现类似现象。

预期 vs 实际

| 预期 | 发送新消息流畅,不因上一条超长回复而卡屏 |
| 实际 | 发送瞬间主线程卡顿,消息列表偶发滚动跳动/闪烁 |

可能原因(推测)

  • 用户消息有折叠(约 600 字),但 assistant 超长回复无折叠,全文挂载 DOM
  • 行级 content-visibilityfeat(chat): content-visibility message windowing #1737)对屏幕外消息有效,单条视口内超长消息仍全量渲染
  • 流式输出时 Markdown 整篇重渲染markstream-vue)成本高
  • 发送后滚到底 + 高度测量,占位高度与实际高度偏差导致滚动跳动

建议优化方向

  • assistant 长回复支持折叠/展开
  • 超长内容降低流式渲染频率或关闭 smooth-streaming
  • 单条消息内视口以下内容懒加载
  • 按内容长度动态估算行高,减少 scroll 跳变

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingwaiting for feedbackneeds more info from user

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions