OpenMemory 认知记忆引擎
为 LLM 与 AI 智能体提供真实长期记忆的自托管认知记忆引擎,本地优先,支持 Python 与 Node。
- Star 数
- ★ 4.5k
- 最近更新
- 今天
- License
- Apache-2.0
- 主语言
- TypeScript
- FA 评分
- 41/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Claude Code · OpenAI API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 构建聊天机器人的开发者:需要让 ChatGPT 风格的助手记住用户偏好,如 '用户喜欢深色模式'。
- 不适合
- 希望开箱即用、不想自行部署服务与数据库的个人用户
- 依赖 ChatGPT 等托管平台原生记忆、不愿自建服务的团队
这个 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?
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 有哪些优点和局限?
- 多区块记忆分类,超越简单向量检索,理解事实、事件、偏好等。
- 时间知识图谱支持'何时为真'的查询,自动关闭过期事实。
- 自托管、本地优先,可选择 SQLite 或 Postgres,避免供应商锁定。
- 提供可解释的召回轨迹,显示哪些节点被召回及原因。
- 支持多种嵌入提供方(OpenAI、Gemini、Ollama等)和合成回退。
- 项目正处于重写阶段,存在破坏性变更和潜在 bug。
- 部署需要配置多个组件(Python/Node 环境、Docker、后端服务器),相对复杂。
- 暂时缺少对部分平台(如 ChatGPT 原生集成)的明确支持,仅通过 OpenAI API 适配。
- 部分功能(如迁移工具)仅支持特定来源(Mem0、Zep、Supermemory),可能无法覆盖所有现有系统。
- 需要自行管理安全和数据隐私,虽然提供自托管,但加密功能在路线图中尚未实现。
这个 Agent 与同类方案有什么区别?
与 Mem0、Zep、Supermemory 等记忆系统相比,OpenMemory 强调多区块记忆和可解释性,而不仅仅是向量检索。代码示例显示其与 LangChain 和 Pinecone 的差异,OpenMemory 提供了更轻量的本地优先方案。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| OpenMemory 认知记忆引擎 当前 | 41 · 缺口较多 | 代码库 / SDK免费 + 模型费 | ★ 4.5k | 今天 | TypeScript | Claude Code · OpenAI API |
| Remnic 智能体记忆 | 85 · 表现良好 | 命令行工具免费 + 模型费 | ★ 227 | 3 天前 | TypeScript | ChatGPT · Codex · Claude Code · OpenAI API |
| Remembra Relay | 72 · 存在缺口 | Agent 插件 / 技能免费版 + 付费版 | ★ 16 | 7 天前 | Python | Claude Code |
| TeleMem:面向智能体 AI 的长期与多模态记忆层 | 57 · 缺口较多 | 代码库 / SDK免费 + 模型费 | ★ 494 | 6 天前 | Python | OpenAI API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示: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 区分了功能描述和架构图,但未明确标注哪些是推断。扣分原因:测试覆盖不全面,缺乏外部验证。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 项目处于重写状态,存在破坏性变更和潜在 bug,生产使用需谨慎。
- 发布者身份未验证,依赖安全措施仅为建议,未提供具体漏洞扫描结果。
- 缺少用户确认和回滚机制,权限模型不明确,敏感数据处理缺乏具体加密措施。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
v1.3.0 Beta v1.3.0
发布说明摘录
Changelog api simplification - python sdk: simplified to zero-config Memory() api matching javascript - from openmemory.client import Memory → mem = Memory() - works out of the box with sensible defaults (in-memory sqlite, fast tier, synthetic embeddings) - optional configuration via environment variables or constructor - breaking change: moved from OpenMemory class to Memory class benchmark suite rewrite - implemented comprehensive benchmark suite in temp/benchmarks/ - typescript-based using tsx for execution …在 GitHub 查看 ↗ -
发布说明摘录
1.2.3 - 2025-12-14 Added - Temporal Filtering: Enables precise time-based memory retrieval - Added startTime and endTime filters to query method across Backend, JS SDK, and Python SDK. - Allows filtering memories by creation time range. - Fully integrated into hsg_query logic. Fixed - JavaScript SDK Types: Fixed IngestURLResult import error and v.v property access bug in VectorStore integration. - Python SDK Filtering: Fixed missing implementation of user_id and temporal filters in hsg_query loop. What's Changed …在 GitHub 查看 ↗ -
发布说明摘录
Fixed - MCP Server Path Resolution: Fixed ENOENT error in stdio mode (Claude Desktop) - Enforced absolute path resolution for SQLite database - Ensures correct data directory creation regardless of working directory - Critical fix for local desktop client integration - VectorStore Refactor: Fixed build regressions in backend - Migrated deprecated q vector operations to VectorStore interface - Fixed users.ts, memory.ts, graph.ts, mcp.ts, and decay.ts - Removed partial SQL updates in favor of unified vector store methods Added …在 GitHub 查看 ↗