EvoUndo 把回滚从事故后的补救按钮,改成自我修改 Agent Harness 的发布门禁。一篇新预印本在 600 个一次性 Harness 演进任务中,发现 197 个修改虽然提升了能力,却无法通过恢复验证。真正值得吸收的不是这个单一数字,而是一份准入合同:每个持久修改在合并前,都要附带修改前状态见证、独立观测的影响范围和跨状态往返恢复测试。
资料核验时间:2026 年 9 月 2 日。EvoUndo 是 2026 年 8 月发布的预印本。论文提供了协议、消融、统计分析和限制,但复现声明使用将公开代码与轨迹的未来时表述。arXiv 页面在核验时没有链接公开 EvoUndo 仓库,因此数字仍属于作者报告,尚未完成独立复现。
能力提升只验证了正向一半
Self-Harness代表一条正在形成的技术路线:Agent 从失败轨迹中定位弱点,生成小范围 Harness 修改,再根据训练内与留出任务的回归结果决定是否保留。被修改的对象可以是提示、工具、中间件、路由、资源或运行策略,底座模型本身保持不变。
这套流程能回答修改有没有用。长期运行的系统还需要回答另一件事:持久影响以后能否被安全移除。
状态继续变化后,恢复会迅速变难。配置更新覆盖旧值;新工具遮蔽原有注册;中间件插入改变顺序;文件写入毁掉旧内容;监听器和 Socket 在任务结束后继续存在。只在生成修改时的初始状态运行一次静态逆操作,无法证明后续状态仍可恢复。
EvoUndo将这个缺口形式化为反事实可恢复性。一个修改只有在多种候选前状态中,都能把相关状态恢复到观测等价,才允许进入持久状态。测试同时包含隐藏状态和分布外状态。
发布问题因此从修改是否提高目标分数,升级为三个连续条件:能力确实提升;修改前已经保存足够的恢复证据;系统在生成修改时没有见过的状态中仍能完成恢复。
600 个任务的数据应怎样解读
论文对六类 Harness 状态各生成 100 个未见任务,包括配置、工具、中间件、监听器、资源和跨表面修改。每个任务只生成一个候选,没有重复抽样。结果分成三组:281 个修改提升能力且已经可恢复;197 个提升能力但恢复失败;122 个正向能力不足。
197 个失败占全部任务的 32.8%,占 478 个能力正向修改的 41.2%。如果准入门只看新任务分数,一批规模很大的缺陷修改会被直接保留。
初始修复结果很严厉。在基础恢复语言下,通用反馈、原始验证轨迹、类型化诊断和指令式建议,在四轮预算内都只能做到 0/197。完全重新生成恢复方案成功 6 个。问题发生在接口层:系统缺少恢复结构化状态所需的操作,更多提示无法生成语法中不存在的动作。
研究者随后使用确定性、非生成式 Oracle,将搜索失败与表达能力失败分开。基础恢复语言只能表达 48 个失败的恢复方案。加入有序中间件、监听器、文件前状态、资源描述符和跨表面逆序恢复后,经验 Oracle 可恢复数量提高到 191/197。
两组干预进一步拆开瓶颈。基础语言足够时,提供精确状态地址让 48 个任务中的 38 个恢复成功。基础语言不足的 143 个任务中,扩展语言让 142 个成功。
在全部 197 个自然失败上,主模型使用粗粒度诊断和扩展语言,在四轮修复预算内实际恢复了 180 个。加上 281 个初始合格修改,最终有 461/478 个能力正向修改获得准入。191/197 是确定性 Oracle 在已实现运行时里的特权经验上限,不是部署模型成绩。
更细诊断也存在副作用。在 gpt-oss-120b 上,扩展语言配合精确地址后,成功数从 142/143 降到 133/143。Qwen3.8-27B 复现实验保留了状态定位和语言表达能力的总体收益,却没有复现这项负交互。诊断过细可能诱发过度拆解或顺序错误,它本身也是与模型相关的控制变量。
这些数据支持一个窄而重要的判断:恢复同时依赖找到正确状态位置,以及系统具备表达逆操作的语言。它们不能证明生产 Agent Harness 普遍有 41% 的不可恢复率。
一个可恢复修改需要四类工件
冻结的正向修改
EvoUndo 在恢复修复过程中锁定原修改。否则 Agent 可以把修改弱化成空操作,以此通过恢复测试。生产系统应保存精确 diff、生成上下文、任务目标、输入快照和不可变候选 ID。
修改前状态见证
很多恢复信息会被正向修改销毁。把超时从 30 改成 60 前,要先记录 30;替换工具前,要保存原绑定和 Schema;插入中间件前,要记录成员和顺序。
见证数据可能包含敏感运行状态。论文明确要求在生产环境配置访问控制、加密、有限保留期、最小权限 Schema 和字段级脱敏。把密钥复制进无人治理的回滚日志,会新增一条事故路径。
独立检查的影响合同
Agent 可以声明自己影响哪些状态表面,但声明本身不能充当完整证据。EvoUndo 将快照差异与执行轨迹影响合并,发现观测影响超出声明范围时直接拒绝。过度声明也有代价,因为它会扩大必须恢复的状态范围。
这一步负责防止自证循环。同一个 Agent 可以提出修改,但不能同时缩小爆炸半径定义,并在缺少独立传感器的情况下批准自己的回滚。
恢复程序
恢复程序读取状态见证,通常按依赖关系逆序撤销影响。验证采用类型化观测等价,而非整个运行环境逐字节相同。配置值、工具 Schema、中间件顺序、监听器绑定、文件内容和资源生命周期,各自需要不同的等价规则。
观测等价能够落地,也带来明确边界。验证器只能保护已经进入状态模型与影响合同的对象。
把论文转换成生产门禁
第一阶段,使用冻结的失败样本生成最小修改,并列出可能触碰的状态表面。所有外部影响在执行前分为可逆、可补偿和不可逆。
第二阶段,保存最小恢复见证,把修改放入影子 Harness、分支、沙箱或临时租户运行。默认移除生产凭证和外部写权限;必须测试补偿事务时,使用专门授权与独立审计。
第三阶段,由独立组件计算语义状态 diff,同时记录工具、进程、文件、资源、网络和 API 影响。任何未声明影响都按失败处理。
第四阶段,运行完整往返:
前状态 -> 保存见证 -> 应用修改 -> 推进后继状态 -> 恢复 -> 验证
反事实状态要覆盖对象存在与缺失、冲突注册、不同序列顺序、空值与极值、嵌套路径、资源竞争和反转的回退策略。保留一个提案 Agent 无法看到的隐藏集合,并报告置信区间。
第五阶段,使用预先写好的硬规则准入。能力必须提升;关键安全测试必须通过;影响合同必须覆盖全部观测副作用;恢复率达到门槛。存储、延迟、模型调用、人工审核和失败状态全部进入发布记录。
论文的新鲜留出实验展示了真实取舍。在一组设置中,将多样化开发反事实状态从 2 个增加到 20 个,错误准入率从 16.8% 降到 0%,成功救援率同时从 49.7% 降到 35.0%。更严格的门禁更安全,也更保守。阈值应由风险和爆炸半径决定。
已知影响范围时,优先使用局部快照
EvoUndo 自己给出了一个反炒作结果。完整受影响前状态已知、可序列化、可直接恢复时,effect-scoped snapshot 强于合成式恢复。
在 300 个后继修改位于不同状态表面的任务中,局部快照恢复 300/300,EvoUndo 为 243/300。后继修改发生在同一结构表面时,两者都下降,局部快照为 159/300,EvoUndo 为 131/300。全量快照在两种设置中均为 0/300,因为整体恢复会覆盖目标修改之后产生的合法状态。
工程顺序应该是:逆操作已知时先用局部快照或事务日志;逆操作缺失、依赖状态、涉及复杂结构或跨表面时,再使用合成恢复;金融、物理和第三方系统中的不可逆影响,使用补偿事务与人工审批。
这也区分了 EvoUndo 与工作区备份和恢复确定性。备份负责在大范围丢失后恢复项目或系统。EvoUndo 负责选择性移除一个持久 Harness 修改,同时保留它之后积累的合法状态。生产系统需要两层能力。
进入生产前必须保留的证据边界
EvoUndo 是一篇设计严谨的论文,也仍是一项早期工程成果。
它的验证器覆盖内存配置、提示、路由、工具、中间件、监听器、沙箱文件和受管资源句柄。分布式数据库、多主机状态、第三方 API、非受管 OS 进程和带外网络状态尚未覆盖。金融或物理动作无法依靠精确恢复消除影响。
主实验使用 gpt-oss-120b,Qwen3.8-27B 只完成范围更小的复现。两套恢复语言没有形式完备性保证。确定性 Oracle 证明的是已实现语言和状态生成器里的经验可构造性,并非对任意系统的形式证明。核验时代码发布仍在等待中。
相关研究显示,可恢复性本身也分层。DART判断局部恢复在下游已经提交工作的情况下是否仍具备语义合法性。ChronoMem为 Agent 记忆建立版本,并测试回滚后能否表现得像从未见过未来信息。EvoUndo 处理另一层:由模型生成、会持久改变 Harness 自身的修改。
EvoUndo 应推动的策略变化
自我修改 Agent Harness 应把可恢复性设为合并不变量,与能力、安全和成本并列。更高任务得分只能产生候选。完整状态见证、独立影响观测和反事实恢复验证共同决定是否准入。
论文最深的结果不是 197 个失败,而是失败原因。Agent 经常缺少受损状态的精确地址,或缺少足以表达恢复动作的语言。缺失接口时,提高推理强度没有补偿作用。
对 Harness 工程师而言,优先级很具体:在允许持久自我演进之前,先建设类型化状态地址、影响观测、见证存储、恢复原语、隐藏反事实测试和补偿边界。自主性扩展速度应受系统验证与恢复自身修改的能力约束。
常见问题
EvoUndo 是什么?
它将模型生成的 Agent Harness 修改与前状态见证、类型化影响合同、恢复程序和反事实验证绑定。能力提升的修改只有在恢复达到统计门槛后才会被准入。
197 个修改都彻底无法撤销吗?
它们在论文初始表示下无法通过恢复验证。扩展恢复语言后,大部分变得经验可恢复。确定性 Oracle 在已实现语言中仍有 6 个未恢复。这个结果属于特定任务生成与运行时模型。
普通修复为什么是 0/197?
基础表示经常缺少精确状态定位,或缺少恢复中间件顺序、监听器、文件、资源和跨表面依赖所需的原语。语法中没有的操作,无法通过增加提示生成出来。
为什么不直接恢复全量快照?
全量快照会覆盖目标修改之后产生的合法变化。选择性恢复需要明确影响范围、依赖顺序和语义等价。精确影响范围已知时,局部快照仍然更简单、更强。
EvoUndo 已经适合生产部署吗?
它提供了一套可信设计模式,还没有形成通用生产回滚层。论文尚未同行评审,公开代码和轨迹仍未发布,状态覆盖有限,分布式或不可逆影响需要额外机制。
可恢复性和备份有什么区别?
备份在丢失或破坏后恢复较大状态。可恢复性负责移除某个指定修改,并保留后续合法变化。备份、选择性回滚、事务日志、补偿和人工审批分别解决不同问题。