Agent面试题:Agent 中的 Memory 有哪些类型?短期记忆和长期记忆分别解决什么问题?

📅 2026/7/29 7:25:23
Agent面试题:Agent 中的 Memory 有哪些类型?短期记忆和长期记忆分别解决什么问题?
博主简介你好我是安逸CSDN「人工智能技术领域新星创作者」码龄 6 年。博客总访问量 31万博客粉丝 1.2万。我长期关注人工智能技术与工程实践主要研究和分享 AI Agent、RAG 系统、MCP 协议、OpenClaw、AI 编程工具以及大模型工程化落地。同时也持续输出 Java / Spring、Transformer、机器学习、深度学习与计算机视觉等方向的学习笔记和项目经验。 推荐系列合集目前已经整理了 生产级 RAG 系统实战、Agent 记忆系统、MCP 协议深度解析、OpenClaw 系列、Hermes Agent Obsidian、图解机器学习、Claude Code 系列和 Agent 经典面试题等系列合集涵盖 AI 应用开发、智能体实践、知识管理、机器学习与 AI 编程工具。GZH安逸Ai (科技前沿新闻Github热门项目最新免费资料...)网页观看完整系列合集 Anyi AI 学习资源站Agent 为什么需要 Memory这个问题先想清楚。本质原因是大模型的 Context 窗口是有限的但真实场景里你需要记住的东西可能是海量的。比如用户跟 Agent 聊过的事情、之前做过的决策、积累下来的经验——这些东西没法全塞进 Prompt 里就得靠 Memory 来管理。Memory 在 Agent 架构里扮演的是「外部知识库」角色它让 Agent 不是每次都从零开始而是能记住上下文、积累经验。下面分两块来讲两套分类体系和短长期记忆各自解决的问题。一、Agent 记忆的两套分类体系讲 Memory 先得分清楚两个视角——按存储形式分和按功能分这是两个不同的维度。存储形式东西存在哪儿存储形式怎么存的典型例子词元级记忆把信息转成文本存进向量数据库Qdrant、Chroma、Milvus参数化记忆直接编码进模型权重Fine-tuning 训练出来的知识潜在记忆存在 KV Cache 里用隐变量表示各种注意力机制的中间状态最常见的是词元级记忆——也就是 RAG 那一套把文本向量化检索时算相似度召回。参数化记忆更多是预训练阶段的事Agent 运行时主要靠前两种。潜在记忆最近研究比较多比如让模型学会「记住」某些模式而不是显式存储。功能分类记忆派什么用场功能类型解决什么问题类比工作记忆当前正在思考的内容大脑正在想的事事实记忆知道的事实和知识你掌握的信息经验记忆从经历中学到的教训踩过的坑、下次怎么改这个分类更贴近 Agent 的实际工作流程。工作记忆负责「当下」事实记忆负责「知道」经验记忆负责「改进」。把这两个维度组合起来就是一个 3×3 的记忆类型矩阵Agent 记忆类型二维分类矩阵横轴为存储形式词元级/参数化/潜在纵轴为功能分类工作/事实/经验记住这个矩阵有啥用面试的时候你能说清楚「我这用的是哪种记忆、在解决什么问题」而不是笼统地说「我们用了 Memory」。二、短期记忆解决什么问题短期记忆解决的核心问题是当前这轮对话里关键信息别丢。具体来说它承载三样东西对话历史—— 聊到现在说了啥工具调用结果—— 之前执行的操作和返回值中间状态—— Agent 思考到哪一步了短期记忆的直接表现就是 Context 窗口。每次你发消息Agent 并不是只看到你这句话而是把之前整段对话都塞进 Prompt 里。这个过程大概长这样单轮对话中短期记忆流转图用户输入→工具调用→观察结果→最终回复的完整链路举个例子感受一下用户帮我查一下北京今天的天气 Agent调用 weather API返回晴26度 用户明天呢第二句「明天呢」单独拎出来是不知道问啥的但加上短期记忆里的「查北京天气」Agent 就能理解这是在问北京明天天气。这就是短期记忆的价值——保持本轮对话的连贯性。短期记忆的天花板是 Context 窗口大小。窗口大能记住的对话就长窗口满了要么截断老对话要么 Summarize 压缩。所以短期记忆是个「用完就没」的资源。三、长期记忆解决什么问题长期记忆解决的核心问题是新会话能恢复老用户的信息。短期记忆是「用完就没」长期记忆是「存下来以后用」。典型场景用户隔了三天又来用 AgentAgent 能叫出他的名字、记住他的偏好Agent 做过一次复杂任务下次遇到类似的能调用经验多轮对话中途被打断回来能接着干长期记忆的实现方式就多了常见的有这几种向量数据库—— 把信息向量化存进去检索时用语义相似度召回。比如用户说「上次我让你帮我写的那个脚本」系统能找到之前存的代码记忆。知识图谱—— 用图结构存储实体关系。比如「用户A 喜欢 咖啡」这个三元组比纯文本更结构化推理能力更强。文件/数据库—— 直接用 Markdown、JSON、SQLite 存。Claude Code 的 CLAUDE.md 就是典型存成文件运行时读取。这几种方案各有优劣方案优点缺点向量数据库语义检索强精确查询弱知识图谱结构化、可推理构建成本高文件存储简单直接检索能力有限长期记忆的典型工作流跨会话长期记忆时序图Session1 写入偏好 → 时间断层 → Session2 检索回溯的完整过程Session 1 结束时把用户偏好写入长期记忆Session 2 开始时先检索一下有没有这个用户的历史记录——有的话捞出来塞进 Prompt新会话就能「认识」老用户了。四、记忆的生命周期与管理知道了有哪些记忆类型接下来要理解记忆不是「存进去就完事了」——它有自己的生命周期。六阶段循环记忆从产生到消亡会经历六个阶段编码—— 把信息转成 Agent 能处理的格式文本、向量、状态存储—— 把编码后的信息持久化写进数据库、文件、内存提取—— 需要的时候召回相关记忆检索、匹配巩固—— 强化重要记忆的权重定期复习、重新编码反思—— 从经历中抽象出经验总结教训、提炼模式遗忘—— 淘汰不再需要的信息释放空间、避免干扰这六个阶段形成了一个循环记忆生命周期六阶段循环图编码→存储→提取→巩固→反思→遗忘首尾相连很多实现只做了前三步——编码、存储、提取。但真正好用的 Agent 会做「反思」这一步让 Agent 定期回顾自己做过的决策分析哪些地方可以改进然后把结论存成经验记忆。遗忘机制记忆不是存得越多越好。存太多会导致检索噪音变大、推理成本上升。常见的遗忘策略时间衰减—— 很久没被访问的记忆逐步降低权重访问频次—— 用得少的记忆优先级降低冲突标记—— 新记忆和旧记忆矛盾时标记冲突待解决一个简单的实现是每次访问记忆时更新last_accessed时间戳定期清理超过 N 天没访问的记录。复杂一点的会用 LRU最近最少使用或者更高级的衰减函数。业界方案一览不同产品对记忆的实现思路差异挺大的产品方案特点适用场景Mem0多层记忆用户级、Session级、Agent级通用场景LETTA支持记忆的增删改查有生命周期管理复杂 AgentZEP专注长期记忆提供记忆搜索 API快速集成A-MEM动态记忆按需加载/卸载资源敏感场景选型的时候主要看你的 Agent 复杂度程度。简单场景用一个向量库就够了复杂场景需要完整生命周期管理的方案。主流产品方案对比表Mem0/LETTA/ZEP/A-MEM 的技术方案和适用场景对比面试怎么答基础版100-150字Agent Memory 按存储形式分三类词元级向量库文本、参数化模型权重、潜在记忆KV Cache。按功能分三类工作记忆当前思考、事实记忆知道什么、经验记忆如何改进。短期记忆解决「本轮对话上下文不丢」的问题依赖 Context 窗口存对话历史和工具调用结果。长期记忆解决「跨会话信息持久化」的问题靠向量库、知识图谱或文件存储来记住用户偏好和历史决策。加分版多提到的点除了基础回答可以补充记忆不是存进去就完事—— 有完整的生命周期管理编码→存储→提取→巩固→反思→遗忘六阶段循环遗忘机制很重要—— 用时间衰减函数避免知识过载不是存越多越好反思是关键步骤—— 好的 Agent 会从历史经验中提炼模式不是每次都从零学习Claude Code 的思路—— 长期记忆不一定要向量检索用 Markdown 文件约定好的目录结构也能workCLAUDE.md 就是例子一句话总结Agent Memory 的核心是短期记忆靠 Context 窗口解决本轮对话连贯性长期记忆靠持久化存储解决跨会话信息恢复两者配合让 Agent 不是每次都从零开始。