# 论文主图设计：Self-Evolving Search Agent 推理训练闭环

**日期** 2026-07-09 · **状态** 已获用户批准（口头） · **产出物** Figma 图（文件 `xnLGUkZottqnr4dsEt9fGq` Page 1 空白区）

## 1. 目标与定位

- **用途**：论文主图（目标会议存在文档分歧：CLAUDE.md=AAAI 2026，ARCHITECTURE.md 与记忆=EMNLP 2026，以用户最终决定为准，不影响本图设计），展示推理训练部分的自进化闭环；不含建树与新题生成（建树已有独立图，位于同一 Figma 文件）。
- **核心叙事**：搜索 Agent 通过 推理→诊断→进化→门控 闭环自我改进；**Frozen LLM, trainable harness**——被"训练"的不是模型权重，而是版本化的 Skills+Prompts。
- **差异化**：AVP/DVD 等相关工作画的是推理期内环（agent 怎么搜视频）；本图内环只是一个面板，**训练期外环是主角**。
- **审稿人一句话记忆点**：这是一个不动模型权重的 PyTorch 式训练循环。

## 2. 已确认的关键决策

| 决策点 | 结论 |
|---|---|
| 构图 | 水平流水线 + 底部参数回流闭环（方案 A） |
| 版式 | 双栏跨页宽图，画布 2400×1050 px（≈2.3:1，缩印 180mm） |
| 信息密度 | 四机制全部可见（Agent 内环 / 诊断瀑布 / patch 引擎 / CE-Gate+信息阶梯），去工程化（无熔断/缓存/遥测） |
| PyTorch 类比 | 底部独立双行对照条，与上方区域逐段对齐 |
| 示例贯穿 | 延续建树图同一 Video-MME 天文台视频，问题/诊断/patch 文本典型化设计 |
| 迭代维度 | Store 处 v1…vN 卡片堆叠 + ×N epochs 循环标记暗示，不加独立时间轴 |
| 绘制位置 | 与建树图同文件（素材直接复用），Page 1 空白区 y≥1800，不动现有图层 |
| 语言 | 图内文字全英文 |

## 3. 布局

> 下方 ASCII 草图为中文说明稿，仅示意区域关系；最终图层文字一律采用 §4/§5 的英文术语。

```
┌──────────────────────────────────────────────────────────────────┐
│ [输入]   ┌──────────────┐  ┌───────────┐  ┌──────────┐  ┌──────┐ │
│ Q+缩略图→│ ① INFERENCE  │→ │② DIAGNOSE │→ │③ EVOLVE  │→ │④ CE- │ │
│          │ 树环境+内环   │  │ 归因瀑布   │  │ patch引擎 │  │ GATE │ │
│          └──────↑───────┘  └───────────┘  └──────────┘  └──┬───┘ │
│                 │ read            ┌─────────────────┐ accept│    │
│                 └─────────────────│⑤ Skills+Prompts │←──────┘    │
│                                   │  Store v1…vN ▤▤ │ reject→保基线
│                                   └─────────────────┘            │
├──────────────────────────────────────────────────────────────────┤
│ DataLoader│forward()│backward()│optimizer.step()│grad clip│nn.Parameter│
└──────────────────────────────────────────────────────────────────┘
```

**数据流勘误记录**：CE-Gate 位于 Evolve 之后（进化产出候选 → gate 用 e-process 验证候选 vs 基线 → accept 才写入 Store），信息阶梯为 gate 供给高信息量题序，而非控制输入难度。此顺序已与 `core/evolution/gate.py`、`app/harness/gate_ladder.py` 核实。

## 4. 五区域内容规格

术语均与代码核实一致（来源见 §7）。

### 4.1 输入区
- 问题卡（Q: *"What happens right after the dome opens?"* 措辞绘制时可打磨）+ 天文台视频缩略图 + 迷你树 icon，标注 "hierarchical video tree (Fig. 2)" 衔接建树图。

### 4.2 ① INFERENCE（agent-controlled，图上唯一画成循环的面板）
- 树环境迷你版：L1/L2/L3 三层色带（绿/蓝/黄，复用建树图配色与缩略图）。
- Agent 内环轨迹：Thought → `search_similar` → `view_node` → `observe_frame` → `submit_answer`；侧边 `read_skill` 箭头（来自 ⑤，工具名与 `app/search/tools.py:56-58` 一致）。
- 示例结局：answer ✗（答错），输出 trace 流向 ②。
- 面板角标：*agent-controlled*；其余面板角标 *code-controlled*。

### 4.3 ② DIAGNOSE（code-controlled）
- 归因瀑布级联：`extraction failure → search failure → reasoning failure`（+ mixed 兜底），画成三级下落台阶。
- 二分岔：**defect**（改 skill 正文）vs **lapse**（记 appendix 提醒）。
- D1–D5 压缩为一排五个小 chip：attribution / tool quality / search behavior / skill compliance / decision patterns。
- 示例：该题归因 `search failure` → 判 **defect**。

### 4.4 ③ EVOLVE
- patch 流水线：candidate edits → **rank-and-clip** → apply patch。
- 侧边锁条带：**protected spans**（appendix / momentum 区带锁图标，不可改写）。
- 示例 patch 片段：*"+ verify event boundary via L2 card before observe_frame"*。
- momentum 机制不单独出现（用户确认），仅隐含于锁条带。

### 4.5 ④ Validation · CE-GATE
- 面板标题 **Validation · CE-Gate**：块顺序验证（`validate.py` 配对翻转 W/L）作为输入喂 e-process——图上画为"candidate vs baseline 配对小图 → e 曲线"。
- e-process 小曲线：e 值随题数爬升，越过 `e_confirm` 虚线。
- 四出口：**accept (confirmed) / accept (provisional) / reject / continue**（代码中三种 reject 在图上合并，用户确认）。
- 侧挂小组件：信息阶梯（2:1 交错题序图标，标注 *info-max question ladder*），尺寸压小避免抢焦点。
- 视觉层级：accept 主路径线最粗；reject/continue 细灰次级线。

### 4.6 ⑤ Skills+Prompts Store
- v1…vN 卡片堆叠（复用建树图 Event Card 堆叠画法）+ 版本号 badge。
- accept 箭头写入 v(N+1)；read 箭头回流至 ①，构成大闭环；循环标记 **×N epochs**。

## 5. PyTorch 对照条（最底部）

浅灰底横带，等宽字体，与上方区域逐段对齐：

| 上方区域 | 对照文字 |
|---|---|
| 输入 | `DataLoader` |
| ① | `model.forward()` |
| ② | `loss.backward()` |
| ③ | `optimizer.step()` |
| ④ | `grad clipping (validate)`（对应 CLAUDE.md 类比表中"进化 validation = grad clipping"；④ 面板同时含 validate 配对翻转与 CE-Gate 判定） |
| ⑤ | `nn.Parameter` |

条带一侧放记忆点标语：*Frozen LLM, trainable harness*。

## 6. 视觉规范与素材复用

| 元素 | 方案 |
|---|---|
| 面板样式 | 白底、细虚线外框、顶部居中标题（沿用建树图） |
| ① | 淡绿系 · ② 淡橙红系（新增，饱和度对齐现有 pastel） · ③ 淡紫系（复用 VLM 紫） · ④ 淡蓝系 · ⑤ 白卡+badge |
| 直接复用 | 视频缩略图（candidate_a_t*）、L1/L2/L3 badge、Scene/Event/Frame Card 组件、VLM 紫块、箭头/chevron 样式 |
| 字体 | 与建树图一致（Inter）；标题 24px / 正文 16-18px / 标注最小 15px 灰（2400px 画布缩印 180mm 后 15px ≈ 1.1mm，12px 过小已弃用） |
| 图层组织 | 顶层 Frame 命名 `Main Figure — Self-Evolving Loop`，五区域各一个子 Group，便于后续人工微调 |

## 7. 术语出处（代码核实）

| 图上术语 | 来源 |
|---|---|
| gate 四出口 accept_confirmed / accept_provisional / reject×3 / continue | `core/evolution/gate.py:57-110` |
| 归因瀑布 extraction/search/reasoning/mixed；defect vs lapse | `core/evolution/diagnose.py:910-997` |
| D1-D5 五维聚合 | `core/evolution/diagnose.py:1095-1307`（D2-D5）、`1551-1563` + `2230` + `2293-2296`（D1 attribution distribution） |
| 信息阶梯冷启动 2:1、信息量排序 | `app/harness/gate_ladder.py:57-117` |
| 块顺序验证配对翻转 W/L | `core/evolution/validate.py:12-69` |
| rank-and-clip、protected spans、appendix/momentum 区 | `core/evolution/evolve.py:186-594`、`core/evolution/patch.py:11-56` |
| agent 工具五件套（含 `read_skill`） | `app/search/tools.py:33-73` |
| 版本目录 Store `store/skills/v{N}` / workspace 本地拷贝 | `app/harness/store.py:28-136`、`app/harness/workspace.py:103-108,150-152` |

## 8. 验收标准

1. 图在 Figma 中为独立顶层 Frame，可整体导出 PNG/SVG，缩印 180mm 宽时最小文字（12px 标注）仍可辨认。
2. 五区域 + 对照条齐全，闭环箭头（⑤→① read、④→⑤ accept）无歧义。
3. 全部术语与 §7 代码核实结果一致；无熔断/缓存/遥测等工程元素。
4. 风格与同文件建树图肉眼一致（配色、字体、面板语言、卡片组件）。
5. 不改动/移动建树图的任何现有图层。

## 9. 构图重构记录（2026-07-09 定稿后追加）

用户验收反馈：内容正确但"下半部空、无主线重点"。经方案比选（用户选 A），实施：

| 改动 | 内容 |
|---|---|
| 显式循环主干 | 面板间 chevron → 4px 黑色实心三角箭头（forward 主线）；④→⑤ write 与 ⑤→① read 回流均为 4px 绿色实线带，⟳ ×N epochs 置于带上；黑/绿双色对应 forward / parameter-update 语义 |
| 底部压缩 | Store 2080px 全宽行 → 680×170 紧凑块（右缘对齐 ④，write 直指 v5）；对照条 130→84px；画布 1050→**940**（2.55:1） |
| 填充 | motto 24px 斜体移至左下空区；read 带起点加绿色圆点锚记 |

逐模块精修均经 Claude 自审 + Codex 独立审双 PASS（Question/①/②/③/④/⑤+对照条/整图重构共 8 轮审核）。Codex 抓到的实质问题：④ 的 W/L 翻转数与 e 曲线出口统计不自洽（修正为序列省略号 + W=8·L=0，E=56.78>e_confirm=20）、ladder 色块数与题数不符、read 线易误读为边框。

## 10. 定稿修订记录（2026-07-10，本节覆盖 §2/§3 的布局规格）

逐模块精修完成后的第二轮构图重构与最终决策（均经用户逐项拍板）：

| 决策 | 内容与理由 |
|---|---|
| 环形布局 | 画布 2400×940 → **1608×960**；顶行 Question→①→②→③（黑色 forward 箭头），③ 底部下沉入 ④，底行 ④→⑤ 右→左（绿色 write），⑤ 顶部 read 回流 ①；顺时针一圈 = 一个 epoch，上下缝压缩至 36px |
| ④ 表义化 | 横版 840×280，右→左三段与底行流向一致：入口小票 `v6 · candidate`（③ 箭头落点）→ 配对复测表（v5·baseline 上 / v6·candidate 下，翻转列淡绿高亮，`W = 8 · L = 0` + 小注 `(4 of 8 flips shown)`）→ e-process 曲线越 `e_confirm = 20`（端点 `E = 56.78`，与 gate.py 公式验算一致）→ 绿色放行单卡片（与 ② 红色缺陷工单对仗）+ 虚线幽灵票 `else: no confirmed write`（if/else 结构；虚线沿用 ① 的"未采用路径"编码） |
| 出口简化 | gate 四出口在图上压成 accept(confirmed) + else 两出口；else 措辞避免暗示"非 confirmed 全是 reject"（Codex I2） |
| PyTorch 对照 | 底部全宽对照条 → Question 下方**纵向对照卡**（248×280 浅灰圆角块，Q/①…⑤ ↔ DataLoader/forward/backward/step/grad clipping/nn.Parameter 六行） |
| ⑤ Store | 408×280 与 ④ 同高：v1..v5 灰卡 + **v6 ✦ 绿卡**（write 落点），motto 移入面板底部；版本叙事闭合：本轮 read v5 → 产出 v6 候选 → 放行写入 → `read (next epoch)` 读 v6（Codex I3 时序标注） |
| 模型标签统一 | ① Agent / ③ LLM / 建树图 VLM 全部统一为 **Agent**（同紫块同图标；紫=冻结预训练模型，与绿=可训练资源对仗）。备注风险：建树图批量帧描述严格说非 agentic，正文表述需圆（如 captioning agent） |
| 删减 | 面板间游离标签（trace + ✗ / defect）、⑤ 的 nn.Parameter 小标签、大 ⟳ 字符、全宽对照条均删除；`⟳ × N epochs` 合并为单行小字嵌缝 |

审核记录：④⑤+布局经 Codex 独立审（无 Critical；I1/I2/I3/M3 已采纳落实）；整图终审 **PASS**（无 Critical/图内必改项）。终审遗留三项归入 **figure caption 与投稿检查**，不改图：
1. caption 需说明"紫块 Agent = 冻结预训练模型组件，仅 ① 为 agent-controlled，训练对象是 harness"（消解 ③ 同款 Agent 块的误读，兼答 motto 与标签并存问题）；
2. 投稿前打印 180mm 宽样张，验证代码字体图例、`e_confirm = 20`、`(4 of 8 flips shown)` 等 14px 小字的缩印可读性。

## 11. 建树图风格统一记录（2026-07-10）

主图定稿后，用户认定主图风格更优，建树图向其看齐（内容结构不大改）。改动与决策：

| 决策 | 内容 |
|---|---|
| 视觉词汇表统一 | 两图共用同一套编码：虚线=堆叠/次要（不得用作焦点强调）、红色只留给错误、层级色 L1绿/L2蓝/L3黄贯穿；据此 Scene 2/Event 2 焦点框由灰虚线改层级色 3px 实线，Event i 红虚线框与 Event Card 红描边改 L2 蓝，Frame Card 描边补齐 L3 黄 |
| 标题与结构 | 三区块标题 ① Long Video / ② Multi-scale Temporal Decomposition / ③ Build Tree（Inter Bold 24 + 编号居中）；chevron 换主图同款 4px 黑箭头；全部游离节点收入顶层 Frame（1715×441）；修正 3 处 "leval" 拼写与标题缺空格、删重复标题 |
| Build Tree 补位 | 用户删除冗余 E1/E2 块后，空区放**空心骨架树**（白底+层级色描边，caption "tree skeleton (from ②) → attach a card to every node"）；三个 Agent 块加建树顺序徽章 ❶Event(L2)→❷Frame(L3)→❸Scene(L1)，与算法#1 "L2 先行→L3 向下→L1 向上"一致 |
| 两树同构 | 主图 Question 面板迷你树按同一对称几何重画（实心 24/20/16）；空心=待填充骨架（建树图）、实心=成品（主图），唯一差别维度即语义 |
| 模型标签 | 建树图 VLM 紫块随主图统一为 Agent（用户决策；正文 caption 需说明紫块=冻结模型组件） |

审核记录：Codex 独立审出 1 Critical（L3 展开帧时间戳越出 Event 2 区间，已改 0:21:30/0:21:32）+ 2 Important（竖排来源标注弱化为 16px 灰、"The Event Card of L2 corresponding to L3" 改 "parent event card (L2)"）+ 1 Minor（Frame Card 黄描边），全部落实。遗留投稿检查项：❶❷❸ 徽章含义入 caption、180mm 样张验证小字。

### 11.1 ③ Build Tree 二次重构：配方表（2026-07-11，覆盖上文"Build Tree 补位"与"两树同构"两行）

同门反馈引发讨论后，用户裁定 ③ 的核心信息是**每类 Card 由什么输入生成**（建树流程而非建树结果），推翻骨架树方案。定稿设计与决策：

| 决策 | 内容 |
|---|---|
| 配方表结构 | 三行 = 三类卡的生成配方，**行序 = 建树顺序**（❶ Event→❷ Frame→❸ Scene，即 L2→L3→L1），顺序歧义消除；行区上方图例 `1 → 2 → 3 = construction order` 解释徽章 |
| 输入模态编码 | **缩略图（边框层级色）= 图像输入；迷你 Event Card = 文本输入**。三行配方：两张蓝框帧 / 黄框帧 + 迷你卡 / 三张迷你卡堆叠 + ⋯（text only）——一眼读出模态递变：纯图 → 图+文 → 纯文 |
| 迷你 Event Card | 58×56，淡蓝底 + 14px "Event" 标题 + 字段线 + 点列，与大卡视觉基因一致（经两轮迭代：无标题字形认不出、被拒调用残留一代旧卡致"重影"，均已清理） |
| 树的去留 | 大树/骨架树全部移除；两图迷你树同构（主图 Question 面板对称重画）保留 |
| 内容纠错 | 借重画撞出两处原图错误并修正：Scene Card 字段 "frame summary"→"scene summary"（对照 `scene_summary`）、两卡 "visible test"→"visible text"（对照 `visible_text`） |
| 主图 ② 阶段标签 | 三层注释：灰 `replay & collect evidence`（顶部）、斜体 `defect or lapse?`（过渡箭头旁）、红 `verdict`（贴红票左上缘，红色随工单类目）；补齐同门指出的流程过渡感 |
| 工具图例回退 | ① 工具名就近标注经试验后观感不佳，回退为底部图例（用户决定） |
| 备份 | 重构前两图整体克隆锁定：Tree 备份 `2173:2`、Main 备份 `2173:276`（BACKUP 2026-07-10） |

本轮 Codex 终审 **PASS**（无 Critical/Important）：配方三行与 `video_builder.py` 逐行核对一致（L2=chat_with_images(rep_frames)、L3=帧+l2_description、L1=l2_texts 纯文本聚合），字段名全部对应。Minor 归入投稿检查项：
1. caption 补一句 "cards show selected fields"（L2 卡代码中还有 action_subjects/visible_text/spatial_relations，图内为节选）；
2. `verdict` 红字在极小缩印下有被误读为错误标注的微小风险，如需更稳可改深灰或加冒号（当前保持用户拍板的红色随工单方案）。

## 12. 被拒绝的备选方案

| 方案 | 拒绝原因 |
|---|---|
| B 上下双层 S 形回路 | PyTorch 对照条无法与面板逐段对齐，退化为角标 |
| C 中心辐射环形 | 2.3:1 宽幅下横向空间浪费大，机制细节难展开，与建树图直线叙事不一致 |
| 独立进化时间轴 | 占版面，与对照条拥挤；由 Store 版本堆叠 + ×N epochs 替代 |
