开发与工程 claude-code-pluginsession-memorytext summarizationlocal-firstofflineprivacyopencodepython

Recall — Claude Code 本地项目记忆插件

让 Claude Code 拥有持久记忆:自动记录每次会话并生成离线摘要,告别每次重新解释项目、浪费令牌。

FollowAgents 评估 · FARS-2.1
谨慎使用
66/ 100 五分制 3.3 / 5
1 2 3 4 5 6
1信任安全19 / 29 · 3.3/5

README 与 SECURITY.md 详述最小权限设计(写入限定 output_dir、O_NOFOLLOW、加固 git 子进程、仅读当前项目 transcript),并有测试佐证脱敏与增量捕获;但核心脚本(common.py、redact.py 等)不在本次证据内,安全声明主要靠文档与部分测试支撑,故各信任项记 2 而非满分。SessionStart 询问恢复与记录的问题、.capture-paused 暂停、卸载选项提供用户控制。

2可靠稳定8 / 14 · 2.9/5

各文件叙述自洽(README、SECURITY、pyproject、测试一致),无运行时依赖、numpy 双路径均有 CI 矩阵覆盖,故自洽与依赖可得记 2;失败信息方面,钩子刻意静默 no-op、文档少有面向用户的错误提示(仅提及 save 输出显示哪条路径),记 1。

3适用触发12 / 18 · 3.3/5

受众(本地订阅用户)、场景(Claude Code 主路径 + opencode 可选)、触发机制(Stop/SessionEnd/SessionStart 钩子)描述清晰;能力边界诚实(opencode 无围栏、可能静默失效);环境(Python 3.9–3.13、numpy 可选)覆盖良好,但均为文档断言,静态证据记 2。

4规范维护14 / 18 · 3.9/5

信息架构(Layout 图)、安装说明(marketplace/本地/opencode 三路径)非常完整,记 3;已知限制坦率(best-effort 脱敏、opencode 漂移),记 3;MIT LICENSE 齐全记 3。扣分点:无 CHANGELOG、未见插件版本号(plugin. 未提供证据),版本化记 1;命名一致但无历史稳定性证明记 2;维护责任有 CONTRIBUTING/SECURITY 模板但维护者身份未验证记 2。

5有效结果9 / 13 · 3.5/5

输出为可 diff 的明文 markdown(history/context 分离),可用性记 2;相对 CLAUDE.md/--continue 的边际价值论证清楚但未执行验证记 2;零 token 成本声明与本地算法一致,成本收益记 2,均因无法运行核实而保守。

6证据核验4 / 8 · 2.5/5

声明可追溯到命名文件(common.py:git_info 等),但被引用脚本不在证据内,无法核对,记 1;README/SECURITY/测试跨源一致记 2;事实与推断分离做得好(明确'best-effort 不是保证'),记 2。

证据充分度: 评估于 2026年9月10日 审查版本 e65cb1e406fe
使用前请注意
  • 本次为静态评审,未执行任何代码;安全声明(脱敏、写入限定、git 加固)依赖文档与部分测试,核心脚本未在证据内核对。
  • 脱敏为 best-effort,提交 .recall/ 前应人工检查是否含密钥。
  • 若将 .recall/ 作为团队共享记忆提交,存在 prompt 注入风险;opencode 路径无不可信数据围栏,更需谨慎。
  • 无 CHANGELOG 与可见版本号,升级时难以追踪变更;发布者未经验证,采用前请自行审计脚本。
  • 钩子失败时静默 no-op,捕获可能在无提示的情况下中断,请定期核对 history.md 是否更新。
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Recall 是一个为 Claude Code 设计的完全本地化插件,解决每次会话冷启动、需反复解释项目背景的问题。它通过 SessionStart、Stop 和 SessionEnd 钩子把会话活动增量追加到项目内 `.recall/history.md`,再用本地 TF-IDF + TextRank 摘要器生成约 1–2K 令牌的 `context.md`,供下次会话恢复上下文。整个过程无任何 LLM 调用、无网络请求、无 API 密钥,摘要算法(含 numpy 加速路径与纯 Python 路径)全部内置在 `scripts/summarizer.py`。除了 Claude Code 插件形式,还可通过安装脚本以选择性方式接入 opencode,两个工具可共享同一份 `.recall/` 记忆。项目还内置脱敏、受限写入与 git 配置加固等安全机制,遵循 MIT 许可证。

会话进行中,Stop/SessionEnd 钩子运行 capture.py,把你的提示词、Claude 回复、触碰的文件和执行的命令增量追加到 .recall/history.md;会话开始时 session_start.py 加载 context.md 并询问是否恢复、是否继续记录。收尾时运行 /recall:savemake_context.py 调用 scripts/summarizer.py(TF-IDF 句向量 → 余弦相似度图 → TextRank PageRank 幂迭代 → 取前 N 句),并结合首条请求、文件、命令、git diff --stat 等确定性事实覆盖写入 context.md。也可配置 auto_save_context: "on_end" 在会话结束自动生成。命令包括 /recall:save/recall:show/recall:log。支持 opencode 的项目可运行 python3 ~/recall/scripts/install.py --opencode --project <路径> 生成捕获 shim、/recall-save 命令和 opencode. 配置。

  1. 在订阅计划下长期使用 Claude Code 的开发者,希望省下重复解释项目的令牌开支
  2. 跨多天、多会话推进同一项目的工程师,需要快速恢复上次进度和待办事项
  3. 对隐私敏感、代码和路径不能发送到外部 API 的团队或个人
  4. 同一仓库混用 Claude Code 和 opencode 的开发者,希望共享同一份会话记忆
  5. 希望把 .recall/ 提交为团队共享记忆、供成员互相接续工作的小型团队(需信任仓库写入者)

这个 Agent 有哪些优点和局限?

优点
  • 完全离线、零模型令牌成本:摘要由本地 TF-IDF + TextRank 生成,不调用任何外部模型或 API
  • 隐私保证明确:无网络调用、无 API 密钥,写入前对 API 密钥、token、.env、PEM 等做尽力脱敏
  • 恢复成本低:约 1–2K 令牌的紧凑 context.md,对比 --resume 重放完整会话记录
  • 跨 harness 可移植:.recall/ 是纯 markdown,Claude Code 与 opencode 可共享同一份记忆
局限
  • 摘要是抽取式算法而非 LLM 生成,表达质量和语义压缩能力受限于 TF-IDF + TextRank
  • opencode 支持依赖其公共 CLI(session list、export、插件事件 API),opencode 快速迭代可能导致捕获静默失效
  • opencode 路径通过 instructions 加载 context.md,缺少 Claude Code 的不可信数据围栏,提交共享记忆时需额外谨慎
  • Codex 等其他 harness 尚不支持,需要自行基于适配层开发
  • 脱敏为尽力而为而非保证,提交 .recall/ 前需人工审查

如何安装或部署这个 Agent?

从 marketplace 安装(在 Claude Code 中执行):

/plugin marketplace add raiyanyahya/recall
/plugin install recall@recall

本地开发方式(无需安装步骤):

claude --plugin-dir /path/to/recall

opencode(每项目一次性):

git clone https://github.com/raiyanyahya/recall ~/recall
python3 ~/recall/scripts/install.py --opencode --project /path/to/your/project

无需 pip install:摘要器内置,仅标准库(numpy 为可选加速)。在订阅登录下运行即可;若 claude 报 "Invalid API key",用 unset ANTHROPIC_API_KEY 清除干扰变量。

如何使用这个 Agent?

  1. 正常开始一个 Claude Code 会话,Recall 会展示 context.md 并询问是否恢复及是否记录。
  2. 正常工作,Stop/SessionEnd 钩子自动追加会话活动到 .recall/history.md
  3. 结束前运行 /recall:save 生成/覆盖 context.md(或在 recall.config. 中设置 auto_save_context: "on_end" 自动生成)。
  4. 新开会话即可从紧凑摘要恢复,无需重新解释项目。

其他命令:/recall:show 打印 context.md,/recall:log 查看 history.md。可选在项目根放置 recall.config. 覆盖默认值(输出目录、摘要句数、脱敏、git 集成等);创建 .recall/.capture-paused 可暂停记录。

这个 Agent 与同类方案有什么区别?

README 明确与 Claude Code 内置方案对比:CLAUDE.md# 快捷方式)是手写的规则与指示,需人工维护,不记录实际会话内容;--continue/--resume 重放完整历史会话,令牌开销大且绑定单机;上下文压缩只在会话内部进行,不是持久的跨日记录。Recall 定位为填补三者之间的空白:自动、确定性地记录每次会话,并压缩为紧凑的恢复点。

常见问题

使用 Recall 会额外花钱吗?
不会。摘要是本地 TF-IDF + TextRank 算法,不调用任何 LLM,捕获和更新记忆不消耗模型令牌;恢复时加载约 1–2K 令牌的 context.md,反而节省每次会话的令牌开支。
我的代码和会话记录会被发送到任何地方吗?
不会。Recall 无网络调用、无 API 密钥、无第三方模型,所有数据只写入项目内的 .recall/ 目录,写入前还有尽力脱敏(API key、.env、PEM 等常见密钥形态)。
如果克隆了不可信的仓库,会有安全风险吗?
Recall 做了多重防护:git diff/log 以禁用外部 diff、钩子和分页器的方式运行,output_dir 被强制限制在项目内,context.md 以不可信参考数据的形式注入。但若把 .recall/ 提交为团队共享记忆,仍有提示注入风险,默认 .gitignore 已忽略它。
没有 numpy 能用吗?
可以。numpy 只是可选加速器;若不可导入,会运行结果相同的纯 Python TextRank 实现,算法与结果一致,无需任何安装。
能在 opencode 或 Codex 上使用吗?
opencode 有官方的选择性支持,运行一次安装脚本即可自动接入;Codex 等其他 harness 暂不支持,但代码中预留了适配层(scripts/harness_opencode.py、make_context.py 的 --harness 参数),欢迎贡献。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents