MaxFreedomPollard/Compartment
GitHub: MaxFreedomPollard/Compartment
Compartment 是一款完全离线、静态加密的 AI Agent 本地记忆存储工具,让智能体跨会话持久记住用户决定与偏好,同时保障数据隐私与检索速度。
Stars: 3 | Forks: 1
# Compartment
### 卓越的智能体记忆,静态加密。
你的 AI agent 在会话结束的那一刻就会把你忘记。Compartment 终结了这一点。借助 Compartment,你的 AI agent 会随着经验不断变强:它会在你自己的电脑上,永久、加密地保存你做出的每一个决定、偏好和细节。Hermes、Claude、OpenClaw 及其他 AI Agent 可以通过一条命令安装。一个完全可迁移的记忆存储可被计算机上的所有 agent 同时共享。100% 离线:无需网络,无需 API key,无需云账户,无遥测。Embedding 模型内置在包中,完整搜索返回时间不到 9 毫秒,击败了托管记忆服务向你收取的网络往返耗时。静态的每一个字节都经过 AEAD 加密,包括 embedding 向量,且只有你的密码可以打开它。
与其他 agent 记忆不同,我们提供了一个带有初始记忆的启动选项——安装时即注入 6,718 条精选事实:物理常数和单位换算,800 多条具有真实规格的硬件事实(Apple 芯片、PC、CPU 和 GPU、手机、游戏主机、Raspberry Pi、存储、显示器、连接器),以提供计算机地理分布图、操作系统版本和发布名称、网络端口和 HTTP、文件签名、字符编码、shell 和 Unix 内部原理、git、regex、SQL 和 hashing、ISO 国家、货币和时间代码等等。这使得离线 agent 能够在没有互联网的情况下更好地运行,而在线 agent 则能运行得更快、更准确。
**架构设计上更加安全。** 静态的每一个字节都经过认证加密,包括 embedding 向量(大多数工具会将这些数据明文保留,而向量可以被逆向还原为文本)。删除操作是加密层面的:销毁记录的密钥,它就会彻底消失且无法恢复。系统能够检测篡改,历史记录通过哈希链连接,且保险库会在重启或断电时自动锁定。它完全离线运行:runtime guard 会在任何网络尝试时中止,并且 CI 在三个操作系统上证明了这一点。
**没有增加一丝复杂度。** 一条命令即可完成安装、创建保险库并连接你的 agent。无需 API key,无需云账户,无需 daemon。想用时解锁;想关闭时锁定。默认情况下,一次解锁可以保持开启数周(直到重启或你手动锁定),就像你保持运行的任何其他应用程序一样。在使用点上,这种安全性是免费获得的,因为它是架构水到渠成的结果,而非消耗你的耐心:将明文排除在磁盘之外迫使索引存放在 RAM 中,而驻留在 RAM 中的索引也是目前最快的索引。在这里,安全与快速是同一个选择,且都不需要你付出配置的代价。
#### 独树一帜之处
**一步安装**
- 一条命令安装它,创建保险库,并连接你的 agent。无需 API key,无需云账户,无需 daemon。
- 在 Mac 上,打开一个 `.pkg` 文件即可大功告成。Python、embedding 模型和所有依赖都包含在其中。
- 一个菜单栏应用无需终端即可运行一切:保险库状态、解锁、锁定,以及它最近保存的五条记忆。
- 每个功能都可以在该面板中切换,而无需修改配置文件:与模型无关的捕获、搜索中的起始事实、自动锁定。
- 你的保险库开箱即用。这 6,718 条注入的事实就是普通的记忆,可编辑也可遗忘,并且可以通过一个开关将它们排除在搜索之外。
- 可在你现有使用的工具下运行:Hermes(“无需设置”),通过 MCP 运行的 Claude Code 和 Desktop,OpenClaw,所有 MCP 客户端,外加一个用于脚本和 cron 的 CLI。
**记住正确的事情**
- “OK” 是一个决定,Compartment 会将其作为决定连同它回答的问题一起归档。这正是你以后需要的记录。
- 决定的优先级高于偏好,偏好高于机器详情,机器详情高于闲聊。这是固定的排名,而不是模型的心情。
- 它什么都不会忘记。闲聊也会被保留,只是排在最后。
- 它会取代你宿主程序内置的记忆,而不是与其发生冲突:导入 Claude Code 已经写入的内容,然后取而代之。
- 即使模型不配合,它也能进行捕获。无论模型是否调用工具,hook 都会写入事实。
- 是一个图,而不是一堆散沙。带有有效期窗口的显式关系可以回答谁在哪里工作以及何时工作。
**击败网络调用的搜索**
- 0.68 毫秒的向量搜索。完整混合 pipeline 仅需 8.8 毫秒。云记忆在打招呼上花的时间都比这长。
- 在 20,000 条记录以下十分精确:结构上 recall = 1.0,而不是近似值。
- 始终混合:语义与关键词,完美融合。
- 锁定的单一 embedding 空间,每次打开保险库时都会强制执行,因此你的对比将永远保持有效。
**加密、离线,且完全属于你**
- 静态的每一个字节都经过 AEAD 加密,包括 embedding 向量。大多数工具会将向量明文留下,而向量可以逆向还原回文本。
- 只有你的密码才能打开它。Compartment 不生成任何密码、种子或恢复短语,并且不持有任何你所没有的凭证。
- 添加一个 keyfile,解锁就需要双重因素。两者同时输入 Argon2id,所以这是算术约束,而非策略检查。
- `forget --shred` 会销毁记录的密钥。内容在数学上是无法恢复的,而不是被标记为删除。
- 重启或断电会自动锁定,并且 agent 拥有一个 panic lock,可立即清除所有凭证。
- 100% 离线。runtime guard 会在任何网络尝试时中止,且 CI 在 Linux、macOS 和 Windows 上证明了这一点。零开放端口。永远没有遥测。
- 内部无 LLM。Embedding 在本地运行,占用不到 300 MB,判断力仍然完全属于你已经在付费使用的模型。
- 防篡改:哈希链审计日志、密封日志、经过验证的 kill-9 崩溃恢复。
- 一个可移植文件。将锁定的保险库移动到任何地方,`lock --sign` 会使用 Ed25519 清单对其进行密封,任何人都可以在没有凭证的情况下进行验证。
- `compartment dash` 将整个保险库展示在本地网页上:仅限 127.0.0.1,随机 token,只读。
## 记忆逻辑
完整的写入路径、决策数学和比较详见 [docs/MEMORY.md](docs/MEMORY.md)。核心理念如下:
**几乎存储一切;不会埋没重要信息。** 只有空回合会被丢弃。一个简单的“OK”不是噪声,它是一个决定:当 agent 询问*“要我现在把回复发给客户吗?”*而用户回答*“OK”*时,Compartment 会从对话中解析出问题,并将其作为最高重要性层级存储:
`[decision 2026-07-20] Approved (answered "OK"): Want me to send this reply to the client now?`。稍后询问*“用户说过要发邮件给客户吗?”*就能准确检索到这条记录。
**确定性重要性层级排名决定召回**:决定/同意 0.90,个人事实和偏好 0.80,用户的机器和配置 0.75,其他实质性陈述 0.55,寒暄 0.20(保留,排在最后)。融合得分为
`RRF(vector) + RRF(keyword) + 0.02·cosine + 0.006·importance`:余弦相似度大小让真正最匹配的记录保持在顶部,重要性则通过支持关键信息来解决势均力敌的情况。agent 会优先了解用户和计算机,其次了解世界,并且什么都不会忘记。
**一个记忆,而不是两个。** Agent 宿主越来越倾向于发布自己的记忆功能——Claude Code 维护着带有自动加载索引的按项目划分的 Markdown 文件。两个记忆意味着事实最终会落在模型碰巧想到的任何一个中,但都不完整。Compartment 在安装时即接管:它导入文件记忆已有的内容,并且 MCP 握手和受管理的 CLAUDE.md 块都会告诉模型 Compartment 已经取代了它——在这里写入所有新记忆,将这些文件视为只读归档。一个保险库,经过加密,被机器上的每个 agent 和项目共享。什么都不会被删除;文件会原封不动地留在原地。
**不依赖于模型的捕获。** 指令仅仅是一个请求,而在系统提示中声明拥有自己记忆的宿主,其优先级高于工具所说的任何内容。因此 `compartment integrate claude` 还会安装一个 `PostToolUse` hook:当 Claude Code 写入记忆文件时,无论模型是否想到过 Compartment,事实都会进入保险库。该 hook 是附加的且幂等的(你的其他 hook 不受影响,settings.json 会先被备份),无论发生什么它都会成功退出——记忆工具绝不能破坏你的编辑器——并且当保险库被锁定时它会保持静默。
`compartment hook status | install | uninstall`,或者 `integrate claude --no-hooks`。
标签:AI智能体, CNCF毕业项目, Ruby, 向量检索, 数据加密, 本地记忆库, 知识库, 离线存储, 网络安全, 逆向工具, 隐私保护