Turn 与客户端解耦,完成时才持久化
上级:agent-core
agent turn 运行在 context.WithoutCancel 之上——客户端断开连接(刷新页面/关闭页面)不会取消它;流会跑完并落库(只有 WithTimeout 才会给它设上限)。事件流被 tee 到一个展示端(display sink)和一个累积器(accumulator)两处,持久化钩子在 done 帧之前触发——所以done 就意味着"已提交",不存在持久化与重新加载之间的竞态(backend/internal/conversation/inference/agent_turn.go:140、agent_turn_persist.go)。
这是刻意维护 UX 一致性的设计;与扩缩容正交(参见 deployment)。唯一的损失是进程重启那一刻正处于生成中的那个 turn——持久化在结束时一次性完成,所以那一个 turn 会丢失(其余历史照常持久保存)。