ICLR'26 2025.10 cs.LG · cs.AI · cs.CL

ACE:让上下文成为会进化的作战手册

不改模型权重,怎样让 Agent 从每次执行中积累经验,又不在反复改写中遗忘?

Qizheng Zhang, Changran Hu, Shubhangi Upasani 等 · Stanford · SambaNova Systems · UC Berkeley

阅读原论文 · Agentic Context Engineering ↗
30 秒读懂

过去的上下文优化常把经验反复压成一段“更好、更短”的 prompt;压缩看似整洁,却会丢掉工具细节、边界条件和失败模式。严重时,整份记忆会从上万 token 突然缩成百余 token,性能随之下跌。

ACE 的关键转变:把上下文视为一份由细粒度条目组成、可以持续演化的作战手册。Generator 执行任务,Reflector 从轨迹中提炼经验,Curator 只产出局部 delta,再由确定性逻辑合并、去重和修订。

因此,ACE 不是“再写一遍整份 prompt”,而是只改该改的那一条。它在 Agent 任务上平均提升 10.6%,在金融任务上平均提升 8.6%,但收益依赖可信的执行或标注反馈。

这篇文章究竟要回答什么问题?
如何让 LLM 通过上下文长期积累经验,同时避免压缩偏差、整体重写和错误反馈把旧知识冲掉?
+10.6%
Agent 基准
相对强基线平均增益
+8.6%
金融领域基准
相对强基线平均增益
−86.9%
跨设置平均
上下文适配延迟
01 · 问题

上下文为什么越“优化”越容易塌?

上下文适配的优势很直观:它可解释、更新快、可跨模型复用,也不需要昂贵的权重训练。但当任务依赖大量领域规则、API 用法与失败教训时,“写得更短”并不等于“学得更好”。

18,282第 60 步上下文 token
准确率 66.7
整体重写LLM 尝试压缩并整理
没有局部保护
122第 61 步上下文 token
准确率跌至 57.1
论文中的上下文塌缩曲线:上下文长度骤降伴随准确率下降
论文 Figure 2:Dynamic Cheatsheet 的整份上下文重写在某一步突然压缩信息,性能同时跌破无适配基线。
  • 横轴是连续适配步骤;上下文会随经验累积逐渐增长。
  • 长度变化并非平滑修剪:第 60 到 61 步从 18,282 token 断崖式跌到 122 token。
  • 性能变化与信息丢失同步:准确率从 66.7 降至 57.1,低于不做适配的 63.7。
  • 因果警示不是“长上下文必然好”,而是整体重写没有办法保证关键条目仍被保留。
  • ACE 的对应设计是把知识拆成带 ID 的条目,只应用局部 delta,让未被修改的经验原样留下。
03 · 关键答案

ACE:分工反思,只提交局部修改

ACE 同时支持离线适配(用训练集优化系统 prompt)和在线适配(测试时根据自然执行反馈更新记忆)。两种设置共享同一条主线:把每次执行变成一份可审查、可合并的经验增量。

ACE 框架:Generator、Reflector 和 Curator 的上下文演化流程
论文 Figure 4:Generator 产生轨迹,Reflector 提取可复用洞察,Curator 生成 delta;确定性合并把 delta 写入结构化 playbook。
  • Generator接收查询与当前 playbook,执行推理、工具调用或领域任务,并标记哪些条目有帮助或有害。
  • 轨迹与反馈把结果、执行成功/失败、可选真值送给 Reflector;这条箭头承载的是“发生了什么以及结果如何”。
  • Reflector把一次轨迹转成具体经验,可迭代多轮,目的是分离“判断哪里错了”和“如何维护上下文”。
  • Curator不重写整份上下文,只把洞察变成新增、修改、计数更新等小型 delta entries。
  • 确定性合并按 ID 应用更新,并通过语义相似度去重;它避免让 LLM 在每轮重新生成所有旧内容。
  • 反馈闭环是“playbook → Generator → Reflector → Curator → delta → playbook”;多条 delta 还能并行生成后批量合并。

跟着一条 AppWorld playbook 更新走完四步

用论文中的关系识别案例看 ACE 如何纠错:Agent 需要找到用户的室友并处理相关交易,但旧条目允许从交易描述猜关系,导致选错对象。点击下一步,看同一个 playbook 条目如何被局部修订。

本轮任务:找到用户的室友,并处理上周与室友相关的交易。
1 · 执行失败
2 · 反思根因
3 · 提交 delta
4 · 局部合并
CONTEXT PLAYBOOK
关系与时间过滤 v12
shr-00009
室友等关系可从交易描述推断;再按日期筛选相关记录。
helpful: 2 · harmful: 0 · status: active
Generator 轨迹等待执行结果…
Reflector 洞察等待错误分析…
Curator delta等待结构化更新…
当前是更新前的 playbook。它包含一条会误导 Agent 的关系识别规则。

这个 case 为什么必须用“带 ID 的 bullet”?

shr-00009 给这条关系规则一个稳定身份。Curator 因此可以精准更新这一条,把 helpful / harmful 计数和来源一并保留;其他 API、分页与认证条目完全不必重新生成。相比“请把整份手册重写得更完善”,信息损失的风险小得多。

Grow-and-Refine:增长,但不任其膨胀

具体示例:论文中的 AppWorld playbook 长什么样?(展开查看)

论文展示的 ACE 上下文不是抽象口号,而是按领域组织的操作性知识:API 使用顺序、常见错误、可复用代码片段、实体解析规则以及失败后的修正。它更像工程团队维护的 runbook,而不是一句“谨慎使用工具”。

ACE 在 AppWorld 上生成的详细上下文条目示例
论文 Figure 3:ACE 生成的部分 AppWorld playbook,保留可直接复用的领域洞察、工具规则和代码。
  • 组织方式是结构化条目而非连续散文,便于按任务检索和局部修订。
  • 内容粒度落在具体动作与失败条件上,让 Generator 能直接把经验用于下一次工具调用。
  • 代码与 API作为可执行知识保留,避免被压缩成失去参数细节的泛化描述。
  • 元数据为后续 helpful / harmful 反馈和去重提供锚点,使条目具备生命周期。
  • 教学要点是 ACE 追求“全面但可维护”,不是无筛选地保存完整历史轨迹。
04 · 必要证据

实验支持了什么,又没有支持什么?

论文在 AppWorld Agent 任务和金融领域任务上,同时评估离线与在线适配。最有说服力的不是单一榜单名次,而是增量更新的消融、无标签执行反馈,以及适配成本三条证据互相对齐。

AppWorld:平均分 42.4 → 59.4

离线 ACE 有真值时比 ReAct 平均提高 17.0 个点;无真值、只用自然执行反馈时仍达到 57.2。

在线适配:最高 +17.1

ACE 在 AppWorld 在线设置中平均达到 59.5;难度更高的 challenge 切分提升尤其明显。

增量更新不是装饰

AppWorld test-normal 上,不用增量更新平均 56.9;启用后达到 70.3,说明保住旧知识贡献了大部分收益。

适配更快、更省 rollout

AppWorld 离线适配相对 GEPA 延迟降低 82.3%、rollout 减少 75.1%;FiNER 在线适配相对 DC 延迟降低 91.5%。

一句话判断:实验支持“结构化、增量的上下文维护比整体 prompt 重写更适合知识密集型连续学习”;它并不证明上下文越长越好,也不证明没有可靠反馈时可以安全自我进化。
数字口径:为什么文中既有 +10.6%,又有 +17.1%?

+10.6%是论文摘要中 ACE 相对所选强基线在 Agent 设置上的平均增益;+17.1是 AppWorld 在线适配相对 ReAct 基线的平均绝对提升;+17.0则是离线、有真值设置下的平均绝对提升。三者比较对象和设置不同,不应混为同一个数字。

05 · 适用边界

什么时候值得用 ACE?

更适合

  • 工具密集 Agent:有明确执行成功、报错或环境反馈。
  • 知识密集领域:需要保留大量规则、例外和可复用代码。
  • 持续适配:模型不能频繁微调,但上下文可以审查、共享和删除。

未必适合

  • 任务本来很简单:一份短固定规则已足够,三角色流程可能过重。
  • 反馈不可靠:金融任务没有真值或可信执行信号时,ACE 和 DC 都可能退化。
  • 反思持续被污染:若每轮都注入有害反馈,错误条目会累积并拖垮性能。

长 playbook 也不是“免费”的:ACE 评估时原始输入 token 多于 GEPA。论文认为 KV cache 复用能摊薄成本,并报告 91.8% 输入 token 命中缓存;这依赖实际服务基础设施,部署前仍应测量延迟、缓存命中率与账单口径。