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」频道最新
- 改造 orchestration skill,让多个 agent 互相自我审查 — pvncher · 2026-07-27
- 现代 AI Agent 协议栈的 11 项实用地图 — TheTuringPost · 2026-07-27
- Qwen Code nightly 加入 Goal v3 编排和工作区通道管理 — qwen-code-ci-bot · 2026-07-27
- NVIDIA 称 Nemotron 3 Ultra 在 RTL 芯片设计任务上达 97.1% — NVIDIAAI · 2026-07-27
- 东京 Agent Forge 黑客松一天做出可上线 AI agents — DavidBennett__ · 2026-07-27
- 长周期智能体最终需要不可变事件日志 — sebpaquet · 2026-07-27