# 可复跑的键盘反推流程

统计快照：2026-09-09T06:43:18.856633+00:00（UTC）；SHA-256：`3f8a8cc3b628447bc72e78145a94aa2853498a1fff9af80c641b103aa1373e47`。

[打开交互图谱](https://mikusama99-keyboard-key-coverage-20260909.static.hf.space/) · [逐键 CSV](../data/game-key-counts.csv) · [统计 JSON](../data/coverage-report.json)

## 本次修正

1. 以游戏作为大类，读取同一份上下文键位文档，展开每个目标键；补充原日志中的重点非移动键。
2. 去掉每录制每键最多 120 条的截断；不因一个游戏已有 100 条而跳过缺失按键。
3. 为每个游戏/键/动作分组选样，目标每键至少 3 个样例、每种已观察动作 2 个；不足则按实际展示，不设置必须有 10 条才准入的门槛。
4. 补采优先零覆盖键，再补少样例键；优先不同来源并交错提交，避免所有工作线程等待同一条源录像下载。历史失败次数不再永久屏蔽稀有键。每轮有调用预算和单键预算，写入 campaign 清单，可恢复未完成请求。
5. 统计和页面绑定同一冻结结果；正式 10 游戏 × 100 条的配额选择另存，未被覆盖预览替代。

## 流程与证据

原始键盘索引 → 游戏前台/隐私/时间过滤 → 15 秒窗口 → 画面支持与归因检查 → 覆盖选样 → 视频/时间轴/黑帧检查 → 页面与逐键统计

- 召回来自原始 keydown 边沿，不依赖 caption 关键词。保留原行号、事件序号、原键码、帧时间、已按住的组合键。
- 本次公开 JSON 的 input_fact 是标准化按键事实，不冒充原日志的逐字 JSON；excerpt_policy 明确标识此口径。原输入文件的固定版本、哈希、行号和事件序号可用于回查原文。
- 同一来源同一原码锚点至少间隔 17 秒；窗口必须完整、连续、长 15 秒。预览跨键进一步去除同源重叠窗口和相同视频字节。
- 输入时间是日志事实；动作边界是抽帧模型的近似观察。键盘流程通常 2 FPS 全局、锚点附近 4 FPS，必要时加密，不应把 Gemini 3.8 试验的 1 秒最小动作规则套用过来。
- 视觉检查使用 gemini-3.5-flash，要求游戏身份一致、gameplay、画质合格、HUD 不过密、锚点交互有画面支持、置信度至少 0.8。排除纯移动、纯菜单及无法成立的归因。
- 对计划板、配方/储物/捐赠等界面入口以及仅有武器选择 UI 高亮的标签增加明确拒绝规则；模型即使自称接受、甚至经过二次请求，也不能绕过这些规则。真实动作伴随普通 HUD 提示不因此被一概剔除。
- 若主动作描述明确承认锚点视觉效果被遮挡、无法确认或不够明显，即使该片段后续同键出现清晰响应，也不能据此把当前锚点标为已执行；这类自相矛盾标签进入拒绝项。清晰可见但未成功的实体尝试仍可保留。
- 保留动作主体、对象、前后状态、执行/尝试结果与证据时间。不凭数字键写固定法术、武器、物种或角色技能。
- 二次复核标识只在独立请求的 status 为 passed 时显示；同模型复核不是人工或引擎真值。

## 黑屏、时间与源文件

预览额外对整段视频执行黑帧检测：至少 98% 像素低于阈值、持续至少 0.12 秒的近黑区间会使整条候选退出预览，再从其余已通过结果补样。不裁掉黑屏后拼接，始终保持原始连续 15 秒。检测器可能把极暗场景保守剔除，也不能识别所有非黑色转场。这个检查目前覆盖全部已发布预览，不代表所有未展示候选也已查完。

视频技术检查要求 H.264 / yuv420p、24 FPS、360 帧、15 秒、零播放时间原点及完整解码。非零容器原点使用无损封装归零，保留编码包，同步修正输入/源视频时间映射，并归档旧派生视频与映射；原始视频和输入不改动。

## 复跑入口（键盘数据目录的 code/）

```bash
python coverage_inventory.py --output COVERAGE_WORK --workers 6
python coverage_run.py --output COVERAGE_WORK --workers 8 --max-calls 144
python coverage_preview_qa.py --output COVERAGE_WORK --workers 6
python test_coverage.py
python test_keyboard_pipeline.py
```

重新盘点同一输入可加 --reuse-inventory。新增输入后不要复用旧 inventory；先重新构建候选。继续同一 campaign 时提升 --max-calls 即可，已完成 ID 不会重复请求。

下游 build_coverage.py 从冻结 selection、results-snapshot 和 preview-quality 导出；publish_coverage.py 只上传白名单预览、脱敏输入字段和聚合报告，并固定媒体提交版本。原始遥测、私有路径、API 请求响应缓存和凭证不会发布。

