文章介绍了LangChain框架中的记忆治理机制,分为短期记忆和长期记忆两层。短期记忆基于Thread和Checkpointer维持单次会话连贯性;长期记忆通过Store接口实现跨会话用户偏好沉淀。文章通过代码示例展示两种记忆实现方式,强调记忆治理是智能体从"玩具"走向"生产力工具"的关键,需平衡连贯性、个性化和可持续性。


01 前言

在上一篇的[LangChain 系列 | 上下文工程]中,我们探讨了如何在单次交互中为模型提供精准的信息。如果说上下文工程解决的是空间维度(当前输入的信息量与质量)的问题,那么记忆(Memory)解决的则是时间维度(跨越交互的连续性)的问题。

在当下,基础模型(Base Models)的上下文窗口虽然已经极大扩展,但“无限上下文”并不等于“无限智能”。在实战中,智能体往往因为缺乏对历史信息的有效索引而出现“断片”。

在 LangChain V1.0+ 的架构体系中,记忆治理被严格划分为两个层级:

1、****短期记忆(Short-term Memory):它的作用范围是会话级(Conversation-scoped),主要负责存储当前对话的消息、上传的文件、身份验证状态以及工具执行的结果。基于 Thread, 保证单次会话的连贯性。

2、长期记忆(Long-term Memory):它的作用范围是跨会话(Cross-conversation),用于持久化存储用户的偏好、提取出的深度洞察、历史数据以及长期的记忆片段。基于 Store, 实现跨会话的用户偏好沉淀与知识管理。

注意: 短期记忆也是一种持久上下文,作用于某整个会话。

02 架构概览

框架通过将存储层(LangGraph实现)与计算层(LangChain实现)分离,建立了一套完整的数据治理体系,即如何根据存储层的数据,为计算层构建出“正确”的内容。

下图展示了运行时(Runtime)如何分别与短期记忆和长期记忆进行交互:

03 短期记忆

大多数 LLM 本质上是**无状态(Stateless)**的。LangGraph 实现短期记忆的方式,是构建一个有状态的系统(Stateful System)。这套机制由三个核心要素组成:

1、Thread (线程):类似于 Email 的会话 ID,用于隔离不同用户的对话。

2、State (状态):当前会话中累积的数据(Messages),随着每一步交互而更新。

3、Checkpointer (检查点):负责在每一步(Step)执行后,将 State 序列化并持久化到数据库。

工作流原理如下图所示:

一个示例:启用 Checkpointer 实现短期记忆

# pip install langgraph langchain-deepseek
from langchain.agents import create_agent
import os
from langgraph.checkpoint.memory import InMemorySaver
# 生产环境建议使用: from langgraph.checkpoint.postgres import PostgresSaver
# 1. 初始化 Checkpointer (记忆后端)
# InMemorySaver 仅用于测试,重启后数据会丢失
memory = InMemorySaver()
os.environ["DEEPSEEK_API_KEY"] = "sk-..."
# 2. 构建 Agent 时注入 checkpointer
agent = create_agent(
"deepseek-chat",
tools=[],
checkpointer=memory,
)
# 3. 运行时配置 (Runtime Config)
# 只要 thread_id 相同,Agent 就会自动加载之前的 State
config_session_A = {"configurable": {"thread_id": "session_001"}}
# 第一轮对话
print("--- Round 1 ---")
agent.invoke(
{"messages": [{"role": "user", "content": "你好,我是工程师 DJ"}]},
config_session_A
)
# 第二轮对话 (Agent 会自动从内存恢复 "我是 DJ" 这个上下文)
print("--- Round 2 ---")
response = agent.invoke(
{"messages": [{"role": "user", "content": "我的职业是什么?"}]},
config_session_A
)
# 输出: 你的职业是架构师。
print(response["messages"][-1].content)

示例首先定义InMemorySaver,用于内存中存储短期记忆,生产环境通常使用PostgreSQL等数据库;然后通过create_agent创建Agent,并指定checkpointer;最后通过两轮agent的invoke调用,并指定同一个配置了thread_id的config。

最后输出如下:

--- Round 1 ---
--- Round 2 ---
根据我们对话的开始,你提到过:**“我是工程师 DJ”**。
所以,你的职业是 **工程师**。

04 长期记忆

短期记忆的致命弱点在于:一旦 thread\_id 改变,或者历史记录被修剪(Trimming),信息就永久丢失了。

长期记忆(Long-term Memory)利用 Store 接口,允许智能体将关键信息从“对话流”中提取出来,存储到独立的数据库文档中。它使用 **Namespace(命名空间)**来隔离数据,结构类似于文件路径 (scope, identifier)。

跨会话交互原理如下图所示:

一个示例:工具读写实现长期记忆Store:

from langgraph.store.memory import InMemoryStore
from langchain.tools import tool, ToolRuntime
from langchain.agents import create_agent
import os
from pydantic import BaseModel
# 初始化存储后端 (生产环境通常连接 Redis 或 PostgreSQL)
store = InMemoryStore()
# 这决定了工具中 runtime.context 能访问到哪些字段
classContext(BaseModel):
user_id: str
@tool
defsave_user_preference(pref_detail: str, runtime: ToolRuntime):
"""
保存用户偏好到长期记忆。
当用户提到“我喜欢...”或“我不吃...”时调用此工具。
"""
# 1. 获取 Store 实例
current_store = runtime.store
# 2. 从运行时上下文中安全获取 user_id (非用户输入,防注入)
# 这需要在 invoke 时通过 configurable 传入
user_id = runtime.context.user_id
# 3. 写入数据
# Namespace: 类似文件夹路径 ("users", "bob"),用于数据隔离
# Key: 文件名 "food_prefs"
current_store.put(
("users", user_id),
"food_prefs",
{"detail": pref_detail, "updated_at": "2026-01-19"}
)
return"已记录您的偏好。"
@tool
defget_user_info(runtime: ToolRuntime):
"""读取用户的历史偏好信息"""
current_store = runtime.store
user_id = runtime.context.user_id
# 4. 读取数据
item = current_store.get(("users", user_id), "food_prefs")
return item.value if item else"暂无该用户偏好记录"
# 定义agent
os.environ["DEEPSEEK_API_KEY"] = "sk-..."
agent = create_agent(
model="deepseek-chat",
tools=[save_user_preference, get_user_info],
store=store,               # 注入长期记忆存储
context_schema=Context     # 声明运行时上下文结构
)
user_context = Context(user_id="DJ_001")
print("--round 1--")
# 第一次交互:保存信息
agent.invoke(
{"messages": [{"role": "user", "content": "记一下,我超级喜欢吃辣,尤其是川菜。"}]},
context=user_context
)
print("--round 2--")
# 第二次交互:跨会话/跨工具读取
result = agent.invoke(
{"messages": [{"role": "user", "content": "我刚才说我喜欢吃什么来着?"}]},
context=user_context
)
print(result["messages"][-1].content)

示例首先定义InMemoryStore,用于存储长期记忆,生产环境通常连接 Redis 或 PostgreSQL等;然后分别定义了两个可以操作长期记忆的工具;最后通过create_agent创建Agent,并指定tools、store和context_schema;通过两轮agent的invoke调用,并指定了同一个context。

最后输出如下:

根据记录,你之前提到过你**超级喜欢吃辣,尤其是川菜**!这是你在2026年1月19日分享的饮食偏好。
川菜确实很美味,像麻婆豆腐、水煮鱼、回锅肉这些经典川菜都很受欢迎。你最近有尝试什么新的川菜吗?

说明:长期记忆通常不直接暴露给 LLM 的 Context(太长且昂贵),而是通过 Tools 按需调用。

05 总结

记忆治理是 Agent 从“玩具”走向“生产力工具”的分水岭。在构建系统时,请遵循以下原则:

1. Checkpointer (短期记忆):解决“连贯性”,主要用于维持对话流(Flow)。

2. Store (长期记忆):解决“个性化”。用于持久存储知识(Knowledge)和偏好。

3. Middleware (治理):解决“可持续性”。防止记忆膨胀拖垮系统,通过自动总结和修剪保持上下文的精炼。

如何学习AI大模型?

如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

请添加图片描述
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

100套AI大模型商业化落地方案

请添加图片描述

大模型全套视频教程

请添加图片描述

200本大模型PDF书籍

请添加图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

LLM面试题合集

请添加图片描述

大模型产品经理资源合集

请添加图片描述

大模型项目实战合集

请添加图片描述

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐