MemMachine 评测:给 AI Agent 装上一套分层的长期记忆
Universal memory layer for AI Agents. It provides scalable, extensible, and interoperable memory storage and retrieval to streamline AI agent state management for next-generation autonomous systems.
秒懂
- 它是什么?
- MemMachine 是一个面向 AI Agent 的开源记忆层,用图数据库存对话历史、用 SQL 存用户画像。本文基于仓库文档和代码结构,梳理它的工作机制、集成方式与适用边界。
- 适合谁用?
- 适合正在构建跨会话 AI Agent、且愿意为记忆单独部署一个服务的团队。它把记忆从应用逻辑里抽出来,做成独立层,换来的是清晰的职责边界和多种框架的适配。
- 能商用吗?
- 可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 1 天前。
- 用什么语言写的?
- 主要是 Python(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决的是 Agent 的失忆问题
大多数聊天机器人是无状态的。每次会话结束,模型就忘了用户说过什么。MemMachine 想改变这一点,它把自己定位为 AI Agent 的长期记忆层。仓库文档里反复出现一个口号:别再造无状态 Agent,用五行代码给你的 AI 持久记忆。这个项目面向的是开发者、研究者和需要跨会话记忆的团队。它解决的痛点是具体的:用户偏好、历史对话、长期事实,这些数据不该每次重新问一遍。MemMachine 把记忆分成三类,episodic memory 存对话上下文,profile memory 存用户事实,working memory 管当前会话的短期信息。这种分层不是概念游戏,它对应不同的存储后端,也对应不同的查询方式。
图数据库与 SQL 的分工
MemMachine 的架构里,episodic memory 存在图数据库 Neo4j 中,profile memory 存在 SQL 里。这是一个值得注意的设计决策。对话历史天然是图结构,一个话题引出另一个话题,实体之间有复杂关联,用图存比用表存更自然。用户画像则是键值式的,名字、偏好、风险承受度,这些用 SQL 查询更直接。README 里的架构图显示,Agent 通过 REST API、Python SDK 或 MCP Server 连到 MemMachine,MemMachine 处理交互后把数据分流到两种存储。这意味着写入一条记忆时,系统要判断它属于哪一类,这背后应该有分类逻辑,但 README 没有展开说明。你可以看到的是,这种双存储设计让 MemMachine 在查询长程对话关联时比纯向量数据库更有优势,但代价是运维复杂度翻倍。
五行代码上手的实际路径
README 给出的快速开始很直接。先装客户端,pip install memmachine-client。然后初始化 MemMachineClient,指向一个运行中的服务地址,比如 http://localhost:8080。接着调用 get_or_create_project 拿到项目对象,再通过 project.memory 创建一个记忆实例,需要传入 group_id、agent_id、user_id 和 session_id 四个参数。之后就能用 memory.add 写入一条记忆,比如用户喜欢过道座位,附带 metadata。搜索时调用 memory.search,传入自然语言问题,返回结果里包含 episodic_memory 的 long_term_memory 片段。注意一个前提,README 明确写了,这段代码需要一个运行中的 MemMachine Server。也就是说,你光装客户端不够,还得自己启动服务端,或者用官方的托管平台。这个细节容易被人忽略,实际部署时它不是纯客户端库。
集成矩阵背后的生态策略
MemMachine 没有只做自己的 SDK,它给 LangChain、LangGraph、CrewAI、LlamaIndex 都写了集成。甚至还有 AWS Strands Agent SDK、n8n、Dify、FastGPT。这个列表很长,覆盖了主流 Agent 框架和低代码平台。对开发者来说,这意味着你不用重写业务逻辑,只要把 MemMachine 作为 memory provider 接进去。LangChain 的集成是把它当作记忆提供者,LangGraph 则利用它的有状态记忆来管理工作流。CrewAI 的多 Agent 系统可以用它做持久记忆。这种矩阵式集成是务实的选择,因为记忆层本身不产生价值,它要嵌入到具体的 Agent 框架里才有用。但也要看到,集成多了维护成本就高,每个框架的版本更新都可能带来兼容问题。README 没有说明这些集成的维护状态,你只能假设它们与主版本同步。
MCP 支持让非 Python 场景也能接入
除了 SDK,MemMachine 还带了一个原生的 MCP Server。MCP 是 Model Context Protocol 的缩写,它让 Claude Desktop、Cursor 这类客户端能直接调用记忆功能。README 给出了两种启动方式,stdio 模式给桌面客户端用,命令是 memmachine-mcp-stdio,HTTP 模式给 Web 客户端用,命令是 memmachine-mcp-http。这意味着你不需要写 Python 代码,只要配置好 MCP 客户端,就能让 Claude 或其他工具读写记忆。对非 Python 技术栈的团队,这是一个低门槛入口。但 MCP 还在快速演进,协议本身可能变化,MemMachine 对 MCP 的封装是否跟得上,需要看后续版本。README 只说支持,没给版本兼容细节。
存储层选型带来的真实代价
MemMachine 把 episodic memory 放在 Neo4j 里,这是它的核心卖点,也是最重的依赖。Neo4j 是独立的图数据库,需要单独部署、调优、备份。对于一个小团队或个人开发者,这可能是过度设计。如果你的 Agent 只是记录用户偏好,用 SQLite 或 Redis 就够了。但如果你想做深层的对话关联分析,比如用户三个月前提到过某个项目,现在又聊到它,图数据库能让你沿着关系链回溯,这是其他存储做不到的。另外,README 里提到 profile memory 存在 SQL,但没有说明具体是哪种 SQL,是 PostgreSQL 还是 MySQL,这会影响你的运维准备。文档里也没提数据迁移和版本升级策略,对于一个 2026 年还在活跃发布、版本号到 v0.3.9 的项目,API 可能还没稳定,升级时接口变动是你要承担的隐性成本。
与纯向量记忆方案的差异
市面上很多 Agent 记忆方案用向量数据库,把文本嵌入后做相似度搜索。MemMachine 的路线不同,它用图数据库存对话结构,用 SQL 存事实。这意味着它的搜索不是纯语义相似度,而是结合了结构化查询。你搜我的航班偏好时,返回的不只是语义上相近的文本,而是能从图里定位到具体的偏好节点。这个差异在需要精确回忆场景时很重要。比如用户问,我上次去东京住哪家酒店,向量搜索可能给出泛泛的旅行建议,图数据库则能直接关联到那次对话的实体。但代价是,MemMachine 需要你定义清楚 group_id、agent_id 这些维度,数据建模的功夫省不掉。向量方案上手快,但回忆精度往往不如结构化存储。选哪个,取决于你的 Agent 是偏闲聊还是偏任务执行。
开源协议与部署模式的现实考量
MemMachine 采用 Apache-2.0 许可证,这对商业使用友好,你可以自由修改和分发,只要保留版权声明。它提供两种部署方式,自托管和官方云平台,README 里提到可以本地跑、用 Docker,或者用托管服务。自托管意味着你要自己处理 Neo4j 和 SQL 服务的运维,云平台则省事但要考虑数据隐私和成本。仓库的 topics 里有 agents-sdk、knowledge-graph 这些标签,说明它把自己定位为 Agent 基础设施的一部分。但要注意,README 里没有给出任何性能数据或基准测试,也没有说明大规模用户下的内存占用。对于一个记忆层,查询延迟是关键指标,文档里没提,你只能自己测。版本号还在 v0.3.x,按语义化版本规则,0.x 阶段 API 可能随时变,生产环境采用前需要锁定版本并做好回归测试。
编辑结论
适合正在构建跨会话 AI Agent、且愿意为记忆单独部署一个服务的团队。它把记忆从应用逻辑里抽出来,做成独立层,换来的是清晰的职责边界和多种框架的适配。不适合只想在单次会话里加一点上下文的项目,引入 Neo4j 和独立服务对这类需求是负担。采用前先验证三件事:一是你的 LLM 调用链路能否接受额外的网络往返,二是图数据库的运维成本是否在团队能力内,三是免费版或自托管方案的存储上限是否满足你的用户规模。MemMachine 的定位是记忆基础设施,不是即插即用的插件,选它意味着你要接受它作为独立服务的运维现实。
社区笔记