OpenMemory 认知记忆引擎
为 LLM 与 AI 智能体提供真实长期记忆的自托管认知记忆引擎,本地优先,支持 Python 与 Node。
证据显示:README 强调本地优先、自托管,但未提供权限模型细节;MCP 测试显示租户隔离,但未提及用户确认机制;数据流透明度部分,README 提到可解释痕迹,但未详细说明数据流向;敏感数据处理方面,SECURITY.md 建议避免存储敏感个人信息,但未提供加密等具体措施;依赖安全方面,SECURITY.md 建议定期更新和扫描,但未提供具体依赖清单或漏洞扫描结果;外部影响方面,连接器需要令牌,但未说明权限范围;回滚方面,未提及任何回滚机制;来源归属方面,README 和 LICENSE 提供了版权和贡献者信息,但发布者未验证。扣分原因:缺乏用户确认、回滚机制,权限模型不明确,依赖安全措施仅为建议。
证据显示:README 和测试文件在功能描述上基本一致,但 README 提到项目正在重写,可能引入不一致;依赖可用性方面,README 提供了 PyPI 和 npm 包,但未提供版本兼容性说明;失败消息方面,测试中显示了错误处理,但未提供用户友好的错误消息。扣分原因:项目重写状态可能导致不一致,依赖可用性未充分说明,失败消息未详细描述。
证据显示:README 明确了目标受众(LLM 应用开发者)和多种使用场景(SDK、服务器、MCP);能力边界方面,README 列出了功能,但未明确限制;触发精度方面,MCP 工具名称明确,但未说明触发条件;环境适配方面,支持多种部署方式(本地、Docker、云),但未提供详细配置说明。扣分原因:能力边界和触发精度描述不足。
证据显示:README 结构清晰,包含安装、使用、架构等章节;安装说明提供了 pip 和 npm 命令;命名稳定性方面,包名和工具名在 README 中一致,但项目处于重写状态,可能变化;示例和 FAQ 方面,README 提供了多个示例,但无 FAQ;已知限制方面,README 提到项目正在重写,但未列出其他限制;许可证为 Apache-2.0,但版权年份为 2025;版本变更日志缺失;维护责任方面,README 提供了贡献指南,但未明确维护者。扣分原因:缺少 FAQ、版本变更日志,已知限制不全面。
证据显示:输出可用性方面,README 提供了清晰的 API 示例和 MCP 工具;边际价值方面,与 RAG 对比,强调独特功能;成本效益方面,本地优先、自托管,降低云成本。扣分原因:未提供性能基准或实际使用案例。
证据显示:README 中的功能声明部分有测试支持(如 MCP 租户隔离测试),但未提供所有声明的测试;跨来源验证方面,测试文件与 README 部分一致,但未提供外部验证;事实与推断分离方面,README 区分了功能描述和架构图,但未明确标注哪些是推断。扣分原因:测试覆盖不全面,缺乏外部验证。
- 项目处于重写状态,存在破坏性变更和潜在 bug,生产使用需谨慎。
- 发布者身份未验证,依赖安全措施仅为建议,未提供具体漏洞扫描结果。
- 缺少用户确认和回滚机制,权限模型不明确,敏感数据处理缺乏具体加密措施。
这个 Agent 能做什么,适合哪些场景?
OpenMemory 是一个自托管的认知记忆引擎,为 LLM 与 AI 智能体提供真实的长期记忆,而非简单的 RAG 或向量数据库。它采用多区块记忆(情景、语义、程序、情感、反思)与时间知识图谱,支持复合评分、衰减机制和可解释的召回轨迹。项目提供 Python 与 Node SDK、独立服务器、MCP 服务器、CLI 工具以及 VS Code 扩展,支持从 GitHub、Notion、Google Drive 等数据源导入。当前项目处于重写阶段,可能包含破坏性变更。
OpenMemory 为 LLM 应用提供持久化记忆存储。它通过 Memory 类提供 add、search、delete 等异步方法,并支持按用户 ID 区分记忆。内置多区块记忆分类器、时间知识图谱(记录事实的有效期),以及复合评分(结合显著性、新近度和共激活)。更提供 opm CLI 命令、MCP 服务器(通过 HTTP 暴露 /mcp 端点)与 LangChain、CrewAI、AutoGen、Streamlit 等集成。可从 GitHub 等外部源摄取数据。
- 构建聊天机器人的开发者:需要让 ChatGPT 风格的助手记住用户偏好,如 '用户喜欢深色模式'。
- 使用 LangChain 的工程师:希望在对话链中无缝集成持久记忆,不需要额外部署。
- 需要多用户记忆的组织:通过后端服务器为每个用户隔离记忆,并提供仪表盘。
- 使用 Claude Code 或 Cursor 的开发者:通过 MCP 服务器让 IDE 助手查询和存储代码相关记忆。
- 构建个人知识系统的用户:从 Notion、Google Drive 导入数据,并利用时间查询追溯事实变化。
这个 Agent 有哪些优点和局限?
- 多区块记忆分类,超越简单向量检索,理解事实、事件、偏好等。
- 时间知识图谱支持'何时为真'的查询,自动关闭过期事实。
- 自托管、本地优先,可选择 SQLite 或 Postgres,避免供应商锁定。
- 提供可解释的召回轨迹,显示哪些节点被召回及原因。
- 支持多种嵌入提供方(OpenAI、Gemini、Ollama等)和合成回退。
- 项目正处于重写阶段,存在破坏性变更和潜在 bug。
- 部署需要配置多个组件(Python/Node 环境、Docker、后端服务器),相对复杂。
- 暂时缺少对部分平台(如 ChatGPT 原生集成)的明确支持,仅通过 OpenAI API 适配。
- 部分功能(如迁移工具)仅支持特定来源(Mem0、Zep、Supermemory),可能无法覆盖所有现有系统。
- 需要自行管理安全和数据隐私,虽然提供自托管,但加密功能在路线图中尚未实现。
如何安装或部署这个 Agent?
Python SDK: pip install openmemory-py。Node SDK: npm install openmemory-js。后端服务器: git clone https://github.com/CaviraOSS/OpenMemory.git; cd OpenMemory; cp .env.example .env; cd packages/openmemory-js; npm install; npm run dev。Docker 部署: docker compose up --build -d,可选 UI profile:docker compose --profile ui up --build -d。
如何使用这个 Agent?
Python: from openmemory.client import Memory; mem = Memory(); await mem.add("user prefers dark mode", user_id="u1"); results = await mem.search("preferences", user_id="u1")。Node: const { Memory } = require("openmemory-js"); const mem = new Memory(); await mem.add("user likes spicy food", { user_id: "u1" }); const results = await mem.search("food?", { user_id: "u1" })。CLI: opm serve 启动服务器,然后 opm add "user prefers dark mode" --user u1 --tags prefs 添加记忆,opm query "preferences" --user u1 查询。
这个 Agent 与同类方案有什么区别?
与 Mem0、Zep、Supermemory 等记忆系统相比,OpenMemory 强调多区块记忆和可解释性,而不仅仅是向量检索。代码示例显示其与 LangChain 和 Pinecone 的差异,OpenMemory 提供了更轻量的本地优先方案。