Run 事件重放

wesgine 的 Run 事件缓冲与 SSE 断线续播机制。


设计目标

SSE 连接断开后,客户端重连时能从断点续播事件,不丢失任何 Run 过程信息。


RunEventBuffer

每个活跃 Run 维护一个内存事件环(RunEventBuffer)。

事件先进入 per-Run 内存环,再写入 wes_run_traces 表。

事件序号

每个事件携带 seq 序号,从 1 开始递增。

SSE 重连

GET /cells/{id}/runs/{runID}/events?from_seq=N

from_seq=N 表示从第 N 个事件开始续播。


Run 生命周期与连接解耦(INV-RUN-DETACH)

Run 生命周期始终与传输层(SSE/HTTP 连接)解耦。

SSE 断开 ≠ 取消 Run。

取消 Run 的合法途径

引擎不因计数器终止

引擎不因 counter 阈值(轮次/token/时间)主动终止正在运行的任务(INV-TERM-01)。


事件类型

Run 期间产出的事件包括:


RunEnd 摘要

RunEnd 时引擎写入 role=system 摘要消息到 wes_messages。

孤儿 Run 可标记 status=resumable,通过 GET /observe/runs?status=resumable 查询。


Actor 边界(INV-OBS-10)

事件重放流遵循 Actor 边界。

RunEventBuffer 记录 owner。Snapshot 判 observe.RunVisible。

无主 Run 的事件对非 admin 隐藏。