模型 / 数据集
MemPalace/mempalace avatar
MemPalace/mempalace

MemPalace:把对话原文存进本地,用语义检索解决 AI 记忆丢失

最佳基准的开源人工智能存储系统。而且它是免费的。

59,079 个 Star7,557 个 ForkPythonMIT

秒懂

它是什么?
MemPalace 是一个本地优先的 AI 记忆系统,用翼、房间和抽屉三层结构组织对话原文,并宣称在 LongMemEval 上达到 96.6% R@5。本文从安装、架构到局限,评估它是否值得接入你的工作流。
适合谁用?
MemPalace 适合那些对对话隐私敏感、希望保留原文而非摘要、并且愿意花时间配置 MCP 和 Docker 的开发者。它不适合追求零配置、需要跨设备云同步或依赖 Android 原生运行的用户。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题,谁需要它

ChatGPT、Claude 这类工具每次会话都是孤岛,上下文窗口一关,之前的讨论就丢了。MemPalace 把对话历史以原文形式存到本地,再用语义搜索把相关片段捞回来。它不做摘要、不提取、不转述,只存原话。这对那些需要精确引用过去决策、不想让 AI 基于二手摘要做判断的人有用,比如写代码时回顾架构讨论、做研究时追踪思路演变。目标用户是本地优先的开发者,尤其是用 Claude Code 这类编程代理的人,他们希望代理能记住项目上下文,又不愿意把数据交给云端。

翼、房间、抽屉:不是扁平索引

大多数记忆系统把文本切成块,塞进一个向量数据库,检索时对整个语料做相似度搜索。MemPalace 的结构化索引是它的特色。人和项目成为翼,主题成为房间,原文内容放在抽屉里。搜索时可以先限定范围,而不是对着一个平面语料库搜索。这意味着你可以说“只查这个项目的房间”,而不是让模型在几万条记录里碰运气。这个设计在 README 里有明确描述,但文档没有给出具体的数据结构或查询语法,所以实际效果需要自己跑一遍才知道。它至少比无结构索引多了可解释性,代价是概念上要理解翼、房间、抽屉的层级关系。

安装:从技能到 CLI 的三种路径

README 提供了三种安装方式。最省事的是通过 agent-guided 方式:先安装技能,然后让编码代理帮你完成系统检测、Python 包安装和 MCP 配置。命令是 `npx skills add MemPalace/mempalace`,仓库暴露了三个技能:`mempalace` 负责引导安装和操作,`mempalace-recall` 用于搜索前置召回,`mempalace-task` 用于日志流委托。注意,安装技能并不会自动装 CLI 或 MCP 服务器,它只是引导代理去执行那些系统更改。直接装 CLI 的话,推荐用 `uv tool install mempalace`,它会创建隔离环境,避免 Debian/Ubuntu 上 PEP 668 的报错,也和全局 site-packages 里的 chromadb、numpy、grpcio 不冲突。初始化用 `mempalace init ~/projects/myapp`。如果你需要 `import mempalace`,那就得在虚拟环境里用 `pip install mempalace`。

Docker 运行:权限和路径是主要的坑

Docker 镜像支持 amd64 和 arm64,可以直接拉取 `ghcr.io/mempalace/mempalace:latest`。数据都持久化在 `/data` 下,包括 palace、配置和缓存的嵌入模型,所以必须挂载一个卷。MCP 服务器用 stdio 方式运行,注意 `-i` 标志是必需的,因为 JSON-RPC 需要 stdin。挂载目录时有个 Linux 特有的坑:镜像以 uid 1000 运行,而 bind mount 保留宿主机的所有权,所以挂载的目录必须能被 uid 1000 读取。普通 0755 权限的 checkout 没问题,但 0700 的目录会报 `PermissionError: [Errno 13]`,而且这个错误不会提示 Docker 相关。README 明确警告不要用 `--user` 绕过,因为 `/data` 在镜像内属于 uid 1000,换 uid 就写不进 palace。macOS 和 Windows 的 Docker Desktop 会自动映射 uid,所以只有 Linux 用户会遇到。

首次运行的网络依赖和模型缓存

第一次执行需要嵌入模型的命令时,会下载模型到 `/data`。默认的 `minilm` 大约 80 MB,`embeddinggemma` 大约 300 MB。只要卷持久化,这是一次性的,但首次调用会慢,而且需要网络。这一点很容易被误判成容器挂起,README 专门提醒了。如果你在离线环境或网络受限的地方运行,第一次启动可能会卡住,这不是程序 bug,而是模型下载。另外,GPU 镜像只支持 x86_64,因为 `onnxruntime-gpu` 没有 aarch64 的 Linux wheel,所以在 Apple Silicon 上构建 `Dockerfile.gpu` 会报依赖解析错误,而不是一个明确的提示。

局限:Termux 不支持,Claude Code 会话会过期

MemPalace 不是万能的。Android 上的 Termux 原生安装目前不支持,因为 ChromaDB 和 ONNX Runtime 只发布 Linux wheel,没有 Android wheel。ARM64 用户只能跑 Debian PRoot 容器,这增加了复杂度。更关键的是 README 里的一条重要提示:Claude Code 会话在 30 天后会过期,除非你接好自动保存钩子。这意味着如果你只是装了 MemPalace 而不配置 retention 钩子,记忆会在一个月后失效。这不是 MemPalace 本身的缺陷,而是 Claude Code 的会话机制,但 MemPalace 需要主动适配。官方提供了最短恢复路径的清单,但你需要去 discussion 1388 看细节。如果你指望装完就能永久记忆,这个 30 天的窗口会打你一个措手不及。

替代方案:Mem0 与向量数据库的对比

MemPalace 的替代品之一是 Mem0,它走的是不同的路线。Mem0 默认使用提取式记忆,从对话中抽取实体和关系,存成结构化摘要,然后注入到上下文中。MemPalace 则是 verbatim 存储,保留原始文本,用语义搜索召回。两者最大的区别在于:Mem0 适合需要紧凑、可操作记忆的场景,比如让代理记住用户偏好;MemPalace 适合需要逐字引用的场景,比如法律、研究或代码审查。另一个对比是直接用 ChromaDB 自己搭,MemPalace 的默认后端就是 ChromaDB,但自己搭意味着你要自己处理分块、索引层级和 MCP 集成。MemPalace 的价值在于它把这三层都封装好了,还提供了技能。但如果你只需要一个简单的向量存储,自己写可能更轻。

维护与升级:MIT 许可,但要注意仿冒站点

MemPalace 使用 MIT 许可,这意味着你可以自由修改和商用,没有 copyleft 义务。项目最近的发布节奏是 8 月连发三个版本,包括 v3.8.0 的快速大宫殿、轻量 MCP 代理和可唤醒代理,说明维护活跃。但 README 里有一条醒目的警告:存在仿冒网站,唯一官方来源是 GitHub 仓库、PyPI 包和 mempalaceofficial.com。其他域名,包括 .tech、.net 或其他 .com 变体,都可能是恶意分发。这提醒你在安装时要检查包的来源,尤其是用 `pip install` 时,确认是 `mempalace` 而不是拼写相似的包。升级方面,由于是 Python 包,`uv tool upgrade mempalace` 应该能更新,但 README 没有明确写升级命令。另外,默认分支是 `develop`,如果你从源码构建,要注意你 checkout 的是开发分支,生产环境最好用发布的镜像或 PyPI 版本。

编辑结论

MemPalace 适合那些对对话隐私敏感、希望保留原文而非摘要、并且愿意花时间配置 MCP 和 Docker 的开发者。它不适合追求零配置、需要跨设备云同步或依赖 Android 原生运行的用户。在采用前,先验证三件事:确认你访问的是官方 GitHub 仓库而非仿冒站点;检查你的 Linux 挂载目录权限是否允许 uid 1000 读取,否则会遇到 PermissionError;首次运行需要网络下载约 80 MB 的模型,别把它误判为容器挂起。如果你能接受这些边界,MemPalace 的 verbatim 存储和可插拔后端值得一试。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记