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

操作工作流

阶段 操作
会话进行中 StopSessionEnd 钩子会增量追加新活动到 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 difflog 在禁用 core.fsmonitordiff.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 的本地项目记忆

Sources