2.3 KiB
2.3 KiB
运行中正文交接契约
已核对的丢失点
- 自动延续重试清理中断运行态,新轮
fullText、工具及映射为空。原正文仅进入模型提示,提示有界不等于保存。 attachActiveRuntimeToWs使用SESSION_MESSAGE_CONTENT_MAX_CHARS裁剪流式正文。浏览器收到裁剪快照后权威替换正文,长正文前缀消失。- 重试等待期不在
isSessionRunning和 attach 判断内。刷新会被视为无运行态,之前气泡无法重建。
契约
- 同一用户任务自动续跑须交接完整正文、全部工具、文本/工具去重映射,以及持续一致的逻辑消息身份。线程身份仍按既有 expectedThreadId 校验。
- 完整运行态在移除旧活动轮次前落盘,等待期仍可读取;新轮接管前不能清理唯一落盘副本。保存失败明确停止危险交接并保留内容。
- 续跑启动时先提供完整
resume_generating状态,再提供增量事件。等待期和运行期刷新、切换与重连也提供完整状态。 - 前端以完整 snapshot 替换当前 streaming 正文、工具,复用气泡节点;禁止把不同用户轮次的正文盲目拼接。现有
resume_generating分支的权威替换和工具重建符合该语义,前端代理将用行为回归确认。 - 模型重试提示可继续只保留尾部,显示和持久化不使用该上限。
- 重试耗尽、手动取消、自动启动失败及重启恢复仍需保存已有正文;正常新用户轮次从空正文开始。
turn/start已发出但原生ID未知时取消,旧轮仍持有线程门禁。通知先于RPC回包也只能归入旧轮,身份明确并精确中断后才允许新轮开始;RPC超时不能凭空释放身份。done和历史分页提供完整正文及全部工具输入/结果,不得用实时预览限额覆盖完整运行态。
验证方法
- VM 提取真实生产函数并配真实临时存储,先跑现有实现产生正文丢失红灯,再跑修复版本;不得仅以缺 helper 作为旧版失败证据。
- 长正文超过预览限额,A/B/C 各一次并保持顺序;所有阶段的工具、消息 ID 和用户消息条数一致。
- 真实浏览器连接隔离服务,检查实际 DOM 首段、工具、气泡数、刷新及重连,测试不接触生产运行会话;记录浏览器类型、资源来源、截图和退出码。