← 返回目录
C

Compartment

社区
加密、完全离线的 AI 代理长期记忆库
分类
其他 第 2 / 230
Stars
★ 583 非常热门
传输方式
stdio(本地进程)
运行环境
Python 3.11+
凭据
无需凭据
许可证
Apache-2.0
最近提交
工具数
14
75FMRS · B

Compartment 把“代理记忆”做成了一份完全本地、加密的 vault,并明确把“决定记什么”留给宿主模型,自己只负责捕获、加密与检索。它的卖点清晰:无账号、无 API key、运行时不联网、嵌入向量也加密、单条记忆可过期、可用关系图谱与标签,且有跨平台 GUI 和只读 Dashboard。README 还给出了与其他记忆方案的对比表(标注为各项目自述、日期 2026 年 9 月 2 日),以及召回公式、权重与实测延迟。需要留意的现实约束是:多设备只能靠手动复制 vault 文件,口令或 2FA 密钥文件丢失无法恢复,memory_unlock 关闭状态是其安全默认,Docker 镜像为 headless stdio。整体适合重视隐私与离线能力的个人或小团队,不适合期待云端同步或服务端自动抽取记忆的用户。

最强项 · 文档质量 18/20 最弱项 · 可靠性 12/20

可靠性
12/20
安全与权限
16/20
维护活跃度
14/20
文档质量
18/20
安装易用性
15/20
查看各项评分依据
可靠性 12/20
静态审阅仅见 README 与 server.json:manifest 声明 pypi 包 compartment 4.9.6、uvx 运行时、stdio 传输、serve 子命令,与 README 的 `compartment serve` 一致,握手入口看起来可实现。README 描述了大量细节(证据融合评分、窗口嵌入、SIMD/HNSW、共享 embedding 进程、kill -9 恢复测试、800+ 测试、三平台 CI 徽章),但仓库未提供测试文件、CI 工作流、源码片段或任何可核对的执行证据,所有声明均来自不受信任的 README,无法验证声明工具(memory_search/store/store_many/get/recent/forget/link/relations/unlink/list_namespaces/status/lock/selftest)与真实行为是否吻合。按静态校准,缺乏可验证执行证据将可靠性上限压到 12;错误处理、依赖锁定(打包内嵌 ONNX 模型)、并发写入串行化、自动锁等虽有文字描述,但没有可审阅实现,故不给更高分。
安全与权限 16/20
未触及红线:manifest 无远程 URL 拉取、无令牌、无安装脚本内嵌密钥,且明确 stdio 传输、无开放端口。安全设计在文档层面相当完整:XChaCha20-Poly1305 全盘加密(含向量)、Argon2id LUKS 式密钥槽、逐记录密钥支持 shred、哈希链审计日志、Ed25519 签名清单与 pack、运行期 `--assert-offline` 网络中断保护并在三平台 CI 下运行。权限与最小特权有交代:per-agent namespace 支持 rw/ro/none,`memory_unlock` 默认关闭(避免口令进入模型上下文),vault 解锁凭据用每引导随机密钥封装故重启即锁。扣分项:全部安全声明均来自 README 自述,无实现、无第三方审计、无威胁模型正文(仅指向 SECURITY.md 链接),`--keychain` 常驻解锁、2FA keyfile 路径记忆等行为无法验证;对提示注入仅做文字性缓解(quarantined 标记+数据声明),识别到“宿主模型须仍将记忆视为数据”的残余风险。综合给 16,未给满分因证据全为自述。
维护活跃度 14/20
Apache-2.0 许可明确,无归档,0 个未关闭 issue,586 stars(按规则仅作发现信号,不计分)。README 提及 RELEASING.md、CONTRIBUTING.md、SECURITY.md 报告渠道与 Discussions,版本号 4.9.6 含具体变更叙述(4.7 评分融合改动、4.9.6 embedding 进程内存修复),显示持续迭代。但静态材料中看不到提交历史、发布日期节奏、依赖更新记录或维护者真实身份验证;server.json 的 repository.id 与 GitHub 链接为唯一归属证据。治理与版本发布流程虽有文档指向,但无实际证据支撑发布规律,故取中上 14 而非满分。
文档质量 18/20
文档层次与密度罕见地充足:安装(pip/pipx/uv/Docker/.pkg 一键安装)、认证与锁模型、全部 MCP 工具列表与只读/破坏性标注、设置文件全表(默认值与含义)、环境变量、命令参考表、排障与限制(`export --plaintext` 会明文导出、长记忆超出编码窗口、评分不可跨问题比较、重要度只做重排序)、指向 MEMORY/SECURITY/FORMAT/PACKS/INTEGRATIONS/COMPARISON 的分层文档,并给出可复现基准命令(selftest/bench)。扣分项:所有性能数字与对比表(对照 mem0、Graphiti、claude-mem 等)均为自述且以未来日期(2026-09-02)标注,无法核验;部分链接(文档正文)不在提供的材料内,存在未提供证据的隐藏假设。因安装、参数、限制与证据路径都较完整,给 18。
安装易用性 15/20
安装路径清晰且对主流客户端友好:`pip install compartment && compartment init` 或 pipx/uv,Docker 需先宿主 init,另提供 macOS .pkg 一键包;init 后自动接入 Claude Code/Hermes/OpenClaw 并启动面板。客户端配置示例明确覆盖 Claude、Cursor、VS Code(servers 键 + type stdio)、Zed(context_servers)、Codex(TOML)、LM Studio/goose/Kiro 深链,以及通用 `{"mcpServers":{...}}` 块;`integrate --list/--all` 声称支持 28 个客户端,并说明写配置前做字节级备份、原子写入、解析失败则改为打印片段。约束也交代清楚(Python 3.11+、Windows 需 VC++ 运行时、macOS 13+)。但静态证据中无 CI 工作流与测试文件,按校准安装项上限 15:步骤清晰但关键“自动接入”行为不可验证,Docker 路径仍需手动预先创建 vault,故给 15。

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

查看 FMRS 评分方法 →

选型与风险

能访问什么读取本地文件写入 / 删除本地文件

适合谁

  • 重视隐私与离线运行、不希望数据离开本机的个人或团队
  • 在多个 MCP 客户端(Claude Code、Claude Desktop、Hermes Agent、OpenClaw、Cursor、Codex、Gemini CLI 等)之间共享记忆的用户
  • 需要加密存储、审计链与可验证 vault 迁移的场景
  • 希望记忆检索延迟低、嵌入模型随包附带、无需额外 LLM 调用的用户

不适合谁

  • 需要云端多设备实时同步或团队协作式托管记忆的用户;Compartment 的同步方式是在锁定后手动复制 vault 文件
  • 希望由服务端 LLM 自动抽取事实、自动决定记忆内容的用户;Compartment 明确不在内部调用 LLM,由宿主模型决定存什么
  • 无法安全保管口令或其口令遗失后需要恢复途径的用户(Compartment 不生成也不托管任何恢复短语)
  • 在服务器端以网络传输方式(SSE / streamable-http)接入的部署:本服务器为 stdio,不开放端口

所需权限

  • 读取与写入用户主目录下的 vault 文件(默认为 ~/.compartment/memory.vault)及其同目录的 .config.json 设置文件
  • 访问存放解锁凭证的会话目录(可用 COMPARTMENT_SESSION_DIR 指定),该目录同时容纳共享嵌入进程的 Unix 套接字
  • 在 macOS 上可选使用钥匙串(compartment unlock --keychain 为显式选择加入)
  • 向各 MCP 客户端的配置文件写入或合并 mcpServers 条目(写入前做字节级备份)
  • 在 Claude Code 场景下安装 PostToolUse 钩子,用于捕获代理写入的记忆文件
  • 在 127.0.0.1 上提供只读浏览器 Dashboard(带一次性随机 URL 令牌)

风险与副作用

  • 口令泄漏意味着加密内容可被解密;Compartment 不生成、不托管恢复短语,口令丢失无法恢复
  • 启用 memory_unlock 工具会把口令带入模型上下文,默认因此关闭
  • 2FA 依赖的密钥文件(例如 U 盘)丢失后,即使有口令也无法打开 vault
  • 带 --plaintext 的 export 会写出未加密的 JSONL,需要自行妥善处理该文件
  • 记忆内容可能来自不可信来源;虽然召回时会以“这是数据”提示包裹,并可标记 quarantined,宿主代理仍须把记忆当作数据处理,以降低提示注入风险
  • capture 钩子与各客户端配置写入会修改用户的设置文件,尽管实现会先备份、合并而非覆盖

安装接入

准备工作

运行环境:Python 3.11+

COMPARTMENT_PASSPHRASE 可选密钥 供脚本和 CI 使用的库口令,属敏感信息,平时以交互方式输入。
其他可选配置项(7 个)
COMPARTMENT_VAULT 可选 指定要使用的库文件路径,默认 ~/.compartment/memory.vault。
COMPARTMENT_SESSION_DIR 可选 解锁凭据的存放目录。
COMPARTMENT_UI_SCALE 可选 菜单栏/托盘面板的界面缩放比例。
COMPARTMENT_ASSERT_OFFLINE 可选 尝试建立任何网络连接时中止,强制保证离线。
COMPARTMENT_EMBED_DAEMON 可选 设为 0 时嵌入模型保留在各进程内而不使用共享守护进程。
COMPARTMENT_EMBED_SOCKET 可选 覆盖共享嵌入进程的套接字路径。
COMPARTMENT_EMBED_IDLE 可选 共享嵌入进程在最后一个客户端离开后存活的秒数(默认 300)。

1) 通过 pip 安装:pip install compartment && compartment init(需要 Python 3.11 或更新版本;也可用 pipx install compartment 或 uv tool install compartment)。2) compartment init 会要求设置口令、创建 vault、载入参考事实,并在已安装时连接 Claude Code、Hermes Agent 或 OpenClaw。3) 为具体客户端接线:compartment integrate claude、compartment integrate hermes、compartment integrate openclaw,或 compartment integrate --all 连接本机已安装的全部客户端。4) 手工接入任意 MCP 客户端时使用标准配置块:{"mcpServers":{"compartment":{"command":"compartment","args":["serve"]}}}(VS Code 使用键 servers 并设 "type": "stdio";Zed 使用 context_servers;Codex 使用 [mcp_servers.compartment] TOML)。5) macOS 用户也可直接下载 Compartment.pkg 安装,全程无需命令行。6) 重启代理后即可使用记忆。

claude_desktop_config.json
{"mcpServers":{"compartment":{"command":"compartment","args":["serve"]}}}

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

.vscode/mcp.json
{
  "servers": {
    "compartment": {
      "command": "compartment",
      "args": [
        "serve"
      ]
    }
  }
}

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

Terminal
claude mcp add compartment -- compartment serve

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

验证是否装好

执行 `pip install compartment && compartment init` 并在客户端配置 {"mcpServers":{"compartment":{"command":"compartment","args":["serve"]}}} 后重启客户端,确认工具列表中出现 memory_search 和 memory_store;然后让代理存储一条事实并在新会话中回忆它。

常见排障

  1. 代理看不到记忆:确认 vault 处于解锁状态,且对应客户端已通过 `compartment integrate <agent>` 接线并重启代理
  2. Vault 无法打开:确认口令正确;若启用了 2FA,确认密钥文件在位(可用 --keyfile 指定路径);重启或断电后必定回到锁定状态,需要重新解锁
  3. 检索结果缺失:检查 search_starter_facts 与 include_packs_in_search 设置,以及 namespace / tag / 日期过滤条件;这些过滤在排序之后执行
  4. 搜索结果过多或过少:可传 top_k 精确控制返回条数;默认返回的是相对最佳结果达标的所有记忆
  5. 怀疑数据损坏或被篡改:运行 `compartment verify`、`compartment selftest`、`compartment audit verify`
  6. 确认没有联网行为:使用 `--assert-offline` 或设置 COMPARTMENT_ASSERT_OFFLINE,任何网络套接字尝试都会中止
  7. 嵌入模型升级或相似度异常:运行 `compartment reindex --re-embed`,并注意一个 vault 只允许一个嵌入模型
  8. 记忆写入被拒绝:单条记忆超过 max_memory_chars(默认 200 字符)或含列表、标题、段落时会被拒绝,需拆分后写入或用 memory_store_many

试试这样问

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

  • 记住:客户要求报告里先给数据再给结论。
  • 在我的记忆库里搜索我关于 Airtable 迁移的决定。
  • 显示你最近存储的记忆。
  • 忘掉我上周告诉你的那个过期的门禁码。

工具能力 14

memory_search
在记忆库中执行向量与关键词混合检索,返回与问题相关的记忆
memory_store
存储单条记忆,需要提供来源,可设置过期时间、命名空间、标签、重要程度与 kind(fact 或 opinion)
memory_store_many
在一次调用中批量存储多条记忆
memory_get
按 ID 读取某条记忆,包括已被取代但仍保留的记录
memory_recent
列出最新的记忆,默认隐藏内置参考事实
memory_forget
删除一条记忆,--shred 会销毁其逐记录密钥使内容不可恢复
memory_link
记录一条关系(主语、谓语、宾语),可关联到某条记忆和有效时间窗
memory_relations
按实体、按谓语或按日期查询关系
展开其余 6 个工具
memory_unlink
删除一条已记录的关系
memory_list_namespaces
列出记忆库中的命名空间
memory_status
报告记忆库状态,包括 total 与 organic_records 等计数
memory_lock
锁定记忆库并清除已存储的解锁凭证
memory_selftest
运行自检,验证记忆库与运行环境是否正常
memory_unlock
解锁记忆库;默认关闭,因为启用后口令会进入模型上下文

使用场景

让多个 AI 代理在同一台机器上共享一份长期记忆
在完全离线、无 API key 的环境中为代理提供记忆能力
对敏感事实、凭据位置与决策记录做静态加密存储
为带已知失效日期的事实(价格、预订、门禁码)设置自动过期
用关系图谱记录并查询实体之间的关系
在浏览器中只读查看记忆增长、标签、关系图与实时搜索

支持客户端

Claude Desktop
Claude Code
Hermes Agent
OpenClaw
Cursor
VS Code
Codex
Gemini CLI
Cline
Roo Code
Zed
OpenCode
LM Studio
AnythingLLM
BoltAI
Goose
Kiro

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

详细介绍

Compartment 是一个为 AI 代理提供持久记忆的 MCP 服务器。它在用户自己的电脑上维护一个加密的 vault(仓库),Claude Code、Claude Desktop、Hermes Agent、OpenClaw、Cursor、Codex 等任意 MCP 客户端都可以读写同一份记忆。它不需要 API key、不需要账号、不联网、不收集遥测数据。每条记忆是一条独立陈述,附带来源(source,必填)与获知日期(discovered);记忆可以设置过期时间(expires,支持日期或 14d、2w、3m、1y 这类时长),到期后自动移除。检索采用向量与关键词混合搜索,在内存索引上运行,官方文档给出的中位耗时约 11.6 毫秒。嵌入模型随包附带(384 维 int8 ONNX),磁盘上的所有内容(包括嵌入向量)都加密,只有用户的口令可以打开;新 vault 自带约 6,700 条关于硬件、操作系统、端口、编码和 shell 工具的参考事实,可通过开关从搜索中排除。加密原语包括 XChaCha20-Poly1305、Argon2id 密钥槽、逐记录密钥、哈希链审计日志,以及会在任何网络套接字尝试时中止的运行时保护(--assert-offline)。支持 macOS 菜单栏、Windows 通知区域、Linux 窗口应用,以及仅监听 127.0.0.1 的只读浏览器 Dashboard。安装方式包括 PyPI(pip / pipx / uv)、Claude Code 插件、Docker 与 macOS 的 Compartment.pkg。许可为 Apache-2.0。

同类可选方案

BioMCP 75 · B

统一的命令行语法,接入约30个可信生物医学数据源。

★ 659 · 工具数 11 与当前对比 →

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