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

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐