结论先说: 2026 Agent Memory 开源项目不要直接按“谁的搜索结果更准”来排名。你需要先定义记忆对象:轻量通用长期记忆优先评估 Mem0,状态化 Agent 运行时优先看 Letta,时间关系和事实变化优先评估 Zep 的 Graphiti,重视上下文图、决策推理和来源追踪再评估 Semantica。
这篇适合准备给聊天 Agent 或任务 Agent 增加长期记忆的开发者、需要自托管和数据控制的企业团队,以及正在比较图记忆与 Agent 运行时路线的架构师。如果你只想给现有应用增加“记住用户偏好”的能力,不需要立刻引入完整 Agent 运行时,可以先从 Mem0 开始;如果你要管理完整 Agent 状态,就不要把所有项目都当成向量数据库插件来比较。
最后更新于 2026 年 8 月 14 日,数据核实自四个项目当前官方仓库、官方文档与 Graphiti 官方说明。项目的许可证、部署方式和开源边界发生变化后,应重新验收。
第一步:先把 Agent 要记住的内容拆成 5 类
“长期记忆”不是一个单一功能。你至少要区分下面 5 类数据,否则比较结果很容易失真:
- 用户偏好:用户喜欢的输出格式、语言、预算、工作习惯。
- 任务状态:当前任务完成到哪一步、哪些工具已经调用、下一步需要什么。
- 事件时间线:某个事实何时成立、何时失效、发生过哪些交互。
- 知识关系:人员、项目、组织、文件和业务实体之间的关系。
- 决策来源:Agent 为什么做出某个决定,引用了什么事实,是否能够回溯。
这 5 类数据对应的系统抽象并不一样。Mem0 更像可嵌入应用的记忆层,官方文档同时提供库模式和自托管服务模式;Letta 则把记忆放进状态化 Agent 的运行时;Graphiti 处理带时间属性的实体和关系;Semantica 当前文档强调上下文、决策、因果关系、来源和审计轨迹。(docs.mem0.ai)
向量记忆还是知识图谱,应该根据什么来选?
如果你的问题主要是“用户以前说过什么”,向量检索通常更容易开始;如果你的问题是“某个事实在什么时间有效、它和哪些实体相关、旧事实为何被替换”,知识图谱或时间关系图更合适。不要把二者简单理解成谁更先进,真正要看你的查询是否包含关系、时间和来源约束。
2026 Agent Memory 开源项目:按记忆指标区分四条路线
Mem0:轻量通用记忆层的优先候选
Mem0 的定位是给 LLM 应用和 Agent 提供通用记忆能力,而不是强制你采用某种完整 Agent 架构。官方开源文档明确提供两种运行方式:作为 Python 或 Node.js 库嵌入应用,或者通过服务端和控制面板进行自托管。其默认库配置包含本地 Qdrant 和 SQLite 历史存储,但生产环境可以替换模型、嵌入、向量库和重排器。(docs.mem0.ai)
因此,Mem0 适合以下情况:
- 现有 Agent 框架已经稳定,只缺少跨会话记忆;
- 你需要按用户、会话或业务空间组织记忆;
- 你希望先用向量记忆验证产品,再决定是否增加图结构;
- 你希望本地开发和生产部署采用相近的接口。
它的隐性成本也很明确:记忆抽取依赖模型判断,错误信息可能被写入;如果你只测试“能否召回”,却不测试冲突、删除和过期数据,生产后仍然可能出现 Agent 坚持错误偏好的情况。
Letta:把记忆视为 Agent 状态的一部分
Letta 的官方仓库仍明确标注“formerly MemGPT”,也就是它曾用名 MemGPT。与单独的记忆服务相比,Letta 的核心抽象是可持续运行的状态化 Agent,记忆块、工具调用、消息历史和 Agent 状态共同组成运行时。官方文档将其定位为构建 stateful agents 的平台,并提供开源 Agent harness。(github.com)
你可以优先考虑 Letta 的情况包括:
- Agent 需要跨多轮任务维持明确状态;
- Agent 会通过工具修改自己的记忆或工作上下文;
- 你不想把“记忆读取、状态更新、Agent 循环”拆成多个独立服务;
- 你愿意接受更强的运行时约束,以换取更完整的 Agent 生命周期管理。
Letta 不等于单纯的向量记忆库。它和 Zep 的区别也不只是“一个简单、一个复杂”:Letta 更关注 Agent 如何持续运行和管理自身状态,Zep 与 Graphiti 更关注外部事实、实体关系和时间变化如何组织与检索。
Zep 与 Graphiti:时间关系图路线
Zep 的开源边界必须单独说明:Graphiti 是由 Zep 发起并开源的 Context Graph 框架,而 Zep 产品本身还包含建立在 Graphiti 和专有引擎之上的托管能力,不能笼统地把 Zep 的全部功能称为开源。官方说明把 Graphiti 描述为可本地运行的框架,支持实体、关系、时间信息,以及向量、全文和图遍历结合的检索。(getzep.com)
Graphiti 官方列出的后端包括 Neo4j、FalkorDB 和 Amazon Neptune,并支持多种模型提供方;这意味着你需要把图数据库、嵌入模型、抽取模型和权限体系一起纳入部署评估,而不能只看 Python 包是否能安装。(getzep.com)
Zep 或 Graphiti 更适合:
- 客户、合同、项目、工单等实体关系会不断变化;
- 查询经常带有“截至某个时间点”的条件;
- 你需要保留旧事实,而不是简单覆盖原记忆;
- Agent 的答案必须解释事实来自哪里、什么时候有效。
Zep/Graphiti 和 Letta 的边界在哪里?
Zep/Graphiti 主要解决“事实和关系如何随时间组织、更新与查询”;Letta 主要解决“一个持续运行的 Agent 如何维护自身状态、记忆块和工具交互”。如果你要做客户知识网络,优先评估 Graphiti;如果你要做会持续执行任务的个人 Agent 或工作 Agent,优先评估 Letta。
Semantica:上下文图、决策和溯源优先
本文按 Semantica 当前官方文档中展示的上下文与决策能力进行比较。其文档将 AgentMemory 放在记忆和决策层中,并提供向量存储、记忆保留、删除、会话历史等能力;官方仓库则强调上下文图、因果推理、来源、冲突检测、决策记录和审计轨迹。(docs.getsemantica.ai)
Semantica 更适合这些项目:
- Agent 的答案需要关联决策记录和事实来源;
- 你要处理冲突信息,而不是只返回相似文本;
- 业务需要对上下文、因果关系或本体进行治理;
- 你愿意投入更多建模工作,换取更强的解释性。
它不一定是最适合所有团队的第一步。若你只是要记住“用户喜欢简洁回答”,一开始就引入上下文图、来源和决策层,可能会增加建模、测试和运维负担。
第二步:检查写入、更新、冲突和遗忘能力
生产环境不能只问“能不能搜到”。你还要验证记忆什么时候被写入、相同事实如何合并、旧信息如何失效,以及用户要求删除后是否真的从检索路径中消失。
Mem0 官方文档提供记忆写入、搜索、组件替换和评估入口;Semantica 的 AgentMemory 文档示例包含保留策略、最大记忆数量、删除单条记忆和清理指定会话历史等操作。需要注意的是,文档示例中的 10000 是接口参数示例,不应被当成所有部署的推荐容量。(docs.mem0.ai)
你可以用下面的验收问题替代模糊的“效果不错”:
- 同一用户先说“使用 Python”,后说“项目已改用 Rust”,系统是否能区分新旧事实?
- 用户要求删除某段偏好后,向量索引、关系索引、缓存和审计记录如何处理?
- Agent 误把猜测写成事实时,是否能标记置信度或来源?
- 同一记忆被多个 Agent 修改时,是否有版本、租户或主体隔离?
- 过期的合同、权限和项目状态是否会继续被召回?
经验提醒: 记忆删除不是数据库里的一个
DELETE就结束了。你必须同时检查原始记录、派生摘要、向量索引、图关系、缓存和导出文件,否则用户看到的只是“界面上删掉了”,Agent 仍可能从其他副本中召回。
第三步:核对本地部署的真实依赖
选择本地部署方案时,需要核对哪些条件?
四者都可以从不同程度的本地化路径开始,但“开源”不代表所有托管功能、控制面板和企业治理能力都能在本地完整复现。
- Mem0:官方文档提供库模式和自托管服务模式,并允许替换 LLM、嵌入、向量存储和重排器。
- Letta:官方仓库采用 Apache-2.0 许可证,并提供本地 CLI、SDK 与 Agent 服务路线;你仍需单独核对具体版本的数据库、模型和部署依赖。(github.com)
- Graphiti:官方说明强调框架可本地运行,但 Zep 托管产品的全部能力不应自动视为 Graphiti 的开源能力。
- Semantica:官方仓库和文档提供本地代码、AgentMemory、上下文和决策相关接口,但具体图数据库、模型服务及企业认证能力要按版本文档逐项验证。
自托管真正的成本通常来自 4 个地方:模型推理、嵌入生成、数据库运维和权限审计。若你将数据留在本地,却把记忆抽取或重排交给外部模型,数据控制边界仍然没有完全闭合。
在部署前,建议逐项勾选:
- [ ] 已核对项目许可证、当前主分支和最近版本状态;
- [ ] 已确认核心记忆能力是否位于开源仓库,而不是只存在托管产品;
- [ ] 已列出模型、嵌入、向量库、图数据库和关系数据库依赖;
- [ ] 已验证离线或内网模式下能否完成写入与检索;
- [ ] 已设计租户隔离、用户删除、数据导出和审计日志;
- [ ] 已用真实业务数据的脱敏副本完成迁移演练;
- [ ] 已为错误记忆、过期事实和冲突关系准备回滚方案。
如果团队还没有稳定的本地部署环境,可以先阅读 ZavCloud 帮助中心,确认远程开发环境的连接、权限和运维边界,再决定是自购设备、部署内网主机,还是租用临时测试环境。
第四步:用统一数据集公平验收
不同项目的官方演示数据、模型、提示词和后端都可能不同,所以不要直接拿宣传页面上的准确率、延迟或成本数字做横向排名。Graphiti 官方页面展示了其基准测试结果,但这些结果依赖特定数据集、模型、配置和方法;除非你完整复现条件,否则只能把它当作项目方披露的参考,不能当成你业务的保证。(getzep.com)
建议你准备同一份脱敏数据集,至少覆盖:
- 用户偏好新增与修改;
- 多次对话中的时间线事件;
- 同一实体的关系变化;
- 相互冲突的事实;
- 删除、撤回和权限变化;
- 多 Agent 共享与隔离;
- 需要返回来源的决策问题。
验收指标也要拆开记录:
- 写入正确性:该写入的记忆是否被识别,不该写入的闲聊是否被过滤;
- 检索正确性:答案是否引用了相关记忆,而不是只返回相似文本;
- 时间正确性:查询历史状态时,是否错误使用当前事实;
- 更新正确性:新事实是否替换或修正旧事实;
- 删除有效性:删除后的内容是否仍能从其他索引召回;
- 隔离正确性:不同用户、项目和 Agent 是否发生越权召回;
- 可解释性:是否能展示来源、版本、关系路径或决策依据。
第五步:按团队类型做最终选择
原型团队:先评估 Mem0
你需要快速验证“记忆是否能改善产品”,而不是先搭建完整知识图谱时,Mem0 通常是更稳妥的起点。备选方案是直接在应用内实现简化记忆,但这会把抽取、更新、删除和评估逻辑分散到业务代码中,后续迁移成本可能更高。
状态化 Agent 团队:优先看 Letta
如果 Agent 需要持续运行、维护工作记忆、调用工具并在多次任务之间保持状态,Letta 的抽象更贴近问题本身。备选方案是将现有 Agent 框架与独立记忆层组合,但你需要自行处理运行时状态、记忆写入时机和失败恢复。
知识图谱项目:评估 Graphiti/Zep 路线
如果核心查询依赖实体、关系和时间变化,Graphiti 比单纯向量记忆更值得测试。你需要特别确认图数据库依赖、关系更新策略、历史事实保留方式,以及你实际使用的是开源 Graphiti 还是 Zep 托管能力。
高治理项目:评估 Semantica
当项目必须追踪决策来源、冲突关系、上下文结构和审计轨迹时,Semantica 更值得进入候选名单。备选方案是 Mem0 或 Graphiti 加自建治理层,但治理逻辑会由你自己维护,测试范围和长期责任也会扩大。
无论你最终选择哪一个,都建议先选出两款候选,使用同一批脱敏数据进行双轨测试,再迁移生产数据。不要因为某个项目的 Star 数、演示视频或单项基准成绩较高,就跳过删除、冲突、权限和迁移验收。
当前方案与 Mac 开发环境的取舍
如果你现在把四种记忆方案直接跑在个人电脑或临时共享主机上,常见问题是模型与数据库依赖难以复现、长时间运行容易中断、多人共享时权限边界不清,而且图数据库和向量库的磁盘读写会影响其他开发任务。自建机器还需要你自己处理系统升级、远程访问、备份和故障恢复。
当你只是需要短期搭建 Mem0、Letta、Graphiti 或 Semantica 的测试环境,租用 ZavCloud 的 Mac 云环境通常比临时改造个人设备更容易保持配置一致,也方便你为两款候选方案建立独立测试节点。你可以先查看 ZavCloud 的 Mac 云租用方案,再结合 帮助中心的连接与使用说明 安排统一数据集测试;如果项目需要长期高负载运行、固定物理接口或完全内网隔离,直接采购并维护自有设备可能更合适。
选型的最后一步,不是立刻迁移全部记忆,而是为两款候选方案准备相同的数据集、相同的模型条件和相同的删除测试,然后把结果记录进你的 Agent 数据治理文档。只有当召回正确性、过期处理、权限隔离和故障恢复都通过验收,才值得把临时测试环境升级为生产记忆层。
ZavCloud Developer Infrastructure
用 ZavCloud 加速 Agent Memory 项目落地
通过 ZavCloud 远程租用云端 Mac,快速搭建 Agent Memory 的开发、测试与部署环境。
无需购置和维护实体设备,按需选择 Mac 资源与套餐,降低实验和长期运行成本。