摘要

如果要用录下来的游戏会话测试“实时”识别和状态推断,必须保证程序在处理第 t 秒时只能看到第 t 秒以前的画面,不能偷看未来,也不能看到人写的“这一步打算干什么”“结果应该是什么”之类的答案。这种回放方式叫因果回放(causal replay)。

本实验是一个内部集成冒烟测试(smoke test,指只检查管道能不能通、不检查结果好不好的最小测试):从两个已有的开发会话里准备 18 个回放窗口,验证截图的传输和数据边界。结果:37 张截图、37 个时间前缀全部通过,0 违规。但本实验没有接入任何读取内容的模块,语义冒烟测试未运行。

要回答的问题

能否把已有的会话记录改造成严格的因果回放输入:读取器只拿到像素和时间,按记录的“可用时间”逐帧送达,且截到任意时刻时的输出与完整回放的同一前缀完全一致?

数据与来源

  • 两个此前用于开发的界面研究会话(9 月 3 日):会话 1 有 101 个动作、202 张图;会话 2 有 171 个动作、216 张图。只能用作开发/回归,不是盲测。
  • 一个仅供评估者使用的选择文件:每个会话选 9 个动作,共 12 个常规窗口 + 6 个边界窗口,37 张不重复截图(18 + 19)。会话 2 的一个动作同时保留了即时和延迟的法力变化证据。
  • 会话 1 另有 12 张“动作后”的补充截图不知道何时可用,保留在来源清单里但不选用。

方法

把每个窗口导出到三个分开的文件夹,对应三类使用者:

输入面 允许看到 不允许看到
像素观察(读取器) 像素、因果时间、尺寸 意图、预期结果、操作者说明、有含义的文件名、参考答案、未来图像
时序状态估计 读取器的观察和过去的推断 意图、语义目标、预期转移、事后标签
结果核验 之前的观察、实际回执、意图和截止时刻之后的新观察 截止时刻之后的观察以外的未来信息;参考结论

回放函数只读读取器那一份文件夹,到时间才把一个不可修改的“像素包”(中性 ID、时钟、可用时间、尺寸、编码后的像素字节)交给回调,不给文件路径。每次回放后把输出存成快照,防止回调事后修改之前的输出。

传输探针是一个什么都不解读的回调:它对每帧只返回“未解读”。检查方法:先完整回放一次,再对每个出现过的输出时刻 t 截断回放一次,要求截断结果与完整结果中 ≤ t 的部分完全相同(前缀不变性)。

设置

不做模型推理、训练、视频解码或标签升级。参考答案的权威等级是“助手审核”,正式结论尚未裁定;视频对齐未知。

结果

检查 结果
两个会话的格式加载 通过(101 动作 / 202 图;171 动作 / 216 图)
运行时元数据与路径审计 PASS
送达的帧 37
检查的时间前缀 37
前缀违规 0
对游戏数值的正面断言 0(探针不读任何值)
语义冒烟门槛 未运行

相关测试:聚焦验证 30 项通过,Perception 核心测试 261 项通过,打包测试 4 项通过。

失败与负结果

没有失败记录。第一版导出保留;第二版改为保留原始的 api_returned 时间,取代第一版,但两者都不是独立来源。

局限

  • 前缀检查通过、探针全部“不解读”,不能说明语义准确率或有用的覆盖。
  • 6 个边界窗口不是 6 类独立完成的哨兵测试。
  • 输入白名单是合作式的 API 边界,不是文件系统或进程隔离。
  • 两个会话都已检查过,只能做开发/回归。
  • 真实检测器推理没有测试。

结论与下一步

因果回放的数据边界和传输已经打通,可以在此基础上接入真正的读取器。下一步:裁定可见字段的参考答案,通过回放函数接一个有限的观察器,再按各自声明的输入面测试状态估计和结果核验。