原实现依赖 SetSession() 写入共享的 sessionID 字段,但该方法从未被调用, 导致 session/task/worker 恒为空、落库为 NULL,前端两列无数据。且共享可变字段 在 planner 与多 worker 并发调用同一 Recorder 时会互相覆盖、串号。 norma 已通过 transcript.WithSessionID 把 session 注入 ctx(格式 exp<N>-<role>), 改为在 Stream 中按 ctx 逐调用读取,天然 per-call、无竞争。删除未使用的 SetSession/getContext 及共享字段。 Co-Authored-By: Claude Opus 4.8 <[email protected]>