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

@@ -57,3 +57,13 @@ Questions to answer:
<!-- Component-related mistakes your team has made -->
(To be filled by the team)
### MCP 结果组件
- 渲染 MCP 工具结果前,先区分直接业务对象和 `CallToolResult` 包装;包装结果优先
读取 `structuredContent`,缺失或无效时再解析 `content` 中的文本业务 JSON。
不应直接用包装对象的 `ok` 判断业务失败。
- `isError: true` 表示工具调用失败,不能被内部 `ok: true` 覆盖;保留明确错误消息、
未完成时的等待状态和畸形结果的兜底提示。解包限定标准层级,避免循环或递归嵌套。
- 行为回归必须使用真实 MCP 包装形状,同时覆盖对象与 JSON 字符串、成功附件与
直链图片、业务失败与 MCP 错误;历史回放和实时更新应共用相同的解析及渲染入口。

View File

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