Replies: 1 comment
|
补充一个归因修正供参考:这个现象我们也在 Firefox 上稳定复现过,根因大概率不是回合对齐分页,而是 #5919 的 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
[0.1.7-rc.1] 重入运行中的会话时「载入历史…」挂起直到回合结束 —— 回合对齐分页(turn-aligned pagination)的副作用
环境
症状
复现步骤
根因分析
定位到 0.1.7-rc.1 变更范围内的提交:
50ba2c8bb2—— fix(session): align history pagination with turn boundaries(经 PR 开发了一个基于deepseek harness的图片和视频生成agent插件 #1371 fix-large-history-pagination 合入)该提交把历史消息分页从「固定 50 条消息」改为「回合边界对齐(turn-aligned pagination)」:
turnWindow请求参数:每页至少 50 条 user/assistant 消息、且跨越至少 2 个 turn/start,上限 500 条;turnWindow(改动位于packages/api/session-controller/src/client/sessions/session.ts的HISTORY_PAGE_OPTIONS与events.open调用)。机制:重入一个运行中的会话时,打开页需要对齐回合边界;当前回合尚未关闭(工具调用在执行、消息在追加)时 opening 页无法交付,宿主等到
turn/end落盘才返回。前端于是停在「载入历史…」,直到回合自然结束才拿到数据、一次性渲染——这也解释了为什么挂起时长 ≈ 当前回合剩余时长。边界说明(如实标注):已核实分页函数
paginate()本身(lib/types/history.js:395)是对已装载数组的纯回溯、不阻塞;等待发生在数据源获取 / 快照协调一层(sourceFor→sessionQuery.observeSession),确切的等待语句尚未逐行钉死。旁证:0.1.5-rc.3 的「消息对齐分页」在任何时刻都能立即返回,无此问题。
相关旧帖:#7677 报告过 Firefox 下历史在「载入历史…」处无限卡住,但被归因为 Firefox 特有;本例与浏览器无关、四条链路均出现,且挂起时长精确跟随回合边界,判断为不同问题,故另开新帖。
复现矩阵
四条链路均出现(直连只是恢复更快),因此与 FRP / 反代等网络链路无关;浏览器差异只影响感知恢复速度,不改变「挂到回合结束」的本质。
规避
给官方的建议
turnWindow(当前回合未闭合)时,提供消息对齐(message-aligned)的即时降级——先返回当前可用的历史前缀让前端立即渲染,后续内容再由流式事件补齐,让「重入运行中的会话」不必等待回合闭合。以上均为实测结果;提交号、PR 号与代码位置已对照 0.1.7-rc.1 源码核实。
All reactions