← 返回目录
C

Compartment

社区
加密、完全离线的 AI 代理长期记忆库
GitHub 源仓库 ↗
★ 586 Stars 分类 · 其他 非常热门
75FMRS · B

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

可靠性
12/20
安全与权限
16/20
维护活跃度
14/20
文档质量
18/20
安装易用性
15/20
查看 FMRS 评分方法 →

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。

工具能力

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

安装接入

1) 通过 pip 安装:pip install compartment && compartment init(需要 Python 3.11 或更新版本;也可用 pipx install compartmentuv tool install compartment)。2) compartment init 会要求设置口令、创建 vault、载入参考事实,并在已安装时连接 Claude Code、Hermes Agent 或 OpenClaw。3) 为具体客户端接线:compartment integrate claudecompartment integrate hermescompartment 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"]}}}

选型与风险

适合谁

  • 重视隐私与离线运行、不希望数据离开本机的个人或团队
  • 在多个 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 钩子与各客户端配置写入会修改用户的设置文件,尽管实现会先备份、合并而非覆盖

常见排障

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

支持客户端

Claude Desktop完整支持
Claude Code完整支持
Hermes Agent完整支持
OpenClaw完整支持
Cursor完整支持
VS Code完整支持
Codex CLI完整支持
Gemini CLI完整支持
Cline完整支持
Roo Code完整支持
Zed完整支持
OpenCode完整支持
LM Studio完整支持
AnythingLLM完整支持
BoltAI完整支持
goose完整支持
Kiro完整支持