事后追溯需要同时保存输入、系统版本与输出三者
别名: 三者快照 · 追溯三件套 · triad for after-the-fact
概念解释
出事以后要问「当时究竟给了什么、跑的是哪一版、吐出了哪一段」。三缺一,故事就补不完:有输入无输出,只知道请求;有输出无版本,不知道是不是已经修过的模型干的;有版本无完整输入(系统提示被丢掉),种子也救不了。追溯三件套(input, version, output)必须作为一次生成的原子记录,而不是事后从三处日志拼。
种子是加分项。三件套是最低。
机制
分布式系统把这三样分落在客户端、网关、推理服务。各自的保留期不同,拼起来常缺一块。法务和事故审查要的是那一次世界,不是「类似请求的最近一次」。缺输出,审查只能重放,重放在抽样下不是那一次。缺版本,无法判断当前修复是否覆盖当时。缺完整输入,连重放的前提都不成立。
用户可见的那一句从来不是完整输入。工具清单、检索到的段落、隐藏系统提示都在条件里。三件套里的「输入」必须是模型真正吃进去的那份,外加用户以为自己提交的那份,两份都存,才能解释「我没写这个,它怎么答了」。
怎么研究
做一次受控事故,然后按现有日志做追溯。记录三件套各缺的比例、从日志拼出完整故事的时间、有多少故事只能靠重放近似。自变量:是否在生成完成时写一条原子记录、保留期是否对齐。因变量:故事完整率、误把另一次采样当成当时的比例。
对齐保留期是关键。输出存 7 天、版本号存 90 天,第 8 天的追溯必缺。
边界
即时即弃、无后果的娱乐生成可以不存输出,但也就放弃了事后解释,产品说明不能再承诺可申诉。法规要求删除的用户输入,删除时要连同输出和版本键一起删或匿名化,否则三件套变成残留标识。流式中止的部分输出也是输出,要按当时屏幕上存在过的内容存。这条不处理用三次采样代替一次对比。
怎么落地
- 每次生成完成(含用户可见的中止)写一条不可变记录:用户输入、完整模型输入哈希与可授权查看的副本、模型与工具版本、输出。三样同寿命。
- 工单和时间线只链这条记录,不链「按这句话再跑」。
- 用户导出或申诉时,三件套一起走,缺一则标明哪一角已经没了。
- 验证:随机抽一条上周的对话,问工程能不能在不重放的情况下拿出当时屏幕上的字、当时的版本、当时的完整提示。缺一,追溯在靠猜。再故意让三处日志的保留期错开一天,看哪一天故事先碎。