推广 热搜: 采购方式  滤芯  甲带  带式称重给煤机  气动隔膜泵  减速机型号  无级变速机  链式给煤机  履带  减速机 

读完Google这份70页白皮书,我终于理解了Agent的"记忆力"问题

   日期:2026-01-17 01:09:47     来源:网络整理    作者:本站编辑    评论:0    
读完Google这份70页白皮书,我终于理解了Agent的"记忆力"问题

过去一年做Agent,我踩过最大的坑是:以为模型越强、上下文窗口越大,Agent就越聪明。

128K不够用?上200K。200K还不行?等1M的模型出来。

直到系统跑了几个月,我才意识到问题根本不在这里。

Agent变笨、失忆、人设漂移,这些问题的根源不是模型能力不足,而是我们一直把上下文当作"一次性输入",而不是"系统资产"来管理。

Google最近发布的70页白皮书《Context Engineering: Sessions & Memory》,把这件事讲透了。

今天把核心内容拆给你。


一、Agent的失忆症

做过Agent的人都遇到过这些问题:

  • 对话长了,Agent开始"忘事",明明前面说过的信息,后面又问你一遍
  • 跨Session信息丢失,每次新对话都像第一次见面
  • 人设漂移,聊着聊着Agent的性格和风格就变了

很多人的第一反应是:模型不够强,换个更大的模型。

但Google这份白皮书告诉我们:这不是模型问题,是上下文工程问题


二、什么是上下文工程?

Context Engineering是动态组装和管理LLM上下文窗口内信息的实践。

和Prompt Engineering的区别是什么?

Prompt Engineering是静态的——关注"怎么写提示词"。

Context Engineering是动态的——关注"每次调用时,往上下文窗口里放什么"。

一个形象的比喻:Prompt Engineering是写菜谱,Context Engineering是每次做菜时决定从冰箱里拿什么食材。

上下文窗口是稀缺资源,不是越多越好。


三、Context Rot:为什么塞得越多反而越傻?

这是白皮书中最重要的概念之一:上下文腐烂(Context Rot)。

Chroma在2025年7月发布的研究测试了18个主流LLM,结论很扎心:

随着输入长度增加,模型的准确率会持续下降。
即使是最简单的检索任务,性能也会随着上下文增长而变得越来越不稳定。

为什么会这样?

1. 注意力稀释。

Transformer架构中,每个token都要"关注"其他所有token。

上下文越长,模型的"注意力预算"就被摊得越薄。

就像一个人同时盯着100件事,每件事能分到的精力自然就少了。

2. 位置偏差。

LLM对上下文开头和结尾的信息更敏感,中间的信息容易被忽略。

这就是著名的"Lost in the Middle"问题。

如果关键信息恰好在中间位置,模型很可能"看不见"。

3. 信噪比下降。

塞进去的信息越多,噪音也越多。

关键信号被淹没在一堆无关细节里。

Anthropic的工程博客有一句话总结得很好:

Agent在循环中每一轮都会产生更多数据。
如果不加以管理,不断增长的上下文最终会耗尽Agent有限的"注意力预算"——就像人类有限的工作记忆一样。

所以,更大的上下文窗口不等于更好的性能。

128K、200K甚至1M的窗口,并不意味着你可以把所有东西都塞进去。


四、Session vs Memory:短期记忆和长期记忆的分离

白皮书的核心架构设计:把记忆分成两层——Session和Memory。

Session(会话)

  • 短期容器,存储单次对话的历史和工作状态
  • 生命周期:用户关闭对话时结束
  • 内容:对话轮次、中间推理步骤、工具调用结果

Memory(记忆)

  • 长期存储,跨Session持久化
  • 生命周期:可能永久保留
  • 内容:用户偏好、历史交互的关键信息、学到的知识

为什么要分开?

更新频率不同:Session每轮都在变,Memory只在有价值的信息出现时才更新。

检索方式不同:Session是顺序访问(最近的对话历史),Memory是语义检索(找相关的过往知识)。

管理策略不同:Session需要压缩和截断,Memory需要提取和整合。

这种分离让系统可以针对不同类型的"记忆"采用不同的优化策略。


五、三种Session压缩策略

对话越来越长,Session迟早会撑爆上下文窗口。怎么办?

Google给出了三种压缩策略:

1. Keep Last N Turns(保留最近N轮)

最简单粗暴:只保留最近N轮对话,更早的直接丢弃。

优点:实现简单,延迟可预测。缺点:如果重要信息在早期对话中,就丢失了。适用场景:任务边界清晰、每轮对话相对独立的场景。

2. Token-based Truncation(Token截断)

设定一个Token上限,尽可能多地保留消息,超出部分从最早的开始删。

优点:比"保留N轮"更灵活,能适应长短不一的对话。缺点:可能在语义不完整的地方截断。适用场景:对话轮次长度差异大的场景。

3. Recursive Summarization(递归摘要)

用LLM把较早的对话压缩成摘要,只保留关键信息。

优点:信息保留率最高,能跨越很长的对话历史。缺点:摘要本身会引入信息损失和偏差,而且增加额外的LLM调用成本。适用场景:需要长期上下文但又受Token限制的复杂任务。

Manus团队在他们的Context Engineering博客中提了一个有趣的思路:把文件系统当作终极上下文。

意思是:压缩策略应该是可恢复的。

网页内容可以从上下文中删除,只要URL还在;文档内容可以省略,只要路径还在sandbox里。这样既能压缩上下文长度,又不会永久丢失信息。


六、Memory的ETL管道

Memory的管理比Session复杂得多。白皮书描述了一个完整的"记忆ETL"流程:

1. Extraction(提取)

在对话过程中,用LLM识别出"值得记住"的信息。

不是什么都记,只记有信号的内容。比如:

  • 用户说"我们公司有200多个开发者,正在做微服务迁移"
  • 提取出:公司规模(200+开发者)、当前项目(微服务迁移)、技术背景(分布式系统)

关键是要有预定义的主题范围——告诉LLM什么类型的信息值得提取,什么可以忽略。

2. Consolidation(整合)

新提取的信息要和已有的Memory合并。这一步最复杂,需要处理:

去重:不能创建两条语义相同的记忆。冲突解决:用户偏好会变。之前说"我是素食主义者",现在说"我在尝试海鲜素"。怎么办?

白皮书的方案是时间戳优先+置信度评分+显式纠正:

  • 更新的信息覆盖旧的(时间戳优先)
  • 用户明确纠正的权重最高(显式纠正)
  • 反复被提及的信息置信度更高(强化)

3. Retrieval(检索)

什么时候把Memory注入上下文?有两种策略:

主动检索(Proactive):每轮对话都预先拉取可能相关的Memory。简单,但可能增加延迟和噪音。

被动检索(Reactive):Agent在需要时主动调用`query_memory`工具查询。高效,但需要Agent有足够的判断力知道什么时候该查。

白皮书建议用混合评分来排序检索结果:相关性(语义相似度)× 时效性(最近访问)× 重要性(被强化的次数)。

还有一个细节:Memory注入到上下文的位置很重要。

放在System Message里权重高但有偏差风险,放在对话历史里更自然但容易被忽略。


七、总结

读完这份白皮书,最大的感受是:

Agent的智能上限,取决于你喂给它什么。

模型能力是基础,但如果上下文管理一塌糊涂,再强的模型也会表现得像个失忆症患者。

Context Engineering正在成为Prompt Engineering之后的下一个关键技能。

它不是"怎么写提示词"的问题,而是"怎么设计整个信息流"的问题。

Google白皮书原文获取:公众号回复「Context Engineering」

关注AI产品进化论:一线产品经理的聚集地,分享最新AI产品动态、技术解读与落地实践。AI一天,人间一年,我们一同进化。
想加入社群,联系小助理(xiao_a_na),备注【社群】。
?往期精彩内容:
1. Claude Cowork发布:Anthropic只用1.5周就做出了这个产品,代码全是AI自己写的
2. Claude Agent SDK深度解析:Anthropic内部是怎么构建Agent的?
3.千问AI点外卖 vs ChatGPT即时结账:中美AI支付的两条路
感谢各位的阅读,如果觉得文章对你有帮助的话,可以帮我点个赞?或者喜欢❤️,也可以转发给你需要的朋友们!
 
打赏
 
更多>同类资讯
0相关评论

推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  皖ICP备20008326号-18
Powered By DESTOON