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
适合结构化信息。
例如:
| user | type | memory |
|---|---|---|
| A | preference | 喜欢案例解释 |
| A | weak_topic | WACC |
| A | goal | 学公司金融 |
如果 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,重点并不是“记得越多越好”,而是:
在正确的时候,想起正确的东西。