资讯详情

Agent 的短期记忆和长期记忆,到底有什么区别?

📅 2026/9/30 4:21:11 | 华诺云谱 👁 阅读
Agent 的短期记忆和长期记忆,到底有什么区别?
你和 Agent 连续聊了几轮它还能记得前面说过什么。第二天重新开一个新对话它甚至还可能知道你的偏好。这两种“记得”其实不是一回事。在 LangChain / LangGraph 里可以先用最简单的方式理解短期记忆 → 记住当前这场对话长期记忆 → 跨对话继续记住对应到框架中的核心概念短期记忆 → State Checkpointer长期记忆 → Store如果这两个概念分清楚了Agent 的 Memory 基本就理顺了一半。先看最核心的区别对比项短期记忆长期记忆主要解决什么问题记住当前对话发生过什么跨对话保存长期有价值的信息作用范围当前 thread跨 threadLangChain / LangGraph 中主要对应State CheckpointerStore最常见内容messages、当前任务状态、工具结果用户偏好、用户资料、长期事实换一个 thread_id 后默认不共享仍然可以读取典型问题“我们刚刚聊到哪了”“这个用户一直喜欢什么”一句话记忆短期记忆跟着对话走长期记忆跟着用户或业务对象走。为什么 Agent 需要短期记忆先看一个最简单的对话用户我叫小明。Agent好的。用户我叫什么名字如果 Agent 完全没有记忆那么第二句话到来时它只看到我叫什么名字自然不知道答案。所以 Agent 至少需要保留当前这场对话之前发生过什么。这就是短期记忆。LangChain 官方将短期记忆定义为在单个 thread 或 conversation 内记住之前的交互。其中最常见的内容就是对话历史 messages。可以把它理解成State├── messages # 当前对话历史├── 当前任务进度├── 工具调用结果└── 当前任务中的临时数据这些信息共同组成 Agent 当前这场任务的“工作状态”。短期记忆为什么和 State 有关在 LangChain Agent 中短期记忆是 Agent State 的一部分。最典型的是State└── messages每次用户输入、模型回答、工具调用都可能继续更新这个 State。例如用户北京天气怎么样 ↓State 加入 HumanMessage ↓Agent 调用天气工具 ↓State 加入 ToolMessage ↓Agent 生成回答 ↓State 加入 AIMessage所以从执行过程看短期记忆本质上就是当前 thread 持续变化的状态。Checkpointer 是干什么的只有 State 还不够。如果执行结束以后 State 全没了下一次调用时 Agent 还是接不上前面的对话。因此还需要把 State 保存下来。LangGraph 里负责这件事的核心组件就是Checkpointer可以理解成State ↓Checkpointer ↓保存当前 thread 的状态下一次继续使用相同的 thread_idthread_id 1框架就可以恢复之前保存的 State。整个过程可以理解成第一次调用thread_id 1 ↓用户我叫 Bob ↓State 保存 ↓Checkpointer 持久化第二次调用thread_id 1 ↓恢复 State ↓用户我叫什么 ↓Agent 能看到前面的消息这就是短期记忆能够跨多次 invoke() 继续工作的原因。一个最小的短期记忆示例官方常见写法是给 Agent 配置一个 checkpointerfrom langchain.agents import create_agentfrom langgraph.checkpoint.memory import InMemorySaveragent create_agent( modelopenai:gpt-5.5, tools[], checkpointerInMemorySaver(),)config { configurable: { thread_id: 1 }}agent.invoke( { messages: [ {role: user, content: 我叫 Bob} ] }, config,)result agent.invoke( { messages: [ {role: user, content: 我叫什么名字} ] }, config,)print(result[messages][-1].content)这里最关键的不是代码而是两个点checkpointerthread_idcheckpointer 负责保存 State。thread_id 用来告诉框架这一次调用属于哪一场对话。只要两次调用使用同一个 thread_id就可以继续同一个 thread 的短期记忆。换一个 thread 会怎么样假设第一次thread_id 1用户我叫 Bob第二次仍然thread_id 1用户我叫什么Agent 可以继续前面的状态。但是如果第二次变成thread_id 2那就相当于开启了另一场对话。可以想成thread-1├── 我叫 Bob└── 我叫什么thread-2└── 我叫什么thread-2 默认不会自动拥有 thread-1 的 State。这也是短期记忆最重要的边界它是 thread-scoped也就是线程级记忆。那为什么还需要长期记忆现在换一个场景。用户今天说以后给我的代码示例尽量使用 Python。今天这场对话结束了。第二天用户重新创建了一个新聊天thread_id 2如果这个偏好只保存在昨天的 State 中那么新 thread 默认并不知道它。但“喜欢 Python”这种信息显然不是只对昨天那场对话有用。它可能以后很多次对话都需要。这时候就需要长期记忆。LangChain 官方对长期记忆的核心定义是可以跨不同 conversation、session 和 thread 保存并重新读取信息。所以短期记忆thread-1 内有效长期记忆thread-1thread-2thread-3都可以使用长期记忆对应什么在 LangChain / LangGraph 里长期记忆主要建立在Store之上。Store 可以保存跨 thread 使用的数据。例如Store└── user_123 ├── preferred_language Python ├── answer_style 简洁 └── favorite_framework FastAPI即使这个用户创建了多个对话thread-1thread-2thread-3这些 thread 仍然可以读取同一份用户长期信息。所以 Store 更像一个跨会话的记忆库。Store 里的数据是怎么组织的LangGraph Store 通常把长期记忆保存为 JSON 数据。数据一般通过namespace key进行组织。你可以把它想成namespace ↓类似文件夹key ↓类似文件名value ↓真正保存的内容例如namespace (users, user_123)key preferencesvalue { language: Python, style: 简洁}逻辑上就像users/└── user_123/ └── preferences ├── language Python └── style 简洁这让长期记忆可以按照用户、组织、项目等维度进行隔离。一个最简单的长期记忆示例下面只演示 Store 最核心的读写逻辑from langgraph.store.memory import InMemoryStorestore InMemoryStore()namespace (users, user_123)store.put( namespace, preferences, { language: Python, style: 简洁, },)memory store.get( namespace, preferences,)print(memory.value)输出大致是{ language: Python, style: 简洁}这里和短期记忆最大的区别是短期记忆依赖thread_id长期记忆更常按照user_id项目 ID组织 ID其他业务标识组织。所以它们对应的核心问题完全不同短期记忆“这是哪一场对话”长期记忆“这是谁的长期信息”用一个例子彻底分清假设用户说我喜欢用 Python。另外刚刚那个接口请改成异步写法。这两类信息并不应该完全一样处理。“刚刚那个接口”明显依赖当前对话。因为只有知道前面刚刚写了什么接口才能理解“刚刚那个接口”。所以它属于短期记忆→ State“我喜欢用 Python”这个信息未来新的对话也可能有用。所以更适合进入长期记忆→ Store可以画成当前 thread│├── 刚刚写了哪个接口├── 当前任务进行到哪一步└── 本轮工具返回了什么 ↓ 短期记忆用户 user_123│├── 喜欢 Python├── 回答喜欢简洁└── 常用 FastAPI ↓ 长期记忆这就是两者最核心的边界。短期记忆和长期记忆不是“保存时间长短”这是一个很常见的误解。很多人看到短期长期会直觉理解成保存 10 分钟 短期保存 1 年 长期其实不是。这里最重要的区别不是“保存多久”而是短期记忆主要绑定thread长期记忆主要跨thread甚至一个 thread 可能保存很久只要它仍然是同一个 thread它仍属于短期记忆的作用域。所以更准确地记短期记忆 thread-scoped memory长期记忆 cross-thread memory而不是短期 保存时间短长期 保存时间长什么内容适合放短期记忆典型包括• 当前对话消息• 当前任务进度• 本轮工具调用结果• 当前检索结果• 当前工作流中的中间状态• 只对这场任务有意义的临时数据判断标准很简单换一场对话以后这个信息还有没有必要继续使用如果没有通常放短期记忆即可。什么内容适合放长期记忆典型包括• 用户长期偏好• 用户基本资料• 长期配置• 用户已经确认过的重要事实• 跨会话需要重复使用的信息• 长期形成的个性化设置例如用户喜欢 Python用户希望回答简洁用户长期使用 FastAPI用户默认使用中文这些信息即使换了一场对话仍然有价值。所以更适合长期记忆。两种记忆是怎么配合的真实 Agent 一般不是二选一。而是同时拥有短期记忆长期记忆例如用户开始新的 thread ↓长期记忆读取用户喜欢 Python ↓当前对话开始 ↓短期记忆记录这一轮正在写 FastAPI 登录接口 ↓继续多轮修改 ↓短期记忆持续更新所以可以把它们理解成长期记忆告诉 Agent“这个用户长期是什么样的人”短期记忆告诉 Agent“我们这一次聊到哪里了”这两个功能缺一不可。最后用一张表记住短期记忆长期记忆核心问题当前对话发生了什么跨对话还需要记住什么作用域单个 thread跨 thread主要机制State CheckpointerStore常见标识thread_iduser_id、项目 ID 等典型数据messages、工具结果、任务进度用户偏好、长期事实、配置新建 thread 后默认不共享可以继续读取最简单的判断方法就是只对当前这场对话有用 ↓短期记忆换一场对话仍然有用 ↓长期记忆写在最后Agent 的短期记忆和长期记忆区别并不复杂。短期记忆解决的是“这场对话进行到哪里了”长期记忆解决的是“换一场对话以后还有什么值得继续记住”。在 LangChain / LangGraph 中可以直接先记住短期记忆 → State Checkpointer长期记忆 → Store如果你已经能理解为什么 thread_id 更接近短期记忆而用户偏好这类信息更适合进入 Store这两个概念就真正分清楚了。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑