Appearance
EDV:让 Agent 别再「自我确认」——经验学习的三段式护栏
论文精读 · 第 3 篇 论文:Escaping the Self-Confirmation Trap: An Execute-Distill-Verify Paradigm for Agentic Experience Learning arXiv:2606.24428 · 2026.06 · Zhu et al. · 代码
与本站 Loop Engineering · Memory、Meta-Loop 直接对话——讲的是「往记忆里写经验」前,先验明正身。
TL;DR
agent 从失败中学习,主流做法是单 agent 闭环:自己执行、自己总结、自己决定写进记忆。EDV 戳破一个致命漏洞——Self-Confirmation Trap(自我确认陷阱):一条「错但自洽」的轨迹,会被 agent 当成成功经验存下来,之后越用越错。破法是把闭环拆成三段:Execute(多 agent 并行探索)→ Distill(第三方蒸馏)→ Verify(共识验证),只有通过验证的经验才进记忆。三个长程基准全部涨点。
一句话:记忆是 agent 的长期资产,写入必须有审计,不能让执行者自己给自己签字。
一、它想解决什么问题
先理解「经验驱动的自进化」。
强 agent(coding agent、GUI agent)都在做一件事:跑完任务后,把成功经验总结进记忆,下次复用。这是让 agent 越用越强的关键机制。本站 Loop Engineering · Meta-Loop 讲的就是这个范式——agent 不仅要完成任务,还要从任务里「学到怎么更好地完成任务」。
但主流实现几乎都是单 agent 闭环:
[同一 agent] → 执行任务 → 总结结果 → 决定写什么进记忆 → 下次调用EDV 点破这套闭环里的一个结构缺陷:
执行者自己判断自己做得对不对,等于让学生自己给自己判卷。
这就是 Self-Confirmation Trap:agent 跑了一条轨迹,觉得「我每一步都自洽、逻辑通顺」,于是判定「这是成功经验」,写进记忆。可如果这条轨迹本身就是错的,只是错得自洽呢?比如:
- 一个 coding agent 用了一个能跑通但有 bug 的方案,总结成经验
- 一个 GUI agent 用了绕远但碰巧成功的路径,记成「最优解」
这些「错但自洽」的经验一旦进记忆,会在检索复用时反复被调用,错误像利息一样累积。单 agent 闭环的结构缺陷,让 agent 越学越偏。
二、核心思想:把闭环拆开,引入「他者」
EDV 的破法很工程化——别让一个 agent 干三件事。
把「执行 / 总结 / 验证」解耦,每一件交给不同的主体,引入他者视角切断自我确认:
| 阶段 | 单 agent 闭环 | EDV |
|---|---|---|
| 执行 | 单 agent 跑 | 多个异质 agent 并行跑同一任务,产生多条候选轨迹 |
| 总结 | 同一 agent 总结 | 第三方 agent 比较多条轨迹后蒸馏 |
| 验证 | 同一 agent 判对错 | 执行组共识投票,通过才进记忆 |
关键洞察:错的轨迹往往「自洽但唯一」,正确的轨迹往往「多条路径殊途同归」。 多个异质 agent 如果都收敛到类似结论,这个经验就更可信;如果只有一条轨迹自说自话,就高度可疑。
这呼应 Loop Engineering · Memory 里那句反复被验证的话:
写入记忆的成本,必须高于读取记忆的成本。否则记忆会被噪声污染,最后比没有记忆更糟。
EDV 给「写入成本」装了一个闸门——共识验证。没有这个闸门,记忆就是 agent 的垃圾桶。
三、三段式逐个拆
3.1 Execute:多异质 Agent 并行探索
同一个任务,多个结构不同的 agent(不同模型、不同 prompt、不同工具集)同时跑,产出多条候选轨迹。
为什么要「异质」?
如果多个 agent 同质(同一个模型同一个 prompt),它们会犯同样的错,共识就失去意义——错也错到一起。
异质是为了保证错误是独立的:A 用 GPT 系、B 用 Claude 系、C 用开源模型,它们各自犯的错大概率不同。共识才有过滤价值。
工程上这是「多样性换可靠性」——牺牲一些 token(跑多份),换回可信的经验。这跟 CORAL 用多 agent 异步探索是同源思想(见本站 CORAL 精读):多视角比单视角更接近真相。
3.2 Distill:第三方蒸馏
关键设计:总结经验的 agent,不是执行任务的 agent。
单 agent 闭环里,执行者总结自己的轨迹,天然有「executor-centric bias」——会美化自己的选择、忽略自己的错误。EDV 让一个没参与执行的第三方 agent,拿着多条轨迹做比较式分析:
- 看哪些步骤是多条轨迹共有的 → 大概率是关键步骤
- 看哪些步骤只有某条轨迹独有 → 可能是冗余或错误
- 综合出一条「去偏后的经验」
这等于给经验加了一个编辑工序:执行者负责产生素材,第三方负责去偏成稿。没有这一步,经验的「偏差」会原样进记忆。
3.3 Verify:共识验证
最严格的一层。
蒸馏出的「候选经验」,还要拿回执行组验证:这条经验到底有没有用?多个 agent 用它再跑一遍,看是否共识性地带来改进。
只有通过共识的经验,才写进共享或私有记忆。没通过的,丢弃。
整条链的净效果:
原始轨迹(可能错但自洽)
│ Execute: 多异质 agent 并行 → 错误独立化
│ Distill: 第三方比较 → 去执行者偏差
│ Verify: 共识投票 → 过滤自洽但错误的内容
▼
进记忆的经验(可信)三道闸门,把「自我确认」的口子一层层堵死。
四、为什么三段缺一不可
值得单独拎出来想——能不能简化?
| 去掉哪段 | 后果 |
|---|---|
| 去 Execute(单 agent 跑) | 没有多样性,Distill 无从比较,退化回自我总结 |
| 去 Distill(执行者自总结) | 偏差原样进候选,Verify 也救不回(共识验证的是有偏的候选) |
| 去 Verify(直接写) | 「候选经验」未经检验,错的自洽内容仍可能漏进记忆 |
三段是串联的过滤器,每段堵一类错误:
- Execute 堵「单一视角的盲点」
- Distill 堵「执行者自我美化」
- Verify 堵「自洽但错误」的内容
砍任何一段,对应的错误就漏过去。这是工程上「纵深防御」在经验学习里的复刻。
五、实验结果
EDV 在三个公认有难度的长程基准上验证:
| 基准 | 领域 | 特点 |
|---|---|---|
| tau2-bench | 工具调用 / 多轮对话 | 长程决策 |
| Mind2Web | Web GUI agent | 跨页面、长链路 |
| MMTB | 多模态多任务 | 综合长程 |
结果:EDV 在三个基准上持续超越强基线。论文把涨点归因于——
可靠的经验构建,是 agent 稳健自进化的前提。
翻译:不是模型变强了,是写进记忆的东西更干净了。脏经验少一点,agent 表现就好一截。这又一次印证——记忆的写入质量,比记忆的存量大小重要得多。
六、工程对照:EDV 验证了什么
EDV 的三段式,对应本站 Loop Engineering 系列里几个核心论断:
| EDV 设计 | 对应论断 | 系列文章 |
|---|---|---|
| Execute 多异质并行 | 多视角 > 单视角 | Multi-Loop |
| Distill 第三方蒸馏 | 元循环要引入「他者」 | Meta-Loop |
| Verify 共识才写入 | 写入记忆的成本必须高 | Memory |
最深一层的启发,是关于**「自我反思」的边界**:
本站 Meta-Loop 讲过,agent 的自我反思(self-reflection)是进化的引擎。但 EDV 提醒一个反直觉的点——
纯自我反思是有上限的。当执行者和裁判是同一个 agent,反思会滑向自我确认。要突破,必须引入外部视角。
所以 EDV 不是否定自我反思,而是给它加一个「不可自证」的约束:经验成立的前提,是有一个不参与执行的「他者」点头。这跟代码评审为什么必须别人来审,是同一个道理。
七、启发与局限
启发:
- 记忆写入要审计,不能自理。 agent 自己总结的经验,默认带「执行者偏差」。任何要长期复用的记忆,写入前都该过一道他者验证。这条对做人(写个人知识库)同样成立。
- 多样性是过滤的前提。 想用共识去伪,参与共识的 agent 必须异质。同质的「共识」只是错误的一致。
- 自洽 ≠ 正确。 一条逻辑通顺的轨迹,可能是错得通顺。agent(和人)最容易把「我讲得圆」当成「我对」,这是认知的系统性陷阱。
局限:
- 成本不低。 Execute 要跑多份、Distill 要额外 agent、Verify 要再跑一遍,单条经验的构建成本是单 agent 闭环的好几倍。对高频写入的场景,这个开销得权衡。
- 共识的边界。 共识能过滤「自洽但错误」的内容,但所有 agent 共同的盲区(比如都用了同一个错误的世界知识)它过滤不掉。异质缓解但不根治。
- 「异质」的工程定义偏模糊。 论文用不同模型/工具制造异质,但多异质才算够、异质到什么程度最优,没有明确量化。
一句话点评: EDV 给 agent 的「记忆系统」装了一道必须的质检工序。它戳中的不是模型不够强,而是让一个 agent 既当运动员又当裁判,是结构性缺陷。经验学习的下一步,不在更大的模型,而在更严的写入闸门。