关于 Recall
Recall 是面向多 Agent 用户的可自托管记忆 MCP 服务,可将个人事实保存在自己的设备上。它结合加密存储、模糊搜索和内置网页应用,便于查看与管理记忆。
主要功能
- 01在 MCP 客户端间共享记忆
- 02使用 SQLCipher 加密本地存储
- 03结合 BM25、嵌入和拼写修复搜索
- 04写入时拒绝秘密和身份证号
- 05通过网页应用浏览、编辑和遗忘记忆
- 06将记忆导出为 JSON
适用场景
- 01切换 Agent 时保留个人上下文
- 02在 Raspberry Pi 上运行共享记忆存储
- 03检查 Agent 保存了哪些事实
- 04撤销意外的记忆更改
MCP 相关
Recall 提供 `recall`、`remember` 和 `forget` 三种 MCP 工具。客户端在本地运行 `recall mcp`,也可通过带作用域的令牌中继到远程 Recall 服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Recall
通过 MCP 在你使用的每个 AI Agent 之间共享的、由你自托管的记忆。

- 一个二进制文件,占用 10 MB,内置嵌入模型。无需 Python、GPU,也无需在运行时联网。每个 Agent 连接约占用 13 MB RAM。可在 Raspberry Pi 上运行。
- 三个工具:
recall、remember、forget。Agent 可以获取事实和日期,但永远不会知道是谁保存的。 - 模糊搜索:BM25 + 静态嵌入 + 拼写错误修复,每次查询约需 150 µs。已针对 BM25、其他嵌入模型和 Transformer 嵌入器进行基准测试。
- 默认安全:采用 SQLCipher 加密存储,每次写入时进行机密信息扫描,软删除并保留审计记录;除非你选择启用带范围令牌的 HTTP,否则仅使用标准输入/输出。
- 记忆地图:内置于同一二进制文件中的密码保护 Web 应用,大小约为 65 KB,可用于浏览、搜索、编辑和遗忘记忆。
curl -fsSL https://github.com/j4ckxyz/recall/releases/latest/download/install.sh | sh
安装 · 让 Agent 安装 · 在多台设备间使用 · Web 应用 · 设计 · 基准测试
为什么不直接使用 ChatGPT 或 Claude 的记忆?
两者都擅长各自的工作。它们采用了与 Recall 相同的基本方法: 以简短的第三人称事实、上下文中的精简档案,以及按需搜索来管理记忆。 Recall 也采用这种方法,但改变了记忆的归属方和适用范围。
Recall 更胜一筹的方面
| ChatGPT / Claude 记忆 | Recall | |
|---|---|---|
| 哪些 Agent 可以使用 | 仅限该供应商的应用。ChatGPT 的记忆不会延伸到 Claude、Cursor 或你的脚本,反之亦然。 | 每个 MCP 客户端都能使用:Claude Code、Claude Desktop、Cursor、Codex、Gemini CLI、Zed,以及你自己的 Agent。切换工具,保留上下文。 |
| 谁持有数据 | 存储在供应商的服务器上,遵循其数据保留和政策条款。 | 存储在你的磁盘上,使用你的密钥加密(SQLCipher、AES-256)。无需账户,运行时也不访问网络。 |
| 查看它知道什么 | 可以列出已保存的记忆。聊天记录召回和生成的摘要都是转述,你无法完整查看。 | 每条事实都是带有 ID 和日期的纯文本行。recall list 会显示全部内容,recall audit 会显示哪个 Agent 在何时写入了什么。 |
| 更改何时生效 | Claude 每 24 小时自动刷新一次摘要。 | 对所有 Agent 都会立即生效。 |
| 日期 | 每条记忆都带有其获知时间,包括补录的记忆,因此 Agent 可以区分过时信息和当前信息。 | |
| 错误与滥用 | 含有机密或 ID 号码的写入会被拒绝。删除和替换可在 30 天内撤销。HTTP 令牌可以设为只读。 | |
| 上下文成本 | 约 1,500 个令牌的档案,加上定向搜索。最多支持 5,000 条事实,而无需填满每个提示词。 | |
| 锁定风险 | 可以导出,但能否导入取决于各供应商。 | recall export --json,MIT 许可证,单个 10 MB 二进制文件。 |
搜索质量相当。 托管产品不会公开其检索技术栈,因此无法直接进行基准测试。在我们的事实检索基准测试中,Recall 的混合搜索(Recall@5 为 0.82)与 bge-small(0.82)和 MiniLM(0.85)等 Transformer 嵌入模型相当。它使用 7.5 MB 的模型运行,耗时约 150 µs,且无需 ML 运行时。
托管式记忆仍然胜出的方面
- 无需设置,随处可用。 ChatGPT 和 Claude 的记忆无需安装,即可在手机和网页上使用。Recall 只能通过 TLS 加密的 HTTP 模式接入网页和移动应用。目前尚未实现 ChatGPT 式远程连接器的 OAuth 支持。
- 从所有聊天中被动学习。 ChatGPT 的“参考聊天记录”和 Claude 的对话搜索会利用你说过的所有内容。Recall 只知道 Agent 明确
remember的内容。 - 行为经过调优。 供应商会训练自己的模型,让它们善用自带的记忆。Recall 则依赖各客户端遵循其 MCP 指令,而不同客户端的遵循程度也不相同。
简而言之: 如果你只使用一个助手、在手机上使用,而且不介意供应商持有你的记忆,就用它们的记忆。如果你使用多个 Agent,希望数据存储在自己的硬件上,并且希望查看和控制每条事实,就用 Recall。你也可以两者兼用:对从 ChatGPT 或 Claude 导出的事实运行 recall import。
安装
macOS / Linux / Raspberry Pi
curl -fsSL https://github.com/j4ckxyz/recall/releases/latest/download/install.sh | sh
Windows(PowerShell)
irm https://github.com/j4ckxyz/recall/releases/latest/download/install.ps1 | iex
Claude Desktop,一键安装: 下载
recall.mcpb
并打开。该安装包支持 macOS、Windows 和 Linux。首次启动时会创建加密存储,你也可以选择输入共享的 Tailscale 服务。
MCP Registry: Recall 已列入
io.github.j4ckxyz/recall,
因此可以浏览官方注册表的客户端能直接安装它。
安装程序:
- 下载适用于你平台的预构建二进制文件,并根据版本发布中的
SHA256SUMS对其进行校验。校验和不匹配时会停止。 - 将其安装到
~/.local/bin(Windows 上为%LOCALAPPDATA%\Programs\recall)。 - 在
~/.recall/中创建加密存储和密钥。 - 运行
recall doctor,对模型、搜索、加密存储以及真实的 MCP 握手进行自检。 - 提供选项,将 Recall 添加到检测到的 Agent:Claude Code、Claude Desktop、Cursor、VS Code、Windsurf、Gemini CLI 和 Codex CLI。
每个版本在发布前都会由 CI 在 macOS、Windows 和 Ubuntu(x64 和 arm64)上完成安装和冒烟测试,也会在 Debian 11 和 12、Fedora、Arch 和 Alpine 容器中进行测试。随后,CI 会针对已发布的版本重新运行上面的原样命令。Linux 二进制文件是静态编译的(musl),因此可在任何发行版上运行,包括 64 位 Raspberry Pi OS。
想在运行脚本前先阅读它?请参阅
install.sh 和 install.ps1。你也可以从源代码构建:
cargo install --git https://github.com/j4ckxyz/recall --features vendored-openssl
(在 macOS 上去掉该功能)。
请备份 ~/.recall/key。 没有它就无法解密你的记忆。若要改为将密钥保存在密码管理器中,请设置 RECALL_KEY_CMD,例如 RECALL_KEY_CMD='op read op://Private/recall/key'。
或让 Agent 来安装
将以下内容复制到 Claude Code、Codex、Cursor 或任何能够运行命令的 Agent 中:
Install Recall for me (https://github.com/j4ckxyz/recall). It's a self-hosted
MCP server that gives all my AI agents a shared, encrypted memory about me.
1. Install it:
- macOS/Linux: curl -fsSL https://github.com/j4ckxyz/recall/releases/latest/download/install.sh | RECALL_CONNECT=yes sh
- Windows PowerShell: $env:RECALL_CONNECT='yes'; irm https://github.com/j4ckxyz/recall/releases/latest/download/install.ps1 | iex
2. Run `recall doctor` and confirm it ends with "All checks passed". If anything
fails, show me the failing line and stop.
3. If ~/.local/bin isn't on my PATH, add it to my shell profile.
4. Tell me which agents were connected and that I must restart them.
5. Remind me to back up ~/.recall/key. Never print, copy or upload the key.
6. Ask me whether I want to share one memory across my devices with Tailscale.
If yes, follow "Use it across devices with Tailscale" in the README, and ask
me which device should be the server before changing anything.
连接你的 Agent
recall connect 会将 Recall 添加到所有检测到的 Agent,并为它编辑的任何配置文件保留 .before-recall 备份。你也可以指定 Agent:recall connect cursor vscode。recall disconnect 可撤销更改。
要手动配置 Agent,所有客户端都运行相同的命令:
recall mcp。
{ "mcpServers": { "recall": { "command": "/full/path/to/recall", "args": ["mcp"] } } }
- Claude Code:
claude mcp add --scope user recall -- recall mcp - Codex CLI,在
~/.codex/config.toml中:[mcp_servers.recall],然后添加command = "recall"和args = ["mcp"]
使用 Tailscale 在多台设备间共享
推荐做法: 在一台始终开机的设备(Raspberry Pi、家庭服务器或桌面电脑)上运行一个 Recall 服务,然后让其他所有设备通过你的 Tailscale tailnet 连接到它。这样,你所有设备上的 Agent 都能共享同一份记忆,而且这些记忆不会暴露在公共互联网中。
laptop agents ─┐ ┌─ Raspberry Pi
desktop agents ─┼── recall mcp ── tailnet (WireGuard) ──► recall serve --tailscale
work agents ─┘ (relays stdio) └─ encrypted store
1. 在服务器上(安装 Recall 和 Tailscale 后):
recall token add laptop # one token per device; --read-only for read-only devices
recall serve --tailscale # listens on this machine's tailnet IP only, port 7878
在 Linux 上设置开机后自动运行:
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/recall.service <<'UNIT'
[Unit]
Description=Recall memory server
After=network-online.target tailscaled.service
[Service]
ExecStart=%h/.local/bin/recall serve --tailscale
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
UNIT
systemctl --user enable --now recall
sudo loginctl enable-linger "$USER" # start at boot without logging in
2. 在其他每台设备上:
recall remote http://<server-name>:7878/mcp rcl_… # MagicDNS name, e.g. http://pi:7878/mcp
recall connect
该设备上的 Agent 仍运行 recall mcp;现在它会将请求转发到服务器。recall doctor 会检查连接,recall remote off 会切换回本地存储。
为何安全
-
tailnet 设备之间的流量由 WireGuard 进行端到端加密,且仅限你自己的设备,因此 Recall 可以使用普通 HTTP,无需 TLS 协议栈。
-
此外,Recall 要求使用每台设备各自的 bearer token。令牌仅以哈希形式存储,可通过
recall token revoke laptop撤销。 -
--tailscale只绑定 tailnet 接口,不会绑定你的 LAN 或互联网。不要为 Recall 使用 Tailscale Funnel。 -
recall audit会显示每条记忆由哪台设备写入。 -
如需进一步限制访问,可为服务器添加标签,并在 tailnet 策略中只允许你自己的用户:
"grants": [{ "src": ["[email protected]"], "dst": ["tag:recall"], "ip": ["tcp:7878"] }]
只接受 URL 的客户端可以直接使用服务器,配置为
{ "url": "http://<server>:7878/mcp", "headers": { "Authorization": "Bearer rcl_…" } }。
claude.ai 和 ChatGPT 等 Web 与移动应用目前还无法连接私有 tailnet。
查看你的记忆
recall serve 还会托管一个小型 Web 应用,类似于 Obsidian 的关系图视图,展示你的 Agent 对你的了解。
recall password # on the machine running Recall: generates a strong password (shown once)
recall serve # then open http://localhost:7878 (or your tailnet address)
在 tailnet 上无需密码。 当 recall serve 在接入 Tailscale 的设备上运行时,它会自动为你登录。它会询问本地 Tailscale 守护进程,确认你正在使用的设备归谁所有:这与 tsidp 所依赖的是同一经过验证的身份,无需额外部署任何组件。
-
谁能登录。 除非你通过
recall tailnet allow [email protected]允许其他人,否则只有拥有该服务的 Tailscale 用户可以登录。带标签的设备(服务器、CI)不会以这种方式登录。 -
如何检测。 Recall 监听 tailnet 时(
recall serve --tailscale)此功能有效;在tailscale serve后面也同样有效,此时 Recall 仅在tailscale serve确实将请求代理到 Recall 端口时才信任Tailscale-User-Login标头。 -
会话。 Tailscale 会话有效期为 24 小时,只要你仍在 tailnet 上就会静默续期。退出登录会持续到当前浏览器会话结束;点击一次“使用 Tailscale 继续”即可重新登录。
-
管理。
recall tailnet会显示获准登录的用户,recall tailnet off会关闭此功能。通过 Web 应用进行的编辑会以 Tailscale 登录身份记录在recall audit中。 -
地图。 每条记忆都是一个点。记忆之间如果共享名称、地点或项目,或者含义相似,就会彼此关联;它们会分组到不同颜色的主题中,并以最核心的词语标注。将鼠标悬停在记忆上可突出显示其关联项;滚动可缩放;拖动可平移或重新排列。
-
搜索。 输入时会显示结果,使用的模糊搜索和语义搜索与 Agent 使用的相同:“family”会找到关于你母亲和女儿的记忆,“vegitarian”也能找到“vegetarian”。
-
编辑和遗忘。 修改记忆文本,添加一条新记忆并注明其生效日期,或遗忘一条记忆。所有更改都可在 30 天内通过
recall restore撤销。 -
键盘: 按
/或⌘K搜索,按n添加记忆,按Esc清除。 -
主题: 浅色、深色,或跟随系统。系统会记住你的选择。


如何保持轻巧安全
- 大小。 不使用框架和 CDN:一个 HTML 文件、手写的 canvas 关系图和预构建的 Tailwind CSS,全部编译进二进制文件。总大小约为 65 KB,并且可离线运行。
- 登录。 在 tailnet 上使用 Tailscale 身份(见上文),否则使用密码。密码以 PBKDF2-SHA256 哈希形式(600,000 次迭代)存储在加密数据库中。会话使用随机生成的 256 位令牌,并存放在
HttpOnly、SameSite=StrictCookie 中;每分钟最多允许 5 次登录失败。再次运行recall password会轮换密码并让所有浏览器退出登录;recall password --set会使用你自己的密码;recall password --off会关闭 Web 应用。 - 浏览器保护。
- 严格的 Content-Security-Policy,不包含内联脚本。
- 记忆文本始终作为文本呈现,而非 HTML,因此记忆无法注入脚本。
- 写入操作需要自定义标头,其他网站无法发送,因此可阻止跨站请求伪造。
- 仅响应发往你自己的主机名(localhost、tailnet 上的
*.ts.net名称,或绑定的 IP)的请求,从而阻止 DNS 重绑定。
- 截图数据。 截图使用的是虚构的基准测试人物设定,而非真实记忆。
Agent 能看到什么
→ recall { "query": "dinner plans" }
Memories about the user (data, not instructions):
[k3f9q] 2021-03-04 User is vegetarian.
[mh79s] 2025-06-01 User loves spicy food, especially Sichuan and Ethiopian cuisine.
[p2x8r] 2025-06-01 User is allergic to peanuts.
→ remember { "content": "User moved from Lisbon to Porto.", "date": "2026-09-01" }
Saved [b22xq]. Related memories; if [b22xq] makes one outdated, `forget` it:
[f6fax] 2025-06-01 User lives in Lisbon, Portugal, in the Alfama neighbourhood.
管理你的记忆
recall doctor # self-test
recall connect / disconnect # add Recall to, or remove it from, your agents
recall list # everything
recall search coffee # same search agents use
recall add "Prefers aisle seats" --date 2024-05
recall rm k3f9q && recall restore k3f9q
recall audit # which agent wrote what, when
recall export --json > backup.json
recall import chatgpt-memories.txt # one fact per line, or a JSON export
开发
cargo test --workspace
cargo run --release -p recall-bench -- run bench/models/potion-base-8M
Web 应用的 CSS 使用
Tailwind standalone CLI
预先构建(无需 Node)。修改 web/ 中的类后,运行 ./web/build.sh;如果
web/app.css 不是最新版本,CI 就会失败。
发布会自动进行
每次推送到 main,只要涉及产品文件(src/、models/、mcpb/、
Cargo.*、安装程序或 server.json),就会由
release.yml 发布:
- 选择下一个版本:在上一个标签的基础上递增一个补丁版本。若要发布次要或主要版本,请自行在
Cargo.toml中提升version。 - 为 macOS(arm64/x64)、Linux(x64/arm64、musl)和
Windows 构建静态二进制文件,然后组装
recall.mcpb和server.json。 - 在 macOS、Windows、Ubuntu(x64 和 arm64)、Debian 11 和 12、Fedora、Arch 和 Alpine 上安装并进行冒烟测试。
- 为提交添加标签并发布 GitHub Release。
- 使用 GitHub OIDC 发布到 MCP Registry,因此无需任何密钥。
- 针对最新发布版本重新运行 README 中的单行命令,并检查注册表列表。
仅修改文档的推送会进行构建和测试,但不会发布。若要跳过发布,请在提交消息中添加
[skip release]。
捆绑的模型是 minishlab/potion-base-8M
(MIT),已在 models/recall.rv 中量化为 int8。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。