Recall:Claude Code 的本地项目记忆
Recall:Claude Code 的本地项目记忆
Recall 是一个完全本地化的 Claude Code 项目记忆插件,旨在消除用户在每个新会话中必须重新解释项目上下文的“冷启动”问题。通过维护本地活动日志并将其浓缩为可直接用于简历的摘要,Recall 让开发者能够在不浪费模型 token 或泄露隐私的情况下继续工作。
本地摘要与 Token 效率
Recall 在无需外部大模型或 API 密钥进行摘要的情况下提供持久记忆。它使用经典的基于 Python 的抽取式摘要算法——结合 TF‑IDF 与 TextRank——来识别会话中最核心的句子。这种方式确保更新项目记忆不消耗任何模型 token。
在恢复会话时,Recall 加载一个紧凑的 context.md 文件(通常 1–2K token),而不是重新播放完整的对话记录。这样显著降低了 token 消耗,延长订阅使用上限或降低 API 成本。
Recall 如何管理项目记忆
Recall 通过存放在项目根目录下 .recall/ 目录中的两个主要文件来运作:
history.md:只追加的日志,记录每一次会话的所有内容,包括提示、AI 回复、涉及的文件以及执行的命令。context.md:浓缩的摘要,包含项目目标、进度概述、后续步骤、未决议题以及最近更改的git diff --stat。
操作工作流
| 阶段 | 操作 |
|---|---|
| 会话进行中 | Stop 和 SessionEnd 钩子会增量追加新活动到 history.md。 |
| 会话开始 | SessionStart 钩子会展示 context.md,并询问用户是否希望从已保存的上下文恢复并继续记录。 |
| 会话结束 | 用户运行 /recall:save 触发本地摘要器,或在 auto_save_context 设置为 "on_end" 时自动执行此过程。 |
与内置 Claude Code 记忆的对比
Recall 是对现有 Claude Code 功能的补充,而非替代。它填补了手动指令与完整对话回放之间的空白。
| 功能 | CLAUDE.md / # |
--continue / --resume |
Recall |
|---|---|---|---|
| 性质 | 手写规则/笔记 | 完整对话回放 | 自动捕获日志 + 本地摘要 |
| 维护方式 | 手动 | 无需 | 自动 |
| 内容 | 待遵循指令 | 完整历史记录 | 目标、文件、命令、后续步骤 |
| 恢复成本 | 小 | 大(消耗大量 token) | 小(约 1–2K token) |
| 格式 | 可编辑 Markdown | 本地会话状态 | .recall/ 中的纯文本 |
| Claude 的处理方式 | 视为指令 | 视为对话 | 视为不可信的参考数据 |
隐私与安全架构
Recall 采用“零网络”架构设计。它不进行任何网络请求,不需要 API 密钥,也不加载第三方模型。所有处理均在用户本机本地完成。
安全措施
- 秘密脱敏:通过一次最佳努力的过滤,去除常见的秘密形式(API 密钥、PEM 密钥、
.env赋值)后再写入磁盘。 - 加固 Git 集成:为防止恶意仓库通过 git 配置执行代码,
git diff与log在禁用core.fsmonitor、diff.external与钩子的情况下运行。 - 受限写入:
output_dir被限制在项目目录内,防止向绝对路径或父目录进行未授权写入。 - 信任边界:由于
context.md可以提交到仓库,它被视为不可信数据。Claude 会被告知此边界,并在使用已保存的上下文前询问用户确认。
安装与配置
Recall 可通过 Claude Code 市场安装:
/plugin marketplace add raiyanyahya/recall
/plugin install recall@recall
关键配置选项(recall.config.json)
auto_save_context:设置为"on_end"可在会话结束时自动重新生成摘要。summary_sentences:控制抽取式摘要保留的句子数量(默认 8 条)。include_git:切换是否在context.md中包含git diff --stat与最近的提交。redact:启用或禁用从日志中剥离秘密信息。
SUMMARY: Recall 是一个完全本地化的 Claude Code 插件,通过自动记录会话并使用本地 Python 摘要器生成紧凑、节省 token 的上下文摘要,从而提供持久的项目记忆。
TITLE: Recall:Claude Code 的本地项目记忆