理解 Agent 的记忆机制:存储、检索与分层

在现代 AI 系统中,Agent 本身并不知道什么是“短期记忆”或“长期记忆”,它依赖记忆系统的规则来决定哪些信息需要保存、检索或遗忘。我们可以类比人类,但要注意,Agent 的记忆存在于外部存储,而非模型内部权重。


1. Agent 记忆的核心分类

现代 Agent 的记忆通常分为四种类型:

类型 内容 生命周期
工作记忆 (Working Memory) 当前思考链、即时计算 秒级
会话记忆 (Session Memory) 当前会话、临时任务 小时级
长期记忆 (Long-term Memory) 用户偏好、历史决策 月/年级
知识记忆 (Knowledge Memory) 项目知识库、文档、Wiki 永久

注意:所有类型的记忆都需要存储 + 检索 + 更新 + 遗忘机制,而不仅仅是简单的数据库保存。


2. Agent 记忆存储的主流方案

方案 1:基于规则

最常见的方式,预先定义短期和长期信息规则。

  • 短期记忆

    • 当前任务

    • 当前会话

    • 当前文件内容

    • 最近执行的命令和错误

    • 特点:任务结束后立即删除

  • 长期记忆

    • 用户偏好

    • 项目架构

    • 编码规范

    • 常用工具

    • 历史决策

    • 特点:写入数据库或向量库

示例

用户输入:

“以后 Go 项目统一使用 GORM 事务封装”

Agent 判断:

“这是长期偏好,存入长期记忆。”


方案 2:LLM 自行判断

现代 Agent 更常用这种方式,让 LLM 根据上下文判断哪些信息值得长期保存。

示例 Prompt

请判断以下信息是否值得长期保存:
1. 当前修复订单模块 Bug
2. 用户偏好使用 GORM
3. 本次测试失败
4. 用户公司统一使用 DDD 架构

模型返回

[
  {"memory": "用户偏好使用 GORM", "type": "long_term"},
  {"memory": "用户公司统一使用 DDD 架构", "type": "long_term"}
]

方案 3:重要度评分

高级 Agent 会给信息打分,超过阈值的进入长期记忆。

信息 分数
当前报错 20
当前任务 40
用户喜欢 Go 80
项目使用 DDD 95

规则

如果 score > 70 → 存入长期记忆
  • 类似人脑,重复出现的信息更容易被记住。


方案 4:Memory Agent(专门管理记忆)

复杂系统会独立一个“记忆 Agent”,负责短期和长期记忆管理。

        用户
          │
          ▼
       主 Agent
          │
 ┌────────┴─────────┐
 ▼                  ▼
Tool Agent      Memory Agent
                     │
          ┌──────────┴─────────┐
          ▼                    ▼
      短期记忆              长期记忆

功能

  • 对话结束后自动整理

  • 更新或删除过期偏好

  • 与主 Agent 协作完成检索和注入上下文


3. 技术要点:检索与遗忘比存储更重要

3.1 记忆生命周期

  1. 产生 → 2. 筛选 → 3. 存储 → 4. 检索 → 5. 更新 → 6. 遗忘

示例

  • 三个月前用户喜欢 GORM

  • 三个月后用户改用 SQLC

  • Agent 需要更新旧记忆,否则会出现冲突信息


3.2 检索比存储更重要

  • 不能把全部记忆塞入 Prompt

  • 必须先搜索相关记忆,再注入上下文

  • 这一步通常称为 Memory Retrieval

示例

用户问:

“帮我生成 Go 项目的事务封装代码”

Agent 检索:

  • 喜欢 Go

  • 使用 DDD

  • 喜欢 GORM

注入 Prompt → 生成个性化回答


3.3 RAG vs Memory

类别 功能 示例
RAG (Retrieval-Augmented Generation) 检索外部知识 MySQL 文档、公司 Wiki、PDF
Memory 检索用户相关信息 用户偏好、项目使用框架

简单记忆口诀:

  • RAG 解决“我知道什么”

  • Memory 解决“我记得你什么”


3.4 Context Window 限制

  • LLM 本身只能看到有限的上下文(Context Window)

  • 超出窗口的信息无法直接使用

  • Agent 利用长期记忆 + 检索 → 动态注入 Prompt

  • 流程:

Memory → Retrieval → Prompt → LLM → Output

4. 现代 Agent 记忆分层示意

                 用户输入
                      │
                      ▼
                  主 Agent
                      │
          ┌──────────┼──────────┐
          ▼          ▼          ▼
     工作记忆    RAG 检索     长期记忆
          │          │          │
          └───────┬──┴─────────┘
                  ▼
             Prompt 构建
                  ▼
                 LLM
                  ▼
                输出
                  ▼
            Memory Agent
                  │
      ┌───────────┴───────────┐
      ▼                       ▼
  更新长期记忆            删除过期记忆
  • 工作记忆处理即时思考链

  • RAG 检索外部知识

  • Memory Agent 管理长期记忆、更新和遗忘


5. 类比人脑的局限性

  • 人脑记忆:存储在神经网络权重中

  • Agent 记忆:存储在外部数据库/向量库

  • 模型本身并不真正记住,只是“会查笔记的 LLM”

Logo

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

更多推荐