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:

3)重放失败不再被静默吞掉

如果 ingest / seed 失败,bus 会挂起 degraded 标记。之后生成的 replay snapshot 会被标成 degraded,session-load 返回里会暴露 replayDegraded,daemon 还会额外打日志提醒运维。

TypeScript SDK 也同步学会了 epoch:它会把 token 跟 cursor 一起保存,并在每次重连时带上,包括 prompt() 内部的 subscribe 流程。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →