关于 chat-recall
chat-recall 汇总 AI 编码工具的对话记录,提供可搜索的共享历史、安全发现、代码建议和任务跟踪。它面向使用多个编码 Agent 的开发者与团队,通过 MCP 工具让 Agent 跨工具搜索并更新共享知识。
主要功能
- 01统一搜索编码会话历史
- 02共享具时效性的团队知识
- 03扫描记录中的泄露凭据
- 04排序并跟踪代码库发现
- 05带代码库规则的共享任务板
- 06根据相似历史会话提供续接提示
适用场景
- 01查找先前编码会话中的决策
- 02检查泄露凭据是否仍有效
- 03将代码库发现转为跟踪任务
- 04提醒 Agent 注意相似的过往工作
MCP 相关
chat-recall 提供 63 个 MCP 工具,用于搜索、回放和比较会话历史,以及管理共享知识、安全发现、代码建议和任务。其 MCP 服务可注册到受支持的编码工具和客户端。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://chatrecall.dev/mcpclaude mcp add --transport http munhq-chat-recall https://chatrecall.dev/mcp{"mcpServers":{"munhq-chat-recall":{"type":"http","url":"https://chatrecall.dev/mcp"}}}在 Cursor 中打开{"servers":{"munhq-chat-recall":{"type":"http","url":"https://chatrecall.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"munhq-chat-recall":{"type":"http","url":"https://chatrecall.dev/mcp"}}}{"mcpServers":{"munhq-chat-recall":{"serverUrl":"https://chatrecall.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
chatrecall.dev · 工作原理 · MCP 工具 · 定价 · 自托管 · 安全
将 AI 编码工具已经写下的内容转化为团队共享知识、泄露密钥警报、排名后的代码问题和可追踪任务。
你的 Agent 都写下来了,却没人看。
你运行的每个编码 Agent 都会保留其工作的完整记录:决策、推理、有人粘贴的密钥、它发现却从未登记的问题。每个 Agent 都以自己的格式写入各自的目录,彼此无法读取,也没有任何工具会读取这些记录。chat-recall 可以,它提供 63 个 MCP 工具。
| 功能 | 工具 | |
|---|---|---|
| 共享 AI 知识 | 一个 Agent 学到的决策、惯例和项目事实,可供所有其他 Agent 和团队成员使用。能识别时间变化,因此已被取代的决策会显示为已被取代 | 16 |
| 安全问题 | 标记过去对话中粘贴的凭据,逐会话检查、验证凭据是否仍有效,并持续追踪,直至凭据轮换或问题被忽略 | 4 |
| 自动化代码改进 | 排出代码仓库中真正值得修复的问题,并应用或忽略每条建议,同时具备针对代码仓库本身的代码智能 | 9 |
| 任务追踪 | 由这些问题生成的共享看板,并可为每个代码仓库设置规则,让问题转化为任务,而不只是报告 | 5 |
这四项功能的底层,是一个索引,收录了工具已经写入的所有会话;另有 28 个工具可用于搜索、重放和比较这些会话。这个索引是实现机制,不是宣传重点,也不是客户购买它的原因。
跨工具协作才是它发挥作用的关键。单个工具内置的历史记录只覆盖它自身的范围,而本工具不会止步于此,你的团队也不会。
查看实际效果
下方每个画面都是真实服务器的实际输出,取自演示账号。没有任何内容是模拟、重播或调整过时间的。
一个索引,涵盖所有工具。 搜索可以根据会话中讨论过的内容找到会话,而不只是按文件名搜索;memory status 会在同一处显示所有来源类型,包括会话,以及生成这些会话的技能、MCP、命令、子 Agent 和钩子。

也可以直接用日常语言提问——无需提供工具名称或会话 ID。Agent 会自行选择调用:

它还能找到你粘贴过的凭据,并检查哪些仍然有效。 失效的密钥只是卫生问题;有效密钥则是安全事件,只有有效密钥才会触发警报。

安装
npx chat-recall init
这会为你磁盘上已有的对话记录建立索引,检测你安装了哪些 AI 工具,并在每个工具的配置文件中注册 MCP 服务:
| 工具 | 写入的文件 |
|---|---|
| Claude Code | ~/.mcp.json |
| Codex | ~/.codex/config.toml |
| OpenCode | ~/.config/opencode/opencode.json |
| Cursor | ~/.cursor/mcp.json |
它只会修改这台机器上已安装工具对应的配置,不会覆盖你手动编辑过的条目;chat-recall doctor 会为每个工具打印一行,这样就能发现缺失的注册项。在 Claude Code 中,你也可以同时安装技能和 MCP 服务:
/plugin marketplace add munhq/chat-recall
/plugin install chat-recall@chat-recall
其他 MCP 客户端(Claude Desktop、Windsurf、Zed、Cline,或 init 不认识的工具)都可以通过 JSON 条目使用同一个服务。可执行文件名为 chat-recall-mcp,因此只写软件包名称是不够的——npx -y chat-recall 启动的是 CLI,而不是服务端:
{
"mcpServers": {
"chat-recall": {
"command": "npx",
"args": ["-y", "-p", "chat-recall", "chat-recall-mcp"]
}
}
}
对于 claude mcp add 风格的客户端,也可以将同一命令写成一行:npx -y -p chat-recall chat-recall-mcp。
然后:
chat-recall search "that auth bug" # search everything you have ever done
chat-recall recent # what was I working on
默认情况下,这会同步到托管服务 chatrecall.dev,并从 7 天试用期开始,无需提供银行卡;试用期结束后需付费订阅——请参阅定价。如果想让所有内容都留在自己的机器上,可以自行运行服务:一人使用永久免费,包含所有功能且无需许可证密钥——也包括任务看板和 Toolkit;许可证只用于协作功能:添加第二位成员、共享历史记录和分配工作。请参阅下文的自托管。无论选择哪种方式,CLI 都是同一个二进制文件,命令也相同;只有服务端 URL 不同。
无需 API 密钥。搜索使用 Postgres 全文搜索。AI 摘要是可选升级功能,并非必需。
永远不会离开你设备的内容
它会为这台设备上的每个 AI 会话建立索引,因此 init 会显示将要上传的内容——数量、工具和项目名称——并在首次同步前等待你确认。(使用 --yes 或没有 TTY 时,会打印相同的摘要并继续;--skip-sync 则会完全阻止上传。)机密信息会在客户端进行掩码处理,项目路径则以哈希值发送;此外,你还可以选择具体要纳入哪些内容:
chat-recall exclude project ~/work/client # a path, and everything under it, never syncs
chat-recall exclude tool cursor # one AI tool never syncs
chat-recall sync-only add git:github.com/me/app # invert it: ship ONLY what you list
chat-recall sources decline ~/.claude-work # a whole transcript profile stays out
# (--delete-remote purges what it already sent)
chat-recall exclude list # every rule in force
chat-recall delete <session-id> # purge one session on every server, tombstoned
chat-recall retention # how long the server keeps what you sent
chat-recall retention set 90 # delete anything older, on a timer (0 = keep everything)
有些工具会将对话记录保存到哈希目录,而不是项目文件夹,因此这些会话没有可供路径规则匹配的路径;exclude tool 可用于管理这些会话,init 会显示其数量。保留期限会按计时器从服务器删除数据。 retention set 会显示将删除的会话数量,并要求你确认该数量。只有当原始对话记录仍保存在你持有的某台设备上时,才能撤销此操作——延长保留期限,然后运行 chat-recall sync --full,重新上传符合条件的内容。对于你已不再拥有的笔记本电脑、AI 工具已轮换的历史记录,或你已删除的文件,我们的副本就是唯一副本。如果需要,请先导出。
排除规则保存在持有数据的设备上,因此由 CLI 管理;规则从下次同步起生效,已同步的记录则会保留,直到被删除。仪表板的 同步规则 面板可添加适用于所有设备的规则——这些规则会与本地规则取并集,因此只会增加保护,不会减少保护。完整模型(含限制):安全性。
它实际能做的四件事
- 跨工具统一记忆。 在 Claude Code(
~/.claude/projects/)、Codex(~/.codex/)、OpenCode(~/.local/share/opencode/)、Antigravity(~/.gemini/antigravity-cli/)、Cursor(CLI 版为~/.cursor/,IDE 版为~/.config/Cursor/)、Hermes Agent(~/.hermes/)和 Pi(~/.pi/agent/)中,使用同一个索引、搜索和 UI。会话、计划、任务、CLAUDE.md 文件、粘贴缓存、Shell 历史记录和 Agent 日记都共用一个可插拔的MemorySource接口。 - Agent 会自行回忆。 提供 63 个 MCP 工具,因此 Claude Code 可以使用
recall_smart_resume、recall_search(配合like_session查找类似工作)、recall_edits_timeline、recall_subagent_search和recall_redundant_files,而不必询问你上次发生了什么。它也可以通过recall_decision_record、recall_kg_add和recall_set写入信息。 - 在你重复工作前发出提醒。
UserPromptSubmithook 会在每次提示词提交时搜索类似的过往会话,并向 Agent 的上下文注入一条简短提示:“你以前做过这件事,见会话 X”。 - 时序知识图谱。 决策和工具提及会转化为带有
valid_from/valid_to时间范围的实体关系三元组,因此你可以询问 3 月做了什么决定,以及该决定目前是否仍然有效。
添加你自己的 AI 工具
新增一个后端只需一个文件和一行代码——无需修改引擎。如果你使用的工具会将对话记录写入磁盘,就可以在这里为其建立索引,而提交拉取请求是实现这一功能最快的方式。
可选:Web 仪表板
React 仪表板是服务端的一部分(SaaS 或通过 docker compose 自托管)——CLI 本身没有 UI。开发仪表板:
npm run web:install # install web deps
npm run web:dev # API on :5000, UI on :5174
自托管服务端(docker compose)
所有内容都保留在你自己的设备上,无需账户,也不会向任何地方发送数据:
git clone https://github.com/munhq/chat-recall && cd chat-recall
echo "ADMIN_KEY=$(openssl rand -hex 24)" >> .env
echo "POSTGRES_PASSWORD=$(openssl rand -hex 24)" >> .env
docker compose up -d --build # FIRST RUN BUILDS FROM SOURCE (minutes)
然后创建设备令牌并连接一台设备——完整步骤及故障排查说明见 docs/SELF_HOSTING.md。
包含两个容器:服务端和随附的 pgvector/pgvector Postgres,因此只需运行 docker compose up 即可独立使用。也支持使用自有 Postgres(托管服务正是这样运行的):将 DATABASE_URL 设置为外部 Postgres 16+。
保持索引实时更新(+ 可选的服务同步)
你不需要守护进程。Claude Code 会启动 MCP 服务,该进程每 3 分钟自动同步一次——这个二进制文件就是守护进程。对于没有助手运行的无头设备,可以选择启用后台服务:
chat-recall watch # foreground daemon: watches every tool, summaries, precompute
chat-recall watch --install-service # systemd user unit (Linux) · launchd (macOS) · Scheduled Task (Windows)
init 有意不安装它。这两种方式都会在同一个跨平台索引锁下调用 syncIncremental(),因此同一时间只有一个写入者会修改账本——更改相关内容前,请参阅 docs/SYNC.md。任何内容离开设备前,机密信息都会在客户端进行屏蔽。chat-recall sync 会按需执行同样的推送一次。
将其接入 Claude Code
chat-recall init 会为你完成这些设置。手动配置方式是在 ~/.mcp.json 中添加:
{
"mcpServers": {
"chat-recall": {
"command": "chat-recall-mcp"
}
}
}
chat-recall-mcp 是中继程序,不是服务端。它会为你的工具配置文件查找后台守护进程;如果不存在,就启动一个,然后将字节数据传递给它。因此,设备上的每个会话都会共用一个已加载的引擎,而不是各自携带一个:相较于单个共享守护进程,每个会话只占用约 50 MB,而非 87 MB;后台同步也只在一个进程中运行,不会让所有进程争抢同一把锁。最后一个会话关闭 15 分钟后,守护进程会退出。
两个可选参数:
CHAT_RECALL_NO_DAEMON=1 # load the whole server in each session instead
CHAT_RECALL_DAEMON_IDLE_SECS=0 # keep the daemon resident (default 900)
无论出于什么原因,如果无法连接守护进程,会话就会自行加载服务,并像以前一样正常工作——只是速度较慢,不会失效。
然后安装钩子(一条命令即可设置自动保存、压缩前备份,以及在你即将重复已有工作时发出提醒的恢复提示):
chat-recall install-hooks # registers all five events, in every Claude profile
chat-recall install-hooks --no-resume-hint # skip the resume warning
chat-recall install-hooks --no-wakeup # skip the session-start wake-up bundle
chat-recall install-hooks --no-escalate # skip the session-end escalation
chat-recall install-hooks --uninstall # remove all of ours, leave third-party hooks alone
| 钩子 | 触发时机 | 作用 |
|---|---|---|
SessionStart | 新会话(startup / clear) | 注入项目范围的唤醒信息包 |
UserPromptSubmit | 你输入提示词时 | 搜索以往会话;如果有相似会话,就会在 Agent 的上下文中注入“你以前做过这件事” |
Stop | 每轮助手回复后 | 将主题、决策和工具自动保存到 ~/.chat-recall/memory/ |
PreCompact | Claude Code 压缩上下文前 | 紧急保存,避免内容在压缩时丢失 |
SessionEnd | 会话关闭时 | 在后台整理并提升该会话的经验总结,不会造成延迟 |
决策防护
没人读取的决策只是建议。chat-recall guard 会在调用工具前运行,并在调用涉及已被否决的内容时发出提示:
chat-recall: this reaches for something already decided against.
- keycloak was ruled out — BetterAuth is the decision (2026-03-14) · session 8f2c1a4e
Proceed only if this is a deliberate reversal. If it is, record it:
recall_decision_record with the area, so the old decision is closed rather than contradicted.
它会针对安装、导入和清单编辑触发,例如 npm install auth0、新增一行 import,或在 package.json 中添加名称。不会针对文字内容触发:句子里说“我们可以使用 Auth0”不应阻止任何操作,否则人们会关闭防护功能。
它只发出警告,不会阻止操作。 错误拦截会让用户多花一个回合,还会导致防护功能被卸载;错误警告只会多占一行上下文。设置 CHAT_RECALL_GUARD_ENFORCE=1,即可按机器配置为拦截操作。设置 CHAT_RECALL_GUARD=0 可将其关闭。
chat-recall install-hooks 会在全部五种工具中注册防护功能。每种工具都会将自己的执行前钩子保存在独立文件中,因此安装程序会写入五种不同格式,并跳过机器上未安装的工具(使用 --no-guard 可全部跳过):
| 工具 | 位置 | 事件 |
|---|---|---|
| Claude Code | ~/.claude/hooks.json,所有配置文件 | PreToolUse |
| Codex | ~/.codex/hooks.json | PreToolUse |
| Antigravity | ~/.gemini/antigravity-cli/hooks.json | PreToolUse——这是唯一支持真实 ask 判定的工具,因此可以发出提示 |
| Cursor | ~/.cursor/hooks.json | beforeShellExecution + afterFileEdit |
| OpenCode | ~/.config/opencode/plugins/chat-recall-guard.js | tool.execute.before |
Codex 还需要一步操作。 只有在你信任钩子后,它才会运行钩子——打开 Codex 并运行一次 /hooks。chat-recall doctor 会报告每种工具的注册状态。
其中两种工具无法实现全面覆盖,文档会如实说明,而不会让人误以为覆盖完整。Cursor 提供 beforeShellExecution,但只提供 afterFileEdit,因此编辑中新增的导入会在写入后才报告,而不是事先阻止。OpenCode 的插件钩子不会针对子 Agent 的工具调用触发(#5894),因此委派任务的 Agent 可以绕过它。
配套工具:codeindex(自动检测)
另有一个名为 codeindex 的独立 MCP 服务(Zig 二进制文件,约 56 MB),由 munhq 开发,可为 Agent 提供代码级查找能力。两者可以配合使用:
- chat-recall = 会话记忆。我做过哪些工作?我们决定了什么?
- codeindex = 代码记忆。这个符号在哪里?哪些代码会调用它?修改它会造成什么影响?
两者结合后,Agent 在重新开展工作前,既能回答“我以前做过这个吗?”,也能回答“这个代码库里已经有了吗?”
chat-recall 的处理方式: chat-recall init 会检测你的 PATH 中(或 ~/.local/bin/codeindex)是否存在 codeindex。如果存在,就会自动将其注册为 ~/.mcp.json 中的 MCP 服务——无需下载,也不会擅自安装。如果不存在,则会打印一行提示,说明如何获取它。
chat-recall init # default — detect and register if installed
chat-recall init --with-codeindex # additionally force-download the binary
chat-recall init --skip-codeindex # don't even check
chat-recall companions install # download manually (after init)
chat-recall companions status # show what was detected
chat-recall companions uninstall # remove the binary + MCP registration
codeindex 在 github.com/munhq/codeindex 上以 MIT 许可证开源。安装并非必需——chat-recall 完全可以在没有它的情况下运行;只是无法使用代码级工具。
索引内容
| 来源 | 来源位置 | 说明 |
|---|---|---|
| 会话(Claude) | ~/.claude/projects/<hash>/<uuid>.jsonl | 完整转录、令牌、费用、处理过的文件、使用的模型 |
| 会话(OpenCode) | ~/.local/share/opencode/opencode.db(SQLite) | 费用、令牌、待办事项 |
| 子 Agent 转录 | <session-dir>/<id>/subagents/*.jsonl | Explore、aside,以及 acompact-*(孤立的压缩历史记录) |
| 计划 | ~/.claude/plans/*.md | Agent 计划文档,按 ## 拆分 |
| 任务 | ~/.claude/tasks/<session>/*.json | 与父会话关联 |
| CLAUDE.md | 根据项目哈希自动发现 | 与同一项目中的会话关联 |
| 历史记录 | ~/.claude/history.jsonl | Shell 历史记录,可选择关联到会话 |
| 粘贴内容 | ~/.claude/paste-cache/*.txt | 大型粘贴内容 |
| 日记 | ~/.chat-recall/index/diary/<agent>/*.json | Agent 通过 recall_diary_write 告诉未来的自己的内容 |
MCP 工具(共 62 个,包括安装配套二进制文件后注册的 4 个代码智能工具)
搜索与检索 — recall_search、recall_memory_search、recall_recent、recall_show、recall_context、recall_summary、recall_smart_resume、recall_project_context、recall_weekly_digest、recall_analytics_summary、recall_wake_up。
模式检测 — 使用 like_session: <id> 调用 recall_search(查找与指定会话类似的工作)、recall_redundant_files(当新文件名与以往工作重叠时发出警告)、使用 files_only: true 调用 recall_diff(会话 X 实际改动了哪些文件)、使用 group_by: "session" 调用 recall_edits_timeline(哪些会话编辑过 auth.rs)。
子 Agent 与筛选器 — recall_subagent_search(在隐藏的 Explore/aside/compact 转录中搜索)、recall_user_prompts(仅包含人类输入的内容,并已去除横幅)。
按优先级排列的发现 — recall_claude_suggestions(所有会转化为 Agent 指令变更的发现:CLAUDE.md 规则和技能安装,合并了账户范围及所有已索引项目的内容)和 recall_improvements(其余内容,按紧急程度从高到低排列;使用 create_tasks: true 可为每项创建一个团队任务)。两者划分同一批建议引擎的结果,因此同一条目不会同时出现在两者中。
知识图谱 — recall_kg_query、recall_kg_add、recall_kg_invalidate、recall_kg_timeline、recall_kg_stats。此外,recall_decision_record 可通过一次调用将决策同时写为三元组和日记条目。
KV 状态 — recall_set、recall_get(不提供键时列出该范围)。以带命名空间的字符串为键存储少量持久值,例如“当前 PR 的 URL”“我正在处理的分支”“用户偏好”。
日记与状态 — recall_diary_write、recall_diary_read、recall_status(包含记忆构成明细)、recall_index。计划/任务:使用 recall_memory_search(source_types:['plan','task']) 搜索,使用 recall_show 阅读。
移除内容 — recall_forget 会从服务中永久删除一段对话,并将其标记为墓碑,因此后续同步不会恢复该对话(你自己的转录文件不受影响);recall_exclude_path 会停止同步某个路径,并在此计算机和你的账户中生效。之所以将它们做成工具,是因为人们会在对话中提出“忘掉那段对话”和“停止同步这个代码库”,而不会为此打开控制面板。两者都要求设置 confirm: true,都标记为破坏性操作,且都不会自动批准——客户端每次都会询问。此边界有意设置为单向:Agent 可以缩小存储范围,但没有任何工具可以再次扩大范围(没有取消排除、没有允许列表,也没有保留期限)。要扩大范围,由你决定:使用 chat-recall exclude remove 或打开控制面板。
安装 codeindex 配套工具后,Agent 还会通过单独的 MCP 服务获得 16 个代码级工具(find_symbol、find_callers、get_imports、plan_change、get_change_impact、analyze 等)。它们可以组合使用:chat-recall 用于查找你做过的工作;codeindex 用于了解当前存在的内容。
搜索架构
搜索在服务端运行,使用 Postgres 全文搜索:按关键词匹配并排序,同时通过 pg_trgm 容忍拼写错误。它不需要嵌入模型、API 密钥或额外服务。
CLI 会将经过脱敏的文本块发送到服务端,由服务端进行索引。
费用跟踪
只要会话中至少有一个模型的费率为服务端所知,系统就会根据令牌用量计算美元费用。对于其他所有模型——包括任何本地模型、任何可自托管模型,以及任何比费率表更新的模型——控制面板都会显示 —,而不会捏造数字。摘要会显示 sessionsWithoutPricing 计数器,让你了解总费用中实际覆盖了多少。
唤醒上下文
chat-recall memory wake-up
为 AI 会话构建一个小型资料包:可选的身份简介、分类器标记为决策/偏好/里程碑且重要性 ≥ 4 的前 10 个片段,以及当前有效的知识图谱事实快照。没有什么神奇的压缩——只包含索引器已标记的高信号内容。
数据位置
CLI 几乎不在本地保存任何内容——只保存连接服务器所需的信息:
| 路径 | 内容 |
|---|---|
~/.chat-recall/credentials.json | 服务器目标地址 + 设备令牌(模式 0600) |
~/.chat-recall/sync-ledger.json | 每台服务器的同步水位标记(已发送的内容) |
~/.chat-recall/hooks/ | 已安装的钩子(运行 install-hooks 后) |
~/.chat-recall/index/diary/ | 由 recall_diary_write 写入的 Agent 日志 |
~/.chat-recall/shadow/ | 每个会话所见最完整的转录记录的 Gzip 压缩副本,防止上游 --resume 截断内容导致历史记录丢失 |
~/.chat-recall/cache.db | 本地仪表板使用的本地结果/元数据缓存。它不是索引,也不会在服务器模式下使用 |
所有已索引内容——片段、FTS、向量、知识图谱、机密信息发现结果和日志——都存储在服务器上(自托管和 SaaS 均使用 Postgres)。如需重置,请清除服务器的 Postgres 数据,而不是 ~/.chat-recall 下的任何内容。
隐私
你的会话会同步到 chat-recall 服务器——可以是你自行托管的服务器(你自己的设备、你自己的 Postgres),也可以是 SaaS。离开 CLI 之前,所有内容都会经过脱敏:机密信息会在客户端屏蔽,因此服务器永远不会收到原始凭据。自托管可将所有数据保存在你控制的基础设施上;SaaS 则是托管式替代方案。
不收集遥测数据。你的数据存储在你自己的服务器 Postgres 中——你可以按自己的方式备份。在 SaaS 上,数据存储于托管的 Postgres;如果你希望数据完全留在自己的基础设施上,可以选择自托管。
架构
packages/
├── engine/src/
│ ├── core/
│ │ ├── backends/ ToolBackend per AI tool (claude, opencode, codex, agy, cursor)
│ │ ├── tool-backend.ts Registry interface — single source of truth for tool identity
│ │ ├── tool-paths.ts Env-overridable default paths for each tool
│ │ ├── generic-engine.ts Shared turn extraction / edit scan / replay (canonical events)
│ │ └── … Indexing, storage, embeddings, summaries, KG, classifier
│ └── parsers/ *-source.ts plugins per content type (sessions, plans, tasks, …)
├── cli/
│ ├── src/cli.ts CLI
│ ├── src/mcp.ts MCP server
│ ├── auto-indexer/ chokidar-based watcher daemon (systemd-friendly)
│ └── hooks/ Claude Code hooks (install via `chat-recall install-hooks`)
└── server/
├── src/ Express API
├── client/ React + Vite UI — the dashboard
└── cloud/migrations/ Empty by design — pg-schema.ts owns the schema
docker/ Dockerfile + entrypoint for the server image
e2e/ Playwright tests for the dashboard
两个扩展点,均由注册表驱动:
- 添加新内容类型(例如,添加另一种要索引的文件格式)——实现
MemorySource(discover→parse→extractLinks),并将其注册到SourceRegistry。 - 添加新 AI 工具(在 Claude/OpenCode/Codex/Antigravity/Cursor/Hermes 之外,添加第七种后端)——实现
ToolBackend(路径、ID 处理、readEvents、fileToolMap、extractEditDelta),并将其注册到packages/engine/src/core/backends/index.ts。所有路径都可通过CHAT_RECALL_{CLAUDE,CODEX,AGY,CURSOR,CURSOR_IDE,HERMES}_HOME/CHAT_RECALL_OPENCODE_DB环境变量覆盖。
要求
- Node.js 22 或更高版本。Docker 镜像和 CI 使用 24。
- 会话由受支持的工具写入,并位于其标准位置:
~/.claude/、~/.codex/、~/.local/share/opencode/、~/.gemini/antigravity-cli/。
要求就这些。安装、索引或搜索都不需要 API 密钥。
有一项功能需选择启用,并且需要使用你选择的后端:
| 功能 | 可连接的后端 |
|---|---|
| AI 摘要 | Ollama、你已登录的 CLI(SUMMARY_CLI_CMD)、兼容 OpenAI 的端点,或 ANTHROPIC_API_KEY |
不启用该功能时,会话不会生成摘要。其他功能照常运行。
许可证
整个代码库采用 Elastic License 2.0。
简单来说:你可以自由使用、修改,也可以自行运行或在公司内部运行,无需申请许可。唯一不允许的,是将其作为托管或管理式服务提供给第三方——那就是产品本身。你也不得移除许可证密钥检查或版权声明。
它是源代码可用,但不是 OSI 开源,本 README 不会故意含糊其辞。它取代了此前 CLI 和引擎采用 MIT 许可证、服务器采用 BSL 1.1 的许可拆分;那种做法让同一个代码库对“我可以使用它吗?”这个问题给出了三种不同的答案。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。