R2D2: Remembering, Replaying and Dynamic Decision Making with a Reflective Agentic Memory¶
会议: ACL 2025
arXiv: 2501.12485
代码: 无
领域: LLM Agent / Web Agent
关键词: web agent, replay buffer, reflective memory, A* search, WebArena, known MDP
一句话总结¶
R2D2 提出了一个结合 Remember(经验回放缓冲区 + A* 搜索导航)和 Reflect(错误反思 + 反思记忆存储)两范式的 Web Agent 框架,将 Web 导航从 Unknown MDP 转化为 Known MDP,在 WebArena 上导航错误减少 50%,任务完成率提升 3 倍,超越 SOTA 17%。
研究背景与动机¶
- 领域现状:Web Agent(如 ReACT)通过 LLM 执行网页导航和交互任务,但约 60% 的失败源于导航错误——Agent 无法找到正确的目标页面。
- 现有痛点:
- Unknown MDP 假设:Agent 对动作后果的可见性有限,每次推理都从头摸索,无法利用历史经验
- 经验即用即弃:传统方法在一次 episode 后立即丢弃轨迹,浪费了宝贵的探索信息
- 反思方法不够:现有反思(如 Reflexion)只关注执行级别错误,对导航失败束手无策
- 核心矛盾:Web 环境复杂但 Agent 每次都从零开始探索,历史经验无法有效复用
- 本文要解决什么? 构建 Web 环境的结构化表示("地图"),让 Agent 基于已知信息做决策
- 切入角度:受人类认知和机器人探索研究的启发——人类通过记忆和反思迭代改进策略,不是每次都从头来
- 核心 idea 一句话:用 replay buffer 构建 Web 环境的有向图"地图"(Known MDP),用 A* 搜索替代盲目导航;用反思机制学习执行错误,将纠正后的轨迹存入记忆供未来检索。
方法详解¶
整体框架¶
探索阶段:ReACT Agent 执行任务 → 收集观测序列 → 构建 replay buffer 图 → 对失败轨迹分类(导航/执行错误)→ 分别用 Remember/Reflect 纠正 → 存入反思记忆。推理阶段:新查询编码 → 检索相关轨迹作为 in-context demo → 引导 Agent 执行。
关键设计¶
- Remember Paradigm(记忆范式):
- 做什么:从所有历史观测中构建 Web 环境的结构化"地图"
- Replay Buffer 构建:将 Web 环境表示为有向图 \(G = (O, E)\),节点是网页观测,边是动作(点击、填写等),存储连续观测之间的差异而非完整页面状态
- A* 搜索导航:对导航失败的轨迹,在 replay buffer 图中用 A* 搜索寻找到目标页面的最优路径。启发式函数由 LLM 评估每个节点到目标的相关性距离
-
设计动机:将 Unknown MDP 转化为 Known MDP——Agent 不再"摸黑"导航,而是在已知的"地图"上做路径规划
-
Reflect Paradigm(反思范式):
- 做什么:对执行失败的轨迹进行错误诊断和策略纠正
- 核心思路:LLM 识别轨迹中第一个错误动作 \(a_i\) → 截断到 \(\{a_1, ..., a_{i-1}\}\)(正确部分)→ 生成对错误动作的反思和修正建议 → 存入反思记忆
-
设计动机:与 Remember 互补——Remember 解决"去哪里",Reflect 解决"怎么做"
-
Reflective Memory(反思记忆):
- 做什么:键值存储,查询向量为 key,纠正后的轨迹+反思为 value
- Lookup:新查询编码后通过向量相似度检索最相关的历史轨迹
- Update:如果新的纠正轨迹比已有的更优,LLM 判断后更新
-
设计动机:Agent 通过积累经验持续改进,类似人类的"经验学习"
-
错误分类:
- 导航失败:Agent 未到达关键页面 → 用 Remember(A* 搜索)纠正
- 执行失败:Agent 到达了正确页面但操作错误 → 用 Reflect 纠正
- 约 60% 失败是导航失败,这正是 Remember 范式解决的
实验关键数据¶
主实验(WebArena)¶
| 方法 | 任务完成率 | 导航错误率 |
|---|---|---|
| ReACT (GPT-4o) | ~14% | ~60% |
| Tree-search + reflection | ~20% | ~45% |
| R2D2 | ~42% | ~30% |
| vs SOTA 提升 | +17% | -50% |
各任务域对比:
| 域 | ReACT | R2D2 | 提升 |
|---|---|---|---|
| CMS | 低 | 高 | 显著 |
| 低 | 高 | 显著 | |
| Shopping | 中 | 高 | 显著 |
| Map | 中 | 高 | 中等 |
消融实验¶
| 配置 | Task SR |
|---|---|
| R2D2 (Remember + Reflect) | ~42% |
| w/o Remember (仅 Reflect) | ~25% |
| w/o Reflect (仅 Remember) | ~35% |
| w/o Reflective Memory | ~30% |
| Base ReACT | ~14% |
关键发现¶
- Remember 贡献大于 Reflect:去掉 Remember 下降 17%,去掉 Reflect 下降 7%——因为导航失败占总失败的 60%
- 两范式协同效果 > 单独使用之和:Remember 减少导航障碍让 Reflect 能更专注于执行优化
- A* 搜索比随机探索高效:在 replay buffer 中精准定位目标页面路径
- 反思记忆的持续学习:随着探索 episode 增加,记忆质量提升,新任务受益
亮点与洞察¶
- Unknown MDP → Known MDP 的转化思路非常优雅:将 Web 导航从"摸黑行走"变为"地图导航",这是根本性的范式改变。可迁移到任何交互式环境的 Agent(如 GUI Agent、游戏 Agent)
- A* 搜索 + LLM 启发式的组合:用经典搜索算法的结构保证效率,用 LLM 提供语义级别的启发式——经典算法与现代 AI 的精彩结合
- 错误类型分治策略:不是对所有失败用同一种方法纠正,而是先分类(导航 vs 执行)再对症处理——这种分类思维值得广泛借鉴
局限性 / 可改进方向¶
- Replay buffer 需要前期探索:需要先执行多个探索 episode 来构建"地图",冷启动成本高
- Web 环境动态变化:如果网页结构变化,replay buffer 中的旧信息可能过时
- 仅在 WebArena(模拟环境)上测试:真实 Web 环境的噪声和复杂度更高
- LLM 调用次数多:A* 搜索中每个节点都需要 LLM 评估启发式值
相关工作与启发¶
- vs Reflexion (Shinn et al., 2023):Reflexion 只做执行级反思,R2D2 分离了导航和执行失败并分别处理
- vs Tree-search methods (Koh et al., 2024):树搜索在 Unknown MDP 中在线探索,R2D2 离线构建 Known MDP 后做高效搜索
- vs Agent-Q (Putta et al., 2024):Agent-Q 用 RL 微调,R2D2 纯 prompting 方法更灵活
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ Unknown→Known MDP 转化、A*+LLM 启发式、错误分治策略都非常新颖
- 实验充分度: ⭐⭐⭐⭐ WebArena 详细消融和错误分析,但仅在一个 benchmark 上测试
- 写作质量: ⭐⭐⭐⭐ 形式化定义清晰,图表直观
- 价值: ⭐⭐⭐⭐⭐ 对 Web Agent 的实用提升巨大(3倍完成率),思路可迁移