Ch01: 为什么 Agent 需要记忆——从金鱼到管家的进化
Part 1: 导读总纲 后续章节:Ch02: 阅读路线图——四条路径任你选
1. 一个你每天都在经历的场景
你第三次打开 ChatGPT,告诉它你在学 Python,希望它用简单的例子解释概念。前两次对话里你已经说过同样的话了。但它不记得——每次都像初次见面,问你”你的编程基础如何?”“你想学哪个方向?”
这就像你每天去同一家咖啡店,每次都要重新告诉店员:”我叫小明,我要中杯美式,少冰,不加糖。”第一次你觉得正常,第二次你有点烦,第三次你可能就换一家店了——那家店的店员记得你的名字和口味,你一进门就开始做你的咖啡。
记忆的缺失是当前 AI 系统最直观的短板之一。不是因为它们”笨”——在单次对话中,大语言模型(LLM)的推理能力已经相当强大——而是因为它们”失忆”。每次对话结束,上下文窗口清空,所有交互中积累的理解都随之消失。
这个问题在 2024-2025 年变得格外突出,因为 AI 的使用场景正在从”一问一答”的工具模式进化为”持续协作”的 Agent 模式。当你只是偶尔问 ChatGPT 一个问题,没有记忆是可以忍受的;但当你让一个 Coding Agent 持续帮你维护一个项目,让一个写作 Agent 帮你写连载小说,让一个学习 Agent 陪你备考半年——没有记忆就是致命缺陷。
2. 什么是 Agent 记忆——管家类比
要理解 Agent 记忆,先来一个类比。
想象你雇了一位管家。好的管家会做三件事:
第一,记住你的偏好。你喜欢 Earl Grey 茶而不是绿茶,你对花生过敏,你每周三晚上有瑜伽课所以不安排晚餐聚会。这些偏好你只说过一次,管家就记住了,以后自动遵循。
第二,记住发生过的事。上周三你和张总吃饭时聊到的合作意向,上个月家里水管漏水找的哪家维修公司,你女儿下学期要转学这件事。这些历史事件管家都有记录,需要的时候能调出来。
第三,根据经验调整行为。第一次帮你订餐厅时,管家订了一家法餐厅,你说”我不太喜欢法餐”。从此以后,管家在候选名单里自动排除法餐厅。管家不是机械地执行指令,而是从每次互动中学习,变得越来越”懂”你。
AI Agent 的记忆系统要做的就是这三件事:记偏好、记事件、从经验中学习。
用技术语言说,Agent 记忆是一个跨越多次对话会话(session)持久化存储和检索的系统,让 Agent 能够积累对用户、项目、环境的理解,并利用这些理解提升后续交互的质量。
这个定义有三个关键词值得展开。
跨会话持久化:这是记忆和上下文窗口的根本区别。上下文窗口是对话内的短期记忆——就像你和人面对面聊天时对方能记住你五分钟前说的话。但对话结束后,上下文窗口清空。记忆则是跨对话的长期存储——你关掉窗口重新打开,Agent 仍然知道你是谁、你在做什么、你有什么偏好。
存储和检索:记忆不只是”存下来”,更重要的是”能找到”。想象一下,如果管家把你所有的偏好和历史事件都写在便利贴上,然后把几千张便利贴塞进一个箱子——信息是存了,但需要的时候翻不出来,等于没存。好的记忆系统不仅要有高效的存储机制,还要有精准的检索机制,确保在正确的时刻调出正确的信息。
提升后续交互质量:记忆的最终目的不是”存东西”,而是”让 Agent 做得更好”。如果 Agent 记住了你的偏好但不使用,那记忆就是浪费。记忆的价值体现在它改变了 Agent 的行为——回答更精准、操作更符合预期、减少不必要的确认和重复。
这个类比有一个重要的边界需要说明:AI Agent 的记忆比人类管家的记忆机械得多。管家的记忆是有机的——他会自然地将零散信息关联起来,会有直觉判断,会”感觉”到某件事重要。Agent 的记忆是工程化的——每一个”记住”“检索”“遗忘”的动作都需要明确的机制设计。这种工程化的设计就是本导读的核心内容。
3. 记忆系统解决的三个核心问题
如果把 Agent 记忆系统的技术挑战提炼到最本质的层面,它在解决三个问题。
问题一:存什么(What to remember)
一次对话中可能包含几千 token 的内容,其中大部分是过渡性的——用户说”嗯”“好的”“我想想”,Agent 说”让我来帮你”。真正值得记住的可能只有几个关键事实:用户的名字、技术栈偏好、项目约定、一个重要决策。
从噪声中提取信号,是记忆系统的第一个核心任务。不同系统对”什么值得记”有截然不同的判断标准。mem0 认为任何可以表述为独立事实的信息都值得存(”用户喜欢 Python”),DB-Agent-Memory 按重要性分四层金字塔(从临时上下文到核心偏好),Letta 则把判断权交给 Agent 自己——让 Agent 决定什么值得记。
问题二:怎么组织和检索(How to organize and retrieve)
存下来的记忆需要在恰当的时刻被找到。当用户问”上次我们讨论的那个数据库迁移方案是什么”时,Agent 需要从可能数百条甚至数千条记忆中准确找到那一条。
这里有两个子问题:一是存储结构(用什么数据结构组织记忆),二是检索策略(用什么方法找到相关记忆)。存储结构的选择空间很大——平坦的文本列表、向量数据库、知识图谱、分层文件系统——每种都有自己的优劣。检索策略同样多样——全量注入、语义搜索、图遍历、LLM 筛选——每种都适用于不同的场景。
问题三:何时遗忘(When to forget)
这是最容易被忽略但最重要的问题。记忆不能只增不减——如果用户换了工作(从 Python 转到 Rust),Agent 还坚持按 Python 风格写代码,那记忆就从帮助变成了伤害。
遗忘分两种:显式过时(用户主动说”我不再用 React 了”)和隐式失效(用户半年没提 React,可能已经不用了但没明说)。显式过时相对容易处理——检测到矛盾信息时更新旧记忆。隐式失效困难得多——需要某种时间衰减或引用计数机制来降低长期未使用记忆的权重。
在我们研究的 10 个系统中,只有 3 个有明确的遗忘机制——大多数系统选择”只存不删”,把遗忘问题留给未来解决。这反映了一个现实:遗忘比记忆更难设计。
4. 为什么现在是记忆系统的关键时刻
Agent 记忆不是新概念——2023 年 MemGPT 论文就提出了虚拟内存的想法。但 2024-2025 年,几个趋势的汇合让记忆系统从学术探索走向了工程落地。
趋势一:Coding Agent 的爆发。Claude Code、Codex(ChatGPT 的代码模式)、Cursor 等工具让”AI 帮你写代码”从概念验证走向日常使用。一个程序员可能连续几周和同一个 Coding Agent 协作开发同一个项目——如果 Agent 每天都忘记项目的技术栈、代码规范、之前踩过的坑,效率会大打折扣。这是记忆系统最紧迫的需求场景。
趋势二:上下文窗口的瓶颈暴露。虽然模型的上下文窗口在增长(从 4K 到 128K 再到 1M token),但更长的窗口并不能替代记忆。原因有三个:第一,窗口越大推理成本越高——把 10 万条历史记忆全塞进上下文,每次请求都要处理这些 token,成本和延迟都不可接受。第二,窗口有”注意力稀释”问题——研究表明 LLM 对上下文中间位置的信息关注度最低(”lost in the middle”现象)。第三,窗口无法跨会话——关掉对话后窗口清空,之前的内容无法自动带到下一次对话。
趋势三:MCP(Model Context Protocol)的标准化。Anthropic 在 2024 年底推出的 MCP 协议为记忆系统提供了标准化的集成通道——任何记忆库都可以作为 MCP Server,任何支持 MCP 的 AI 工具都可以连接这个记忆库。这大大降低了记忆系统的集成门槛,让”开源记忆库 + 生产 Agent”的组合成为可能。
趋势四:认知科学的启发。MemOS 项目显式引入了认知科学中”记忆巩固”的概念——Agent 在空闲时进行 Dream Pipeline(类似人类睡眠中的记忆整合),将短期情景记忆提炼为长期语义记忆。这种跨学科的交叉正在产生新的技术方案。
趋势五:开源生态的繁荣。仅 2024 年,就有 7 个值得深入研究的开源记忆项目活跃发展(加上 3 个生产系统的记忆模块部分开源)。这意味着我们有了足够多的实际方案可以横向对比,而不只是讨论理论可能性。
这五个趋势叠加,让”Agent 记忆”从一个 nice-to-have 的特性变成了 must-have 的基础设施。这也是本导读存在的理由——帮你在这个快速发展的领域建立系统性的理解。
5. 十个系统一句话介绍
本导读覆盖十个 Agent 记忆系统(七个开源项目 + 三个生产级系统)。先给每个系统一句话定位,让你有个整体印象。后续章节会逐一深入。
七个开源项目:
DB-Agent-Memory——腾讯出品的四层金字塔引擎。核心理念是”分层压缩”:把记忆按重要性分为四层(观测层、事实层、摘要层、画像层),像金字塔一样越往上越精炼。零第三方依赖,只需 Python 标准库 + 任一 LLM 即可运行。Host-Adapter 架构让它能嵌入任何 Agent 框架。约 90 文件的代码量是七个项目中最小的,非常适合竞赛贡献。
mem0——最大的开源记忆平台。设计哲学是”极简扁平”:从对话中提取独立事实条目,存入向量数据库,检索时做语义搜索。支持 25+ 种向量后端(从 Qdrant 到 ChromaDB),去重靠 LLM 判断,没有分层也没有时序。它的成功在于”够用就好”——对大多数应用来说,一个扁平的事实列表配合向量搜索就能解决 80% 的记忆需求。
Letta/MemGPT——虚拟内存范式的开创者。源自 2023 年 MemGPT 论文,核心创新是把操作系统的虚拟内存概念引入 Agent:Core Memory 是 RAM(在 system prompt 中,容量有限但读取零延迟),Archival Memory 是硬盘(在数据库中,容量无限但需要搜索)。最大特色是 Agent 自己管理记忆——通过 tool call 执行 core_memory_append、archival_memory_search 等操作,而非系统自动处理。
Graphiti——时序知识图谱引擎。Zep 团队出品,核心创新是给知识图谱的每条边加上双时间轴——valid_at(事实生效时间)和 invalid_at(事实失效时间)。这让 Agent 能区分”正在住北京”和”曾经住过北京但已搬走”。依赖 Neo4j 图数据库,检索用两阶段架构(向量粗筛 + Cross-Encoder 精排)。
cognee——本体论驱动的认知管线。ECL(Extract-Cognify-Load)管线架构,用 Ontology(本体论)定义领域概念和关系类型,再把文本映射上去。定制化能力在七个项目中最强——可以为特定领域定义精确的知识结构。但代码量也最大(约 2290 文件),对轻量记忆场景太重。
supermemory——产品化记忆与三流检索。走产品路线而非技术深度路线,在三大 benchmark(LongMemEval / LoCoMo / ConvoMem)排名第一。独特之处在于记忆来源不只是对话——浏览器扩展可以一键保存网页阅读内容。检索融合三条流(BM25 + 向量 + 图遍历),sub-300ms 延迟。提供 MCP Server 供外部 AI 工具调用。
MemOS——记忆操作系统。上海交大/北大/浙大联合推出,抽象层次在七个项目中最高。MemCube 做记忆容器(四种认知科学类型:Episodic/Semantic/Procedural/Profile),MemScheduler 做调度,Dream Pipeline 做后台巩固。独特之处是扩展到文本之外——支持 Activation Memory(KV Cache)和 Parametric Memory(LoRA 适配器)。
三个生产级系统:
Claude Code 记忆——索引驱动的实时学习。Anthropic 的 Coding Agent 采用文件索引 + LLM 语义检索两层架构:MEMORY.md 作为索引文件在启动时注入,每一轮对话由 Sonnet 从不超过 200 个记忆文件中选 5 个注入上下文。写入是 fire-and-forget 的后台 agent(不阻塞主对话),超过 24 小时 + 5 次会话后触发 autoDream 整合。
Codex 记忆——AI 驱动的批量整合。OpenAI 的 Coding Agent 采用两阶段异步 AI pipeline:Phase1 在会话开始时并行(concurrency=8)从历史 rollout 中提取结构化 JSON,Phase2 获取全局锁(6 小时冷却期),在隔离沙箱中由 consolidation agent 合并为 MEMORY.md + 技能文件。citation 正反馈循环——被引用的记忆 usage_count 递增,影响下次是否保留。
OpenClaw 记忆——Pre-Compaction Flush 与 Dreaming。腾讯 tRPC-Agent-Go 的 Coding Agent 模式采用三层文件布局:MEMORY.md(长期层)/ daily/YYYY-MM-DD.md(日记层)/ DREAMS.md(整合日志)。核心创新是在上下文压缩(compaction)之前主动运行嵌入式 agent 将重要信息 flush 到日记文件——这是唯一显式将记忆保存前置于上下文压缩的方案。
6. 为什么值得深入学
你可能会问:Agent 记忆听起来就是”把东西存起来然后找到它”,有什么值得花 20 章来讲的?
这个问题有四个层面的回答。
第一,工程复杂度远超直觉。”把东西存起来”听起来简单,但你很快会发现一连串棘手问题:从对话中提取什么?用什么格式存?存到哪里?怎么找到相关的?过时的怎么办?矛盾的怎么处理?多个 Agent 共享记忆时怎么隔离?这些问题每一个都有多种解决方案,每种方案都有自己的权衡。七个开源项目给出了七种不同的答案,而且没有一个是完美的——这本身就说明问题的复杂度。
第二,犀牛鸟竞赛的核心赛道。DB-Agent-Memory 是腾讯犀牛鸟开源人才培养计划 2026 年的参赛项目之一。理解它的设计哲学以及它在七个项目中的独特定位,是参赛的前提。更重要的是,理解其他六个项目的设计选择能帮你提出更好的改进方案——你需要知道别人试过什么、为什么行或不行,才能设计出真正有价值的贡献。
第三,这是 AI 领域最活跃的前沿之一。2024-2025 年,Claude Code、Codex、Cursor 等产品几乎每周都在更新记忆相关功能。OpenAI 刚上线了 Codex 的记忆系统,Anthropic 在 Claude Code 中持续迭代 extractMemories 机制。这个领域还没有”标准答案”——不同公司在做不同的探索,最终格局远未确定。深入理解当前的技术版图,能帮你判断未来趋势。
第四,思维训练价值。记忆系统的设计涉及几乎所有核心计算机科学权衡:存储 vs 计算(存精炼结果还是每次重新计算)、延迟 vs 精度(全量注入快但粗,语义搜索慢但准)、自动化 vs 可控性(系统自动管理还是用户/Agent 手动管理)、通用性 vs 领域适配(flat list 通用但浅,Ontology 深但重)。理解这些权衡如何在十个系统中落地,会让你成为一个更好的系统设计者。
7. 最小体感:无记忆 vs 有记忆(10 行伪代码)
在你理解所有技术细节之前,先用伪代码感受一下”有记忆”和”没记忆”的 Agent 行为差异:
# === 无记忆的 Agent(每次对话都是初次见面)===
def chat_without_memory(user_msg):
return llm.call(system="你是一个助手", user=user_msg)
# 第 100 次问"我叫什么",它还是回答"我不知道你叫什么"
# === 有记忆的 Agent(能记住、能回忆、能遗忘)===
def chat_with_memory(user_msg, memory_store):
relevant = memory_store.search(user_msg) # 1. 检索相关记忆
response = llm.call(
system="你是一个助手",
context=relevant, # 2. 注入记忆作为上下文
user=user_msg
)
memory_store.extract_and_save(user_msg, response) # 3. 从对话中提取新记忆
return response
# 第 2 次问"我叫什么",它就能回答"你叫小明,上次你自己说的"
这 10 行代码浓缩了记忆系统的三个核心操作:检索(search)、注入(context injection)、提取并存储(extract_and_save)。整个导读的 20 章内容,本质上都是在回答:如何把这三个操作做得更好——更准、更快、更智能。
8. 本章小结
回顾本章的核心要点:
- 当前 AI 系统的最大短板之一是跨会话记忆缺失——每次对话都是”初次见面”
- Agent 记忆像一位好管家,做三件事:记住偏好、记住历史、从经验中学习
- 记忆系统解决三个核心问题:存什么(信号提取)、怎么检索(存储+查找)、何时遗忘(生命周期管理)
- 2024-2025 年五个趋势(Coding Agent 爆发、上下文窗口瓶颈暴露、MCP 标准化、认知科学启发、开源繁荣)让记忆系统成为 must-have 基础设施
- 本导读覆盖十个系统:七个开源项目(DB-Agent-Memory / mem0 / Letta / Graphiti / cognee / supermemory / MemOS)+ 三个生产级系统(Claude Code / Codex / OpenClaw)
- 深入学习有四重价值:工程复杂度、竞赛基础、前沿跟踪、思维训练
下一章我们会给出四条阅读路径,帮你根据自己的目标和时间选择最合适的学习路线。
章节自测
- Claude 的 context window 已经有 200K token 了,为什么还需要独立的记忆系统?”把所有历史对话塞进 prompt”这个方案在什么规模会崩溃?算一下成本。
- 记忆系统需要决定”存什么”和”忘什么”。如果一个用户说”我不喜欢辣的”,三个月后又说”最近开始吃辣了”——你的记忆系统应该怎么处理这个矛盾?
- 十个系统中,mem0 偏”轻量嵌入式”,MemOS 偏”操作系统级抽象”。如果你要给一个已有的聊天机器人加记忆功能,你会选哪种方案?为什么?
导读目录:README.md 下一章:Ch02: 阅读路线图——四条路径任你选