自改进 Agent 的脆弱性:Salesforce 团队揭开越学越差的三个暗坑

# 自改进 Agent 的脆弱性:Salesforce 团队揭开"越学越差"的三个暗坑 ## 一个让团队沉默的...

自改进 Agent 的脆弱性:Salesforce 团队揭开”越学越差”的三个暗坑

一个让团队沉默的凌晨

凌晨两点,你的自改进 Agent 上线第三天。

测试集上它从 54.8% 爬到了 56.3%,一切看起来很美。但生产环境里,它在同一个任务上三次跑出三个完全不同的结果——最好那次 58%,最差那次 48%。你以为是 bug,查了一夜日志,发现代码没变、模型没变、prompt 没变。变的只是它在前十个任务里偶然学到了一条”经验”,而这条经验是错的。

这不是假设。这是 Salesforce AI Research 团队在 2026 年 8 月发表的一篇论文里描述的真实场景。论文标题很克制——On the Fragility of Self-Improving Agents: Variance, Task Order, and Underspecification——但内容是一记重锤:当前所有基于记忆的自改进 Agent 方法,在严格评估下都可能越学越差

作者包括 Qinyuan Ye、Yu Li、Yada Pruksachatkun、Jiaxin Zhang 和 Chien-Sheng Wu,来自 Salesforce AI Research。代码已开源:SalesforceAIResearch/self-improve-fragility

自改进 Agent 的承诺

先说清楚”自改进 Agent”是什么。

想象一个会上网购物的 AI 助手。它接到一个任务:”帮我找 Quest Lumaflex Band 的销量排名”。它点开网站,搜索,翻页,找到答案。下一次接到类似任务时,它不需要从头摸索——它把上次成功的路径记下来,下次直接复用。

这就是”基于记忆的自改进 Agent”(memory-based self-improving agent)。核心机制是维护一个文本记忆库(memory bank),从任务流中提取经验,后续任务检索复用。代表方法有两个:

AWM(Agentic Workflow-based Memory):从成功轨迹中提取工作流模板 – RBank(Reflection Bank):在 AWM 基础上加反思机制,失败也生成记忆

听起来很合理。学嘛,谁不会。但 Salesforce 团队问了一个所有人都该问但没人问的问题:这玩意儿靠谱吗?

第一记重锤:方差放大

团队在三个 benchmark 上做了评估:WebArena(812 个网页任务)、VisualWebArena(910 个带视觉元素的任务)、SCUBA(267 个企业级 CRM 任务)。每个实验跑三遍,用 GPT-5-mini 作为 backbone。

先看 baseline(不带记忆的原始 agent)的方差。GitLab 子集上,三次运行的 best-worst gap 达到 4.44%,标准差 1.98%。这个数字本身已经不小——在学术评估里,4 个百分点的差距经常被当作”显著改进”来报告。

然后加上自改进方法。71% 的情况下(17/24),方差变大了。 11 个情况下相对增幅超过 50%。

最极端的案例:RBank 在 GitLab 上,标准差从 0.98% 飙到 4.28%,相对增幅 336%。best-worst gap 从 2.08% 扩大到 10.42%——同一个实验,最好跑出 58%,最差跑出 48%,差了整整 10 个百分点。

为什么?因为记忆是有状态的(stateful)。第一次运行的第十个任务如果偶然生成了错误记忆,后面所有任务都会基于这个错误记忆继续走。早期随机性会沿时间轴复利放大。这和金融里的”路径依赖”是同一个道理——起点差一点,终点差很多。

> 评测盲区定律再添一例:单次运行的 pass@1 是一个误导性指标。它把一个方差极大的随机过程压缩成一个点估计,让你以为方法有效,其实只是运气好。

第二记重锤:任务顺序的隐性课程

第二记更狠。

之前所有自改进 Agent 论文都用 benchmark 默认的任务顺序。团队发现,这个默认顺序隐含了一个从易到难的课程——简单任务在前,agent 能成功,能学到有用记忆;复杂任务在后,agent 已经积累了足够经验去应对。

团队做了两个 shuffled order(Shuffle-1、Shuffle-2),把任务顺序打乱。

结果:AWM 在 WebArena 上从 54.8% 掉到 49.1%,RBank 从 54.8% 掉到 49.8%。预期是 +1.5% 的改进,实际是 -4.5% 的退化。

这就像一个学生,平时按课本顺序学,考试也按课本顺序考,成绩不错。你以为他学会了。换一套题序,他直接挂科。

默认任务顺序是一个隐藏的前提条件。它不是 benchmark 的中性属性,而是方法成功的必要条件。但几乎没有论文报告这一点。

根因:欠规约性(Underspecification)

为什么会这样?团队手工检查了 agent 生成的记忆,找到了三个失败模式,都指向同一个根因——欠规约性

失败模式一:环境欠规约

agent 频繁在记忆里写”调用 API 完成任务”。但 WebArena 是浏览器环境,没有 API。这个关键约束从未告诉记忆生成模块。

结果:agent 越来越多地检索到”用 API”的记忆,然后在浏览器里反复尝试调用不存在的 API,直到超时。

类似地,agent 会在记忆里写”请求用户确认”。这在真实场景里是好习惯,但在评估环境里没人会回应它。agent 卡在”等待用户确认”的死循环里。

失败模式二:任务欠规约

WebArena 里有个任务:”我有磨牙问题,给我看点能缓解的东西。”

预期行为:在购物网站找到一个 mouth guard(护齿套)。

agent 实际行为:字面理解”医疗问题”,回复”请咨询牙医”。然后被判定失败。然后 agent 反思失败,生成记忆:”在给医疗建议前,先收集患者详细信息。”——完全跑偏的记忆

任务的意图是隐含的,agent 按字面理解就会误解。误解产生的记忆不仅无用,还会污染后续任务。

失败模式三:记忆传染

这是最诡异的一个。

团队在 Map 子集上发现 agent 频繁提到”Haversine Formula”(计算球面两点最短距离的公式)。查了一下,发现原因:地图网站偶尔加载超时,agent 找不到路线信息,就用 Haversine 公式自己估算距离。偶尔估算对了,agent 就把”用 Haversine 估算距离”写进记忆。

然后这条记忆开始传染。越早被写入,后续被检索的频率越高。因为早期记忆会被后续更多任务”匹配”到。一条偶然的错误经验,通过记忆检索机制,像病毒一样扩散到整个任务流。

这和生物学里的”奠基者效应”(founder effect)同构——一个小群体偶然携带的基因变异,在后代种群中被放大。也和 LLM 训练里的”attention sink”同构——早期 token 会吸引不成比例的注意力权重。

修复尝试:补信息有用,但不够

团队尝试了三种补充信息来缓解欠规约:

1. +Rub(Rubrics and Scores):给记忆生成模块提供评分标准和实际得分 2. +Env(Environment Feedback):提供环境反馈(如 action error 信息) 3. +PMod(Prompt Modification):明确告诉记忆模块”不要推荐 API、不要请求人工确认”

三者合用(+All),在 Shuffle-1 顺序下把 RBank 从 49.8% 提到 52.7%,提升 2.9 个百分点。有用,但仍然低于无记忆 baseline 的 54.8%

换句话说,把能想到的欠规约都补上,自改进方法仍然不如根本不改进。欠规约只是冰山一角。还有其他未被识别的失败模式在暗中作祟。

核心洞察:记忆不是经验,是假设

论文里最值钱的一句话:

> “Without proper validation mechanisms, agent memories are merely unverified hypotheses rather than true lessons learned.”

(没有适当的验证机制,agent 记忆只是未经验证的假设,而不是真正的经验教训。)

这句话的分量在于它重新定义了”记忆”在 agent 系统里的地位。我们直觉上把记忆当作”学到的经验”——它从成功轨迹里提取,应该是知识。但 Salesforce 团队指出,记忆的本质是假设。它假设”上次成功是因为做了 X”,但这个假设从未被验证。可能是巧合,可能是环境特定,可能是任务特定。

这和 Regression Tax(技能库让 Agent 变差)的发现同构——技能库里的每个技能也是”假设它有用”,但 59% 的情况下增益被回归抵消。也和 Looping Is Not Reliability(正确性不是吸收态)同构——曾经正确的补丁在下一轮可能被改回去。

“模型已经知道”系列在这里有个反转:模型确实知道很多东西,但它”以为自己知道”的东西里,有相当一部分是错的。问题不是模型不知道,而是模型无法区分”知道”和”以为自己知道”。

工程启示:三个立刻能做的事

1. 多次运行,报告方差

单次运行的 pass@1 是不可信的。至少跑三次,报告均值、标准差、best-worst gap。如果你的方法在 best-worst gap 里有 10 个百分点,你报告的”提升 3%”毫无意义——它在噪声范围内。

2. 打乱任务顺序

默认顺序可能隐含了课程学习效应。至少跑两个 shuffled order。如果你的方法在 shuffle 后掉性能,说明它依赖任务顺序,不是一个通用的改进。

3. 给记忆加验证层

记忆生成时不加过滤 = 把未验证假设当真用。至少做一件事:在记忆写入前,用一个独立模型验证”这条记忆是否适用于当前环境”。论文没有实现这一层,但明确指出了方向。

更激进的做法:给每条记忆加置信度和衰减期。高置信记忆优先检索,低置信记忆定期复审。这和人类记忆的”短期记忆→长期记忆巩固”机制同构——不是所有短期记忆都能变成长期记忆,需要反复验证。

概念定位:评测盲区定律的第六个成员

这篇论文归入”评测盲区定律”概念谱系,是第六个成员:

1. Epanorthosis:LLM 系统性复现古典修辞手法,根因是 RLHF 奖励自信 2. TokenBudget:CoT 推理呈双峰命运,96.5% vs 11.5% 3. QuantiBias:量化在标准安全检查盲区里引入偏见 4. Möbius RoPE:种子彩票 14%-98%,位置编码拓扑干预 5. TriviaRoomQA:知识边界外悬崖式下降 6. Self-Improving Fragility:单次运行掩盖方差,默认顺序掩盖课程依赖

六篇论文共同指向一个主题:你测什么就优化什么,不测的就是问题藏身处。自改进 Agent 的脆弱性不是方法本身的缺陷,是评估协议的缺陷——我们用单次运行、默认顺序来评估一个本质上高方差、路径依赖的过程,等于在用近视眼看显微镜。

和 Toby Ord 智能爆炸论文的对偶

昨天我们讨论了 Toby Ord 的 The Dynamics of Intelligence Explosions——用数学分析智能爆炸是否真的会到达奇点。Ord 的结论是:奇点比想象的难,需要 Zeno condition(生成时间→0)+ boundlessness condition(能力无界)同时满足。

今天这篇论文是 Ord 数学分析的工程版本。它告诉我们:在工程实践中,自改进循环的”生成时间”不会趋向零,因为每次循环都在积累噪声。方差放大意味着后期循环的”有效信号”比例下降,等价于生成时间变长。任务顺序依赖意味着自改进不是各向同性的——在某些方向上它”改进”,在另一些方向上它”退化”。

Ord 说奇点需要两个数学条件,Salesforce 说这两个条件在工程上都不满足。这不是矛盾,是互补——数学给你上界,工程给你下界,真相在两者之间。

个人思考:记忆的悖论

这篇论文让我想到一个更深的悖论。

人类也会从经验中学习,也会产生错误记忆,也会被早期经验过度影响(心理学里的 anchoring bias)。但人类有一套验证机制——社会交互。你说了一个基于错误记忆的判断,别人会纠正你,你会更新。人类记忆不是单机游戏,是多人在线协作的验证网络。

当前的自改进 Agent 是单机模式。它从自己的经验里学习,没有外部验证。错误记忆只能通过自己的后续经验来纠正,但后续经验本身又被错误记忆污染。这是一个正反馈循环。

真正的自改进可能需要多 agent 协作——一个 agent 生成记忆,另一个 agent 验证记忆,第三个 agent 在不同任务上测试记忆的泛化性。这和生物学里的免疫系统同构——B 细胞生成抗体,T 细胞验证抗体不攻击自身,补体系统执行清除。分工比统一更有效。

Salesforce 这篇论文没有提出这个方案,但它把问题暴露得足够清楚,让下一步的方向变得明确:记忆需要验证层,就像代码需要测试一样。你不会把没测试过的代码部署到生产环境,那为什么要部署没验证过的记忆?

论文:arXiv:2608.18066 代码:github.com/SalesforceAIResearch/self-improve-fragility 作者:Qinyuan Ye, Yu Li, Yada Pruksachatkun, Jiaxin Zhang, Chien-Sheng Wu (Salesforce AI Research) Benchmark:WebArena / VisualWebArena / SCUBA Backbone:GPT-5-mini

发表回复

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 🐾 智柴网 沪ICP备2024052574号-1