热点来源:Hugging Face Blog - 《智能体记忆并非越多越好:八款模型评测显示剂量需按能力校准》(https://huggingface.co/blog/ibm-research/altk-evolve-hmm)
研究原文:IBM Research - ALTK-Evolve 技术报告(https://arxiv.org/abs/2603.10600)
Agent 跑久了,直觉告诉我们"多喂点历史经验,表现会更好"。IBM Research 在 Hugging Face 发布的评测却给出了反直觉的结论:智能体记忆不是一个开关,而是一剂药------给多给少,取决于模型自身的能力。 8 款模型、585 个多步任务,三种截然不同的表现模式,直接改写了"记忆越多越好"的默认假设。
一、先厘清:智能体记忆到底指什么
很多实现把"记忆"做成把历史对话塞回上下文。论文里明确澄清:记忆不是重放过去的对话记录,而是一套 guideline set(指南集)------从智能体自己过去的成功与失败轨迹中提炼出来的行为准则:哪些策略有效、哪些错误要避免、哪些边界情况要小心。
| 维度 | 重放式记忆 | 指南集记忆 |
|---|---|---|
| 内容 | 原始对话、原始轨迹 | 蒸馏压缩后的行为准则 |
| 作用方式 | 让模型"想起"当时发生了什么 | 让模型"学会"下次该怎么做 |
| 存储成本 | 随轨迹线性膨胀 | 压缩后规模基本固定 |
区别在于:重放是"回到过去",指南集是"带着经验往前走"。这决定了它不会拖垮上下文窗口,也决定了它可以被检索、被缓存。
二、机制:四步学习循环,发生在模型之外
这套方法叫 ALTK-Evolve,它的学习循环发生在模型之外------改变的是给智能体的指导内容,而不是模型权重。 这也是它部署成本低、能跨 8 款模型直接移植的根本原因。
四步循环:
- 执行:智能体尝试完成任务,产生轨迹;
- 提取:从成功和失败的运行中抽取行为指南;
- 整合:把零散指南整理成可复用的指南集;
- 注入:推理时把完整指南集或按任务检索的子集放回上下文。
整个过程不需要人工标注,指南只从基准 AppWorld 的训练集挖掘一次,测试集完全不参与构建,从机制上杜绝数据泄漏。
注入有两种配置,都基于同一套指南集:
- full guideline set:每一步 ReAct 都注入全部挖掘出的指南;
- curated retrieval:固定高置信度核心指南 + 按当前任务检索出的少量相关指南(固定部分 + 可变部分)。
三、八款模型,三种模式
评测基准 AppWorld 有 585 个多步任务(168 个普通 + 417 个挑战),覆盖 9 个模拟应用。两个指标:TGC(任务目标完成率)和 SGC(场景目标完成率,要求场景内全部子任务都对才算过,更严格)。
| 模型 | 表现模式 | 基线 TGC/SGC | 最佳配置 TGC/SGC | 最佳配置 | TGC 增益 | SGC 增益 |
|---|---|---|---|---|---|---|
| gpt-oss-120b(117B MoE) | 弱模型 | 39.9/21.4 | 56.0/37.5 | 精选检索 | +16.1 | +16.1 |
| DeepSeek-V3.2(671B MoE) | 强、有余量 | 79.8/64.3 | 89.3/80.4 | 完整指南集 | +9.5 | +16.1 |
| Claude Opus 4.6 | 强、有余量 | 90.5/87.5 | 94.6/94.6 | 完整指南集 | +4.1 | +7.1 |
| GPT-5.5 | 强、近天花板 | 92.3/82.1 | 95.2/89.3 | 完整指南集 | +2.9 | +7.2 |
| GLM-5(745B MoE) | 已饱和 | 87.5/80.4 | 87.5/80.4 | 完整指南集 | 0.0 | 0.0 |
三种模式对应三种给药策略:
- 有余量的强模型:有能力吸收并应用全部指南(包括罕见的边界案例),给完整指南集收益最大;
- 弱模型/小模型:指南集太大反而"淹没"模型,精选检索效果最好;
- 已饱和模型:加记忆无可观察增益,别浪费额外上下文。
注意一个反直觉点:决定模型属于哪种模式,不是单纯看参数量,而是基准余量、上下文窗口大小、架构、指南质量和任务分布共同作用的结果。论文也承认,隔离这些因素还在进行中。
四、token 开销:最好的策略恰好是最便宜的
记忆不是免费的,先看三组数字:
| 模型 | 配置 | 基线 token/任务 | 加记忆后 | 额外开销 |
|---|---|---|---|---|
| DeepSeek-V3.2 | 完整指南集 | 148K | 263K | +78% |
| gpt-oss-120b | 完整指南集 | 110K | 166K | +51% |
| gpt-oss-120b | 精选检索 | 110K | 116K | +5% |
对比 gpt-oss-120b 的两行最有意思:同样拿到 +16.1 个百分点的 TGC 增益,完整注入多花 51% token,精选检索只多花 5%。对弱模型来说,最省钱的方案恰好是效果最好的方案。
五、给 Agent 开发者的四条实践建议
- 按模型能力校准记忆剂量,不要一刀切:弱模型给"紧凑核心 + 少量任务相关指南",有余量的强模型保留完整指南集,已饱和模型先不加。
- 重视 prompt caching:指南集的静态部分在每一步之间是相同的,可以被缓存;保持共享指南集前缀稳定,是值得投入的工程优化。
- 用 SGC 而不是 TGC 评估记忆效果:更严格的指标往往显示更大的增益(DeepSeek 的 SGC +16.1 对 TGC +9.5),因为好指南特别能帮智能体通过场景的每一个变体。
- 记忆不会拖慢推理循环:带记忆与不带记忆的 ReAct 步数相近(约 18-19 步),额外成本来自输入 token 膨胀,而不是更长的轨迹。
六、一个最小实现示意
下面是一个示意实现(非官方库 API,结构参考论文的注入配置),演示 curated retrieval 怎么组装:
python
CORE_GUIDELINES = load_core_guidelines() # 固定高置信度核心指南
def build_prompt(task: str, trajectory: list[dict]) -> str:
# 1. 从历史轨迹中按相似度检索与当前任务相关的指南
related = retrieve_by_similarity(task, trajectory) # 余弦相似度排序
# 2. 组装记忆块:固定核心取前 5 条 + 检索出的前 3 条
memory_block = render(CORE_GUIDELINES[:5] + related[:3])
# 3. 注入系统提示,再拼接当前任务,返回完整 prompt
return f"{memory_block}\n\n当前任务: {task}"
解释:load_core_guidelines() 返回固定核心,保证每次请求的记忆前缀一致、可被缓存;retrieve_by_similarity(task, trajectory) 返回按相似度排序的候选,只取前 3 条控制体积;render() 把规则列表拼成一段文本;返回值是注入后的完整 prompt。实际生产里,核心部分应该抽成公共前缀以最大化缓存命中。
七、局限与未来方向
当前检索用余弦相似度排序,并不完美预测哪条指南真正有用,训练一个基于结果信号的选择器是论文点名的下一步;对能力低于最低基线的模型,自蒸馏缺乏信号,需要探索教师蒸馏;实验目前只在 AppWorld 上验证过;上下文窗口与原始能力的影响也还没有隔离实验。
小结
智能体记忆的正确用法不是"积累",而是"校准"。这次评测最大的价值,是把"该给智能体喂多少经验"从玄学变成了有数据支撑的决策:先判断模型处在哪种模式,再决定给完整指南集、精选检索,还是干脆不加。动手加记忆之前,先想清楚你的模型属于哪一类。