ReasoningBank: Scaling Agent Self-Evolving with Reasoning Memory¶
会议: ICLR 2026
arXiv: 2509.25140
代码: google-research/reasoning-bank
领域: 代码智能
关键词: Agent记忆, 推理策略, 测试时扩展, 自进化, 经验学习
一句话总结¶
提出 ReasoningBank 记忆框架,从 Agent 自我判断的成功和失败经验中蒸馏可泛化的推理策略存入记忆库,并提出 memory-aware test-time scaling (MaTTS) 建立记忆与测试时扩展的协同效应,在 WebArena、Mind2Web 和 SWE-Bench 上一致超越基线(最高 34.2% 相对提升),同时减少 16% 交互步数。
研究背景与动机¶
随着 LLM Agent 在持久运行的现实角色中日益普及,它们自然会遇到连续的任务流。然而一个关键限制是它们无法从累积的交互历史中学习——每次面对新任务都从零开始,被迫丢弃有价值的洞察并重复过去的错误。
现有 Agent 记忆方法有两大缺陷:
只存储原始轨迹或成功套路:Synapse 存储原始轨迹作为上下文记忆,AWM 从轨迹中抽取工作流程(workflow),但都无法蒸馏更高层次的可迁移推理模式
忽视失败经验的价值:过度强调成功经验,导致 Agent 无法从自身的失败中学到教训
核心 idea:将成功和失败经验都蒸馏为可泛化的推理策略(而非具体操作步骤),存入结构化的记忆库;结合 test-time scaling 生成丰富的对比信号,进一步提升记忆质量。
方法详解¶
整体框架¶
ReasoningBank 要解决的是 LLM Agent「每接一个新任务都从零开始、把过去的经验和教训全丢掉」的问题。它是一个无需训练的闭环记忆系统:Agent 拿到新任务时先从记忆库 embedding 检索出最相关的几条经验、注入 system prompt 指导决策;按 ReAct 风格跑完一条轨迹后,由 LLM-as-a-judge 在没有真实标签的情况下自判这条轨迹是成功还是失败,再把其中可复用的推理模式蒸馏成结构化记忆、直接追加写回库中。整个回路随任务流累积自我演化,越用越聪明。在这条闭环之上,ReasoningBank 进一步叠加测试时扩展(MaTTS):让「同一任务多采几条轨迹」产生的对比信号反过来喂养出更可靠的记忆,把记忆质量本身变成一个新的 scaling 维度。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
Q["新任务 qᵢ"] --> R
subgraph LOOP["检索→提取→合并闭环"]
direction TB
R["记忆检索<br/>embedding 相似取 top-k 注入 prompt"] --> E["Agent ReAct 执行轨迹"]
E --> J["LLM-as-a-judge<br/>无标签自判成败"]
J --> X["记忆提取:蒸馏成 Memory Schema<br/>成功→有效策略 / 失败→陷阱警示"]
X --> C["记忆合并:直接追加写回记忆库"]
end
MATTS["MaTTS 测试时扩展<br/>并行 self-contrast / 串行 self-refine"] -.多轨迹对比信号.-> X
C -.演化后的记忆库.-> R
C --> NEXT["下一任务 qᵢ₊₁"]
关键设计¶
1. Memory Schema:把轨迹蒸馏成可迁移的推理策略而非原始操作
闭环里的「记忆」到底长什么样,直接决定了它换个任务还能不能用。以往方法要么存原始轨迹(Synapse)、要么存具体工作流(AWM),粒度都太贴近某一次执行,场景一变就失效。ReasoningBank 把每条记忆设计成 Title / Description / Content 三段结构:Title 用一句话标识核心策略或推理模式,Description 给出概要,Content 承载蒸馏后的推理步骤、决策依据与操作洞察。这种结构刻意卡在两个极端之间——比原始轨迹更抽象(提炼出跨任务的共性原则),又比纯口号更具体(保留可复用的推理步骤),因而既人类可读、又能直接拼进 prompt 供模型调用。
2. 检索→提取→合并的三步闭环:让成功和失败都变成可用经验
这是系统运转的主干,对应整体框架里那条回路。检索阶段用基于 embedding 的相似度搜索从库中取出 top-\(k\) 条相关记忆(默认 \(k{=}1\)),注入 Agent 的 system prompt 指导当前决策。提取阶段在任务结束后先用 LLM-as-a-judge 在无真实标签下判定轨迹成功还是失败,再据此走不同的提取策略:成功轨迹沉淀「已验证有效的策略」,失败轨迹则贡献「反事实信号与陷阱警示」,每条轨迹会抽取多个记忆项。合并阶段有意只做最简单的直接追加(simple addition),不做去重或聚类——目的是把「记忆内容本身的增益」和「合并策略的工程技巧」隔离开,证明提升来自经验质量而非花哨的工程。正是「显式利用失败」这一步让 ReasoningBank 学到「为什么会错」,消融显示它恰好贡献了 3 个多百分点的额外提升(46.5→49.7 SR)。
3. MaTTS:让测试时扩展与记忆形成正反馈
普通做法是把 test-time scaling 与记忆简单拼接——独立跑出多条轨迹再各自提取记忆,白白浪费了轨迹之间的关联信息。MaTTS 改为主动利用这种冗余探索的内在对比信号来策划更优记忆,给出两种互补模式:parallel scaling 对同一查询并行生成多条轨迹,通过 self-contrast 比较它们的成败、识别一致出现的推理模式、过滤掉只在个别轨迹里「蒙对」的虚假解;sequential scaling 则在单条轨迹内做迭代式 self-refinement,把中间的尝试、纠正和顿悟也捕获为记忆信号。两者共同的逻辑是:好记忆把扩展引向更有前景的路径,扩展带来的丰富对比又锻造出更强的记忆,于是「记忆质量」被提升为一个新的 scaling 维度——这也解释了为什么实验里只有 ReasoningBank 能从扩展中持续受益,而弱记忆在扩展下反而退化。
整套方法不涉及任何参数更新,全部基于 in-context learning + embedding 检索 + LLM judge,backbone 覆盖 Gemini-2.5-flash/pro 与 Claude-3.7-sonnet,在 BrowserGym(web browsing)和 Bash-only(SWE)环境下均以同一套流程运行。
实验关键数据¶
主实验 — WebArena¶
| 方法 | Shopping SR | Admin SR | Gitlab SR | Reddit SR | Overall SR | Steps |
|---|---|---|---|---|---|---|
| No Memory (Gemini-2.5-flash) | 39.0 | 44.5 | 33.9 | 55.7 | 40.5 | 9.7 |
| Synapse | 40.6 | 45.1 | 35.6 | 59.4 | 42.1 | 9.2 |
| AWM | 44.4 | 46.7 | 37.2 | 62.3 | 44.1 | 9.0 |
| ReasoningBank | 49.7 | 51.1 | 40.6 | 67.0 | 48.8 | 8.3 |
| No Memory (Gemini-2.5-pro) | 45.5 | 51.1 | 35.0 | 71.7 | 46.7 | 8.8 |
| ReasoningBank (pro) | 51.9 | 56.6 | 44.4 | 80.2 | 53.9 | 7.4 |
SWE-Bench-Verified¶
| 方法 | Resolve Rate | Steps |
|---|---|---|
| No Memory (Gemini-2.5-flash) | 34.2 | 30.3 |
| ReasoningBank | 38.8 | 27.5 |
| No Memory (Gemini-2.5-pro) | 54.0 | 21.1 |
| ReasoningBank (pro) | 57.4 | 19.8 |
MaTTS 扩展实验 (WebArena-Shopping, k=scaling factor)¶
| 配置 | k=1 | k=3 | k=5 |
|---|---|---|---|
| MaTTS w/o memory (parallel) | 39.0 | 40.6 | 42.2 |
| MaTTS w/o aggregation (vanilla TTS) | 49.7 | 52.4 | 52.4 |
| MaTTS (parallel) | 49.7 | 53.5 | 55.1 |
| MaTTS (sequential) | 49.7 | 54.5 | 54.5 |
消融实验¶
| 配置 | 关键指标 | 说明 |
|---|---|---|
| 仅成功轨迹 | ReasoningBank: 46.5 SR | 仅用成功经验已优于基线 |
| 成功+失败轨迹 | ReasoningBank: 49.7 SR | 失败经验带来额外 3.2 个百分点提升 |
| Synapse+失败轨迹 | 41.7 SR | Synapse 无法有效利用失败信号 |
| AWM+失败轨迹 | 42.2 SR (反而降低) | AWM 处理失败导致性能下降 |
| 检索数量 k=1/2/3/4 | 49.7/46.0/45.5/44.4 | k=1 最优,过多记忆引入噪声 |
关键发现¶
- ReasoningBank 在 所有数据集、所有 backbone 上一致超越基线
- 效率提升显著:成功案例平均减少 2.1 步(26.9% 相对减少),说明记忆帮助 Agent 更快找到正确路径
- 跨领域泛化(Multi subset, Mind2Web cross-domain)优势尤为突出
- MaTTS 的协同效应:只有 ReasoningBank 能从 scaling 中受益(Pass@1 从 49.7 升至 50.8),弱记忆在 scaling 下反而退化
亮点与洞察¶
- 失败经验的价值被首次充分挖掘: 不同于以往只利用成功轨迹的方法,ReasoningBank 证明失败中的反事实信号是更强大的泛化来源
- 涌现行为 (Emergent Behaviors): 记忆项会自然演化——从低级执行策略 → 自适应检查 → 组合式推理,类似 RL 中的涌现学习动态
- 记忆驱动的经验扩展作为新的 scaling 维度: 传统 scaling 只增加计算量,MaTTS 将记忆质量和 scaling 联动,开辟了 Agent 能力提升的新途径
- 设计上的简洁性: 整个系统不需要训练,仅靠 in-context learning + embedding retrieval + LLM judge,极易部署
局限与展望¶
- 依赖 LLM-as-a-judge 提供正确性信号,judge 本身可能出错导致记忆污染
- 记忆合并策略过于简单(直接追加),大规模部署时记忆池膨胀可能降低检索效率
- 检索仅用 embedding 相似度,缺乏推理感知的检索机制
- 未探索记忆遗忘/更新策略(过时的记忆可能干扰)
- 仅在 web browsing 和 SWE 上验证,其他 Agent 场景(如具身环境)有待探索
相关工作与启发¶
- vs Synapse: 存储原始轨迹作为 exemplar,记忆粒度太粗、不可迁移
- vs AWM (Agent Workflow Memory): 从成功轨迹提取 workflow,但 (1) 只用成功经验 (2) 跨域迁移差(Multi subset 退化到 3.4 SR)
- vs ExpeL: 也利用成功/失败,但记忆以 tips 形式存储,不如 ReasoningBank 的结构化推理策略
- 启发: Agent 的记忆系统应该像人类一样——不仅记住"怎么做成功的",更要记住"为什么失败了"以及"抽象的决策原则"
评分¶
- 新颖性: ⭐⭐⭐⭐
- 实验充分度: ⭐⭐⭐⭐⭐
- 写作质量: ⭐⭐⭐⭐⭐
- 价值: ⭐⭐⭐⭐⭐