Agent记忆系统概述,短期记忆长期记忆工作记忆全解析
Agent记忆系统概述短期记忆长期记忆工作记忆全解析你有没有这样的体验。跟ChatGPT聊了一会儿它记住了前面说的内容能接着聊。但是关掉窗口重新打开它就全忘了一切从头来。这就是大模型的记忆问题。大模型本身是没有记忆的。每次调用都是独立的它不知道你上一句话说了什么。所谓的记住是因为应用层把之前的对话也一起传给了它。这种做法在简单场景够用。但到了Agent场景就不够了。Agent需要处理复杂任务可能要跨多轮对话可能要记住用户的偏好可能要回顾之前的决策。光靠把历史对话全塞进Prompt既浪费Token又效果不好。这一篇我们讲Agent的记忆系统。有哪些记忆类型各自解决什么问题怎么设计一个合理的记忆体系。为什么Agent需要记忆先说没有记忆的Agent会出什么问题。上下文丢失。用户说了什么偏好过几轮对话就忘了。用户告诉Agent我是Python开发者过了十轮对话Agent推荐了一堆Java教程。重复劳动。用户上一次让Agent查过的信息下一次又得重新查一遍。Agent不记得自己已经查过了也不记得查到了什么。无法学习。用户纠正过Agent的错误下次它还犯同样的错。不能从交互中学习永远是第一次见面。任务断裂。复杂任务跨多次对话执行时Agent不记得任务进行到哪一步了无法继续。记忆系统要解决的就是这些问题。让Agent能记住该记的忘掉该忘的越用越懂用户。三种记忆类型借鉴人类认知科学的模型Agent的记忆通常分三种类型。短期记忆。就是当前的对话上下文。用户说了什么Agent回了什么最近几轮的交互。短期记忆存在内存里对话结束就清空。相当于人的工作台当前正在处理的信息都在这里。长期记忆。跨对话持久保存的信息。用户的偏好、历史决策、重要事实。长期记忆存在数据库里下次对话还能调出来。相当于人的笔记本记下来以后可以翻看。工作记忆。介于短期和长期之间。当前任务执行过程中的中间状态、临时变量、推理链条。任务结束后可能被清理也可能被总结后存入长期记忆。相当于人的草稿纸临时写写画画。这三种记忆配合使用构成了Agent的完整记忆体系。短期记忆怎么实现短期记忆最简单的实现方式就是把对话历史传给大模型。LangChain里的ConversationBufferMemory就是干这个的。它把所有对话都存在一个列表里每次调用大模型的时候把整个列表塞进Prompt。fromlangchain_openaiimportChatOpenAIfromlangchain.memoryimportConversationBufferMemoryfromlangchain.chainsimportConversationChain llmChatOpenAI(modelgpt-3.5-turbo,temperature0)memoryConversationBufferMemory()conversationConversationChain(llmllm,memorymemory)conversation.invoke(我叫张三是Python开发者)conversation.invoke(我最近在学AI Agent开发)conversation.invoke(我叫什么名字)# Agent能回答你叫张三因为它记住了前面的对话问题在于对话越来越长Token消耗越来越大。聊了50轮Prompt可能就几千个Token了。既慢又贵。所以短期记忆需要管理。不能无限增长。常见的策略有几种。滑动窗口。只保留最近N轮对话。比如只保留最近10轮更早的丢弃。简单有效但会丢失早期的重要信息。摘要压缩。定期把旧对话总结成一段摘要。用摘要替代原始对话大幅减少Token。保留了关键信息但摘要质量依赖大模型。Token限制。设一个Token上限超过就截断。跟滑动窗口类似但按Token而不是轮数来算。长期记忆怎么实现长期记忆的核心是把重要信息持久化存储需要的时候检索出来。存储方式通常用向量数据库。把每条记忆做成一个文本块向量化后存进去。需要的时候用语义检索找出来。fromlangchain_openaiimportOpenAIEmbeddingsfromlangchain_community.vectorstoresimportChromaclassLongTermMemory:def__init__(self,db_path./agent_memory):self.embeddingsOpenAIEmbeddings()self.storeChroma(persist_directorydb_path,embedding_functionself.embeddings,)defremember(self,content,metadataNone):记住一条信息self.store.add_texts(texts[content],metadatas[metadataor{}],)self.store.persist()defrecall(self,query,k3):回忆相关信息resultsself.store.similarity_search(query,kk)returnresults# 使用memoryLongTermMemory()# 记住用户信息memory.remember(用户叫张三是Python开发者有5年经验,metadata{type:user_profile,time:2026-01-01},)# 记住用户偏好memory.remember(用户偏好简洁的代码风格不喜欢过多注释,metadata{type:preference,time:2026-01-01},)# 回忆resultsmemory.recall(用户的编程偏好是什么)# 返回包含用户偏好简洁的代码风格的记忆长期记忆的关键不是存储是筛选。什么信息该记什么信息该忘。把每句话都存进长期记忆信息会越来越多检索质量会下降。大量无关的记忆会淹没真正重要的信息。好的做法是让大模型来判断。对话结束后让大模型回顾这段对话提取出值得记住的信息存入长期记忆。工作记忆怎么实现工作记忆是任务执行过程中的临时记忆。Agent执行复杂任务的时候中间会产生很多临时信息。搜索到了什么结果推理到了哪一步当前的计划是什么。这些信息不需要长期保存但在任务执行期间需要随时访问。工作记忆通常用一个结构化的状态对象来管理。classWorkingMemory:def__init__(self):self.taskself.plan[]self.current_step0self.intermediate_results[]self.context{}defset_task(self,task):self.tasktaskdefadd_result(self,result):self.intermediate_results.append(result)defget_summary(self):return{task:self.task,plan:self.plan,current_step:self.current_step,results_count:len(self.intermediate_results),last_result:self.intermediate_results[-1]ifself.intermediate_resultselseNone,}# 使用wmWorkingMemory()wm.set_task(调研AI Agent开发框架写一份对比报告)wm.plan[搜索主流框架,对比功能,对比性能,写报告]wm.add_result(找到LangChain、LlamaIndex、AutoGen、CrewAI四个主流框架)# ... 任务执行中任务完成后工作记忆可以清理掉。或者把关键结论提取出来存入长期记忆。记忆系统的设计原则设计Agent的记忆系统有几个原则要注意。按需记忆。不是所有信息都值得记。只记对未来有用的信息。用户的名字、偏好、重要决策、纠正过的错误这些该记。闲聊、无关紧要的细节不用记。定期整理。长期记忆会越来越多需要定期整理。合并重复的更新过时的删除不再相关的。就像人定期整理笔记一样。分层检索。检索记忆的时候先查短期记忆不够再查长期记忆。不要每次都翻全部记忆太慢也容易引入噪音。隐私保护。用户的敏感信息要谨慎处理。不是什么都能存的。提供忘记的功能让用户可以删除特定的记忆。LangChain里的记忆组件LangChain提供了多种现成的记忆组件可以直接用。ConversationBufferMemory。最基础的存所有对话。ConversationBufferWindowMemory。滑动窗口只存最近N轮。ConversationSummaryMemory。自动摘要把旧对话总结成摘要。ConversationSummaryBufferMemory。混合策略近期对话保留原文旧对话变成摘要。ConversationKGMemory。知识图谱记忆从对话中提取实体和关系存成图谱结构。VectorStoreRetrieverMemory。向量数据库记忆把对话存到向量库需要的时候语义检索。选用哪个看你的场景。简单对话用BufferWindow就行。需要长期记忆用VectorStoreRetriever。需要结构化信息用KGMemory。后面几篇我们会逐一深入这些记忆组件的用法。下一篇我们详细讲对话记忆管理。对比几种主流的对话记忆策略看它们各自适合什么场景。

相关新闻

VirtualBox虚拟机从入门到精通:核心优势、避坑指南与性能调优实战

VirtualBox虚拟机从入门到精通:核心优势、避坑指南与性能调优实战

1. 项目概述:一个老司机的VirtualBox使用观“Oracle VM VirtualBox 使用教程,说实话也就那样吧”——看到这个标题,估计很多刚接触虚拟化的朋友会有点懵,这到底是夸还是贬?作为一个在运维和开发领域摸爬滚打了十多年的…

2026/10/15 6:35:54 阅读更多 →
算法、软件、大数据工程师核心差异与职业发展全解析

算法、软件、大数据工程师核心差异与职业发展全解析

1. 从“分不清楚”说起:技术岗位的迷雾与真相 每次招聘季或者朋友转行咨询时,我总会遇到一个高频问题:“算法、软件、大数据工程师,到底有啥区别?我该选哪个?” 这问题背后,其实是很多刚入行或想…

2026/10/16 17:36:12 阅读更多 →
坭兴陶水杯:钦州非遗工艺与现代生活的完美融合

坭兴陶水杯:钦州非遗工艺与现代生活的完美融合

1. 坭兴陶水杯为何成为钦州伴手礼首选?走在钦州老街上,几乎每家特产店最显眼的位置都摆着造型各异的坭兴陶水杯。作为中国四大名陶之一,坭兴陶已有1300多年历史。去年帮朋友挑选伴手礼时,我特意走访了十几家作坊,发现这…

2026/10/17 21:26:06 阅读更多 →

最新新闻

Spring AI实战:Java后端集成大模型的工程化指南

Spring AI实战:Java后端集成大模型的工程化指南

说实话,第一次把 Spring AI 引入我们项目时,我是带着怀疑的。当时的局面很典型:一个跑了好几年的 Java 后端服务,技术栈以 Spring Boot 为主,团队突然接到需求,要在内部工具里接入大模型对话能力。大家的条…

2026/10/18 2:41:02 阅读更多 →
Codex 实战指南:从代码生成到结对编程的进阶用法

Codex 实战指南:从代码生成到结对编程的进阶用法

1. 从零理解 Codex 到底能干什么1.1 它不是一个“代码补全工具”那么简单很多人第一次接触 Codex,脑子里蹦出来的印象就是“哦,一个自动补全代码的东西”。这个认知偏差特别大,也是很多人用了一阵子觉得“不过如此”然后放弃的根本原因。Code…

2026/10/18 2:41:02 阅读更多 →
ModelEngine企业级多智能体协作系统实战指南

ModelEngine企业级多智能体协作系统实战指南

从去年开始,我把 ModelEngine 从“跑通 Demo”逐步推进到了生产环境,期间最大的感受是:企业级的 AI 系统,靠单个大模型硬扛是不现实的,真正需要的是一套能编排、可控制、能审计的多智能体协作机制。这篇文章就把我在 M…

2026/10/18 2:41:02 阅读更多 →
AI Coding实战:3人小团队如何将项目周期从一个月压缩到两天

AI Coding实战:3人小团队如何将项目周期从一个月压缩到两天

我们团队上季度遇到一个特别典型的场景:一个数据报表模块,按常规排期至少一个月,结果我们3个人真正动手只用了不到两天。不是说我们突然变聪明了,而是AI Coding把整条链路里最耗时的等待和返工压缩掉了。这篇文章想把这个过程掰开…

2026/10/18 2:41:02 阅读更多 →
开源个人AI助手OpenClaw实测:本地部署、工具调用与记忆管理

开源个人AI助手OpenClaw实测:本地部署、工具调用与记忆管理

前阵子为了整理手上越堆越多的本地文档,我把市面上能试的AI助手都折腾了一遍,结果越用越别扭。云端服务确实聪明,但我的资料来回上传心里总不踏实;本地小工具倒是隐私,可稍微复杂点的需求就哑火。后来在一个开源项目聚…

2026/10/18 2:41:02 阅读更多 →
货拉拉业务Agent评测平台:面向高可靠决策的端到端测试体系

货拉拉业务Agent评测平台:面向高可靠决策的端到端测试体系

1. 为什么需要一个“货拉拉业务 Agent 评测平台”——从调度失败率跳变说起去年底,某次跨城搬家订单的履约链路中,系统连续3小时出现异常:司机接单后5分钟内取消率陡升至37%,远超日常均值8%。后台日志里没有报错,监控大…

2026/10/18 2:40:02 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →