当AI开始记住你:十分钟带你实操智能体记忆系统
最近有些朋友留言想了解智能体的记忆系统——这一模块在Agent中至关重要。核心原因在于,大模型本身无状态特性,而记忆系统正是解决这一痛点的关键。
一、智能体记忆的核心价值
LLM(大语言模型)天生是无状态的——每次调用均为“全新开始”,不会主动留存历史信息。而记忆系统的核心作用,就是为AI补上“记性”,具体体现在四大核心价值:
-
✅ 保障单次对话上下文不中断,实现流畅交互;
-
✅ 跨会话长效记住用户偏好、历史交互信息,提升个性化体验;
-
✅ 优化长对话体验,避免上下文溢出、卡顿,同时节省Token成本;
-
✅ 适配企业级场景,可沉淀业务知识、操作技能、合规规则,实现标准化服务。
本质而言,智能体记忆系统是一套完整的「信息存储 + 检索 + 更新」机制,主要分为两大管理层级:短期记忆(会话级)与长期记忆(跨会话、用户偏好级)。
二、短期记忆(Short-term Memory)
核心概念
-
作用域:仅在单次对话/线程内生效;
-
生命周期:会话结束后立即释放,不做持久化存储;
-
典型场景:日常聊天上下文衔接、多轮任务连续执行。
短期记忆本质是「单会话上下文记忆」,仅作用于当前对话线程,类比人类的“工作记忆”——负责临时留存当前交互的关键信息,支撑即时对话流畅性。
它主要解决LLM的一个致命痛点:大模型的上下文窗口存在长度限制,若长对话未做优化,会直接出现上下文溢出、关键信息丢失的问题,同时还会导致响应速度变慢、Token消耗飙升。
核心实现:Checkpointer+State
checkpointer可以用InMemorySaver、PG、Milvus等,本文为演示用Redis
pip install langgraph-checkpoint-redis
代码示例:
llm = init_chat_model(
model="qwen2.5:1.5b",
model_provider="openai",
base_url="http://localhost:11434/v1",
api_key="EMPTY",
temperature=0.1,
)
redis_str = "redis://localhost:6379"
USER_THREAD_ID = "sunway"
with RedisSaver.from_conn_string(redis_str) as checkpointer:
checkpointer.setup()
agent = create_agent(
model=llm,
checkpointer=checkpointer,
store=store,
system_prompt=SYSTEM_PROMPT,
)
resp = agent.invoke(
{"messages": msg},
config={"configurable": {"thread_id": USER_THREAD_ID}}
)
演示:


关于长对话优化:3 种技巧(消息裁剪、删除、摘要)篇幅问题,暂时不讨论。
三、长期记忆 —— 跨会话的「永久档案柜」
核心定义:长期记忆 = 跨会话持久化记忆,会话结束后依然留存,可被后续所有对话调用,相当于人类的「长期记忆」。
核心结构:Namespace+Key
Namespace:命名空间(相当于文件夹),用user_id/org_id区分
Key:记忆键名,唯一标识一条记忆
存储内容:用户偏好、业务规则、核心事实等结构化数据
核心实现:长期记忆通过Store(存储组件)实现持久化,以下结合实际业务场景(天气查询工具),给出代码示例:
@tool
def weather_tool(city: str, runtime: ToolRuntime):
"""查询指定城市的天气。
Args:
city: 城市名称,如"北京"、"上海"。如果用户未指定城市,可以为None,工具会自动使用用户偏好的默认城市。
Returns:
天气信息字符串,格式根据用户偏好(简洁/详细)返回。
"""
# 从长期记忆读偏好
user_pref = runtime.store.get(
namespace=("sunway", "preferences"),
key="style"
)
if not city and user_pref.value:
city = user_pref.value["default_city"]
result =Weather().get_weather(city=city)
return result
with RedisStore.from_conn_string(redis_str) as store, \
RedisSaver.from_conn_string(redis_str) as checkpointer:
store.setup()
checkpointer.setup()
# 仅演示:设置用户偏好
store.put(
namespace=("sunway", "preferences"),
key="style",
value={
"reply_style": "简洁",
"default_city": "南京"
}
)
# 读取用户偏好
result = store.get(("sunway", "preferences"), "style")
SYSTEM_PROMPT = f"你是一个人工智能助手,请根据用户偏好回复,偏好: {result.value['reply_style']}"
agent = create_agent(
model=llm,
tools=[weather_tool],
checkpointer=checkpointer,
store=store,
system_prompt=SYSTEM_PROMPT,
)
resp = agent.invoke(
{"messages": msg},
config={"configurable": {"thread_id": USER_THREAD_ID}}
)
未设置用户偏好时:

设置完偏好时:

场景演示说明
-
首次未设置用户偏好时:工具会提示用户指定城市,回复采用默认风格;
-
设置偏好后:工具会自动读取长期记忆中的默认城市和回复风格,无需用户重复说明,实现个性化交互。
补充:生产环境优化与新版实现
本文代码仅用于演示用户偏好的基础设置,实际生产环境中,可结合「自动摘要 + 动态上下文增强」的方式,自动捕捉、更新用户偏好,提升记忆的准确性和实用性。
此外,随着Claude Code、OpenClaw等智能体工具的普及,越来越多的记忆系统采用文件存储方式,无需通过Store实时检索,确保智能体启动时即可加载全部记忆。以新版DeepAgents为例,只需将偏好存储到指定文件,即可实现长期记忆加载,代码示例如下:
def my_backend(runtime):
return CompositeBackend(
default=StateBackend(runtime),
routes={"/memories/": FilesystemBackend(root_dir='/Users/sunway/gitrepo/swagent/deepagentpro',
virtual_mode=True,)})
agent = create_deep_agent(
model=llm,
store=InMemoryStore(),
memory=["sunway_preferences.txt"],
backend=my_backend,
system_prompt="""当用户告诉您偏好时,将其保存到 /memories/sunway_preferences.txt,以便在未来的对话中记住它们。""",
)
resp = agent.invoke({"messages": [{"role": "user", "content": msg}]})


总结:记忆是智能体的灵魂
记忆系统直接决定了智能体的交互体验和实用价值,用一句话概括其核心作用:
-
没有记忆:AI 只是一次性工具,每次交互都是全新开始;
-
有短期记忆:AI 成为流畅对话机器人,可支撑多轮即时交互;
-
有长期记忆:AI 成为个性化私人助理,越用越懂用户需求。
一套好用、稳定的记忆系统,是开发高性能AI Agent必备的核心能力。未来的智能体,必然是“越用越懂你、越用越好用”的存在——而这一切,都始于一套完整、高效的记忆系统。
关注我,解锁更多Agent实战技巧,让AI替你搞定所有相关的繁琐工作!

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)