--- id: question-gen-v2-adversarial-audit title: question-gen v2 设计对抗审核 — 六路独立核验(四层病灶闭合度 + 契约一致性) type: review created: 2026-07-15 status: blocking target: research-wiki/designs/2026-07-15-question-gen-v2-grounded-contrastive-design.md --- # question-gen v2 设计对抗审核 **方法**:6 路独立审核官(5 Claude + 1 Codex),互不通气,各自站"找漏洞"立场对抗式核验。5 路死磕 finding 四层病灶各一层 + QuestionUnit 契约一致性;1 路 Codex 端到端质疑质量。 **总判定**:**设计不能保证出题质量,不应直接进 writing-plans。** 四层病灶无一层 CLOSED;②不可翻转侧与契约层各带 Critical 级结构性缺陷(设计返工,非实现补丁)。 ## 四层闭合度矩阵 | 层 | 判定 | 最致命残留 | 来源 | |----|------|-----------|------| | ① grounding 循环自证 | PARTIALLY | 换独立 VLM 只断"同模型自评"一半;打分仍黑盒标量、无帧证据可溯源(I1 自认)。时序逆序干扰项穿透 grounding/NLI/快解/后置四门 | ①+Codex | | ② 结构性捷径 | **不可翻转侧 OPEN/Critical** | 数学必然:单维反事实互不重叠→正解=逐维众数→逐槽投票 100% 命中,且满足全部硬约束。病灶②被从"偏置"升级成"数学保证" | ②+Codex | | ③ 歧义控制 | PARTIALLY(实操近 OPEN) | 现网 gate 仍 Phase A 松绑版且 multi_true 判官 text-only 不看帧;镜像模式引入两条新歧义路径(翻转轴模糊、搬运干扰项未复检) | ③ | | ④ 对抗信号位置 | PARTIALLY | 前移的是"便宜替身",完整 agent 仍后置且单裁判;回灌环无一致性校验+无收敛上界(踩 findings 漂移警告) | ④ | | 契约一致性 | **BROKEN** | 设计只覆盖采样/分批/聚合 3 处,真实代码另有 5+ 处按单题拆 pair;镜像"即用即弃"架构与"生成期双入库"互斥=重写非改造 | 契约 | ## 跨审核官强收敛根因(高置信) | # | 根因 | 指认者 | 硬伤 | |---|------|-------|------| | R1 | **MiniMax 单模型多角色=系统性单点** | ①③④+Codex | grounding打分+快解探针+歧义门三合一;仅歧义门加 NLI 第二路,grounding/快解裸奔→某类视频系统性偏差三门同向失效。缺 AdVQA 多裁判一致性门 | | R2 | **不可翻转 4 子模式结构性未修** | ②+Codex | 逐维众数数学证明;覆盖 AR 题 60-70% 主体 | | R3 | **契约拆 pair 远超设计覆盖的 3 处** | 契约+Codex | pools.py 三池切分把 P/Q 劈到不同池→AR pair 几乎全变孤儿被剔;correctness 逐题 dict 与 pair 双向 AND 口径无法共存→污染进化 | | R4 | **验收指标自我确认 + 缺结构性/人工指标** | 全部+Codex | I4 测"模型是否用了捷径"非"捷径是否结构存在";MiniMax 相关指标全同源自证。缺帧错配安慰剂测试/逐维众数命中率(纯算法)/人工双正解率κ/槽位卡方/pair 关系可解率 | | R5 | **回灌环+补生成 recall 泄漏** | ③④ | 回灌无一致性校验+无轮次上限→漂移;补生成"重试直到通过"+门非确定+无 quarantine→precision-over-recall 稀释回 recall | ## 逐层高severity 残留(矩阵未尽项) ### ① grounding - V1 打分仍 `list[float]` 黑盒,observation 无帧证据/rationale/帧号(`distractor_selector.py` `_score_options`)——换 MiniMax 不改此数据结构。 - V2 粗档下区间选择退化为平局任意 top-3,near-miss 甜区失效;扩池无梯度救不了。 - V4 快解探针非对称谬误:弱解题器"解不出"被当"题够硬"绿灯。 - V5 时序逆序干扰项被 NLI 判非等价放过、被时序弱的 MiniMax 判非双正解放过。 ### ② 结构性捷径 - C1(Critical)逐维众数:见 R2。修法=放弃 hub-and-spoke,改平衡区组/因子设计(每维每值出现次数相等→逐维众数无定义),加纯算法硬校验 `argmax(逐维众数)==正解→fail`。 - C2(高)镜像对 flip 反相关把双向 AND 从 1/16 打回 1/1(单个"事件时序"文本线索通杀 P+Q);bag-of-words 是"尽量"软约束未强制。 - C3/C4/C5(高/中高)evidence_gap 的"无法确定"恒定文本靶、semantic_rigidity 字幕匹配反向信号、premature 最终段文本靶——单维反事实改不掉这些语用/类别差异。 - C6(中)恒 A 正解槽位偏置无约束(Codex 亦独立指认 I1)。 - C7(中)NLI 的 embedding 回退是假绿灯,测不出语义泛化蕴含。 ### ③ 歧义控制 - R1 视觉双真+文本独立(拿杯子/放盘子同框):NLI 放行,视觉侧唯一裁判 MiniMax 漏判即穿门。 - R2/R3(高,v2 新引入)镜像翻转轴模糊→P/Q 各自可辩护;搬运进 Q 的干扰项未在翻转题干下重新 grounding 复检。 - R6(实操高)现网 `gate_multi_true.md` 仍松绑版;`_gate_multi_true` text-only 不看帧,"视觉双真"结构上无输入通道。 ### ④ 对抗信号位置 - R1 便宜探针能挡的题 ⊂ 完整 agent 能挡的题,差集=结构性/多步 shortcut,仍靠后置。 - R2 回灌环缺一致性校验+无 `max_regen_rounds` 上界。 - R4 后置难度判定单裁判,缺 AdVQA 多裁判一致性;"agent 恰好能解/不能解"的偶然性主导难度标签。 ### 契约(BROKEN,设计未覆盖的 5+ 处) | 处 | 文件/函数 | 拆 pair / 错口径 | 严重度 | |----|----------|-----------------|-------| | 三池 progressive exclusion | `pools.py::build_pools`/`_sample_excluding` | 拆 pair 到 test/val/diag→几乎全变孤儿 | Critical | | per-category train/val 切分 | `pools.py::_split_one_category` | 拆 pair 到 train/val | Critical | | batching 对/错桶分离(先于 FFD) | `batching.py::_select_mixed_by_task_type` | 按逐题 correctness 把 P/Q 分进 correct/error 桶并抽样丢弃 | Critical | | gate 信息量阶梯 | `gate_ladder.py`+`runner._run_gate_validation` | 逐题跑 gate,双向 AND 不生效,逐题分污染 e-process/进化 | High | | pools.json 冻结/解冻 | `pools.py::_q_to_dict`/`_dict_to_q` | 丢 pair 三字段→孤儿 | High | | 作弊门逐题剔除 | `adversarial_filter.py::run_cheater_gate`/`write_final_bank` | 半剔成孤儿 | High | | correctness dict 逐题键 | `runner` 6+ 处消费 | pair 双向 AND 无处安放,与逐题 predictions 口径不自洽 | High | | 镜像即用即弃架构 | `adversarial_filter.py::generate_mirror_question` | `_mirror`后缀/临时 pair_id/不入库,与"生成期双入库"互斥=重写非改造 | High | | 非 AR byte-identical | 混合池 `rng.sample` | unit 折叠改变 population 长度→非 AR 选择漂移,破坏铁律 | Medium-High | ## 必须返工的设计条目(按优先级) 1. **§4.1.B 推倒重来**(R2, Critical):hub-and-spoke → 平衡区组/因子设计 + 逐维众数硬校验。 2. **§4.2/§4.4 补第二独立视觉裁判 + 修快解探针非对称**(R1, Critical):grounding 打分带帧证据核验 + 第二 VLM 交叉(qwen/MiniMax 多模态看帧,非 CLIP 几何);快解探针要求 solver 先证胜任;歧义门补第二视觉裁判凑多裁判。 3. **§5 契约大幅扩写**(R3, Critical):采样上移 pools.py(三池/train-val 以 unit 为原子);新增 unit 粒度 correctness 视图与逐题 dict 分离;序列化补 pools.json;作弊门 unit 粒度剔除;gate_ladder pair 口径。 4. **§2/§4.5 如实标注镜像是重写**(R3):给持久 pair 落库 schema。 5. **§4.4 multi_true AR 变体吃帧**(③):VLM 看真实帧;先落地收紧 rubric;镜像对增设翻转轴清晰度门 + 干扰项翻转题干下重新 grounding。 6. **§4.3 回灌环加独立一致性校验+收敛上界;补生成加 quarantine**(R5)。 7. **§4.1 I4 验收指标重构**(R4):补纯算法结构性指标 + 人工/异构审计 + 帧错配安慰剂测试。 ## 关键约束修正 - **grounding 不需要 CLIP**:排除的是专用图像嵌入模型(CLIP/SigLIP 太难装配);VLM 多模态(qwen/MiniMax 直接看帧+文本)可用。故"第二独立视觉裁判 / multi_true 吃帧 / grounding 帧证据核验"均可用 VLM 多模态落地,只是拿不到几何相似度。 ## 反自证验收指标清单(R4 落地) | 指标 | 靶向 | 手段(须非同源自证) | |------|------|---------------------| | 帧错配安慰剂测试 | ①虚假 grounding | 喂错误视频帧打分,分数须显著坍塌 | | 逐维众数命中率 | ②C1 | 纯算法机械投票,阈值≈0.25 | | 答案槽位卡方 + pair 槽位反置率 | ②C6 | 纯统计 | | pair 关系可解率 | ②C2 | P+Q 一起喂盲答器+时序排序规则解法,须≈1/16 | | 双正解率 + 裁判间 κ | ③ | 双 VLM 视觉裁判 + 求解器分歧探针三源投票,基线 33%→阈值≤5% | | 难/烂混淆矩阵 | ④ | 人工/强裁判双标签,对照纯 Phase B 基线 | | 难度判定翻转率 | ④R4 | N 次独立 agent 试答,测判定稳定性 | | 前移拦截覆盖率 | ④R1 | 后置剔除题里"本应生成端拦下"占比 | ## 相关 - 设计: [2026-07-15-question-gen-v2-grounded-contrastive-design.md] - 诊断: [2026-07-15-question-gen-v2-diagnosis-and-strategy.md]