过去 30 天,一个开源项目悄悄冲到了 54,325 个 GitHub stars,然后丢出了 AI 记忆领域最让人不舒服的基准测试结果:在 LongMemEval 上达到 96.6% 召回率——用的是原始逐字文本加上 ChromaDB 的默认 embedding,零 LLM 调用、零 API key、零查询成本。所有竞品都用 LLM 来提取"事实"并丢掉其余内容,而 MemPalace 只存储你的原始文字,让语义搜索去做剩下的工作。它还是 MCP 原生,自带四种可插拔存储后端,在开发者的笔记本上完全离线运行。大多数团队搭好向量库就管它叫"记忆系统",而下面这五个隐藏用法,会把 MemPalace 从一个"搜索工具"变成你的 Agent 一直缺失的持久化基础层。
核心数据,已于 2026-06-07 验证:
- GitHub:54,325 stars,1,800+ Forks,Python 3.9+,MIT 协议
- 基准测试:LongMemEval 上 96.6% raw R@5(500/500 可复现),450 题留出测试集上 98.4% Hybrid 分数
- HN 讨论:发布主帖 67 分、17 条评论(编号 47672792,2026-04-07)
为什么这件事在 2026 年很重要
"记忆层"已经成为生产级 AI Agent 上最重的一笔税。每个团队都在用同一套模式:向量库 + 一个定时任务重新总结昨天的日志 + 一个 LLM 在丢弃对话背景的情况下臆造出"用户偏好 PostgreSQL"。MemPalace 直接对底层假设开刀。它的核心论点——由基准测试验证、不是营销话术——是带好 embedding 的逐字存储,跑赢 LLM 抽取的事实,因为信息丢失就发生在 LLM 抽取这一步。完整的演进过程、开发方法论,以及 450 题的留出测试集审计,都写在仓库的 benchmarks/BENCHMARKS.md 里。
结果就是一个你的 Agent 可以在 Docker 容器里跑的记忆系统,通过 MCP 接入 Claude Code,5 行 JSON 就能跑起来——不用每月烧 200 美元做抽取调用。下面这五个隐藏用法,覆盖的是 README 埋在最底部、文档里只一笔带过的能力。
隐藏用法 #1:Hybrid v4 重排序——一个 flag 把 96.6% 拉到 98.4%
大多数人的做法: 跑一次 mempalace mine ~/projects/myapp,再调 mempalace search "why GraphQL",然后上线。他们拿到了 96.6% 的原始分数,就以为那是天花板。
隐藏技巧: MemPalace 有一个四阶段混合检索流水线(Hybrid v4),加上了关键词加权、时间临近加权和偏好模式抽取——在 450 道未见过的题上拿到的留出测试分数是98.4% R@5,整个过程没有 LLM。你不用装任何新东西,只传一个 flag。
# 隐藏用法:一个 CLI flag 把原始 96.6% 拉到留出测试 98.4%
# 来源:mempalace/cli.py + benchmarks/BENCHMARKS.md(留出 450 题)
import subprocess
# 用混合流水线重新 mine(不需要 LLM)
subprocess.run([
"mempalace", "mine", "~/projects/myapp",
"--mode", "hybrid_v4", # 加上关键词 + 时间 + 偏好加权
"--backend", "chroma", # 默认;也可以 "sqlite_exact" 做校验
], check=True)
# 留出 450 题:98.4% R@5,$0 / 查询
# 完整 500 题 + LLM rerank:100%(Haiku 约 $0.001 / 次,Sonnet 约 $0.003 / 次)
效果: 在最常被引用的 AI 记忆基准上拿到 1.8 个百分点的召回率提升,CLI 不变、ChromaDB 后端不变。仓库自己的 BENCHMARKS.md 在边界上反常地诚实——他们明确把 100% 的"hybrid + LLM rerank"标成内部数字,因为最后那 0.6% 来自人工审查了 3 道具体的错题(针对测试调优)。无 LLM 路径上,98.4% 才是那个诚实的可泛化数字。
数据来源: 2026-06-07 通过直接调用 GitHub API 核对 MemPalace/mempalace(54,325 stars,pushed 2026-06-06)。基准测试数字与 main 分支 benchmarks/BENCHMARKS.md 交叉核对。
隐藏用法 #2:可插拔后端——不改代码把 ChromaDB 换成 Qdrant 或 pgvector
大多数人的做法: 把 README 里那句"ChromaDB"当成硬依赖。他们 pip install mempalace,然后接受 300 MB 的 embedding 模型占用、进程内的 server,以及没有水平扩展能力的现实。
隐藏技巧: MemPalace 自带一个可插拔后端接口,定义在 mempalace/backends/base.py 里,目前提供四种实现:chroma(默认)、sqlite_exact(本地精确向量校验)、qdrant(REST)、pgvector(Postgres/JSONB)。那两个外部后端的存在,就是为了"在不同底座上跑存储契约,让接口不是被某个供应商偶然塑形出来的"。
# 隐藏用法:换后端不改应用代码
# 来源:mempalace/cli.py + mempalace/backends/base.py
# 本地精确匹配校验后端(适合测试 + CI)
mempalace mine ~/projects/myapp --backend sqlite_exact
# 用 Qdrant 横向扩展
export MEMPALACE_QDRANT_URL=http://localhost:6333
mempalace mine ~/projects/myapp --backend qdrant
# 生产用 Postgres + pgvector
mempalace mine ~/projects/myapp --backend pgvector
# 从环境变量读 postgresql://localhost:5432/...
效果: 同一个 palace、同一个搜索索引、同一个 MCP server,可以跑在四种完全不同的存储底座上。Qdrant 和 pgvector 是可选启用的(运行时通过环境变量接入),但它们就装在默认安装里——没有"企业版"包。对一个跑多 Agent 集群的团队来说,这意味着开发机用 ChromaDB、CI 用 sqlite_exact(确定性)、Staging 用 Qdrant、生产用 pgvector——应用代码完全一样。
数据来源: mempalace/cli.py(default 分支,定义 _EXPLICIT_BACKEND_ENV 和四个后端名的位置)。README 的"Storage backends"小节。2026-06-07 通过 GitHub Contents API 读取 mempalace/backends/ 目录验证。
隐藏用法 #3:Claude Code 自动保存 Hook——撑过上下文压缩
大多数人的做法: 信任 Agent 自带的上下文窗口,认定"记忆"就是模型能在 prompt 里看到的那些东西,然后每开一个新会话都从头把项目再讲一遍。
隐藏技巧: MemPalace 自带两个 Claude Code hook(Stop 之前 + 压缩之前),在上下文窗口被截断之前,把对话逐字存进你的 palace。README 里直接指向那份 30 天保留设置的官方清单,而仓库 issue #1388 正在喊这个生态里最响的警告:"Claude Code 会话如果不挂自动保存 hook,30 天就过期。"
// 隐藏用法:挂上两个 Claude Code hook,让会话撑过压缩
// 来源:mempalaceofficial.com/guide/hooks + 仓库文档
{
"hooks": {
"Stop": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "mempalace sweep ~/.claude/projects/ --mode convos"
}]
}],
"PreCompact": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "mempalace sweep ~/.claude/projects/ --mode convos --wing current"
}]
}]
}
}
效果: 在 Claude Code 压缩上下文窗口或回收会话之前,你的会话转录就已经被归档为每个用户/助手消息一个逐字抽屉——幂等、可断点续传——落盘。配套命令 mempalace mine ~/.claude/projects/ --mode convos 是一次性回填命令,对存量 JSONL 转录文件同样有效——哪怕你今天才听说 hook,也照样能把过去 30 天的内容捞回来。想要在文件级 chunk 之上再做按消息级别的检索,周期跑 mempalace sweep <transcript-dir> 即可。
数据来源: README 的"Auto-save hooks"小节,外链到 mempalaceofficial.com/guide/hooks。GitHub Discussion #1388("Claude Code sessions expire in 30 days without auto-save hooks wired"),2026-06-07 在线核对。
隐藏用法 #4:stdio 上的 MCP Server——五行 JSON,所有 Agent 通吃
大多数人的做法: 单独搭一个向量库,在 Agent 的 prompt 里写一个自定义的检索函数,把索引名硬编码进去,语料一改 Agent 就得重发一次。
隐藏技巧: MemPalace 自带一个完整的 MCP server,把 palace 操作、跨 wing 导航、抽屉管理、Agent 日记全部暴露成可发现的工具。官方容器镜像走 stdio 协议,所以 Claude Code、Codex CLI、Cursor、Gemini CLI 以及任何兼容 MCP 的客户端,只要五行配置就能接上。agents 概念尤其干净:你舰队里的每个专家 Agent 都有自己独立的 wing 和日记,运行时通过 mempalace_list_agents 发现——不污染你的系统 prompt。
// 隐藏用法:用官方容器跑 MCP server
// 来源:README 的 "Docker" 小节
{
"mcpServers": {
"mempalace": {
"command": "docker",
"args": ["run", "-i", "--rm", "-v", "mempalace-data:/data", "mempalace"]
}
}
}
// 想用 GPU 加速 embedding,换成 GPU 镜像:
// docker build -f Dockerfile.gpu -t mempalace:gpu .
// 并在 run 命令里加 "--gpus all"。
效果: 你舰队里的每一个 Agent 都拿到同一份记忆底座、同一套 embedding、同一组可查询工具。docker compose run --rm mcp 这个变体在 docker-compose.yml 里写好了,偏好 Compose 而不是裸 docker run 的团队可以直接用。官方镜像自带 extract 和 spellcheck 额外包;想要 PDF/DOCX/PPTX 抽取功能,编译时用 docker build --build-arg EXTRAS="extract,spellcheck" -t mempalace . 定制即可。
数据来源: README 的"Docker"和"MCP server"小节,加上 mempalaceofficial.com/reference/mcp-tools 上的 MCP 工具参考。96.6% 原始分数的 100% 可复现性(无 API key)让"完全离线跑 MCP"这件事站得住脚——你不需要云账号就能把 server 跑起来。
隐藏用法 #5:三种摄取模式——代码、对话、二进制 Office 文档
大多数人的做法: 以为"记忆"就是"把我的代码做 embedding"。他们跑 mempalace mine ~/projects/myapp,拿到代码级召回,然后停手。
隐藏技巧: CLI 提供三种一等公民摄取模式,共用同一个 palace、同一个搜索索引、同一个检索层——但用的是完全不同的解析器和切块策略。完整功能面如下:
# 隐藏用法:三种摄取模式,一个搜索索引
# 来源:mempalace/cli.py 模块 docstring
mempalace mine ~/projects/my_app # 代码、文档、笔记(默认)
mempalace mine ~/.claude/projects/-Users-you-Projects-my_app \
--mode convos --wing my_app # Claude/ChatGPT/Slack 导出
mempalace mine ~/Documents/quarterly-reports \
--mode extract --wing finance # PDF/DOCX/PPTX/XLSX/RTF/EPUB
# 需要:pip install "mempalace[extract]"
# 三种内容用同一条查询去搜
mempalace search "pricing discussion" --wing my_app --room costs
效果: 一座 palace 装下你的源代码、Agent 对话历史、二进制 Office 文档。--mode convos 标志认得 Claude Code、Claude.ai、ChatGPT 和 Slack 导出格式;--mode extract 标志在装了 [extract] 额外包后能处理 PDF、DOCX、PPTX、XLSX、RTF 和 EPUB。--wing 参数限定查询范围,比如"pricing discussion"可以只搜 finance wing 的季报,不会被代码注释里的同名词误命中。mempalace split 和 mempalace init 命令则负责 mine 之前的脏活——拆巨大的拼接文件、按目录结构识别 room。
数据来源: 2026-06-07 直接读 mempalace/cli.py 模块 docstring 验证。格式覆盖在 docs/format-coverage.md 里有说明,extract 额外包的依赖列表在 pyproject.toml 里。
总结:五个隐藏用法
- Hybrid v4 重排序——一个 CLI flag 把原始 96.6% 拉到留出测试 98.4%,全程无 LLM
- 可插拔后端——一个环境变量把 ChromaDB 换成 Qdrant 或 pgvector,应用代码不变
-
Claude Code 自动保存 hook——挂两个
PreCompact/Stophook,让 30 天会话保留真正生效 - stdio 上的 MCP server——五行 JSON 把官方容器变成所有兼容 MCP 的 Agent 的记忆后端
- 三种摄取模式——代码、对话、二进制 Office 文档共享同一座 palace、同一个搜索索引、同一个检索层
内部链接
- 12-factor-agents:5 个没人告诉你的隐藏生产模式
- Cognee:把健忘的 AI Agent 变成持久化记忆机器的 5 个隐藏模式
- 90% 开发者都漏掉的 5 个 MCP Server 生产模式
轮到你了
你从 Agent 会话里捞回来最久的记忆是什么——一个设计决策、一段定价逻辑、一条你发誓再也不会用到的正则?写在评论里。如果你在自己机器上挂了 Claude Code hook,把那条恢复命令和它救回来的最有用的会话贴出来,我会把最好的几条整理成续篇。
Top comments (0)