Agent的长短期记忆
Agent 的**长短期记忆系统(Memory System)**本质上是在解决一个问题:
LLM 本身没有记忆能力,每次调用都是一次新的推理,所以 Agent 需要一个外部记忆层,把过去的信息保存下来,在需要的时候检索回来提供给模型。
典型架构:
用户输入
|
v
Agent Orchestrator
|
+-----------+------------+
| |
v v
短期记忆 长期记忆
(Working Memory) (Long-term Memory)
| |
v v
Context窗口 Memory Database
| |
+-----------+------------+
|
v
LLM
一、短期记忆
也叫:
Working Memory
Context Memory
Conversation Memory
它保存的是当前任务过程中的信息。
比如:
用户:
帮我设计一个机器人导航系统
Agent:
任务:
设计机器人导航系统
已知:
机器人类型:室内移动机器人
传感器:激光雷达
框架:ROS2
当前步骤:
1. 设计架构
2. 选择算法
3. 输出代码
这些信息存在:
Prompt Context
|
|-- system prompt
|
|-- conversation history
|
|-- tool results
|
|-- intermediate reasoning
短期记忆存哪里?
通常:
1. 直接放 Context
例如:
messages=[
{
role:"system",
content:"你是机器人专家"
},
{
role:"user",
content:"设计导航系统"
},
{
role:"assistant",
content:"..."
}
]
每次请求:
LLM(messages)
2. Redis
工程中更常见:
Redis
key:
conversation:user_1001
value:
[
{
"role":"user",
"content":"我要做机器人"
},
{
"role":"assistant",
"content":"..."
}
]
TTL:
24小时
为什么 Redis?
因为:
快
支持过期
高并发
二、长期记忆
长期记忆保存:
用户长期稳定的信息
比如:
用户第一次说:
我是C++开发
做机器人SDK
使用ROS2
喜欢底层开发
Agent 不会每次都重新问。
以后:
用户:
帮我设计项目
Agent 检索:
用户画像:
语言:C++
领域:机器人
方向:SDK
然后回答:
建议采用C++17
ROS2通信
gRPC
三、长期记忆怎么存?
现在主流是:
1. 结构化数据库
例如:
MySQL/PostgreSQL
保存:
user_id | attribute | value
1001
|
+-- language
| C++
|
+-- field
robotics
适合:
明确的信息。
例如:
姓名
职业
公司
技能
偏好
2. 向量数据库(最主流)
例如:
Milvus
FAISS
Chroma
Pinecone
流程:
用户说:
我最近在学习ROS2机器人云平台
先经过 Embedding:
文本
|
Embedding模型
|
[0.23,0.65,0.12....]
保存:
Vector DB
id:
10001
vector:
[0.23,0.65...]
metadata:
{
text:
"用户学习ROS2机器人云平台"
time:
2026-07-20
}
以后:
用户:
机器人通信怎么设计?
转换:
机器人通信怎么设计?
|
embedding
|
向量
|
相似搜索
找到:
用户之前学习:
ROS2
MQTT
TCP
机器人SDK
返回给LLM。
四、记忆粒度是多少?
这是 Agent Memory 最关键的问题。
粒度太大:
整个聊天记录
问题:
太长
噪声多
token浪费
粒度太小:
每句话
问题:
信息碎片化
实际系统一般分三级。
五、什么时候写入长期记忆?
不是所有聊天都存。
否则:
用户:
哈哈今天下雨
保存:
用户喜欢下雨
错误!
所以需要 Memory Manager。
流程:
用户输入
|
v
LLM判断:
是否重要?
|
+----+----+
| |
否 是
| |
丢弃 总结
|
v
Memory Store
更多推荐



所有评论(0)