From a79c2ec75399fe3344b07aff7c3e2a9249ecd3a9 Mon Sep 17 00:00:00 2001 From: iomgaa Date: Sat, 11 Jul 2026 07:45:51 -0400 Subject: [PATCH] docs(wiki): add three-round analysis findings and Spec-1/2/3 designs --- .../2026-07-11-agent-runtime-fixes-design.md | 69 +++++++++++ .../2026-07-11-batch-tree-build-design.md | 83 +++++++++++++ .../2026-07-11-question-gen-v2-design.md | 112 +++++++++++++++++ research-wiki/designs/agent-runtime-fixes.md | 14 +++ research-wiki/designs/batch-tree-build.md | 13 ++ research-wiki/designs/question-gen-v2.md | 14 +++ .../2026-07-11-benchmark-failure-taxonomy.md | 78 ++++++++++++ ...07-11-question-gen-calibration-analysis.md | 114 ++++++++++++++++++ research-wiki/graph/edges.json | 15 +++ research-wiki/index.md | 14 ++- research-wiki/log.md | 4 + 11 files changed, 528 insertions(+), 2 deletions(-) create mode 100644 research-wiki/designs/2026-07-11-agent-runtime-fixes-design.md create mode 100644 research-wiki/designs/2026-07-11-batch-tree-build-design.md create mode 100644 research-wiki/designs/2026-07-11-question-gen-v2-design.md create mode 100644 research-wiki/designs/agent-runtime-fixes.md create mode 100644 research-wiki/designs/batch-tree-build.md create mode 100644 research-wiki/designs/question-gen-v2.md create mode 100644 research-wiki/findings/2026-07-11-benchmark-failure-taxonomy.md create mode 100644 research-wiki/findings/2026-07-11-question-gen-calibration-analysis.md diff --git a/research-wiki/designs/2026-07-11-agent-runtime-fixes-design.md b/research-wiki/designs/2026-07-11-agent-runtime-fixes-design.md new file mode 100644 index 0000000..f5b2375 --- /dev/null +++ b/research-wiki/designs/2026-07-11-agent-runtime-fixes-design.md @@ -0,0 +1,69 @@ +# Spec-1:Agent 执行环境修复(解析容错 + 步级重试 + 摘要附实体) + +- **日期**: 2026-07-11 +- **状态**: 已批准(用户确认,步级重试退避改为 20s/40s) +- **依据**: `research-wiki/findings/2026-07-11-benchmark-failure-taxonomy.md` §四(T8,5 题)与 §二 M1(view_node 摘要吞 entities) +- **系列**: Spec-1/2/3 三件套之一,见 [2026-07-11-batch-tree-build-design.md]、[2026-07-11-question-gen-v2-design.md] + +## 1. 问题 + +| # | 缺陷 | 证据 | 影响 | +|---|------|------|------| +| A1 | `_parse_response`(`core/agent/loop.py:265-300`)只接受 `action.args` 嵌套结构;deepseek 稳定输出变体(args 平铺 + ```json 围栏)解析三连拒 → 0 步阵亡 | 637-3、615-3 | 整题报废,且 json_repair 修不了结构错位 | +| A2 | LLM 调用异常(`loop.py:118-129`)直接整题终止,无步级重试 | 796-3(SSL BAD_RECORD_MAC 废掉 13 步上下文) | 一次网络抖动损失全部已积累推理 | +| B | `summarize_node`(`app/search/summarizer.py`)两轮按题摘要后 entities/visible_text 不保证幸存 | 786-2、872-3、750-1(Agent 站在证据节点上漏读实体) | M1 负证据幻觉的恶化因素 | + +## 2. 设计 + +### A1 解析容错(结构归一化层) + +在现有 `repair_json → json.loads → 校验` 之后、返回 None 之前,增加确定性归一化: + +1. **围栏剥除**:repair_json 前先剥 ```json / ``` 围栏(正则,幂等)。 +2. **args 收拢**:若 `action` 为 dict 且含 `tool` 但缺 `args`,把 action 下除 `tool` 外的所有平铺键收拢为 `args` 嵌套。 +3. 归一化成功 → 照常执行;失败 → 走现有 retry 追问路径(行为不变)。 + +纯函数实现,用 637-3/615-3 的真实坏输出作单测样本。 + +### A2 步级重试 + +`_call_llm` 异常处理改为步级重试循环: + +| 参数 | 值 | 说明 | +|------|-----|------| +| 重试次数 | 2 | 第 3 次失败才整题终止(stop_reason=error 不变) | +| 退避 | 20s / 40s | 用户指定 | +| 异常范围 | 全部 Exception | 这一层防的是穿透 GovernedLLMClient 内部重试栈的异常(SSL 等),统一兜底不分型 | +| 上下文 | 原样保留 | messages 不回滚,重试即重发 | +| 遥测 | 中间失败记入 error 字段 | 保持调用链可追溯 | + +### B 摘要附带实体原文 + +`summarize_node` 输出末尾由**确定性代码**(非 LLM)追加节点 card 的字段原文: + +``` +[实体] +[画面文字] +``` + +- 摘要后追加 → LLM 无法吞掉;字段为空则不加对应区块 +- 对 anchor / 非 anchor 两种模式一致生效 + +## 3. 不做什么(YAGNI) + +- 不改 GovernedLLMClient 的内部重试栈(已有四层治理) +- 不改判分协议、不动 prompt 版本化内容 +- 不做异常分型重试策略(统一兜底已覆盖已知案例) + +## 4. 验证 + +1. 单测:坏输出样本(围栏/平铺/两者叠加)归一化正确;空 content、缺 tool 仍拒 +2. 单测:步级重试计数与退避(mock LLM 抛错) +3. 单测:summarize_node 追加区块(有/无实体字段两种节点) +4. 集成:抽 10 道 T2/T8 错题重跑(637-3、615-3、786-2、872-3、750-1 必含),对比修复前后 +5. `make test` 全绿 + 覆盖率不降 + +## 5. 被否方案 + +- **prompt 层要求 LLM 修正输出格式**:治标,deepseek 变体是稳定行为,代码归一化是确定性修复 +- **重试时区分异常类型**(仅网络类重试):已知案例全是穿透型异常,分型收益低且易漏 diff --git a/research-wiki/designs/2026-07-11-batch-tree-build-design.md b/research-wiki/designs/2026-07-11-batch-tree-build-design.md new file mode 100644 index 0000000..ebe39da --- /dev/null +++ b/research-wiki/designs/2026-07-11-batch-tree-build-design.md @@ -0,0 +1,83 @@ +# Spec-2:建树批量并行入口 + +- **日期**: 2026-07-11 +- **状态**: 已批准(用户确认两层参数推荐方案) +- **系列**: Spec-1/2/3 三件套之一,见 [2026-07-11-agent-runtime-fixes-design.md]、[2026-07-11-question-gen-v2-design.md] + +## 1. 问题 + +TRM5 只有单视频建树(`app/tree/video_builder.py`,内部 Semaphore(16) 限 VLM/LLM 调用)与修复/迁移工具,**没有多视频批量构建入口**——批量建树只能视频间串行,非 API 阶段(ffmpeg 帧提取、图像编码、IO)与 API 阶段无法跨视频重叠,太慢。 + +## 2. 并发语义调研结论(项目惯例) + +| 位置 | 并行单元 | 惯例 | +|------|---------|------| +| `app/harness/inference.py` | 题目 | 一个 `asyncio.Semaphore` + `gather`,任务级 | +| `tools/repair_trees.py` | 视频 | 视频级 Semaphore + gather + progress.json + 熔断阈值随并发缩放 | +| `app/tree/video_builder.py` | API 调用 | Semaphore 作为参数在协程链中显式传递 | + +建树是唯一任务内部本身有大并发的场景 → **视频级与 API 级信号量必须分开**,否则 16×16=256 API 并发打爆端点与熔断器。 + +## 3. 设计 + +### 入口形态(遵循项目结构规范) + +- `tools/build_trees.py`:独立工具(不被其他模块 import),复刻 `repair_trees.py` 的编排模式 +- `scripts/build_trees.sh`:自包含实验记录,写死参数、零参数复现(GPU 卡号除外) + +### 两层并发参数 + +```mermaid +graph LR + subgraph tools/build_trees.py + V[视频级 Semaphore
video_concurrency=16] --> B1[VideoTreeBuilder 视频A] + V --> B2[VideoTreeBuilder 视频B] + V --> B3[...] + end + B1 --> API[全局共享 Semaphore
api_concurrency=16] + B2 --> API + B3 --> API + API --> E[VLM/LLM 端点] +``` + +| 参数 | 默认 | 语义 | +|------|------|------| +| `--video-concurrency` | 16 | 同时在建的视频数;吞吐提升来自非 API 阶段跨视频重叠 | +| `--api-concurrency` | 16 | 全局在途 VLM/LLM 调用上限,跨所有视频共享**一个** Semaphore 实例——端点压力与今天单视频建树完全一致 | + +熔断阈值按 repair_trees 惯例缩放:`max(cfg_threshold, api_concurrency * 2)`。 + +### builder 改动(唯一的存量修改) + +`VideoTreeBuilder` 的内部 Semaphore 改为**可注入参数**(构造器可选传入外部 Semaphore;不传则自建,单视频调用行为零变化)。builder 内部协程链本就显式传递 Semaphore,改动面极小。 + +### 断点续跑 + +- 视频级:`progress.json`(复用 repair_trees 的 `save_progress` 模式);tree.json 存在且完整性校验通过的视频自动跳过 +- 视频内:现有段级恢复(核心算法 #3)不动 + +### 输入输出 + +- 输入:`--videos-dir`(视频文件 + 可选同名 SRT) +- 输出:`store/videos//tree.json`;帧持久化沿用现有 cache 机制 + +## 4. 风险与观测 + +- 16 路并行 ffmpeg/cv2 解码可能压满 CPU/磁盘 → 实现时输出速率日志(视频/分钟,复刻 repair_trees),观测后再调 video_concurrency +- 日志遵循"禁止缓存、立即输出"(CLAUDE.md §2.1) + +## 5. 不做什么(YAGNI) + +- 不做分布式/多机;不做动态并发自适应 +- 不改单视频建树算法(核心算法 #1/#2/#3 保真,仅信号量注入) + +## 6. 验证 + +1. 单测:Semaphore 注入后单视频行为不变(默认自建路径) +2. 集成:3-4 个短视频小批量构建,验证跨视频并行、progress 跳过、全局 API 信号量生效(遥测里在途调用数 ≤ api_concurrency) +3. 中断-恢复测试:构建中 Ctrl+C 后重跑,已完成视频跳过、未完成视频从段级断点续跑 + +## 7. 被否方案 + +- **单一视频级 Semaphore(repair_trees 原样照搬)**:建树内部并发大,总 API 并发 = 视频数 × 内部并发,不可控 +- **仅共享全局 API Semaphore、视频数不限**:任意多视频同时提帧会压垮磁盘 IO/CPU diff --git a/research-wiki/designs/2026-07-11-question-gen-v2-design.md b/research-wiki/designs/2026-07-11-question-gen-v2-design.md new file mode 100644 index 0000000..5c89b9c --- /dev/null +++ b/research-wiki/designs/2026-07-11-question-gen-v2-design.md @@ -0,0 +1,112 @@ +# Spec-3:出题管线 v2(失败机理靶向 + 逐题质量门) + +- **日期**: 2026-07-11 +- **状态**: 已批准(用户确认:双标签体系、轻量档全量 + 重量档 15% 抽检) +- **依据**: 三轮分析——`findings/2026-07-11-question-gen-calibration-analysis.md`(生成题缺陷与根因)、`findings/2026-07-11-benchmark-failure-taxonomy.md`(242 错题机理分类与 11 种题型规格) +- **系列**: Spec-1/2/3 三件套之一;Spec-1 修好的推理环境是本 spec 重量抽检的前置 + +## 1. 目标重定义 + +出题目标从"难度与 benchmark 一致"改为:**覆盖已证实的失败机理(M1-M5)+ 逐题质量门**。 + +| 决策 | 内容 | +|------|------| +| calibrate 降级 | 仅作观测性报表,不再是验收门 | +| 评分协议不变 | 标准四选一按字母判分;harness/推理侧零改动。题型规格中"附证据节点 id"等要求降级为**构造时验证材料**,存题目元数据供 diagnose 分析 | +| 双标签体系 | 主标签 `task_type`(Video-MME 12 类,进化循环 mini-batch/gate/skills/diagnose 零改动)+ 附加字段 `skill_target`(M1-M5/题族,仅用于出题配比、质检、覆盖率统计) | +| 质检两档 | 轻量四门全量逐题;重量档(盲 Agent 全树试答)15% 抽检 + 难度标签 | + +## 2. 流水线架构 + +重构 `app/question_gen/synthesizer.py` + `tools/generate_questions.py` generate 子命令: + +```mermaid +graph LR + S[采样器
按题族选素材] --> G[生成器
题族 prompt 模板
双标签输出] + G --> P[确定性后处理
shuffle+答案重映射
指代黑名单
verbatim 检测] + P --> Q{轻量四门 全量} + Q -->|拒| R[带拒因重出
同 slot 最多 3 次] + R --> G + Q -->|过| H[重量抽检 15%
盲 Agent 试答→difficulty_steps] + H --> W[入库 generated-v2] +``` + +### 2.1 五题族(11 种题型的落地归并) + +每族一个采样器 + 一个 prompt 模板,题型(shape)作为模板参数: + +| 题族 | 覆盖题型 | 采样约束 | 治什么 | 默认配比 | +|------|---------|---------|--------|---------| +| 检索族 | 证据埋深/反"不存在"、ASR 实体对齐、属性辨析 | 证据取自 entities/visible_entities/visible_text/长字幕单句;配镜像题(真不存在) | M1 负证据幻觉(最大杠杆) | 30% | +| 推理族 | 转述还原、NOTA 校准对 | 从字幕单句做一步语义变换(蕴含/虚拟语气/序数映射);NOTA 成对生成(半正解半陷阱) | M2 字面匹配 | 25% | +| 枚举族 | 多实例锚定、序数枚举、覆盖率权重 | **source_nodes ≥ 3 跨 L1**;同类事件 ≥2 次;首个表面匹配必须是错的 | M3 锚定/盘点 | 20% | +| 视觉族 | 状态演化多帧、实例消歧数字 | 证据仅在帧内、不在任何 card 文本;多时刻真实读数做干扰项 | M4 视觉验证 | 15% | +| 空间族 | 参照系空间 | spatial_layout 字段 + 时间锚;摄像机/被摄者双参照系 | T5 空间 | 10% | + +### 2.2 确定性后处理(零 LLM 成本,通用硬约束) + +1. **选项 shuffle** + 答案字母重映射(修复 v1 答案 57% 在 A 的偏斜) +2. **指代黑名单**(正则):禁 this segment / this frame / this clip / the current frame / the scene / frame summary 等;题干必须含 L1 time_range 时间锚("between 10:52 and 21:44"式)或全局限定语("in the entire video") +3. **verbatim 检测**:题干+正确项 vs 源节点文本的 n-gram 重合门(检索族豁免正确项检测——其证据本来就在文本,见 2.3) +4. **出题禁区**:不出 T1 类素材题(瞬时动作/记分牌时序/无对白因果);不复刻 T7 噪声模式(选项重复、口径含糊的计数边界) + +### 2.3 轻量四门(全量逐题,约 4 次单轮 LLM 调用/题) + +| 门 | 判定 | 杀什么 | +|----|------|--------| +| 键验证 | 拿出题依据(source_nodes 原文)判标注答案是否成立 | 标注幻觉(v1 CP 组 2 例无出处) | +| 盲答测试 | 不给任何视频信息裸答,答对即拒 | 常识可解题、干扰项秒排题 | +| 多真测试 | 拿全树素材判是否 >1 选项可为真 | 歧义多解题(v1 SR 组 5/8) | +| 泄漏测试 | **按题族条件化**(见下) | 一跳检索捷径 | + +**泄漏门的题族捷径画像**("信息不对称化"的落地): + +| 题族 | 捷径画像(该捷径必须失败才放行) | +|------|--------------------------------| +| 检索族 | top-5 语义搜索片段裸答必须失败(全树 card 文本裸答**允许**成功——考的是检索深度) | +| 视觉族 | 全树 card 文本裸答必须失败(逼 observe_frame) | +| 推理/枚举/空间族 | 锚点节点文本裸答必须失败(需变换/跨节点) | + +### 2.4 重出循环与重量抽检 + +- 拒题 → 拒因回填到生成 prompt → 同 slot 重出,最多 3 次;3 次仍拒则该 slot 换素材重采样 +- 通过四门的题按 15% 抽样跑盲 Agent 全树试答(复用 Spec-1 修复后的推理管线):验证真实可答性,产出 `difficulty_steps` 难度标签 + +## 3. 数据与版本 + +| 项 | 决策 | +|----|------| +| 旧 240 题 | 原地保留 `store/questions/generated/`(infer_gen240 run 引用它,保可复现) | +| 新题集 | `store/questions/generated-v2/`,workspace 以 `--questions generated-v2` 指向 | +| 题目元数据新增 | `skill_target`、`source_nodes`(已有)、`gate_report`(四门判定)、`difficulty_steps`(抽检题) | +| 规模 | 默认 240 题;**task_type 均匀(20/类)为硬约束**(进化循环分层需要),**族配比为软目标(±5%)**——采样器按"族 × task_type 兼容矩阵"(如枚举族→Counting/Temporal 类)分配每题的双标签;YAML 可扫 | + +## 4. 配置归属(D7 规则) + +- **科研配置**(per-experiment YAML):族配比、门阈值(n-gram 窗口、多真判定温度)、抽检率、重出上限、规模 +- **工程配置**(`.env`):LLM/VLM 端点、超时、熔断——沿用现有 + +## 5. 运行时数据 + +每题的门判定记录(哪门拒、拒因文本、重出轮次、最终状态)落 SQLite。表结构在设计批准后走 `structured-logging` skill 单独设计(本 spec 只约定:记录必须逐题可追溯、可聚合出各门拦截率报表)。 + +## 6. 不做什么(YAGNI) + +- 不改判分协议、不改 harness/推理侧、不改 mini-batch/gate/diagnose 的 task_type 分组 +- 不做对抗式加难迭代(留到自进化循环跑通后,须固定出题对手版本) +- 不做 T1 树增强(用户已确认本次不做) +- 不引入树外信息源(原始视频重新抽帧出题)——视觉族用现有帧缓存即可 + +## 7. 验证 + +1. Smoke:12 个视频 × 每族 2-3 题,验证四门拦截率、重出收敛(≤3 轮)、双标签与元数据完整性 +2. 全量:生成 240 题 → `bash scripts/infer_generated.sh`(指向 generated-v2)→ calibrate 报表观测 +3. 回归断言:新题集答案位置分布均匀(卡方检验);指代黑名单零命中;泄漏门画像全部通过 +4. 单测:后处理层纯函数(shuffle 重映射、黑名单、n-gram 门) + +## 8. 被否方案 + +- **纯 prompt 补丁**:第二轮设计层分析证明 7 类缺陷中 5 类会换形复发(信息闭环是结构问题) +- **失败机理作为主标签**:进化循环全链改造,收益不明确;先以元数据形式观察其价值 +- **重量档全量**:240 题 ≈ 一次完整推理实验(4-5 小时),轻量四门已拦截三轮发现的全部缺陷类型 +- **难度一致性作为验收门**:三轮分析证明分数一致性是坏代理指标(假难/假易双向失真) diff --git a/research-wiki/designs/agent-runtime-fixes.md b/research-wiki/designs/agent-runtime-fixes.md new file mode 100644 index 0000000..7606617 --- /dev/null +++ b/research-wiki/designs/agent-runtime-fixes.md @@ -0,0 +1,14 @@ +--- +type: design +node_id: design:agent-runtime-fixes +title: "Spec-1 Agent 执行环境修复(解析容错+步级重试+摘要附实体)" +date: 2026-07-11 +--- + +# Spec-1 Agent 执行环境修复(解析容错+步级重试+摘要附实体) + +**完整设计**: [2026-07-11-agent-runtime-fixes-design.md](2026-07-11-agent-runtime-fixes-design.md) + +- **选定方案**: 解析层结构归一化(围栏剥除+args 收拢)+ 步级重试(2 次,20s/40s 退避,全异常兜底)+ summarize_node 确定性追加实体原文区块 +- **依据**: benchmark 错题 T8 5 例(0 步阵亡/网络抖动废题)+ M1 恶化因素(摘要吞实体) +- **被否方案**: prompt 层修格式(治标);异常分型重试(收益低易漏) diff --git a/research-wiki/designs/batch-tree-build.md b/research-wiki/designs/batch-tree-build.md new file mode 100644 index 0000000..301ca2d --- /dev/null +++ b/research-wiki/designs/batch-tree-build.md @@ -0,0 +1,13 @@ +--- +type: design +node_id: design:batch-tree-build +title: "Spec-2 建树批量并行入口" +date: 2026-07-11 +--- + +# Spec-2 建树批量并行入口 + +**完整设计**: [2026-07-11-batch-tree-build-design.md](2026-07-11-batch-tree-build-design.md) + +- **选定方案**: tools/build_trees.py + scripts/build_trees.sh;两层并发参数(video_concurrency=16 视频级 + api_concurrency=16 全局共享 Semaphore 注入 builder);repair_trees 惯例的 progress.json 断点续跑与熔断阈值缩放 +- **被否方案**: 单一视频级信号量(API 并发不可控 16×16);仅全局 API 信号量(磁盘 IO 无界) diff --git a/research-wiki/designs/question-gen-v2.md b/research-wiki/designs/question-gen-v2.md new file mode 100644 index 0000000..b350e20 --- /dev/null +++ b/research-wiki/designs/question-gen-v2.md @@ -0,0 +1,14 @@ +--- +type: design +node_id: design:question-gen-v2 +title: "Spec-3 出题管线 v2(失败机理靶向+逐题质量门)" +date: 2026-07-11 +--- + +# Spec-3 出题管线 v2(失败机理靶向+逐题质量门) + +**完整设计**: [2026-07-11-question-gen-v2-design.md](2026-07-11-question-gen-v2-design.md) + +- **选定方案**: 失败机理靶向(5 题族/11 题型,族配比软目标)+ 确定性后处理 + 轻量四门全量(键验证/盲答/多真/按族泄漏画像)+ 重量档 15% 抽检;双标签(task_type 主键 + skill_target 元数据);新题集 generated-v2 +- **依据**: 三轮分析(生成题缺陷两轮 + benchmark 242 错题机理分类) +- **被否方案**: 纯 prompt 补丁(5/7 缺陷类换形复发);机理作主标签(进化循环全链改造);重量档全量(成本≈一次完整推理实验);难度一致性验收(坏代理指标) diff --git a/research-wiki/findings/2026-07-11-benchmark-failure-taxonomy.md b/research-wiki/findings/2026-07-11-benchmark-failure-taxonomy.md new file mode 100644 index 0000000..5784007 --- /dev/null +++ b/research-wiki/findings/2026-07-11-benchmark-failure-taxonomy.md @@ -0,0 +1,78 @@ +# Benchmark 错题失败机理分类(第三轮:242 题全量) + +- **日期**: 2026-07-11 +- **目的**: 出题的目标不是与 benchmark 难度一致,而是产生能迁移的训练信号。本分析对 `infer_adhoc` 全部 242 道错题做机理级归因(统一 8 类分类法),确定出题应针对的技能缺陷、应回流建树/工具的硬缺陷、以及 benchmark 自身的噪声上限。 +- **方法**: 5 组并行深度分析(4 组 Claude + 1 组 Codex/GPT-5.4),每组对 T1/T2 判定强制树内核实(合计 130+ 题做了 tree.json 核实);对 Codex 组做了抽查校准。 +- **前序**: [2026-07-11-question-gen-calibration-analysis.md](生成题缺陷两轮分析) + +## 一、全量分布(242 题) + +| 类别 | 数量 | 占比 | 处置 | +|------|------|------|------| +| T2 检索未命中(证据在树中但没搜到) | 74 | 31% | **出题训练**(全部可学) | +| T5 推理/整合错误(证据在手判错) | 67 | 28% | **出题训练**(约 2/3 可学) | +| T7 题目/标注问题 | 39* | 16% | benchmark 噪声,出题时反向规避 | +| T1 树证据缺失 | 24 | 10% | **回流建树管线**,不出题 | +| T3 视觉验证缺失/误读 | 17 | 7% | 部分可学(多帧验证技能) | +| T4 跨段聚合失败 | 12 | 5% | 出题训练 | +| T8 基础设施 | 5 | 2% | **修 AgentLoop**(见 §四) | +| T6 时间定位失败 | 4 | 2% | 出题训练 | + +*T7 注意事项:其中 27 题来自 Codex 组(Counting/Temporal),抽查发现 1 例误判(604-2 "Selic" 实在树中,应为 T2)且其"树时间戳与标注冲突"类判定存在解释陷阱——树不是 ground truth,冲突也可能是树的时序表征错误。已证实的硬 T7 如 624-2(选项 B/D 一字不差重复)。T7 真实范围估计 20-39,时序类需视频级裁决。 + +**可训练份额:T2+T4+T5+T6 ≈ 157 题(65%)+ T3 部分 ≈ 7%。** 出题的"可作用空间"约占错题的 2/3——远大于树缺陷(10%),这决定了改进优先级在 Agent 技能而非树重建。 + +## 二、五大跨题型失败机理(多组独立收敛) + +### M1 负证据幻觉(T2 的公共机理,最大单一杠杆,4 组独立发现) +语义搜索 2-3 次未命中 → Agent 断言"视频中不存在 X" → 以假阴性驱动排除法,或落入 "None of the above / not mentioned" 吸引子。证据实际以三种低召回形态存在:**实体列表/visible_entities 标签**("Bluetooth headset (both ears)"、"Zwicky")、**画面文字 visible_text**(姓名条、白板比分、标题卡)、**长字幕块中的单句**("well I'm a magician")。恶化因素:view_node 的按题摘要会吞掉 entities 字段信号(Agent 站在证据节点上仍漏读);L1 摘要的沉默被当成全树的沉默。缺失技能:检索升级协议(语义→关键词→变体扩展→分支遍历→entities 直读)+ 负证据高门槛。 + +### M2 字面匹配压倒语义/语用还原(T5 主干) +裁决准则偏向 n-gram 重合而非语义变换:蕴含判断失败(128K 上限→当然能输入 32K)、虚拟语气/反问句误读("I would be a fan")、触发事件当动机、序数映射错(倒计时视频"第 16 个描述"=排名 15)、出题语病零容错、外部世界知识凌驾视频内证据(用 2026 年知识否决 "all goals 200")、NOTA 双向失灵(该容错时跳 NOTA、该保守时过度推断)。 + +### M3 多实例锚定错误 + 首个匹配即停(T4/T6/部分 T5) +题目锚是"第 N 个/最后一个/紧接 X 之后/首次"而视频有多个相似候选,Agent 绑定第一个表面匹配后不再枚举后续推翻证据("FINAL MODE" 之后还有 "we got a whole van");序数题用时长线性外推替代逐项数数;全局占比题不做按时长/节点数的覆盖率统计,用单场景概括全片或用少数反例一票否决主导主题。 + +### M4 视觉验证时点/粒度失配(T3) +用单帧回答状态演化题(上色前的花盆判最终颜色)、observe_frame 过度解读(膝上交握双手读成"十指交叉"魔术环节)、验证帧与题目锚定时刻不对齐(Penny 不在场的帧回答"Penny 进门时")。 + +### M5 实体 grounding / ASR 变体断链(横跨 T2/T5) +题目实体与树内 ASR 噪声变体不对齐(Harry→"Harley"、martabak→"marcher back"、PRZYBYLKO→"pris Bilco"),缺"变体扩展+属性核对(国籍/拼写/归属)"步骤;字幕无说话人标注导致归属靠共现猜测。 + +## 三、树侧硬缺陷(T1,24 题,回流建树管线) + +集中在四类:**亚秒级瞬时动作**(缆绳绊翻卡车被编码成"车轮被橙光吞没")、**密集重复背景动作**(球童每回合捡球)、**记分牌瞬时数值与赛程的时序绑定**(比分帧被标"训练场景")、**无对白叙事因果**(舞台剧对白 ASR 缺失、动画剧情结局)。 + +**⚠️ 树污染(已审计并整改,2026-07-11)**:源头确认为历史建树增强环节曾把题目+答案作为信息输入 LLM 提取。全量普查(900 题 × 300 树,词面 S1/S2 检测):真污染 74 处(52 题、50 视频,87% 在 L2 entities[]);污染题正确率 69.2% 低于基线 73.3%,**未推高评估分数**。整改:71 处经 LLM 按树原生上下文改写(不见题目、出厂门校验与题目零词面命中),3 处经核实为合法屏幕文字/讲座主题引用予以保留;改写后残余命中均为合法重合(画面 OCR、字幕原话、描述性短语碰撞)。整改前全树备份:`data/backups/trees-pre-decontam-20260711.tar.gz`。 + +## 四、工程缺陷(T8,5 题,修 `core/agent/loop.py`) + +1. deepseek 稳定输出变体(`args` 平铺 + ```json 围栏)解析三连拒 → 0 步阵亡(637-3、615-3);json_repair 修不了结构错位,需 parser 增加变体适配 +2. LLM 调用异常(SSL BAD_RECORD_MAC、瞬时 API 错)无步级重试,一次网络抖动废掉 13 步上下文(796-3)。位置:`loop.py:118-159` + +## 五、针对性出题规格(替代"难度一致性"目标) + +| # | 题目形态 | 治什么 | 构造要点 | +|---|---------|--------|---------| +| 1 | **证据埋深/反"不存在"题** | M1(最大杠杆) | 正确判据只在 entities/visible_text/长字幕单句;干扰项含 "not mentioned";配镜像题(真不存在);判分要求证据节点 id + 宣称不存在须附遍历轨迹 | +| 2 | **转述还原题** | M2 | 正确项需一步语义变换(蕴含/虚拟语气/序数映射/轻微语病),干扰项与原句 n-gram 高重合但语义错 | +| 3 | **NOTA 校准对** | M2 | 成对生成:一半 NOTA 为正解、一半为陷阱,训练"最佳可用答案 vs 证据不足"判界 | +| 4 | **多实例锚定题** | M3 | 同类事件出现 ≥2 次的视频,问"第 N 次/紧接 X 后/首次",保证首个表面匹配是错的 | +| 5 | **序数枚举题** | M3 | 无显式编号视频问"第 N 个",N 取中段迫使完整数数;答案附计数单元节点 id 清单(可程序化验证) | +| 6 | **覆盖率权重题** | M3 | 主旨题四选项=全局框架(对)/前半段强子主题/品牌水印词/少数派场景 | +| 7 | **实例消歧数字题** | M4/M5 | 计数器/记分板多时刻读数做干扰项,训练"枚举全部实例→按时刻与主体归属筛选" | +| 8 | **状态演化多帧题** | M4 | 正确答案只在特定时点帧可见(上色后),需多帧对比 | +| 9 | **ASR 实体对齐题** | M5 | 题目用规范拼写/属性指称,树内是 ASR 变体;可程序化挖掘拼写不一致对 | +| 10 | **属性辨析题** | M1/M4 | 两两组合选项(左耳/右耳/双耳),证据只在 entities/spatial_layout 字段 | +| 11 | **参照系空间题** | T5 空间 | 摄像机视角 vs 被摄者视角两种参照系的方位换算 | + +**出题禁区**:T1 类(瞬时动作/记分牌时序/无对白因果)出了也是噪声标签,先修树;T7 类启示逐题验证门必须含"标注答案能被树内证据唯一支持"检查(同时规避复刻 benchmark 噪声)。 + +**与前两轮的关系**:第二轮确定的三件套质量门(确定性后处理 + 信息不对称化 + 三验证器)仍然必要——它们保证题目"合法";本轮的 11 种题型规格决定题目"有用"(瞄准真实失败机理)。两者正交,共同替代事后的分数一致性校准(calibrate 降级为观测性报表)。 + +## 相关文件 + +- Agent 循环(T8 修复点):`core/agent/loop.py:118-159` +- view_node 按题摘要吞 entities 的问题:`app/tree/environment.py`(待定位具体行) +- 树污染审计对象:建树/增强管线历史(`app/tree/`、TRM4 迁移物) +- 数据:`workspaces/default/harness.db`(predictions,run_id='infer_adhoc') diff --git a/research-wiki/findings/2026-07-11-question-gen-calibration-analysis.md b/research-wiki/findings/2026-07-11-question-gen-calibration-analysis.md new file mode 100644 index 0000000..2c0f0b7 --- /dev/null +++ b/research-wiki/findings/2026-07-11-question-gen-calibration-analysis.md @@ -0,0 +1,114 @@ +# 生成题 vs Video-MME 校准差异根因分析(五题型,两轮验证) + +- **日期**: 2026-07-11 +- **数据**: `workspaces/default/harness.db`,run `infer_adhoc`(benchmark 902 题,73.2%)vs `infer_gen240`(生成 240 题,77.5%) +- **第一轮**: 5 个并行分析 agent 按题型逐题核对题面、Agent 推理轨迹与树源节点 +- **第二轮(独立验证)**: 盲复现(无先验中性重分析)+ 全量定量证伪(240 题全量指标)+ 跨模型错题复核(Codex/GPT-5.4 复核 IS+CP,独立 Claude 复核 SR)+ 设计层归因(代码+设计文档通读)+ 混杂因素检验 +- **状态**: 第一轮结论经第二轮修正,见 §六;修正后的根因模型见 §七(以 §七 为准) + +## 一、总览 + +| 题型 | bench | gen | Δ | 表面结论 | 实际根因 | +|------|-------|-----|---|---------|---------| +| Action Reasoning | 73.3% | 100.0% | +26.7% | 偏简单 | 答案泄漏 + 干扰项异质,"搜到即抄" | +| Action Recognition | 65.1% | 85.0% | +19.9% | 偏简单 | 同上;9/20 题干扰项一眼假 | +| Counting Problem | 50.0% | 65.0% | +15.0% | 偏简单 | 20/20 单节点出题,数字直读非计数 | +| Information Synopsis | 81.6% | 60.0% | −21.6% | 偏难 | **假难**:8/8 错题为题目缺陷(作用域不可解析) | +| Spatial Reasoning | 100.0% | 60.0% | −40.0% | 偏难 | **假难**:8/8 错题为良定性缺陷;且与 bench 构念不匹配 | + +**核心洞察:偏简单与偏难是同一组出题缺陷的两面。** 出题范式为"单节点生成 + 干扰项取自其他节点":当题干锚定明确时,Agent 语义搜索一跳命中、异质干扰项整排排除(偏简单);当题干用相对指代(this segment/this frame/this clip)时,出题时的作用域上下文对答题 Agent 不可见,其他节点来的干扰项在全视频读法下同样为真,多个选项皆真甚至标注答案为假(假偏难)。 + +## 二、跨题型系统性缺陷 + +| # | 缺陷 | 机制 | 波及 | +|---|------|------|------| +| 1 | **闭环泄漏**:题从树节点文本生成,Agent 又在同一批文本上语义搜索 | 题干实词与节点原文重合度平均 45%,正确选项重合度 51%(最高 100%,逐字照抄);生成题平均 8.3-8.8 步 vs benchmark 13.3 步 | AR、ARec、CP 全部;"开卷考自己的教材" | +| 2 | **干扰项策略错误**:prompt 明文规定"干扰选项应来自其他节点"(synthesizer.py:532) | 锚定型题干 → 异质干扰秒排;指代型题干 → 干扰项皆为视频真实事实,无法排除 | 全部五题型,双向破坏难度 | +| 3 | **相对指代不可解析**:this segment / this frame / this clip / the first shot | 出题时指源节点,推理管线(inference.py `_run_single_question`)不传作用域,Agent 只能按全视频理解 | IS 8/8 错题、SR 8/8 错题、CP 3/7 错题 | +| 4 | **选项无 shuffle**:`parse_vlm_response`(synthesizer.py:626)原样透传 VLM 输出 | 全 240 题答案分布 A=137(57%)/B=68/C=30/D=5(2%);benchmark 均匀。实测 Agent 位置偏好弱(bench 上 A 73.5% vs D 70.5%),影响约 1-2pp,但污染一切位置敏感评估 | 全部 | +| 5 | **元问题与内部术语泄漏**:题面出现 "the frame summary" / "the scene summary" / "event description 里描述了几个事件" | 考的是树构建产物措辞而非视频内容 | CP、SR、IS 各 1-2 题 | +| 6 | **题型漂移**:prompt 对题型约束只有裸 `f"题型: {task_type}"` | AR 中约 3 题实为事实回忆,ARec 中 4 题不考动作 | AR、ARec | +| 7 | **标注幻觉/答案不唯一**:卡片无数字时出题 LLM 编造;比分类量随时间变化 | CP:dXBREPP1hfo-004 标注 7、帧中实为 6;rVPDIRSyS34-010 平局分数 7 和 8 都成立 | CP、ARec 个别 | + +## 三、各题型要点 + +### Action Reasoning(100% 全对) +题干直接引用 visible_text/字幕原句甚至时间戳(如 "Red side stole the Voidgrubs!"),正确答案是节点原文摘录;Agent reasoning 自曝排除逻辑——"这个选项属于别的片段"。真题用时间窗/序数定位、答案不在任何一句字幕中显式出现。一句话:**真题考"看懂后想",生成题考"搜到后抄"**。TaskTypeSpec 定义为单 L2 节点,结构上不可能产生跨片段因果推理。 + +### Action Recognition(85%) +干扰项质量三档:一眼假 9/20、跨场景 5/20、接近 benchmark 水准 6/20。3 道错题全部落在质量最高一档,且错因是题目缺陷(多解、标注争议、指代不清)——即对 Agent 构成真实挑战的题几乎为零。benchmark 难点(哪只耳朵戴耳机、两两组合选项)恰是树摘要不编码的细节。 + +### Counting Problem(65%) +20/20 单 source_node;benchmark 错题 83% 要求跨全片枚举实例。生成题 10/20 数字直接写在字幕/屏幕文字里("we got 10 infrared cameras"),Agent 是"定位后读数"不是"数"。7 道错题中 6 道是题目缺陷(指代错位 3、元问题 1、标注幻觉 1、答案不唯一 1),剔除后有效正确率 ≈ 93%——**实际比 65% 显示的更简单**。 + +### Information Synopsis(60%,假难) +8/8 错题为题目缺陷:单 L1 段落出题,题干"this segment"不可解析 + 干扰项为其他段落真实事实 → 全视频读法下多选项皆真(tslKtm6Le1s-007 四个选项全部属实),甚至标注答案为假(lw3_W5X1t54-017 的"NOT included"项实际出现在 L1_000)。含 segment/scene 指代的 11 题错 7 道(64%),无指代的 9 题只错 1 道(11%)。benchmark 163 题仅 1 题提 segment。Agent 检索与证据链本身高质量,**修复作用域后差距预计大部分消失**。 + +### Spatial Reasoning(60%,假难 + 构念不匹配) +意外正面发现:树的 L3 节点有专门 `spatial_layout` 字段,8 道错题标注答案全部能在源节点逐字找到依据,"文本树丢失空间信息"的预设风险未发生。真正缺陷是帧级问题抛到视频级作答:"this frame" 无时间锚,长视频多个帧满足题干,干扰项又是其他帧的真实布局 → 每个选项都在某帧为真。另外 benchmark 的 11 道"Spatial Reasoning"实为视频级粗粒度题(哪个大洲/哪国),与生成题的帧级布局题考的不是同一能力,**p=0.028 的对比在构念上不成立**。 + +## 四、修复建议(按优先级) + +| 级 | 措施 | 位置 | +|----|------|------| +| P0 | 解析后代码级 shuffle 选项并重映射 answer(勿指望 prompt) | synthesizer.py:626 | +| P0 | 干扰项策略反转:删除"来自其他节点",改为"与正确答案同场景最小扭曲(换实体/数量/方向),且须在全视频范围内可证伪" | synthesizer.py:532 | +| P0 | 题干指代黑名单:禁 this segment/frame/clip、the frame summary 等;必须携带全片可定位锚(时间段用 L1 time_range 现成字段) | prompt | +| P1 | **verifier 回环**(拦截力最强):出题后让不带 source_nodes 提示的 Agent 在全树作答,非唯一收敛即拒题;本次五题型的缺陷题几乎全部会被拦截 | 新增验证步 | +| P1 | 反泄漏 gate:题干/正确选项 vs 源节点文本 n-gram 或 embedding 重合度门控 | 新增验证步 | +| P1 | Counting 强制 source_nodes≥3 跨 L1 段,标注答案数字出现在任一源节点文本中即判"直读题"退回 | synthesizer.py TaskTypeSpec | +| P1 | Information Synopsis 强制全视频作用域(source_nodes=全部 L1) | 同上 | +| P2 | 题型定义注入 prompt(1-2 句判据),替代裸 `f"题型: {task_type}"` | synthesizer.py:529 | +| P2 | 感知计数双重验证(VLM 对原帧重数);答案唯一性检查(时变量全树扫描) | 新增验证步 | + +## 五、对当前 240 题的处置判断 + +当前题集**不宜直接用作进化训练信号**:偏简单题型的"正确"不代表能力,偏难题型的"错误"是标注/良定性噪声——diagnose 阶段会把 Agent 的正确行为归因为缺陷。建议按 P0-P1 修复出题管线后重新生成并重跑校准。 + +## 六、第二轮独立验证:对第一轮的修正 + +| 第一轮结论 | 第二轮判定 | 依据 | +|-----------|-----------|------| +| AR/IS/SR 差异显著 | **成立**(AR p=0.004、IS p=0.020、SR p<0.001,二项检验) | 统计复核 | +| ARec (+19.9%)、CP (+15%) 偏简单 | **降级为统计噪声**(p=0.064 / p=0.263,n=20 置信区间过宽);逐题缺陷仍真实存在,但差异幅度不作为证据 | 盲复现 + 统计复核 | +| 答案泄漏是偏简单主因 | **修正**:泄漏现象成立(题干+正确项 containment gen 显著高于 bench,p=1.7e-20;过半生成题正确项实词可在单一节点 100% 找到),但**泄漏程度不预测逐题表现**(答对/答错组正确项泄漏度 p=0.97)。有预测力的是**题干检索可定位性**(p=0.006,三分位准确率 67.8%→81.5%→85.2%)。纯文本捷径仅得 44% vs Agent 77.5%,泄漏解释力有限 | 全量定量证伪 | +| 干扰项异质可"不看视频排除" | **修正**:异质性成立(embedding gap p=5.6e-07,bench 无此偏差),但"直接排除"不成立(题干相似度启发式仅 41.7%) | 全量定量证伪 | +| IS 8/8、CP 6/7 错题是"题目缺陷" | **归因口径修正**:跨模型复核(Codex)判 11/15 为"Agent 作用域漂移"——但机制一致:题目绑定的源段落作用域**不随题传递**,Agent 无从锁定。是"出题作用域与答题作用域不对齐"的管线缺陷,双方各执一端。另确认 2 题标注无出处(E 类幻觉)、1 题多解、1 题真难 | Codex 复核 | +| SR 8/8 错题是良定性缺陷 | **修正为 5B + 3C**:5 题确为多解(干扰项在其他帧逐字成立),但 **3 题是 Agent 真实检索失败**——其中 2 题 Agent 断言"无证据"的内容逐字存在于源帧 spatial_layout。Agent 有真实的检索漏检失败模式,这是自进化的有效信号 | 独立 SR 复核 | +| 视频子集/管线/位置偏好等混杂 | **全部排除**:157 视频上 bench 73.8% vs 其余 72.5%;每题型分布在 19-20 个视频无集中;Agent 无位置先验(bench 上 A 73.5% vs D 70.5%)。注意事项:两 run git_sha 不同(超时 120s→300s、Redis 修复),adhoc 有 5 道空预测(0.55%),影响可忽略但应记录 | 混杂检验 | +| 修 prompt 可解决 | **强否定**:设计层归因确认 7 类症状中仅"无 shuffle"是实现事故;"复用节点原文"与"干扰项取自其他节点"是设计文档(synth-design §3.5)明文规定方案的结构必然。纯 prompt 补丁下 5 类缺陷换形复发 | 设计层归因 | + +## 七、修正后的根因模型(最终版) + +四层因果链,上游到下游: + +| 层 | 根因 | 证据强度 | 修复对象 | +|----|------|---------|---------| +| **L0 结构** | 出题与答题共享同一封闭信息源(树 card 文本),且单遍生成零逐题验证——可答性/唯一性/难度/防泄漏是全树+答题环境的全局函数,出题 LLM 对其观测为零比特 | 强(设计文档+代码+信息论论证) | 出题架构 | +| **L1 设计规定** | (i) 单节点采样规格:240/240 单 source_node,无一道跨节点整合题——偏简单最结构性的来源;(ii) 干扰项取自其他节点(§3.5 原文):锚定题秒排、全局题多真 | 强(全量统计+代码+盲复现独立收敛) | TaskTypeSpec + 干扰项策略 | +| **L2 传递缺口** | 出题作用域不随题传递:"this segment/frame" 悬空指代 → 多解。含悬空指代题错误率 35% vs 干净题 18%;IS 8 错题 7 道、SR 5/8 道属此 | 强(三路独立收敛:Claude 判"题目缺陷"、Codex 判"Agent 漂移",机制同一) | 题干自包含化(嵌 L1 time_range) | +| **L3 表面工件** | 无 shuffle(答案 57% 在 A、2% 在 D);正确项最长(53% vs bench 39%);标注幻觉(≥2 题数字无出处);题型漂移 | 强(全量统计) | 后处理+验证器 | + +附带发现(Agent 侧):SR 复核确认 3 道错题是 Agent 真实检索失败(含 2 道"断言无证据但证据逐字存在"),这类漏检模式是 diagnose/evolve 的有效训练信号,与题目缺陷应严格区分。 + +## 八、一次性修复架构(第二轮设计结论,替代 §四优先级表) + +纯 prompt 补丁被明确否决(5/7 缺陷类换形复发)。推荐组合三件套,每题约 4 次轻量 LLM 调用(240 题约 1000 次,离线预处理,Runner 零改动): + +| # | 组件 | 杀死的缺陷类 | 成本 | +|---|------|-------------|------| +| 1 | **确定性后处理层**:代码 shuffle+answer 重映射、悬空指代正则黑名单、题干/选项 vs 全树 card 的 n-gram verbatim 检测拒题 | L3 全部 + 显式指代 | ~100 行纯函数,0 LLM 调用 | +| 2 | **信息不对称化 + 采样规格改造**:L3 题从帧的未入摘要视觉细节出题;Counting/IS 采样规格改跨 ≥2 个 L2(IS 全部 L1);题干强制嵌入 L1 time_range 时间锚;泄漏 gate=文本-only 试答(给 LLM 全部相关 card 文本,能答对即拒) | L0/L1 结构病根(唯一触及信息重合的方案);迫使 Agent 走 observe_frame 下探与多跳聚合——正是训练目标 | 改 TASK_TYPE_LEVEL_MAP + prompt + 1 调用/题 | +| 3 | **轻量三验证器**:键验证(VLM 拿锚点证据判 key 成立否→杀标注幻觉)、盲答测试(无视频信息裸答,答对即拒→杀常识/秒排)、多真测试(拿全部干扰素材判 >1 选项可真否→杀歧义多解) | L2 残留 + 标注幻觉;保护 diagnose 信号纯度(错键题=有毒梯度) | 3 调用/题 | +| 锦上添花 | 全量盲 Agent 试答作准入抽检 + 难度标签(喂 mini-batch 构建);对抗式加难留到自进化跑通后(须固定出题对手版本保分布平稳) | 难度校准 | 一次完整 infer | + +**注意**:作用域修复方式选"题干嵌时间锚"而非"推理时传 source_nodes"(Codex 曾建议后者)——传 source_nodes 等于泄漏答案位置,搜索训练失效;Video-MME 真题的做法正是把时间锚写进题面("At the 06:00 mark...")。 + +## 相关文件 + +- 出题逻辑:`app/question_gen/synthesizer.py`(TaskTypeSpec:67-83、干扰项采样:201-208/289-295/372-373/443、prompt:507-600、parse:626) +- 唯一质量门(现状):`tools/generate_questions.py:758-765`(仅 JSON 格式+embedding 去重) +- 答题侧作用域缺失:`app/search/prompt.py:79-107`(只传 question/options/L1 根列表) +- 设计文档规定处:`research-wiki/designs/2026-07-09-question-gen-synth-design.md` §3.5(干扰项来自其他节点)、§6(校准为聚合级非逐题门) +- 定量分析脚本与逐题指标:scratchpad `leakage_analysis.py`、`metrics.json`(会话级临时目录) +- 数据:`store/questions/generated/`、`store/videos//tree.json`、`workspaces/default/harness.db` diff --git a/research-wiki/graph/edges.json b/research-wiki/graph/edges.json index 36ef958..1e50b5f 100644 --- a/research-wiki/graph/edges.json +++ b/research-wiki/graph/edges.json @@ -80,6 +80,21 @@ "id": "plan:main-inference-entry", "label": "main.py 推理入口 + 初始 Prompt 集实现计划", "type": "plan" + }, + { + "id": "design:agent-runtime-fixes", + "label": "Spec-1 Agent 执行环境修复(解析容错+步级重试+摘要附实体)", + "type": "design" + }, + { + "id": "design:batch-tree-build", + "label": "Spec-2 建树批量并行入口", + "type": "design" + }, + { + "id": "design:question-gen-v2", + "label": "Spec-3 出题管线 v2(失败机理靶向+逐题质量门)", + "type": "design" } ], "links": [ diff --git a/research-wiki/index.md b/research-wiki/index.md index 9ba7535..3173581 100644 --- a/research-wiki/index.md +++ b/research-wiki/index.md @@ -1,15 +1,21 @@ # Research Wiki 索引 -> 自动生成,更新时间:2026-07-09 14:43 UTC +> 自动生成,更新时间:2026-07-11 11:43 UTC -## design (15) +## design (21) - [2026-07-06-core-agent-adapters-llm-design](designs/2026-07-06-core-agent-adapters-llm-design.md) `design:2026-07-06-core-agent-adapters-llm-design` - [2026-07-07-app-harness-design](designs/2026-07-07-app-harness-design.md) `design:2026-07-07-app-harness-design` - [2026-07-07-core-evolution-design](designs/2026-07-07-core-evolution-design.md) `design:2026-07-07-core-evolution-design` - [2026-07-08-tree-repair-resilience-design](designs/2026-07-08-tree-repair-resilience-design.md) `design:2026-07-08-tree-repair-resilience-design` - [2026-07-09-paper-main-figure-design](designs/2026-07-09-paper-main-figure-design.md) `design:2026-07-09-paper-main-figure-design` +- [2026-07-11-agent-runtime-fixes-design](designs/2026-07-11-agent-runtime-fixes-design.md) `design:2026-07-11-agent-runtime-fixes-design` +- [2026-07-11-batch-tree-build-design](designs/2026-07-11-batch-tree-build-design.md) `design:2026-07-11-batch-tree-build-design` +- [2026-07-11-question-gen-v2-design](designs/2026-07-11-question-gen-v2-design.md) `design:2026-07-11-question-gen-v2-design` - [main.py 推理入口 + 初始 Prompt 集设计](designs/2026-07-09-main-inference-entry-design.md) `design:2026-07-09-main-inference-entry-design` - [main.py 推理入口 + 初始 Prompt 集设计](designs/main-inference-entry.md) `design:main-inference-entry` +- [Spec-1 Agent 执行环境修复(解析容错+步级重试+摘要附实体)](designs/agent-runtime-fixes.md) `design:agent-runtime-fixes` +- [Spec-2 建树批量并行入口](designs/batch-tree-build.md) `design:batch-tree-build` +- [Spec-3 出题管线 v2(失败机理靶向+逐题质量门)](designs/question-gen-v2.md) `design:question-gen-v2` - [出题模块迁移设计(question_gen)](designs/2026-07-07-question-gen-design.md) `design:2026-07-07-question-gen-design` - [建树修复管线:熔断根因修复 + 断点续跑 + 并发改造](designs/tree-repair-resilience.md) `design:tree-repair-resilience` - [建树模块竖切设计:数据结构 + 建树 + 修复 + 迁移](designs/2026-07-07-tree-module-design.md) `design:2026-07-07-tree-module-design` @@ -19,6 +25,10 @@ - [赛题生成工具设计](designs/question-gen-synth.md) `design:question-gen-synth` - [赛题生成工具设计(Question Generation Synthesis)](designs/2026-07-09-question-gen-synth-design.md) `design:2026-07-09-question-gen-synth-design` +## finding (2) +- [2026-07-11-benchmark-failure-taxonomy](findings/2026-07-11-benchmark-failure-taxonomy.md) `finding:2026-07-11-benchmark-failure-taxonomy` +- [2026-07-11-question-gen-calibration-analysis](findings/2026-07-11-question-gen-calibration-analysis.md) `finding:2026-07-11-question-gen-calibration-analysis` + ## plan (17) - [2026-07-06-core-agent-adapters-llm](plans/2026-07-06-core-agent-adapters-llm.md) `plan:2026-07-06-core-agent-adapters-llm` - [2026-07-07-app-harness](plans/2026-07-07-app-harness.md) `plan:2026-07-07-app-harness` diff --git a/research-wiki/log.md b/research-wiki/log.md index e2a9aea..eaf9209 100644 --- a/research-wiki/log.md +++ b/research-wiki/log.md @@ -38,3 +38,7 @@ - [2026-07-09 14:42 UTC] 新增 plan: main.py 推理入口 + 初始 Prompt 集实现计划 (plan:main-inference-entry) - [2026-07-09 14:43 UTC] 新增边: plan:main-inference-entry --implements--> design:main-inference-entry - [2026-07-09 14:43 UTC] 重建索引: 32 篇页面 +- [2026-07-11 11:43 UTC] 新增 design: Spec-1 Agent 执行环境修复(解析容错+步级重试+摘要附实体) (design:agent-runtime-fixes) +- [2026-07-11 11:43 UTC] 新增 design: Spec-2 建树批量并行入口 (design:batch-tree-build) +- [2026-07-11 11:43 UTC] 新增 design: Spec-3 出题管线 v2(失败机理靶向+逐题质量门) (design:question-gen-v2) +- [2026-07-11 11:43 UTC] 重建索引: 40 篇页面