fix: 消除会话列表解析阻塞并按需加载工具详情

This commit is contained in:
shiyue
2026-10-19 10:58:22 +08:00
parent fb2c3360c9
commit 99cc807f4b
35 changed files with 1468 additions and 214 deletions

View File

@@ -47,7 +47,8 @@ Questions to answer:
- 历史游标表示服务端当前记录中尚未展示的消息数量。正数游标可以分页,与外部原始记录是否可确认恢复分开判断。
- `historyAvailable=false` 只用于旧历史来源的核实说明,不能阻断已保存消息的正文或用户提问目录请求,也不能据此宣称消息已丢失或无法恢复。
- 读取完已保存消息后,游标归零应停止请求;确有旧来源待核实时保留准确说明,正常完整历史不显示该说明。
- `resume_generating`是完整运行态快照,以正文及全部工具权威替换当前流式状态,并复用同一逻辑助手气泡;不盲目拼接不同用户任务。
- `resume_generating`以完整正文及全部工具概要权威替换当前流式状态,并复用同一逻辑助手气泡;不盲目拼接不同用户任务。普通工具的 `detailRef` 必须跟随运行状态保存,不能在重建工具时丢失。
- 折叠工具只构建摘要,首次展开才读取完整详情并构建详情DOM。详情请求单独鉴权、超时、重试,不阻塞会话首屏;切换会话取消详情请求,迟到结果不得修改新视图。工具概要只供显示,禁止回写为完整历史。
- 长气泡折叠只改变显示。完整正文保留在原始消息和DOM中;多次原生回复默认收起较早段,末段可见;单次超长回复可展开完整内容。
- 折叠状态按会话与稳定消息身份记录;完成、切换和重新渲染不得把被折叠的内容当作已删除内容保存。
- 复制按钮与定位、分支同排,仅从完整原始正文中复制最后一个原生回复段。按围栏外的 `agent-message-divider`切分,不以最后自然段或DOM的最后一个p元素判断;代码块、列表保留,时间分隔、工具和按钮不进入剪贴板。没有原生分界时复制整条回复。