资讯动态

收藏 | Agent 也能“记得事“:手把手教你实现记忆系统,让大模型更智能

发布时间:2026/8/28 18:45:56 来源:尧图企业网站定制
本文深入探讨了 Agent 的记忆系统区分了上下文窗口与记忆系统的概念阐述了短期记忆和长期记忆的区别及其在 Agent 架构中的位置。文章通过真实场景展示了记忆系统的工作原理并指出了无记忆 Agent 可能遇到的问题。最后提供了一套最小可用的记忆系统组件包括对话缓存、摘要模块、记忆存储、记忆管理器等帮助开发者构建具备基本记忆能力的 Agent。一、先说清一个大前提上下文窗口不是记忆这是很多人最容易搞混的点。你可能会说“现在的模型不是有 128K、200K 的上下文窗口了吗这不就是记忆吗”不是。上下文窗口和记忆是两个完全不同的东西。上下文窗口是工作台上下文窗口是模型单次推理时能看到的全部信息——System Prompt、对话历史、工具调用结果、中间状态全部加在一起。它有一个硬上限超了就会被截断。你可以把它想象成一张工作台桌面上能放多少纸条取决于桌面有多大。桌面满了最早放上去的纸条就被挤下去了。记忆系统是档案柜记忆系统是一套独立于上下文窗口的存储和检索机制。它能把重要信息持久化保存需要时再调出来放到工作台上。你可以把它想象成档案柜工作台放不下的东西你可以归档到柜子里。下次要用的时候打开柜子找出来就行。上下文窗口是临时的、有限的、每次推理都要重新组装的。记忆系统是持久的、可扩展的、跨会话可用的。把上下文窗口当成记忆来用就像把所有文件都堆在桌面上——桌面越来越满找东西越来越慢而且桌面一清空什么都没了。二、短期记忆和长期记忆各是什么人的记忆有短期和长期之分Agent 的记忆系统也是一样的。短期记忆当前任务的工作信息短期记忆管理的是这一次任务中需要用到的信息。典型内容包括当前对话历史用户说了什么Agent 回答了什么工具调用结果刚刚查了什么、搜了什么、读了什么文件中间推理步骤Agent 目前的判断、分析、计划临时工作变量比如计算中间值、待处理的任务列表短期记忆的特点是生命周期短和当前任务强绑定任务结束后大部分会被丢弃。在工程上短期记忆通常就是对话上下文本身或者用一些管理策略来优化Buffer 策略保留最近 N 轮对话Summary 策略对早期对话做摘要压缩Sliding Window窗口滑动只保留窗口内的内容长期记忆跨会话持久化的知识长期记忆管理的是跨越多次任务、多个会话都需要复用的信息。典型内容包括用户偏好和习惯比如这个用户喜欢用中文、“偏好简洁回答”历史决策记录比如上次选了方案 A效果不好过往任务总结比如用户上周让我帮他写了一份项目计划领域知识积累比如这个项目的技术栈是 Python FastAPI长期记忆的特点是生命周期长独立于单次对话需要持久化存储。在工程上长期记忆需要外部存储支持向量数据库用于语义检索Pinecone、Chroma、Milvus 等关系数据库用于结构化查询比如查某个用户的偏好设置文件系统用于存储文档、笔记、日志两者的关系短期记忆和长期记忆不是孤立的而是有转化关系短期 → 长期任务结束后把重要信息提炼出来存入长期记忆长期 → 短期新任务开始时根据当前需求从长期记忆中检索相关信息三、记忆系统在 Agent 架构中的位置很多人做 Agent 时只关注模型怎么调、“工具怎么接”、“Prompt 怎么写”但忘了记忆在架构中的位置。记忆系统不是一个可有可无的附加模块它嵌在 Agent 的核心链路里影响每一次推理的质量。看这张架构图记忆系统做了两件事检索在推理前根据当前任务从记忆存储中找出相关信息塞进上下文写入在推理后把本次推理中产生的重要信息持久化到记忆存储这两步构成了一个闭环。如果只有检索没有写入记忆库永远是空的。如果只有写入没有检索存了也白存。四、用一个真实场景看看记忆到底怎么工作场景一个客服 Agent用户连续咨询了两次。第一次会话用户我买的那个蓝牙耳机左耳没声音了。Agent您好请问是哪款型号用户就是上周在你们店买的 SoundMax Pro。Agent好的SoundMax Pro 左耳无声建议您先长按左耳 10 秒重置。如果还是不行可以申请换货。用户好我先试试重置。会话结束后记忆系统做了什么记忆管理器提炼关键信息写入长期记忆用户购买了 SoundMax Pro 蓝牙耳机 问题左耳无声 建议长按 10 秒重置 用户表示会先试试 状态待跟进第二次会话三天后用户上次那个耳机的问题重置了还是不行。如果没有记忆系统Agent 会问“请问您是哪款耳机什么问题”用户已经说过一遍了再问一遍会很烦。如果有记忆系统Agent 在收到消息时记忆管理器检索到上次会话的摘要把SoundMax Pro / 左耳无声 / 已尝试重置 / 未解决注入上下文模型看到完整背景后直接回答“SoundMax Pro 左耳无声的问题您已经试过重置但没有效果我帮您直接发起换货申请您看可以吗”这就是记忆的价值Agent 不用重新问用户不用重新说体验质的飞跃。五、没有记忆的 Agent会遇到哪些真实问题这不是理论推演是每个做过 Agent 的人都会遇到的坑。问题 1多轮对话信息丢失对话轮次一多上下文窗口塞不下了最早的消息被裁掉。Agent 就像一个只能看最近 5 页的人——前面的需求、条件、决策全忘了。问题 2跨会话完全失忆每次新会话Agent 都是一张白纸。用户上次说过的偏好、做过的选择、确认过的方案全部重来。对用户来说这就像每次打电话客服都要重新报一遍身份信息。问题 3Token 浪费严重没有记忆管理唯一的记忆方式就是把所有历史信息都塞进上下文。30 轮对话 × 每轮几百 token 上下文直接爆成本指数增长但大部分信息其实是冗余的。问题 4无法积累经验Agent 犯了错误下次还会犯。Agent 做过一次正确决策下次还是要重新推理。因为它不记得自己之前的经历。问题 5无法做个性化不记得用户是谁、喜欢什么格式、上次选了什么方案、讨厌什么风格。没有记忆的个性化 Agent就是每次见面都自我介绍的社恐。痛点速查表问题根因影响多轮忘事上下文窗口有限回答不连贯跨会话失忆没有持久化存储用户体验差Token 浪费没有信息压缩成本不可控不积累经验没有记忆写入效率无法提升无法个性化没有用户画像千人一面六、一个最小可用的记忆系统需要什么你不需要一上来就搞复杂的向量数据库和知识图谱。一个最小可用的记忆系统只需要 5 个组件组件 1对话缓存Chat Buffer保存最近 N 轮对话确保短期内的连贯性。class ChatBuffer: def __init__(self,max_turns20): self.max_turnsmax_turns self.messages[]def add(self, role, content): self.messages.append({role:role,content:content})iflen(self.messages)self.max_turns *2: self.messagesself.messages[-self.max_turns *2:]def get_recent(self):returnself.messages组件 2摘要模块Summarizer当对话太长时把早期内容压缩成摘要节省 Token。class ConversationSummarizer: def __init__(self, llm_client): self.llmllm_client def summarize(self, messages): promptf请将以下对话历史压缩成一段简洁的摘要 保留关键信息用户需求、已做决策、重要结论{messages}returnself.llm.generate(prompt)组件 3记忆存储Memory Store持久化保存重要信息支持检索。最简单的实现可以用文件或 SQLite。importjson from datetimeimportdatetime class SimpleMemoryStore: def __init__(self,storage_pathmemory.json): self.pathstorage_path self.memoriesself._load()def save(self, key, content,metadataNone): self.memories[key]{content:content,metadata:metadata or{},timestamp:datetime.now().isoformat()}self._persist()def search(self, query,top_k5):# 最简版本关键词匹配# 进阶版本向量语义检索results[]forkey, meminself.memories.items():ifquery.lower()inmem[content].lower(): results.append(mem)returnresults[:top_k]组件 4记忆管理器Memory Manager串联以上组件决定什么时候检索、什么时候写入。class MemoryManager: def __init__(self, buffer, summarizer, store): self.bufferbuffer self.summarizersummarizer self.storestore def before_inference(self, user_input):推理前检索相关记忆 relevantself.store.search(user_input)context\n.join([m[content]forminrelevant])returncontext def after_inference(self, user_input, agent_output):推理后更新缓存判断是否写入长期记忆 self.buffer.add(user, user_input)self.buffer.add(assistant, agent_output)# 判断是否需要持久化简单策略每 10 轮做一次摘要iflen(self.buffer.messages)20: summaryself.summarizer.summarize(self.buffer.messages[:10])self.store.save(keyfsession_{datetime.now().isoformat()},contentsummary)self.buffer.messagesself.buffer.messages[10:]组件 5完整串联class AgentWithMemory: def __init__(self, llm, tools, memory_manager): self.llmllm self.toolstools self.memorymemory_manager def run(self, user_input):# 1. 检索相关记忆memory_contextself.memory.before_inference(user_input)# 2. 组装上下文messages[{role:system,content:SYSTEM_PROMPT},{role:system,content:f相关记忆\n{memory_context}}, *self.memory.buffer.get_recent(),{role:user,content:user_input}]# 3. 模型推理含工具调用循环responseself.llm.chat(messages,toolsself.tools)# 4. 更新记忆self.memory.after_inference(user_input, response)returnresponse这五个组件加在一起你的 Agent 就具备了基本的记忆能力短期内能保持对话连贯长对话能自动压缩重要信息能持久化新会话能检索历史七、记忆设计的常见误区误区 1什么都往记忆里存记忆不是垃圾桶。如果什么都存检索出来的全是噪声。正确做法只存有价值的信息——用户偏好、关键决策、任务结论。日常寒暄不需要存。误区 2只存不清理记忆越积越多过期信息和冗余信息会严重影响检索质量。正确做法设计清理策略——过期淘汰、重要性衰减、定期合并。误区 3把所有历史都塞进上下文“既然记忆很重要那我就把所有记忆都放进去。”——这会导致上下文爆炸、Token 浪费、推理质量下降。正确做法只检索和当前任务相关的记忆不要全量注入。误区 4只有短期没有长期只做了对话缓存没有持久化存储。一关程序什么都没了。正确做法起码有一个最简单的持久化层哪怕是写文件。误区 5以为大窗口可以替代记忆“我用 200K 上下文的模型不需要记忆。”200K token 大约是 15 万字。听起来很多但如果你的 Agent 运行几天几十轮对话加上工具调用结果很快就不够了。而且窗口越大推理成本越高速度越慢。正确做法大窗口解决的是短期能看多少记忆系统解决的是长期能记多少。两者互补不能替代。误区速查表误区后果正确做法什么都存检索噪声大只存关键信息只存不清理质量衰减设计淘汰策略全量注入Token 爆炸按需检索只有短期无法跨会话加持久化层靠大窗口成本高、速度慢记忆 窗口互补八、从第 07 篇到这篇认知是怎么串起来的上一篇我们讲了工具调用的完整链路。当时提到一个关键步骤工具执行结果要回传到上下文模型才能基于结果继续推理。这一步其实就是记忆的基础形态——短期记忆。但上下文回传只够撑一次会话。会话结束后这些信息就没了。如果你想让 Agent跨会话保持一致不重复问用户已经说过的话能积累经验、越用越好能降低 Token 成本那你就需要从上下文回传升级到记忆系统。所以你可以这样理解两篇文章的关系工具调用回传是记忆的起点。记忆系统是工具结果持久化的完整方案。九、总结如果把这篇文章浓缩成几句话上下文窗口是工作台记忆系统才是档案柜。工作台放不下的必须有地方存。短期记忆管当前任务长期记忆管跨会话复用。没有记忆的 Agent注定是一次性的助手。一个最小可用的记忆系统只需要对话缓存 摘要模块 持久化存储 记忆管理器。后面我们还会讲任务拆解、规划与反思——而规划和反思能力都依赖 Agent 能记住之前做了什么、状态到哪了。没有记忆就没有规划。没有规划Agent 就只能走一步看一步。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包✅ 从零到一的 AI 学习路径图✅ 大模型调优实战手册附医疗/金融等大厂真实案例✅ 百度/阿里专家闭门录播课✅ 大模型当下最新行业报告✅ 真实大厂面试真题✅ 2026 最新岗位需求图谱所有资料 ⚡️ 朋友们如果有需要《AI大模型入门进阶学习资源包》下方扫码获取~① 全套AI大模型应用开发视频教程包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点② 大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通③ 大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。④ AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。⑤ 大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。⑥ 大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。以上资料如何领取为什么大家都在学大模型最近科技巨头英特尔宣布裁员2万人传统岗位不断缩减但AI相关技术岗疯狂扩招有3-5年经验大厂薪资就能给到50K*20薪不出1年“有AI项目经验”将成为投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。以上全套大模型资料如何领取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价