摘要:把历史任务整理成“经验”,已经成为 Agent 记忆系统的常见做法。新研究发现,同样的方法写出的经验库,可能显著提升任务表现,也可能拖累表现。关键问题开始落到经验的筛选、验证和失效管理上。
本周读到 OpenViking 的一个排障案例:Agent 排查测试失败,最终发现项目虚拟环境和实际运行测试的 Python 解释器不一致。问题修好后,我们当然希望它下次别再踩坑。
于是它总结出一条经验:“遇到依赖导入异常,先检查解释器、虚拟环境和测试命令是否一致。”保存下来,下一次碰到相似问题就拿出来参考。
这样的经验很容易越积越多。但一条在上次任务里管用的建议,凭什么能指导下一次任务?
10 月 13 日公开的论文 Reliable Memory from Unstable Growth 研究了这个问题。
研究者关注的是一种 Playbook 记忆:Agent 完成任务后,把学到的规则写进文本手册,后续任务再读取这些规则。常见做法是由 Agent 自己决定哪些经验重要、哪些应该保留。
论文发现,这个判断并不可靠。同一套经验生成流程,可能写出有帮助的手册,也可能严重拖累任务表现。在其中一个特定模型与基准设置里,一份完整手册甚至让成功率比完全不用手册低了 69.6 个百分点。这是论文观察到的极端个例,不能当作所有记忆系统的平均损失。模型对经验“看起来有没有用”的自评,也未必能识别这种伤害。
原因并不神秘。经验往往带着它当时成立的条件:依赖版本、工具权限、页面结构、任务目标、仓库约定。如果把“这一次管用”直接升级为“以后都应该这么做”,下一次很可能被旧经验误导。
论文提出的方法叫 RBC(Randomized Block Curation,随机分块筛选)。它不要求 Agent 仅凭语言判断每条规则的价值,而是先把相关经验分组,再在练习任务中随机决定是否向 Agent 提供某一组经验。
这样就能比较:在相近的练习任务里,带上某组经验与不带它,结果有什么变化。RBC 按上下文预算筛掉负贡献的经验;同时考虑不同生成轮次的手册,并通过新的练习回合在筛选版、完整版和完全不用手册之间做选择。
图:RBC 经验筛选机制简图。练习任务用于筛选,留出任务用于检验;示意图省略论文中的部分实验细节。
在论文报告的两个记忆系统、三个模型与三个基准的设置中,RBC 的平均任务成功率为 66.9%;完整经验手册为 55.5%,完全不用经验为 54.1%,由模型自己筛选经验为 53.8%。
这些数字的价值,不只是“又涨了十几个百分点”。它说明经验是否值得保留,可以通过后续任务表现检验,而不必完全交给生成经验的同一个模型裁决。
研究也做了重要隔离:生成经验的训练任务、筛选经验的练习任务和最终评测任务彼此分开。代价则是增加了练习与评估开销。真实业务如果没有可重复的任务与可靠验收结果,很难直接照搬 RBC。
一条来自论文 SkillNEO。它研究的是可复用 Skill 如何迭代。作者发现,一个暂时低分的 Skill 版本,可能含有后来成功版本所需要的有效步骤;如果每次只保留当前最高分版本,就会过早丢失这些中间成果。
所以 SkillNEO 把“部署哪个版本”和“继续探索哪些版本”分开。它在 86 个 SkillsBench 任务上报告了奖励指标改善,不过主要成绩是在演化使用过的同一组任务实例上评估,不能当成对全新任务的泛化能力证明。
另一条来自工程接入层。本周 Hindsight 1.0 修复了会话分块遗漏、时间戳和多种 Coding Agent 的会话接入问题。记忆系统还没走到“筛选有用经验”这一步,就可能先在有没有完整记下来、能不能按权限读取、能否在正确时机召回上出问题。
国内也有类似实践。滴滴技术介绍的 causal-memory 尝试保留决策和结果的关联及来源,OpenViking 的实践文章 则关注从真实排障轨迹提炼条件与步骤。它们为经验的表达和追溯提供了思路,但不能仅凭关系标记就认定已经证明因果,也需要独立任务验证。
如果把 Agent 记忆当成一份不断追加的 Markdown 文件,开始时很方便,时间久了会遇到熟悉的问题:规则冲突、版本失效、来源模糊、同一条规则被反复复制,甚至新经验覆盖旧经验后让原本正常的任务退化。
因此,我更倾向于把经验作为一种需要被治理的可复用工程资产。至少应回答五个问题:它来自哪次执行,有什么证据;在什么环境与任务条件下适用;谁有权修改;新版本是否引入回归;发现错误后能否撤回。
这并不要求每条经验都先做昂贵的随机实验。低风险、易验证的规则,可以用回放样本做基本校验;跨业务、影响范围大的经验,再投入更严格的对照测试。没有证据的经验仍然可以记录,但应标明是待验证线索,而不是直接进入全局规则。
图:从保留证据到按风险验证、版本化发布,再到退化后的回退。这是本文提出的经验治理框架,并非 RBC 论文的实验流程。
另外,“记忆”与“Skill”也别完全混为一谈。前者可能保存事实、偏好与历史结果;后者通常包含可执行步骤或工具使用约定。两类资产的适用条件、版本管理和验收方式会有重叠,但不完全相同。
对真实的 Coding Agent,我更想先做一个小规模验证:选出经常重复的三五类任务,将经验的来源、适用环境和对应验证用例放在一起。之后每次修改经验,都拿历史任务回放,对照“不读取经验”的结果;出现持续退化,就降级或撤回。
RBC 的随机实验有成本,未必适合照搬到每一个团队。但它提出的检验原则值得保留:一条经验是否有用,应当由后续任务结果说话。 如果我们只记录 Agent 学到了多少,而从不检验它后来是否因此做得更好,记忆越丰富,也可能只是把错误积累得更深。
《企业研发 AI 自动化》是我持续记录 AI 进入真实研发流程后的实践系列。
它关注的不只是 AI Coding 工具本身,而是从需求输入、任务表示、Agent 执行到自动化验证的完整链路:AI 如何在真实工程系统里稳定运行,并逐渐形成可复用的研发自动化能力。
欢迎关注和交流~