Qwen Code 用 epoch token 阻止 daemon 重启后的 SSE 陈旧游标
doudouOUC · ghdev · 2026-07-22
Qwen Code 用 epoch token 修复了 daemon 重启后的 SSE 陈旧游标问题
这次 PR 在 Qwen Code 的 daemon 重连和事件重放链路上做了三层加固。
1)用 epoch token 判断游标是否过期
每个 session 的 event bus 现在都会生成一个随机 epoch token。这个 token 会出现在 session load / resume / create 的返回里,也会放进非阻塞的 prompt envelope,以及 REST events stream 和 /acp session stream 的 X-Qwen-Event-Epoch header。
客户端重连时会把 epoch 连同 Last-Event-ID 一起回传。如果 token 和当前 bus 的 epoch 不一致,daemon 就会直接走 resync,而不是继续相信 event id 的数字推断。新的 detail: 'epochmismatch' 也让这个触发原因更清楚。
2)重放压缩时保留正确的 turn 归属
compaction 引擎现在会更严格地保留 turn attribution:
- 合并后的 text / thought 事件会重新写回最新的 promptId、originatorClientId 和 data.sessionId
- 折叠后的 tool-call 事件采用 latest-wins 归属
3)重放失败不再被静默吞掉
如果 ingest / seed 失败,bus 会挂起 degraded 标记。之后生成的 replay snapshot 会被标成 degraded,session-load 返回里会暴露 replayDegraded,daemon 还会额外打日志提醒运维。
TypeScript SDK 也同步学会了 epoch:它会把 token 跟 cursor 一起保存,并在每次重连时带上,包括 prompt() 内部的 subscribe 流程。
「编程与Agent」频道最新
- 博主同时跑 20 个 Grok Bot 分工管理日程、路线图与周报 — inkko44 · 2026-10-26
- YC 新公司 Pomerado 开源:把任意网站变成 API,宣称比浏览器 agent 快 2-4 倍 — moeinteractive · 2026-10-26
- 大厂全做 AI 沙箱,Modal 与 Daytona 靠盒外一层仍居增速榜前列 — FinanceYF5 · 2026-10-26
- 用 Claude 搭建全自动 SEO 流水线的六步工作流 — martyamark · 2026-10-26
- 用 agent 三条教训:别靠它读论文、别混学英语、别为烧 token 后台跑任务 — ZeYanjie · 2026-10-26
- Google 社区活动不必全用谷歌技术:Next.js 加 Firebase 也算数 — weskambale · 2026-10-26