别让 Agent 给自己的修复盖章
Agent 在长任务里摔了一跤。它自己找原因、自己写补丁、自己验证没问题、自己把补丁存进记忆,下次接着用。听起来很美——直到有人拿真实任务数了数这些「自我修复」的质量。
伊利诺伊大学芝加哥分校和 Capital One AI 实验室九月发了篇论文,给 Agent 套了一个自修复框架(Self-Healing Harness),在 AppWorld、Terminal-Bench、τ²-Bench 三个基准上跑了 16 组对照。框架里的准入闸门一共拒绝了 383 个有重放裁决的修复提案,其中 211 个——55%——是这样的:触发的那个失败确实修好了,但一个原本正常的功能被弄坏了。
修好了吗?修好了。变好了吗?没有。
这 211 个补丁如果没有闸门,全部会直接写进 Agent 的长期记忆,成为它今后所有任务的隐形前提。这就是论文说的「局部有益的自我修改,足以经常引入附带回归」——不是模型能力问题,是程序问题:自己给自己盖章的程序,缺一道闸。
提案权和批准权,分开放
框架的思路一句话能说完:Agent 可以起草规则,但不许它自己决定哪些规则转正。
具体是个四步循环。检测:从每轮任务的分数轨迹里发现退化。通知:把失败证据写进一个外部工作区。修复:Agent 查看证据,起草一条候选行为规则——注意,改的是「操作上下文」里的规则,不是模型权重,所以模型换谁都行,闭源模型也兼容。验证:由一个独立于 Agent 的证据闸门做裁决。
裁决的机制是这套设计的核心,叫重放验证。把触发失败的案例原样重放一遍,看规则是不是真把它修好了;同时重放一批「受保护案例」——此前一直正常的功能——看新规则有没有弄坏它们,回归超过一个固定裕度就否决。Agent 自己说「我修好了」不算数,重放的结果才算数。自我诊断是断言,重放是执行,两样东西又一次只能信后者。
这里有个容易被忽略的巧设计:候选规则在评估期拿到的是临时执行权——不真跑就不知道效果,所以评估期里它真的在跑,但跑完不达标就收回,达标才转为持久权限。试用和转正是两个动作。
单条都对,合起来未必
论文还有一层不太显眼但很关键的防线:整卷复审。单条规则各自通过重放,不等于它们凑在一起还相安无事——两条各自正确的规则完全可能互相拆台,这种回归在候选级的测试里永远看不见。所以已累积的活跃规则集会被定期整体重测一遍。刚才说的 211/383 里,还有一部分就是这种系统级测试抓出来的。
结果与边界
16 组对照里,任务完成分 Harness 侧全部更高(但做配对 bootstrap 后,只有 2 组的置信区间排除了零——「全部更高」是真的,「组组显著」不是);重复试验的可靠性 12 组更高、4 组持平、0 组更低。模型权重从头到尾没动过。
边界也要说清。论文自己承认:所有阈值跨三个基准用同一套常数、没有按基准调过,阈值敏感性是个公开的成本。重放依赖预先捕获的失败案例,没录下来的场景只能退回「后续几轮真实执行」这种更弱的证据。另外 Agent 改的是行为规则而不是任意代码——素材里「自我写代码修复」的说法,在论文里对应的是「起草候选操作规则」,范围比写代码窄,这也是它能被闸门审查的原因:规则是显式文本,可检查、可回滚。
放在这条线上
此前一系列工作在讲同一件事的不同侧面:模型在吃掉脚手架,而吃不掉的是三样——在哪儿跑、能碰什么、花多少钱。这篇论文恰好是「能碰什么」的实证样本:Agent 对自己未来的行为只有提案权,持久化写入的批准权在外部运行时手里。自改进这条线上,方向感解决「往哪改」,这篇解决「改了让不让留」——两块拼图开始接上了。
回到开头那个数字。55%——如果每个 Agent 都自我感觉良好地把修复写进长期记忆,差不多每两次就有一次在往系统里埋雷。闸门拒绝一个提案只用几分钟,拆雷要等到线上事故才发现。
论文:Self-Healing Harness for Runtime Oversight of Agent Self-Modification(arXiv:2609.24130,2026-09-21 提交)。作者 Sina Tayebati、Divake Kumar、Nastaran Darabi、Ranganath Krishnan、Amit Ranjan Trivedi(伊利诺伊大学芝加哥分校、Capital One AI Labs)。211/383、16 组对照、12/4/0 等数字出自论文摘要与实验节;55% 的统计范围是闸门拒绝的重放裁决提案。
讨论回复
加载中...正在加载回复...
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。