Files
cc-web/.trellis/tasks/10-10-streaming-retry-history/prd.md
shiyue 69b6db0f5b 修复完整会话历史与长气泡交互并更新 CentOS 7 发布包
提交当前工作区全部源码、回归脚本、任务记录及重新构建的 Bun baseline 发布包。发布单文件 MCP 初始化及前端资源一致性验证通过。
2026-10-10 23:40:16 +08:00

2.9 KiB
Raw Blame History

运行中气泡正文续接

问题与目标

用户报告仍在运行的 Codex App 会话 826deaa0-c3df-42bc-930b-06ee3e05de50 的助手气泡丢失先前内容。自动延续重试重新创建 fullText,中断前正文仅作为有界模型提示传回,未交接到下一轮显示和最终保存状态。

目标:同一用户任务的已产生正文及工具在自动重试、等待重试、切换会话、刷新、断线重连和最终保存后保持完整、有序、不重复。不能用模型提示的 7000 字尾部或有界快照代替完整正文。

实施范围

  • 审计 scheduleCodexCapacityRetry、handleCodexAppMessage、完成/失败路径、运行态保存与恢复、attachActiveRuntimeToWs。
  • 在清理中断运行态前保留完整状态,安全交接多次重试;重试耗尽、取消及保存失败仍保留已产生正文。
  • 等待重试和重新开轮时向客户端提供完整状态;前端显示同一逻辑任务的正文,避免清空或重复拼接。
  • 隔离 mock 与单元/浏览器回归先证明失败,再验证多次重试、长正文、工具、重连以及归档读回。
  • 只读检查目标会话原生记录,核对旧气泡前文是否仍有可靠来源;记录数量与边界,不猜测、不直接修改运行中会话。
  • 根据用户后续要求增加长气泡折叠:完整正文保留,较早内容默认收起,最后一段回复保持可见,用户可展开全部;不能用截断实现折叠。
  • 在气泡现有“角标、定位、分支”控件旁增加复制按钮,仅复制最后一个原生回复段;不包含此前回复、分隔时间、工具或按钮。没有回复分隔线时复制该气泡完整正文。

非本次操作

  • 不重启生产服务,不调用真实模型开始新任务,不修改真实会话和原生 rollout。
  • 不宣称上一任务的异机 45 条或此会话旧正文已恢复到 UI。
  • 保留已有未提交改动,其他会话任务文档及 CSV 不参与本次清理。

验收标准

  1. 流出 A → 暂时错误 → 自动续跑流出 B → 再次错误 → 续跑 C,最终正文包含 A/B/C 各一次且顺序不变,用户消息不重复。
  2. 自动重试前、等待期、启动后分别刷新/重连均能读回已有完整正文及工具;长于快照上限的前缀也保留。
  3. 完整运行态先保存;完整保存失败不得清理唯一输出;重试耗尽、取消及启动失败不静默丢正文。
  4. 最终 assistant 保存和存储重开后正文、工具完整。正常新用户轮次不继承上轮气泡。
  5. 专项回归、语法检查、git diff --check 通过;全量回归结果记录,若已有无关失败明确区分。
  6. 交付写明生产未重启、目标会话未修改及旧内容的真实证据范围。
  7. 短气泡无多余折叠入口;长气泡、流式生成、完成、刷新及切换中可展开查看完整正文;复制在展开或折叠状态都只包含最新回复段,桌面和手机可操作。