一张截图只能告诉我们“现在显示什么”,两张按时间排列的截图才可能告诉我们“刚才变化了什么”。例如左下计时从 18 秒变成 17 秒,而右侧不变,可以提出“屏幕左侧计时正在运行”的候选。但它仍不能独自证明左侧是谁,或玩家执行了攻击、移动还是法术。
B031 把 B029 的 68 张稳定帧组成 67 个相邻记录。5 个跨视频或超过 10 秒的间隔明确切断;剩余 62 个连续区间只比较过去和当前的计时读数。简单规则为 56 个区间给出左/右下降侧,5 个保留无变化,1 个保留不明确。
flowchart LR
P[Previous observation] --> C[Current observation]
C --> D[Clock deltas]
D --> S[Screen-side trend]
S --> X[Log and UI cross-check]
X --> E[Pending event hypothesis]
图 1:推理只沿时间向前使用证据。计时趋势是弱提示,不会覆盖原始 OCR,也不会直接变成行动事实。
1. 只看过去与当前,并在断点处停止
每条记录包含前一帧、当前帧、时间间隔、左右两侧的上下计时及差值。若跨视频或间隔超过 10 秒,就标为 SEQUENCE_BREAK。连续区间中,一侧计时明确下降、另一侧不变时,输出 SCREEN_LEFT_RUNNING 或 SCREEN_RIGHT_RUNNING。
如果计时没有变化,保留 NO_VISIBLE_CHANGE;出现重置却没有明确下降时,保留 AMBIGUOUS。规则不沿用上一次行动侧,也不偷偷读取未来帧修订过去。
2. 一个最小例子:18 秒变成 17 秒

图 2:前一帧左侧上下读数为 04:35 和 00:18。

图 3:1.4 秒后,上方仍为 04:35,下方变为 00:17。规则输出“屏幕左侧计时下降”,不输出“玩家行动”。
这一区分很重要。屏幕左/右与玩家/敌人需要对局身份锚点;计时下降与具体动作类型需要日志、选中对象、悬浮预览或画面变化。B031 只提供其中一条可追溯证据。
3. 90.32% 是覆盖率,不是准确率
| 相邻记录标签 | 数量 |
|---|---|
| SCREEN_LEFT_RUNNING | 34 |
| SCREEN_RIGHT_RUNNING | 22 |
| NO_VISIBLE_CHANGE | 5 |
| AMBIGUOUS | 1 |
| SEQUENCE_BREAK | 5 |
67 个记录中有 62 个连续区间,56 个得到屏幕侧候选,覆盖率为 56/62,即 90.32%。由于没有独立的行动侧人工真值,不能报告 accuracy。唯一不明确区间出现计时重置但没有同步观察到下降;5 个无变化区间保持未知。
这个结果对当前目标已经够用:它可以快速把“某侧计时明显在走”的片段排到前面,把断帧、无变化和重置交给日志或人工复核。偶尔漏帧不需要用重型逐帧跟踪器补救。
4. 时序证据最终怎样被人审核?

图 4:当前集成页支持按视频、精选范围和覆盖缺口切换;左右键或滑条浏览关键帧,原图上显示已有框,右侧列出六类标注覆盖。左上角只显示已有分类标签和待补目标。
当前语义时间线汇总 37 段视频、883 张关键帧和 10,823 条既有语义标注,并选出 159 张平衡候选。它是审核与工作队列,不是 B031 的准确率结果:相邻差异目前仍是弱提示,每张精选图的完整六类全帧标注仍待完成。
5. 下一步用多证据解释变化,不强求无损重放
接下来先冻结 159 张精选集合,并逐张补全生物、数量牌、英雄 HUD、计时、日志、面板、悬浮提示和控件。相邻帧之间再组合计时趋势、日志新增行和对象变化,输出带证据的 event hypothesis。
最终验收会使用一段新的用户视频:本地算法自行选关键帧,自行检测每帧可见 UI,并生成纯本地语义时间线。它可以承认漏帧和未知,但每个输出都必须能回到原图、时间戳和具体检测证据。
Comments