Memory 长期记忆可以理解成:

让 Agent 不只是“这次会做事”,而是“下次还记得之前发生过什么”。

如果 RAG 像图书馆,那么 Memory 更像:

Agent 自己的日记 + 用户档案 + 工作经验本。

最关键的一点是:Memory 不是“把所有聊天都永久塞给模型”。真正的长期记忆通常是一个完整流程:

发生事情
↓
判断:值不值得记?
↓
提取成结构化记忆
↓
存进数据库
↓
以后遇到相关任务
↓
检索相关记忆
↓
放进当前上下文
↓
Agent继续工作
↓
必要时更新旧记忆

一、先理解:LLM 本身其实没有真正的“长期记忆”

假设你自己搭了一个 GPT Agent。

今天你说:

“以后分析公司时,我特别关注 ROIC 和自由现金流。”

模型这一轮当然知道。

但如果会话结束,下次你重新启动 Agent:

它通常并不会天然知道这句话。

因为大模型更像一个大脑:

每次醒来以后,你给它什么上下文,它就知道什么。

所以所谓 Memory,本质上就是:

把重要信息存到模型外面的地方,下次再取回来。

这句话非常重要:

Memory 通常不是存在 LLM 里面,而是存在外部数据库里。


二、最简单的长期记忆怎么实现?

假设你做一个自己的金融学习 Agent。

你可以先建一个文件:

memory.json

里面写:

{
  "goal": "学习公司金融",
  "known_topics": [
    "ROE",
    "ROA"
  ],
  "weak_topics": [
    "WACC",
    "CAPM"
  ],
  "preferences": [
    "喜欢用生动类比",
    "希望结合金融案例"
  ]
}

每次 Agent 启动:

读取 memory.json
↓
把里面的信息放进 Prompt
↓
再和你对话

这样它就拥有最基础的长期记忆了。

比如你第二天说:

“继续学习。”

Agent 读取 Memory:

用户已经学过 ROE 和 ROA,但 WACC 较弱。

于是它就可以说:

“今天我们继续 WACC。”

这就是最简单版本。


三、但真正的 Agent 不会把所有东西都记下来

比如你一天说 100 句话:

今天吃什么
这道题怎么做
我想学金融
天气不错
我明天上课
我长期目标是……

不能全部永久保存。

否则时间一长 Memory 会变成:

垃圾堆。

所以真正 Memory 系统里通常有一个:

Memory Extraction

也就是:

记忆提取器。

例如一次对话结束后,让 LLM 判断:

以下对话中有哪些内容值得长期记忆?

标准:
1. 长期目标
2. 稳定偏好
3. 已掌握知识
4. 薄弱知识
5. 重要决策
6. 过去犯过的错误
7. 项目进度

例如:

“我今天吃了一根香蕉。”

不记。

但:

“以后解释金融知识时尽量用真实公司案例。”

记下来。


四、所以 Memory 的第一核心问题不是“怎么存”

而是:

什么值得记?

这是非常关键的 Agent 设计思想。

一个好 Memory 系统通常会把记忆分成几类。


五、第一种:Profile Memory —— 用户档案

例如:

用户长期目标
用户偏好
用户水平
输出格式偏好

例如一个学习 Agent:

目标:学习金融
水平:初学者
解释偏好:类比 + 案例
已掌握:ROE、ROA
薄弱:WACC

这种记忆相对稳定。

就像老师的:

学生档案。


六、第二种:Episodic Memory —— 经历记忆

Episodic = 事件 / 经历。

例如:

2026-09-01
学习了 ROIC
用户能够正确解释基本概念
但不理解 ROIC 与 WACC 的关系

或者:

2026-09-05
第一次分析腾讯
结论:
广告业务增长较快
游戏业务稳定
重点关注资本回报率

这种更像:

日记。

所以叫:

Episodic Memory(情景记忆)。


七、第三种:Semantic Memory —— 知识记忆

例如 Agent 从过去任务中总结出:

“分析盈利质量时,不能只看净利润,还要比较经营现金流。”

它把这个总结保存下来。

以后每次分析公司,都可以复用。

这就像人类:

经历很多事情以后形成知识。

例如:

经验:
净利润增长但经营现金流下降,
可能说明盈利质量存在问题。

以后遇到类似公司,Agent 就会想到这条经验。


八、第四种:Procedural Memory —— 工作方法记忆

这个其实非常适合 Agent。

Procedural = 程序性记忆。

例如 Agent 学会:

公司分析 SOP:

1. 商业模式
2. 营收增长
3. 毛利率
4. ROIC
5. FCF
6. 负债
7. 行业竞争
8. 估值

以后每次分析公司:

自动使用这个流程。

这就很像人的:

肌肉记忆 / 工作经验。

例如会游泳以后:

你不需要每次重新思考怎么划水。

Agent 也是一样。


九、所以真正完整的 Memory 可以长这样

                     Agent Memory
                          │
        ┌─────────────────┼─────────────────┐
        ↓                 ↓                 ↓
   Profile Memory    Episodic Memory    Semantic Memory
    用户是谁            发生过什么          学到了什么
        │                 │                 │
        └─────────────────┼─────────────────┘
                          ↓
                   Procedural Memory
                    应该怎么做事情

十、这些记忆到底存在哪里?

有很多选择。

最简单

JSON
Markdown
TXT

适合个人小项目。


稍正式一点

SQLite
PostgreSQL
MySQL

适合结构化信息。

例如:

usertypememory
Apreference喜欢案例解释
Aweak_topicWACC
Agoal学公司金融

如果 Memory 很多

就可以使用:

Vector Database

例如:

Chroma
Qdrant
Milvus
Pinecone
Weaviate
FAISS

为什么 Memory 也会用向量数据库?

因为假设你有 10 万条过去经历。

你不可能每次全部塞给模型。

所以:

当前任务
↓
Embedding
↓
搜索过去最相关的记忆
↓
取回5条
↓
给LLM

这其实和 RAG 很像。


十一、所以你可能马上会问:Memory 和 RAG 到底差在哪里?

它们的技术实现确实可能非常像。

甚至都可以使用:

Embedding + Vector Database。

但是内容来源不同。

RAG

保存的是:

外部知识。

例如:

公司理财教材
论文
财报
课堂笔记
网页

Memory

保存的是:

Agent 自己过去的经历和状态。

例如:

用户学到哪了
上次研究了什么
以前犯过什么错误
用户喜欢什么解释方式
之前做过什么决定

可以记:

RAG = 世界的知识库。

Memory = 我和你之间发生过什么。


十二、真正使用 Memory 的时候发生了什么?

假设你问金融学习 Agent:

“继续昨天的内容。”

Agent 不应该把过去一年所有 Memory 全部拿出来。

而是:

问题:
继续昨天的内容
↓
搜索 Memory
↓
找到:

昨天:
学习资本结构
已经理解财务杠杆
还没有理解 WACC
↓
把这几条放进 Prompt
↓
LLM继续讲WACC

这一步叫:

Memory Retrieval

也就是:

记忆检索。


十三、Memory 不能只会“写”,还必须会“更新”

假设 Memory 里原来写:

用户不会 ROIC

但是两个月以后你已经完全掌握了。

如果 Memory 不更新:

Agent 永远会觉得:

“你不会 ROIC。”

这就会非常蠢。

所以真正的系统还需要:

Memory Update。

例如:

旧记忆:
ROIC掌握程度 = 20%

↓

今天测试:
回答正确

↓

更新:
ROIC掌握程度 = 80%

甚至旧记忆可以保留:

2026-08:
ROIC 不熟悉

2026-09:
基本理解

2026-10:
熟练

于是 Agent 甚至可以分析:

你的成长轨迹。


十四、还需要解决一个问题:记忆冲突

例如以前你说:

“我喜欢非常详细的解释。”

后来你说:

“以后尽量简洁。”

怎么办?

不能同时永久使用两个冲突的 Memory。

于是需要:

Memory Consolidation

可以理解成:

记忆整理。

系统发现:

旧:
喜欢详细

新:
希望简洁

判断新信息优先:

当前偏好:
简洁解释

历史:
以前偏好详细

这跟人脑很像:

不是不停堆叠,而是不断修正。


十五、Reflection + Memory 是非常强的组合

你刚才学了 Reflection。

两者连接以后就非常有意思。

例如 Agent 第一次分析公司:

犯错:只看净利润。

Reflection 发现:

没有检查经营现金流。

于是形成经验:

以后分析盈利质量时,
必须同时检查:
净利润
经营现金流
应收账款
存货

写入 Memory。

下一次分析公司:

读取 Memory
↓
发现这条经验
↓
主动检查现金流

于是形成:

工作
↓
犯错
↓
Reflection
↓
总结经验
↓
Memory
↓
下一次调用经验
↓
表现变好

这就是为什么:

Reflection + Memory 才真正开始像“学习”。


十六、你自己搭一个 Memory Agent,可以从最简单版本开始

第一版千万不要搞复杂。

直接:

memory.json

里面只放:

Goals
Preferences
Projects
Learned
Weaknesses
Lessons

例如:

Memory

Goals:
- 学习公司金融

Learned:
- ROE
- ROA

Weaknesses:
- WACC

Preferences:
- 生动解释
- 多用案例

Lessons:
- 学金融概念后需要做应用题

每次 Agent 启动:

读取它。

每次任务结束:

判断有没有值得更新的内容。

这就已经是一个真正的长期 Memory 系统。


十七、第二阶段再升级

你以后可以变成:

用户输入
↓
Memory Retriever
↓
找到相关旧记忆
↓
LLM
↓
执行任务
↓
Memory Extractor
↓
判断哪些值得保存
↓
Memory Database

完整结构就是:

               ┌──────────────┐
               │ Memory DB    │
               └──────┬───────┘
                      ↑ ↓
                 检索 / 写入
                      ↑ ↓
用户 → Agent → Plan → ReAct → Tools
                      ↓
                  Reflection
                      ↓
                总结新经验
                      ↓
                   Memory

你会发现:

你前面学的那些模块开始全部连起来了。


十八、如果是为你自己的 AI 学习系统设计,我会这样分

例如建立一个 Personal AI Memory:

01 Profile
长期目标
学习偏好

02 Knowledge State
已经掌握什么
哪些还不会

03 Learning History
什么时候学了什么

04 Mistakes
经常犯哪些错误

05 Insights
你自己提出的重要想法

06 Projects
现在做到哪一步

07 Decisions
为什么当时做这个决定

几年以后你可以问:

“过去三年,我对投资的理解发生了什么变化?”

Agent 可以:

搜索 Memory
↓
找到不同时间点
↓
比较
↓
总结认知变化

这其实会非常强。


所以你可以把长期 Memory 永久记成:

不是“让 AI 永远记住整段聊天”,而是让系统从过去经历中提取重要信息 → 保存 → 需要时检索 → 根据新信息持续更新。

最核心其实只有五步:

Remember → Store → Retrieve → Update → Forget

翻译过来就是:

记什么 → 存哪里 → 什么时候想起来 → 怎么更新 → 什么应该忘掉。

真正优秀的 Agent Memory,重点并不是“记得越多越好”,而是:

在正确的时候,想起正确的东西。