Hacker News 中文摘要

RSS订阅

Show HN:Recall – Claude Code的本地项目记忆功能 -- Show HN: Recall – Local project memory for Claude Code

文章摘要

Recall是一个为Claude Code提供完全本地化项目记忆的工具,能避免每次对话重复解释项目背景,节省token消耗,且完全离线运行。

文章总结

Recall:为Claude Code提供完全离线的项目记忆

核心功能

Recall是一个为Claude Code设计的插件,解决每次会话都需要重新解释项目的“冷启动”问题。它通过本地记录会话日志并压缩成摘要,实现持久化记忆——完全在本地运行,无需API密钥,不依赖外部模型,数据不会发送到任何地方。

主要优势

  • 免费使用:摘要生成采用本地算法(TF-IDF + TextRank),而非调用LLM,不会产生额外费用
  • 节省使用额度:两种方式节省:1)摘要本地构建,消耗零模型token;2)从紧凑的context.md(约1-2K tokens)恢复,而非从头重新解释项目
  • 隐私保护:会话记录(代码、路径、可能包含的密钥)永远不会发送到任何API
  • 零摩擦:无需pip install,无需运行本地模型,无需配置密钥,支持离线工作

工作文件

项目下的.recall/目录包含两个文件:

  • history.md — 日志文件,仅追加写入。记录每次会话的提示、Claude回复、操作文件和运行命令
  • context.md — 摘要文件,由本地摘要器覆盖写入。包含目标、摘要、下一步/未完成事项、操作文件、上次进度

与Claude Code内置记忆功能的区别

| 功能 | 说明 | |------|------| | CLAUDE.md | 手动编写的规则和笔记,作为Claude遵循的指令 | | --continue/--resume | 重放之前的完整对话,token消耗大 | | Recall | 自动捕获会话日志+本地摘要,约1-2K tokens的紧凑摘要 |

简而言之:CLAUDE.md是“我希望你如何工作”;Recall是“我们上次做了什么,停在哪里”——离线生成,不消耗模型token。

工作流程

  1. 会话期间:通过Stop/SessionEnd钩子增量追加活动到history.md
  2. 会话开始SessionStart钩子展示context.md,询问是否从保存的上下文恢复
  3. 结束前:运行/recall:save命令,本地摘要器读取history.md并写入context.md
  4. 自动保存:设置auto_save_context: "on_end",会话结束时自动生成context.md

摘要器原理

scripts/summarizer.py通过以下步骤提取最核心的句子:

  1. TF-IDF句子向量化
  2. 句子间余弦相似度图
  3. TextRank(PageRank迭代)评分
  4. 保留得分最高的N个句子(按原始顺序)

无需额外安装,numpy为可选加速器。

配置选项

recall.config.json可配置:输出目录、是否捕获历史、自动保存模式、摘要句子数量、是否脱敏、是否包含git信息等。

隐私与安全

  • 无网络调用,无API密钥,无第三方模型
  • 最佳努力脱敏常见密钥格式
  • git命令禁用外部钩子和分页器
  • 输出目录限制在项目内
  • 会话记录仅限当前项目

安装方式

从市场安装:/plugin marketplace add raiyanyahya/recall

本地开发:claude --plugin-dir /path/to/recall

评论总结

评论总结

主要观点

1. 现有方案已足够(多数评论) - CLAUDE.md、AGENTS.md 或 README 文件已能有效管理项目上下文 - 工单系统(ticketing system)结合 CLAUDE.md 即可满足需求 - 关键引用: - "CLAUDE.md is already a good system for context window management" (gste) - "I never have to because I use a ticketing system the model goes through in addition to a CLAUDE.md file" (giancarlostoro)

2. 项目记忆可能引入噪音和过时信息 - 陈旧计划和失败的调试猜测会"毒害"后续会话 - 过多上下文填充无关信息反而降低模型性能 - 关键引用: - "Stale plans and failed debugging guesses can quietly poison an agent pretty fast" (felixlu2026) - "the more you fill that context with unrelated junk, the worse they perform" (SwellJoe)

3. 替代方案更优 - 使用状态文档(status_docs/)记录每日进展 - 通过"导师-学徒"模式让新旧会话直接对话 - 利用 Obsidian 等工具组织文档库 - 关键引用: - "I just keep a folder called something like status_docs/... It's basically a project diary" (cootsnuck) - "I had the idea of an oracle/apprentice... the new session would learn from the old session" (folays)

4. 项目本身存在局限 - 需要手动更新上下文是主要障碍 - 缺乏基准测试验证效果 - 可能记录过多"死胡同"信息 - 关键引用: - "the need to manually update the context is a huge hurdle" (cadamsdotcom) - "Are there any benchmarks/evals to back the claims?" (zihotki) - "I wonder if a lot of it doesn't end up detailing blind alleys" (anigbrowl)

5. 部分用户认为问题不存在 - 直接给任务即可,无需解释项目 - 简短会话、从新开始更高效 - 关键引用: - "I never had to explain my project. Just give it a task" (serial_dev) - "I'll typically have a bunch of short sessions... I start fresh" (mikeocool)

平衡性说明

评论呈现明显分歧:多数用户认为现有方案(CLAUDE.md、状态文档、工单系统)已足够,少数用户对项目记忆方案持开放态度但指出其局限性。项目在隐私保护和减少token消耗方面有亮点,但缺乏实证支持。