# ACE：把上下文变成会持续进化的 Playbook

> **论文**：*Agentic Context Engineering: Evolving Contexts for Self-Improving Language Models*  
> **作者**：Qizheng Zhang, Changran Hu, Shubhangi Upasani, Boyuan Ma, Fenglu Hong, Vamsidhar Kamanuru, Jay Rainton, Chen Wu, Mengmeng Ji, Hanchen Li, Urmish Thakker, James Zou, Kunle Olukotun  
> **单位**：Stanford University、SambaNova Systems、UC Berkeley  
> **发表**：ICLR 2026；arXiv:2510.04618v3（2026-03-29）  
> **代码与项目**：`ace-agent/ace`、`ace-agent.github.io`

## 阅读主线

ACE 讨论的不是“如何训练一个更强的模型”，而是“模型部署以后，如何让输入给它的上下文随着经验持续变好”。论文先指出两种现有上下文适应方法的系统性失败：为了简短而丢掉细节的 **brevity bias**，以及反复整段重写导致信息突然消失的 **context collapse**。随后作者提出一个对应性的设计：把上下文表示为可追踪的条目式 playbook，让 Generator 产生轨迹、Reflector 提炼经验、Curator 只生成增量更新，再由确定性程序合并。实验要回答的核心问题也由此展开：这种结构是否比一次性 prompt 优化和整段 memory 重写更有效，增量更新是否真的必要，在缺少标签时能否自我改进，以及更长的上下文是否会带来不可接受的成本。

一句话概括：**ACE 把“上下文优化”从反复改写一段 prompt，改造成对结构化经验库的增量维护。**

## 1. 为什么研究“上下文自进化”

现代 LLM 应用越来越依赖模型权重之外的信息。系统提示词规定行为边界，memory 保存过去事实与经验，检索到的证据补足知识并降低幻觉；这些内容共同构成模型真正工作时的 context。所谓 `context adaptation`，就是不更新权重，而是在训练完成后持续修改这些输入，让模型适应任务、环境或用户。

论文并不是把它当成参数微调的廉价替代品，而是强调 context 本身具有几项不同的系统价值：它可被人阅读和审计，能够在运行时快速加入新知识，也可以在 compound AI system 的多个模型或模块之间共享。随着长上下文模型、KV cache 复用等推理基础设施成熟，维护丰富上下文开始从临时技巧变成一种可部署的学习接口。

这引出 ACE 的研究前提：如果系统要在不改权重的情况下持续学习，那么上下文不能只是一段静态 prompt；它必须能够吸收新经验，同时避免旧经验在更新过程中被破坏。

## 2. 现有方法为何不够：两个有证据的失败模式

### 2.1 Brevity bias：优化器偏爱短而通用的答案

Reflexion、TextGrad、GEPA、Dynamic Cheatsheet 等方法已经表明，自然语言反馈可以用于修改 prompt 或外部 memory。但论文认为，许多方法的目标或更新方式会把上下文推向“简短、抽象、普适”的说明。GEPA 将 brevity 视为优点；在某些任务上这能减少冗余，却也可能删掉只有在具体环境中才有用的领域启发式、工具调用规则、边界情况和失败模式。

作者引用的 test-generation 观察更具体：迭代优化会反复收敛到近乎相同的泛化指令，例如“创建单元测试以确保方法按预期运行”。这种句子没有错，但它没有保存某个库、API 或错误类型的可执行知识。对于多步 Agent、程序生成和专业推理，真正决定成败的往往正是这些难以压成一句原则的细节。

**论文主张**：在知识密集或环境密集的任务中，context 不应被默认优化成摘要，而应成为详细、包容、结构化的 playbook。作者的理由是，LLM 可以在推理时从长而具体的上下文中选择相关内容，因此“先保留、后选择”可能比“先压缩、再执行”更稳妥。

### 2.2 Context collapse：整段重写会突然抹掉积累

论文在 AppWorld 上给出一个决定方法设计的案例。采用 monolithic rewriting 的适应过程运行到第 60 步时，上下文已有 **18,282 tokens**，准确率为 **66.7**；下一步整段重写后，上下文突然缩为 **122 tokens**，准确率跌至 **57.1**，甚至低于完全不使用适应上下文的基线 **63.7**。

这不是普通的“压缩有一点损失”，而是更新操作破坏了系统的长期状态：一次生成失误就能把前 60 步积累的知识一起覆盖。论文用 Dynamic Cheatsheet 展示该现象，但明确把问题归因于更一般的机制风险，即让 LLM 每次重新生成完整 context 时，没有任何结构保证旧知识继续存在。

**直接证据**：该案例证明整段重写可能伴随 token 数量和性能的同步断崖式下降。它不能单独证明所有全量重写方法都会 collapse，但足以说明“保留旧信息”不能只依赖模型自觉。

## 3. 从失败模式到设计问题

两个失败模式分别暴露了内容目标和更新机制的问题：brevity bias 说明“上下文应该保留什么”被定义得过窄；context collapse 说明“上下文怎样更新”缺少状态保护。因此 ACE 的研究问题不是泛泛的“怎样获得更好的 prompt”，而是：

> 能否把 context 设计成一个持续生长、可局部修订、可追踪质量、又能控制冗余的知识结构，使 LLM 在离线和在线场景中都能从经验自我改进？

作者由此提出三项互相依赖的设计：用专门的 Reflector 把执行与经验提炼分开；用 incremental delta update 取代完整重写；用 grow-and-refine 在持续积累和冗余控制之间平衡。方法的逻辑不是“三个 Agent 更智能”，而是**职责分离加上受约束的状态更新**。

## 4. ACE 的上下文表示：条目式 Playbook

ACE 不把 context 存成一段不可分割的文本，而是存成许多结构化 bullet。每条 bullet 包含：

- 唯一 ID，用于引用和定点修改；
- `helpful` / `harmful` 计数，用于记录它在轨迹中的历史作用；
- 一小块可复用内容，例如策略、领域概念、工具规则或常见失败模式。

这种表示带来三项操作能力。第一是 **localization**：新经验只修改相关条目，不必重新生成全文。第二是 **fine-grained retrieval and attribution**：Generator 可以标记这次推理用了哪些条目、哪些有帮助或有害。第三是 **incremental adaptation**：系统可以对条目做追加、合并、去重和剪枝，而不是把知识库交给一次不可控的生成。

这里最重要的改变是状态语义：完整 playbook 是持久状态，LLM 只负责提出小型 `delta context`，最终合并由确定性的非 LLM 逻辑完成。旧知识是否保留，不再由下一次生成是否“记得复述它”决定。

## 5. Generator、Reflector、Curator 如何协作

### 5.1 Generator：带着当前 playbook 去执行

Generator 接收新 query 和当前 playbook，生成任务轨迹或答案。在 AppWorld 中，这包括推理、API/工具调用、代码以及环境返回；在 FiNER 等分类任务中，则是结合 playbook 中的规则做预测。它还会引用相关 bullet ID，并标记哪些条目对本次结果有帮助、误导或无关。

Generator 的输出不是直接写回 memory，而是为后续反思提供可检查的 trajectory。这样可以把“完成任务”和“总结应该学到什么”拆开，避免同一个调用既要执行又要维护整个知识库。

### 5.2 Reflector：从结果中诊断，而不是直接改库

Reflector 检查 trajectory、任务结果以及可用反馈，分析成功原因或错误根因，并提炼可复用 insight。论文附录中的 AppWorld prompt 要求它结合 ground-truth code、unit-test 结果和当前 playbook，输出错误位置、根因、正确方法、关键经验，并给现有 bullet 标注 `helpful`、`harmful` 或 `neutral`。

反思可以迭代多轮，让后一次反思审查前一次提炼是否遗漏或过度概括。主实验最多使用 5 轮；敏感性实验表明 1 轮平均为 61.3，3 轮为 65.8，5 轮为 67.6，继续增加到 10 轮反而降至 65.2。这说明 Reflector 的价值来自充分诊断，但“更多思考”并非单调更好，过度反思会引入噪声。

### 5.3 Curator：只输出新增或需修订的 delta

Curator 接收 Reflector 的 insights，不负责重写完整 playbook，只把缺失且不重复的知识转成小型 delta entries。论文展示的 AppWorld Curator prompt 甚至把输出约束为 `ADD` 操作，bullet ID 由系统添加。这种约束把生成模型从“知识库重写器”降为“候选补丁生成器”。

### 5.4 确定性合并：方法中容易被忽略的关键一步

Curator 之后，系统用非 LLM 逻辑把 delta 合并到 playbook：新 ID 追加，已有条目的计数或内容定点更新。语义 embedding 用于检测重复项；去重可以在每次 delta 后主动执行，也可以等 context 超出长度阈值后再惰性执行。

这一步直接回应 context collapse：Generator、Reflector 或 Curator 即使某次输出不完整，也没有权限用一段短文本覆盖全部历史。多个 delta 还可以并行产生并批量合并，使适应过程不必串行重写超长 prompt。

## 6. Grow-and-refine：为什么不是无限追加

只追加虽然保护旧知识，却会带来重复、冲突和无限增长。ACE 的 `grow-and-refine` 因此包含两个方向：`grow` 保存新 insight，`refine` 合并语义重复内容、更新 helpful/harmful metadata，并在需要时剪除陈旧或低价值条目。

敏感性实验给出两个边界信号。FiNER 上，去重阈值在 50%、70%、90% 时分别得到 77.0、73.9、78.6，说明合理范围内总体有增益，但中间值并非严格单调；最大 context 触发阈值从 10K、50K 到 100K tokens 时，准确率为 78.6、78.4、78.3，差异很小。作者据此认为 ACE 不依赖精细调参，剪枝主要用于成本与噪声控制，而不是通过极短 context 获得性能。

## 7. 离线优化与在线自适应

ACE 用同一套机制支持两种学习时序。

**离线适应**把训练集经验整理成 system prompt / playbook，再以固定 context 在测试集做 pass@1 评估。论文最多运行 5 个 epoch，同一批 query 可以被重新访问，让已有条目在后续轮次继续修订。

**在线适应**则按顺序处理测试样本：先用当前 context 预测，再利用这个样本产生的 ground truth、执行结果或环境信号更新 playbook，下一条样本立即使用更新后的状态。这个设置更接近 test-time memory evolution，也使“没有标签时能不能学”成为关键问题。

主实验中 Generator、Reflector、Curator 都使用同一个非 thinking 模式的 DeepSeek-V3.1，batch size 为 1，Reflector 最多 5 轮。统一模型的目的，是避免用更强的 Reflector/Curator向较弱 Generator 转移能力，从而把收益尽量归因于 context construction 本身。

## 8. 实验设计：每组实验在回答什么

论文覆盖两类最需要累积细节的应用。AppWorld 要求 Agent 理解 API、生成代码并与邮件、文件系统等环境交互，报告 test-normal / test-challenge 上的 Task Goal Completion（TGC）和 Scenario Goal Completion（SGC）。金融任务包括 FiNER 和 Formula：前者从 XBRL 文档中预测 139 种细粒度实体类型，后者要求运用金融概念做数值推理。附录还测试 DDXPlus 医疗推理和 BIRD-SQL text-to-SQL。

对照方法对应不同的 context 适应范式：ICL 直接塞入示例；MIPROv2 联合优化指令和 demonstrations；GEPA 用轨迹与反思做完整 prompt evolution；Dynamic Cheatsheet（DC-CU）在测试时累积并整段改写外部 memory；ReAct 是 AppWorld 的基础 Agent。由此，实验不只是比较谁的分数高，也在比较**固定示例、单 prompt 优化、整段 memory 重写和条目式增量维护**。

需要注意两个评估条件。第一，offline 方法在训练集优化、测试集评估；online 方法在同一打乱后的测试序列上先预测再更新。第二，`GT labels` 只表示 Reflector 是否能看到可靠 ground truth；AppWorld 即使没有标签也有代码执行成败等自然反馈，而 FiNER 在无标签 online 设置中缺少同样可靠的信号。

## 9. 主结果：ACE 在哪里有效

### 9.1 AppWorld：无标签执行反馈也能推动自改进

DeepSeek-V3.1 + ReAct 的四项平均为 **42.4**。离线 ACE 有 GT 时达到 **59.4（+17.0）**，无 GT 时仍达到 **57.2（+14.8）**；相比之下 ICL 为 46.0，GEPA 为 46.4。在线 ACE 无 GT 达到 **59.5（+17.1）**，高于 DC-CU 的 51.9。

在线 ACE 在更难的 test-challenge 上提升尤其大：TGC 从 41.5 到 66.0，SGC 从 21.6 到 48.9。这支持的不是“ACE 不需要任何反馈”，而是更精确的结论：**当环境能提供可解释的执行成败时，ACE 不依赖人工标签也可以形成有效 playbook。**

论文还把 59.4 的离线平均与 2025 年 9 月 AppWorld 榜单中的 IBM CUGA 60.3 放在一起讨论。但脚注明确说 CUGA 只是性能区间的粗略参照，不是方法学 baseline；其内部 Agent 工程、模型和评估条件不同，因此不能据此断言 ACE 优于 CUGA 的整体系统设计。

### 9.2 金融任务：可靠反馈决定适应是增益还是污染

FiNER / Formula 的 base 平均为 **69.1**。有 GT 的 offline ACE 达到 **81.9（+12.8）**，明显高于 GEPA 的 72.5；无 GT offline ACE 仍为 77.1。在线且有 GT 时 ACE 为 76.6，高于 DC 的 71.8。

但无 GT online 结果不是全面成功：ACE 在 Formula 上从 67.5 提升到 **78.5（+11.0）**，在 FiNER 上却降到 **67.3（-3.4）**；DC 无 GT 在两项任务上都下降，平均为 65.4。论文据此承认，缺乏 ground truth 或可靠执行信号时，错误反思会污染 context。这个负结果给“自进化”加上了必要条件：系统需要可校准的反馈通道，不能仅靠模型对自己输出的主观判断。

### 9.3 跨任务与跨模型结果应如何理解

附录中，ACE 把 DDXPlus 从 75.2 提升到 90.2；BIRD-SQL 平均从 47.8 提升到 52.9，略高于 GEPA 的 52.2。作者还在 GPT-OSS-120B、GPT-5.1、Llama-3.3-70B-Instruct 上替换全部三个角色而不改算法，均报告正增益，但较弱模型的提升幅度更小。

这些结果支持方法不是 DeepSeek-V3.1 专属 prompt 的说法；它们尚不能证明 ACE 对任意模型和任务都普遍有效，因为所有任务仍集中在能够从细粒度经验中受益的 agent / domain reasoning 场景，且作者自己指出 HotPotQA、Game of 24 等任务可能只需要简洁规则。

## 10. 消融：究竟是哪一部分在起作用

AppWorld 四项平均从 ReAct 的 42.4 开始：没有 Reflector 和 multi-epoch 时为 **55.1（+12.7）**，加入 Reflector 但不做 multi-epoch 时为 **56.8（+14.4）**，完整 offline ACE 为 **59.4（+17.0）**。在线 ACE 不做 offline warmup 为 56.1，加入 warmup 后为 59.5。它们说明基础的条目式适应已经有效，Reflector、多轮数据访问和 warmup 各自继续贡献增益。

最能验证论文核心机制的是 Appendix Table 18。只看 AppWorld test-normal，ReAct 的 TGC / SGC / 平均为 63.7 / 42.9 / 53.3；ACE 若移除 incremental update，只到 67.3 / 46.4 / 56.9；保留增量更新则达到 **76.2 / 64.3 / 70.3**。也就是说，相对无增量版本，TGC 再提高 8.9 点、SGC 再提高 17.9 点。这个消融直接支持“防止全量重写丢信息”是主要收益来源，而不只是多调用了几个 LLM 角色。

## 11. Reflector 的可靠性边界

在 FiNER 上，base 为 70.7。把 Reflector 换成较弱的 GPT-OSS-120B，ACE 仍达到 76.6；DeepSeek-V3.1 为 78.3，GPT-5.1 为 78.5。说明 Reflector 不必是最强模型，但能力更弱会损失一部分增益。

更严格的实验主动注入有害反思：每一步都污染时，准确率降到 **66.7**，低于 base；每 5、10、25 步污染一次时分别为 76.1、77.0、77.8，无污染为 78.3。结构化条目、metadata 和去重能够缓冲偶发噪声，却不能抵抗持续的错误学习信号。

**本文解读**：ACE 解决的是“如何保存和维护经验”，并没有解决“如何保证经验为真”。它把知识更新变得可定位、可追踪，这为 contradiction detection、置信度过滤和人工审计创造了接口，但这些更强的质量控制仍是扩展方向，不是当前算法已经完成的能力。

## 12. 成本分析：适应更便宜，推理上下文更长

离线 AppWorld 上，GEPA 适应耗时 53,898 秒、1,434 个 rollouts；ACE 为 **9,517 秒（-82.3%）**、**357 个 rollouts（-75.1%）**。在线 FiNER 上，DC-CU 耗时 65,104 秒、token cost 17.7 美元；ACE 为 **5,503 秒（-91.5%）**、**2.9 美元（-83.6%）**。细粒度统计还显示，离线适应阶段 ACE 相比 GEPA 少用 80.8% input tokens 和 83.6% output tokens，主要因为它不做 GEPA 的候选 prompt validation loop，也不反复重写全文。

但成本结论必须分阶段。评估阶段 ACE 因 playbook 更丰富，每个 query 的 raw input tokens 比 GEPA 多 **117.4%**，不是“所有 token 都更少”。论文用 GPT-5.1 的 OpenAI prompt caching 实验说明，91.8% input tokens 可命中 cache，使 billed input-token cost 相对按原始 token 计费降低 82.6%。因此更准确的结论是：**ACE 降低适应开销，并把部署端的长上下文开销押注在高复用 cache 基础设施上。** 没有稳定 prefix、cache 复用或相同计费策略时，原始输入增长仍是实际成本。

## 13. 论文真正建立了什么

### 13.1 有直接证据支持的结论

- 对需要工具规则、领域概念和失败经验的任务，结构化、增量式 context adaptation 可以显著优于固定 ICL、完整 prompt evolution 和整段 memory 重写。
- incremental delta update 是 ACE 的关键机制；移除它会损失大部分 AppWorld 增益。
- 在 AppWorld 这类有执行反馈的环境中，ACE 即使没有人工 GT label 也能在线改进。
- Reflector 对中等能力差异和偶发噪声有一定鲁棒性，但持续错误反馈会使系统低于 base。
- 适应阶段的延迟和 token 成本可显著下降；评估阶段的 raw context 则明显变长。

### 13.2 论文提示、但没有完全证明的结论

- “长而详细的 context 普遍优于简洁 prompt”只在选定的知识/环境密集任务中得到支持，不适用于所有推理任务。
- 多模型实验说明算法可以迁移到不同 backbone，但还不足以排除 prompt 实现、模型家族或 benchmark 选择带来的影响。
- cache 实验证明特定基础设施下 billed cost 可被摊薄，不等于所有部署环境中的 GPU memory、首 token 延迟和总成本都会同步下降。
- playbook 可解释、可选择性删除，为 unlearning 和治理提供可能；论文没有实证完成隐私删除、冲突解析或长期分布漂移下的安全更新。

## 14. 局限与批判性评价

第一，ACE 的学习上限仍由反馈质量决定。Generator 产生轨迹，Reflector 抽取 insight，Curator 形成 delta；这条链上任何系统性偏差都可能被持久保存。helpful/harmful 计数和去重主要解决组织问题，不能验证事实正确性。

第二，论文的最佳适用范围是“缺少现成规则、但能从经验中提炼大量局部知识”的任务。若任务只有一条稳定策略，或模型已掌握所需知识，playbook 的增长可能只有成本没有收益。作者用 HotPotQA 和 Game of 24 主动承认了这一点。

第三，online 评估采用先预测当前样本、再用该样本更新 context 的顺序，适合测 test-time learning，但也要求严格关注样本顺序和分布。论文使用统一打乱顺序保证方法间公平，却没有充分回答长期运行时概念漂移、矛盾经验和跨用户隔离问题。

第四，ACE 将 context 视为可读知识库，这是它相对权重更新的重要优势；但当前 bullet 仍主要由 LLM 生成和整理。真正面向生产的系统还需要来源追踪、版本回滚、冲突检测、权限边界、过期策略和人工审批。结构化 delta 使这些功能可实现，但不能把“可实现”写成“已经解决”。

## 15. 放在 AI 自进化专题中的位置

ACE 提供的是一种 **test-time / post-training 的非参数自进化机制**：经验不写回权重，而是写入可持续更新的外部 context。它把自进化拆成四个可研究对象：经验从哪里来，反馈是否可靠，经验怎样被抽象，长期状态怎样保存。其核心贡献集中在后两项，尤其是把 state mutation 从整段生成改为 itemized delta。

这也给后续几篇论文提供了比较坐标：有的方法改变强化学习更新方式，有的方法自动改造 agent harness 或环境，而 ACE 改变的是模型每次调用时携带的知识状态。比较这些方法时，应分别追踪它们更新的是 **weights、context、workflow/harness 还是 environment**，反馈来自 **标签、奖励、执行信号还是自评**，以及错误更新是否可以审计和回滚。

## 结论

ACE 最有价值的地方不是提出了三个拟人化角色，而是把一条完整的工程判断做成算法：详细经验值得保留，LLM 不应拥有覆盖全部历史状态的权限，新知识应以可定位的 delta 进入系统，并用非生成式逻辑维护长期状态。AppWorld 主结果和增量更新消融为这条判断提供了较强证据；FiNER 无标签退化和有害 Reflector 实验则明确展示它的边界。因而 ACE 不是“无需监督就会自动变强”的通用方案，而是一种在**反馈可用、经验可复用、任务需要丰富细节**时有效的 context-level continual learning 框架。

