源码阅读 · 七篇项目笔记

长期记忆不只是向量检索

Agent 需要的不是“把历史全部塞回 prompt”,而是知道原始历史、用户画像、图关系、工作流状态和本轮输入分别由谁保存、何时写入、怎样召回。这个系列用同一组问题比较八个项目。

怎么读:先看路线说明建立五个盒子;再按项目逐篇阅读。选型时先问历史保存在哪里,再问检索算法有多聪明。

Agent Memory 阅读目录:依次介绍 Mem0、Letta、Graphiti、LangMem、TencentDB、OpenViking,以及同篇比较的 Cognee 与 Supermemory。

阅读路线

先建立共同地图,再看每个项目选择了什么边界

第零篇是导读,不计入七篇项目笔记;它为后续比较提供相同的术语和判断问题。

Agent Memory 阅读目录:依次介绍 Mem0、Letta、Graphiti、LangMem、TencentDB、OpenViking,以及同篇比较的 Cognee 与 Supermemory。第零篇 · 导读Agent Memory 系列:长期记忆不只是向量检索

用五个盒子区分原始历史、提取记忆、关系结构、工作流状态和本轮模型输入。

先读路线说明 →
Mem0 保存与选择:历史材料抽取为记忆记录,当前问题驱动检索与排序,只有选中的少量记录进入本轮上下文。01 · Mem0从可更新记忆到 ADD-only 写入

看记忆算法怎样从抽取、冲突更新走向只追加写入与混合召回。

阅读第一篇 →
Letta V1 的状态与上下文:memory_blocks 进入 AgentState,经 Memory.compile() 构建 system prompt;成功步骤后保存 message_ids 与状态检查点。02 · LettaAgent 恢复运行时,哪些记忆会一起回来

区分已归档 V1 的 Block 与 AgentState 恢复,以及当前 Letta Code 本地后端怎样编译 Git 已提交记忆并让后续轮次读取。

阅读第二篇 →
Graphiti 事实时间与来源:episode 提供实体和事实证据,valid_at 与 invalid_at 标记事实时间窗口;失效历史保留,查询可显式按时间筛选。03 · Graphiti事实变化后,怎样保留历史与当前状态

用时间图谱同时保存“以前是什么”和“现在是什么”,避免覆盖掉变化过程。

阅读第三篇 →
LangMem 执行路径:本轮 manage_memory 与 search_memory 使用 BaseStore;后台整理由应用调度;checkpointer 单独保存线程状态。04 · LangMem记忆何时立刻写,何时后台整理

区分 hot path 与 background path,让任务推进和记忆整理承担不同延迟。

阅读第四篇 →
TencentDB Agent Memory 从 v1 本地插件、v1.0 Gateway 演进到 v2 Team Memory;团队侧区分 MemoryCore、Memory Hub、MemoryProxy、ACL 与 Agent Loadout。05 · TencentDB从本地记忆,到团队记忆服务器

看 Context Offload、Gateway、Memory Hub 与 Memory Proxy 怎样把经验变成可授权、可装配的团队资产。

阅读第五篇 →
OpenViking 统一上下文树:viking:// 组织 resources、memories 与 skills,按需选择 L0、L1、L2 阅读深度并组装上下文。06 · OpenVikingMemory、Resource 与 Skill 进入同一棵上下文树

从统一资源树理解阅读深度、按预算组装上下文与两阶段会话提交。

阅读第六篇 →
Cognee 将资料经 cognify 转为可搜索知识层;Supermemory 的 memory 路径可形成用户画像,superrag 只供检索。07 · Cognee / Supermemory知识处理平台与共享记忆服务怎样分工

比较把多源材料处理成知识图,和通过 context API 为多个 Agent 提供记忆。

阅读第七篇 →