← 返回目录
M

Memory Vault

社区
自托管的 AI 记忆数据库,混合搜索 + 知识图谱,MCP 原生。
分类
数据库 第 28 / 58
Stars
★ 65 热门
传输方式
stdio(本地进程) · SSE
运行环境
Python 3.11+ · Docker
凭据
无需凭据
许可证
MIT
最近提交
工具数
6
56FMRS · C

Memory Vault 是一个自托管、MIT 许可的 AI 记忆层,把 PostgreSQL + pgvector 的混合搜索、MCP 原生工具、知识图谱和本地 LLM 聊天打包在一起,主打数据不出本机。它的定位是数据库型记忆基础设施,而非文件系统上的笔记工具,适合已有 Postgres 运维能力的个人开发者,通过 MCP、REST 或仪表盘三种同等接口使用。需要留意的是:v1.0 为单实例、NER 仅英文、HTTP/SSE 传输默认关闭且无自带加密、团队功能仍属计划中的 PRO;项目由单人维护,响应时间不保证。

最强项 · 文档质量 14/20 最弱项 · 可靠性 9/20

可靠性
9/20
安全与权限
12/20
维护活跃度
11/20
文档质量
14/20
安装易用性
10/20
查看各项评分依据
可靠性 9/20
静态证据仅限 README + server.json,未提供任何源码、测试或 CI 工作流文件,因此按校准规则不得高于 12 分。可读到的正向信号:manifest 声明 OCI 镜像版本 1.5.0 与 stdio 传输,README 描述 6 个 MCP 工具(recall/remember/forget/purge_forgotten/move_memory/memory_status)与 2 个资源(memory://spaces、memory://stats),且提供了模块启动方式与常见启动错误(ModuleNotFoundError、spaCy E050)的排查说明,说明作者对初始化失败路径有认知。扣分点:manifest 只列出 4 个环境变量必填项且未声明任何依赖数据库可用性、pgvector 扩展、spaCy 模型的前置校验;README 的 Features 段说‘四个工具’,而 Tools 表列出六个,属自相矛盾,工具清单与真实行为无法在静态条件下核验;无测试、无 CI 证据;purge_forgotten 属不可逆删除但未说明确认机制。综合判为 9:happy path 大致可想象,错误面与依赖可控性证据薄弱。
安全与权限 12/20
未触及红线:没有恶意代码、凭据窃取、隐蔽外传或伪造身份的静态证据,安装示例中的 DB_PASSWORD 均为占位值(memory_vault / mv_your-token-here),不是真实密钥,因此不适用 0-4 红线区间。正向证据:DB_PASSWORD 在 manifest 中标注 isSecret;MCP HTTP(SSE)默认关闭,需显式 MCP_HTTP_ENABLED=true;明确说明 API_AUTH_ENABLED=false 不会开放 MCP 传输,未认证请求仍返回 401;有 Host 头校验并返回 421,用于阻断 DNS rebinding;建议绑定到内网地址、置于反向代理/TLS 之后,并提示无传输加密;token 可 revoke,且 MCP 与 REST 共用同一张表;diagnose 包会脱敏 token/密码。扣分点:默认 API_HOST=0.0.0.0 与 API_CORS_ORIGINS=* 属偏宽配置;bearer token 存于 dashboard localStorage,存在 XSS 面;forget 为软删除但 purge_forgotten 是不可逆永久删除,README 未描述任何二次确认或 dry-run;无权限分级(单一读/写用户),单实例无多租户隔离;未提供源码以核实 Host 校验、限流与脱敏实现。判为 12:主要风险可见且有意收敛,但确认流程、最小权限与实现可验证性不完整。
维护活跃度 11/20
证据:MIT 许可明确;SECURITY.md 提供支持邮箱作为私密漏洞上报渠道;CONTRIBUTING.md、CODE_OF_CONDUCT.md(Contributor Covenant v2.1)、threat-model 文档、issue/PR 模板均被引用;README 显示 M1-M7 里程碑已发布、v1.0 于 2026-05-07 发布并承诺 semver 与 v1.x 内仅增量迁移;ACKNOWLEDGMENTS 列出 v1.0.7–v1.0.10 期间 20+ 外部 issue 与致谢,说明存在真实的问题响应循环;manifest 版本 1.5.0 与 README 提及的 v1.5.0 变更(ef_search 旋钮、索引预热)一致。扣分点:源码与 CHANGELOG 不可读,无法核实提交频率、依赖更新策略或实际 issue 响应时延;单一维护者(作者自述),无治理结构或接班人安排;仓库有 11 个开放 issue,无法判断处理状态;依赖(sentence-transformers、spaCy、pgvector、FastMCP、React 19)版本固定策略无证据;PRO 商业层与开源核心的边界仅停留在计划阶段。判为 11:活跃且许可/安全渠道健全,但治理与版本管理细节存在空白。
文档质量 14/20
证据相当丰富且分层:Quick Start(Docker 与 No-Docker 双路径)、uv 与 pip+venv 两种安装方式、Claude Code(项目级 .mcp.json 与全局 ~/.claude/.mcp.json + enabledMcpjsonServers)与 Claude Desktop 配置示例、Docker 场景下 DB_HOST 应为 127.0.0.1 的说明、HTTP/SSE 远程接入的完整说明(开关、URL、Bearer、MCP_HTTP_ALLOWED_HOSTS 语义及‘替换而非追加’的细节、421 含义)、REST API 端点表、认证与 token 生命周期、配置变量表、性能调优(maintenance_work_mem)、专门的 Limitations 段(英文 NER、无语义别名合并、编辑后不重抽取、单实例、仅 LM Studio)、FAQ、故障排查清单(ModuleNotFoundError、spaCy E050、claude --debug mcp、CORS、localStorage 被阻止)、以及带 X-Request-ID 与 diagnose 打包的报错流程。扣分点:Features 段称‘四个工具’与 Tools 表的六项工具直接冲突,属文档内部矛盾;MCP 工具参数签名(recall/remember 的字段、limit、space 语义)未给出,只有一行描述;Local LLM Chat 依赖 LM Studio 的细节与模型黑名单理由仅凭叙述,无版本要求;无成本/资源开销的量化证据以外推为主;无实际工具调用返回示例。判为 14:安装、认证、限制与排障覆盖良好,但工具参数级参考与内部一致性有缺口。
安装易用性 10/20
证据:Docker 路径为三步(git clone、cd、docker compose up -d),迁移自动执行,dashboard 在 http://localhost:8000,数据持久化于 volume;No-Docker 路径给出 Python 3.11+、Postgres 16 + pgvector、uv 或 pip+venv 的完整命令序列(uv sync、spaCy 模型下载、.env 配置、migrate、status);为主流客户端提供了可直接复制的 JSON 配置块,并区分 Claude Code 项目级/全局作用域与 Claude Desktop;Docker 用户的 DB_HOST 差异有明确提示;Windows 用户指向 docs/windows.md 并建议 WSL2。扣分点:任何部署都强制要求外部 Postgres 16 + pgvector 实例,属较重前置依赖,且 manifest 中 DB_HOST/DB_PORT/DB_NAME/DB_USER/DB_PASSWORD 全为必填,缺一即无法启动;spaCy 模型需单独下载,遗漏即 OSError [E050];全局 MCP 作用域需手工编辑 ~/.claude/settings.json,易漏;无示例 .env 内容(.env.example 仅有指引);无 GPU/离线安装或镜像校验说明;未提供最小可跑的连通性验证(除 memory_status 与 claude mcp list 之外)。按静态校准上限 15 且证据仅来自未验证的 README/manifest,判为 10:路径清晰但手动步骤与外部数据库耦合使初次连通较为脆弱。

静态评测 · 未实际运行收录于 2026-09-10

查看 FMRS 评分方法 →

选型与风险

能访问什么连接数据库

适合谁

  • 希望数据完全自托管、不想把记忆送到云端的个人开发者
  • 已有 PostgreSQL 经验、愿意自行运维数据库的用户
  • 需要在 Claude Desktop / Claude Code 中获得跨会话记忆的人
  • 想在自己的 AI 工具上叠加记忆层、又不想维护独立向量数据库的团队(单实例)

不适合谁

  • 需要多用户 / 多租户或团队协作功能的组织(v1.0 为单实例,团队功能属计划中的 PRO)
  • 希望零运维、开箱即用云端服务的用户
  • 需要多语言实体抽取的项目(NER 仅支持英文)
  • 不想运行和维护 PostgreSQL 的用户
  • 要求传输加密由服务自身提供的场景(需自行加反向代理或隧道)

所需权限

  • 对 PostgreSQL 数据库的读写权限(DB_USER 需要读写 memory vault 库)
  • 数据库密码(DB_PASSWORD 为敏感值)
  • MCP stdio 模式下以本地进程身份读取环境变量并连接数据库
  • 启用 HTTP/SSE 时需在端口上监听并校验 Bearer token
  • 仪表盘在浏览器 localStorage 中存储 bearer token

风险与副作用

  • MCP 走 stdio 时数据库凭据以明文写在客户端配置文件的 env 中
  • HTTP/SSE 传输没有自带的传输加密,token 在请求头中明文传输,跨不可信网络必须自行加 TLS
  • 若把容器端口发布到 0.0.0.0,整个网络都可能访问到记忆库
  • API_AUTH_ENABLED=false 只对 REST API 生效,会开放 REST 接口(MCP 传输仍返回 401),属于仅限本地开发的便利选项
  • 知识图谱存在已知局限:实体无模糊匹配(PostgreSQL 与 Postgres 是两个实体)、编辑后不重新抽取、同一名称可能同时成为 Person 与 Project
  • 项目为单人维护,PR 审核与响应时间取决于维护者可用时间

安装接入

准备工作

运行环境:Python 3.11+ · Docker

DB_HOST 必填 Postgres+pgvector 实例的主机名,Docker 场景用 127.0.0.1 或 host.docker.internal。
DB_PORT 必填 Postgres 端口,默认 5432。
DB_NAME 必填 Postgres 数据库名,默认 memory_vault。
DB_USER 必填 对记忆库数据库有读写权限的 Postgres 用户。
DB_PASSWORD 必填密钥 DB_USER 对应的 Postgres 密码,自行设置。

方式一(Docker,推荐):git clone 仓库后进入目录,执行 docker compose up -d,迁移会在首次启动时自动运行;执行 docker compose exec app memory-vault status 验证。仪表盘位于 http://localhost:8000。

方式二(不用 Docker):需要 Python 3.11+、带 pgvector 扩展的 PostgreSQL 16,以及 uv(或 pip + venv)。依次执行 uv sync、uv run python -m spacy download en_core_web_sm、cp .env.example .env 并填入数据库凭据、uv run memory-vault migrate、uv run memory-vault status。

配置 MCP 客户端:先完成上面的非 Docker 安装,使 memory_vault 包可用,然后在 Claude Code 的项目 .mcp.json(或 ~/.claude/.mcp.json)中写入 install_config 所示的 server 块,填好 DB_HOST、DB_PORT、DB_NAME、DB_USER、DB_PASSWORD。若希望全局可用,还需把 memory-vault 加入 ~/.claude/settings.json 的 enabledMcpjsonServers。用 claude mcp list 验证是否显示 connected。Claude Desktop 则在 Settings → Developer → Edit Config 中加入同样的 server 块并重启。

Docker 用户注意:MCP server 运行在宿主机上(不在容器内),需要把 DB_HOST 设为 127.0.0.1,并在 docker-compose.yml 中暴露 5432 端口。远程访问可使用 HTTP/SSE:设置 MCP_HTTP_ENABLED=true,传输挂载在 /api/mcp,客户端连接 http://<host>:8000/api/mcp/sse,并需用 memory-vault token create 创建 token 作为 Bearer 头;用 MCP_HTTP_ALLOWED_HOSTS 声明允许的主机名(列表会替换默认值,默认仅 localhost 与 127.0.0.1)。

claude_desktop_config.json
{
  "mcpServers": {
    "memory-vault": {
      "command": "/path/to/memory-vault/.venv/bin/python",
      "args": ["-m", "memory_vault.mcp"],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "5432",
        "DB_NAME": "memory_vault",
        "DB_USER": "memory_vault",
        "DB_PASSWORD": "memory_vault"
      }
    }
  }
}

以 Claude Desktop 为例。其他客户端的配置文件位置或字段可能不同(如 VS Code 使用 servers 字段),可用下方配置生成器转换。

.vscode/mcp.json
{
  "servers": {
    "memory-vault": {
      "command": "/path/to/memory-vault/.venv/bin/python",
      "args": [
        "-m",
        "memory_vault.mcp"
      ],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "5432",
        "DB_NAME": "memory_vault",
        "DB_USER": "memory_vault",
        "DB_PASSWORD": "memory_vault"
      }
    }
  }
}

写入项目的 .vscode/mcp.json(VS Code 使用 servers 字段)。

Terminal
claude mcp add memory-vault -e DB_HOST=localhost -e DB_PORT=5432 -e DB_NAME=memory_vault -e DB_USER=memory_vault -e DB_PASSWORD=memory_vault -- /path/to/memory-vault/.venv/bin/python -m memory_vault.mcp

在终端运行;先把 <…> 占位符换成你自己的值。

验证是否装好

配置完成后,在 Claude Code 中运行 claude mcp list 确认 memory-vault 显示 connected,或直接询问"使用 memory_status 检查记忆系统"看工具是否可用。

常见排障

  1. 启动时报 ModuleNotFoundError:虚拟环境未安装,在仓库目录重跑 uv sync(或 pip install -e .)
  2. 启动时报 OSError: [E050]:spaCy 语言模型未安装,重跑 python -m spacy download en_core_web_sm
  3. Claude Code 中 server 显示 failed:执行 claude --debug mcp 查看错误输出
  4. server 已连接但工具不可用:确认 ~/.claude/settings.json 的 enabledMcpjsonServers 中包含 memory-vault
  5. Docker 运行时报连接被拒绝:把 DB_HOST 改为 127.0.0.1 而不是 localhost
  6. 远程客户端收到 421 Misdirected Request:客户端使用的主机名不在 MCP_HTTP_ALLOWED_HOSTS 列表中(该列表会替换默认值,记得保留 localhost:*)
  7. 仪表盘每次刷新都要求填 token:浏览器阻止了 localStorage(隐私模式或严格 Cookie 设置)
  8. 仪表盘所有请求返回 401:token 已被撤销或 API_AUTH_ENABLED 发生变化,创建新 token 后重新粘贴
  9. 提交问题前可运行 docker compose exec app memory-vault diagnose 生成诊断包(token、密码会自动打码,但仍建议先自行检查)
  10. 报告中附带响应头 X-Request-ID,便于在结构化 JSON 日志中定位同一次请求

试试这样问

连接成功后,可以直接对 AI 助手这样说:

  • 使用 memory_status 检查记忆系统状态。
  • 记住我们选择 Redis 作为会话缓存。
  • 回忆关于 hybrid search 的一切。
  • 把这条记忆移动到 default 空间。

工具能力 6

recall 只读
使用混合搜索(向量 + 全文 + RRF)检索记忆。
remember 写入
写入一条新记忆,自动进行分类和嵌入。
forget 破坏性
按 chunk ID 对一条记忆执行软删除。
purge_forgotten 破坏性
永久删除已遗忘超过 N 天的记忆。
move_memory 写入
把一条记忆移动到另一个 space,并重建其图谱条目。
memory_status 只读
查看数据库健康状态、chunk 数量与嵌入模型信息。

使用场景

让 Claude 在跨会话中记住项目决策、笔记与已解决的问题
在本地对大量文档/笔记做混合语义 + 关键词检索
用本地 LM Studio 模型对自己的记忆库提问,并核对每条回答的来源
通过 REST API 或仪表盘把持久记忆集成进自建的 AI 应用
在 CPU 上自动抽取实体与关系,浏览知识图谱中的关联

支持客户端

Claude Desktop
Claude Code

依据项目文档列出,未经本站实测。

详细介绍

Memory Vault 是一个本地优先(local-first)的 AI 记忆层,核心是自托管的 PostgreSQL 16 + pgvector。它把向量嵌入、全文索引和关系型数据放在同一个数据库里,通过向量搜索与全文搜索(tsvector + GIN)配合 RRF(Reciprocal Rank Fusion)融合实现混合搜索,无需额外维护一个独立的向量数据库。

它通过 MCP 向 Claude 暴露六个工具(recall、remember、forget、purge_forgotten、move_memory、memory_status),让 Claude 在会话中可以读取和写入记忆;同时也提供 REST API 和内置 React 仪表盘(Chat、Search、Browse、Graph、Ingest、Stats 六个页面),三者都是平等的一等客户端。知识图谱使用 spaCy 的 en_core_web_sm 做实体抽取、用共现关系生成 related_to 边,全部在 CPU 上完成,不调用外部 LLM 或云服务。

项目以 MIT 许可证开源,作者为 MihaiBuilds(个人维护项目)。默认嵌入模型为 all-MiniLM-L6-v2(384 维,CPU 运行);本地 LLM 聊天在 v1.0 仅支持 LM Studio,并且每条回答都会展示其依据的记忆来源。MCP 默认走 stdio 传输;HTTP/SSE 传输需要在服务端显式设置 MCP_HTTP_ENABLED=true 才会开启,且始终要求 Bearer token。

同类可选方案

源版本 d0d6b86b5f37 数据同步于 2026-10-19 查看 FMRS 评分方法