每天打开 Claude Code,都要像给新同事做 onboarding 一样重复同样的话------「别碰认证文件」「我用 Tab 不是空格」「客户叫 Sarah 不是 Sara」------这种体验让人疲惫得像在教一台金鱼。一个叫 Total Recall 的开源插件想解决这个问题,但方法有点反直觉:它不是让 AI 记住更多,而是让它忘记更多。
写入闸门:先别急着记
多数记忆工具的思路是「先存了再说」,把所有对话、日志、上下文全塞进向量数据库,指望检索时魔法般找出有用的。但开发者 davegoldblatt 指出,这套做法很快就会让记忆变成垃圾抽屉------塞满了「五分钟前跑过某条测试」这种过期信息,反而把真正重要的决策和偏好淹没。
Total Recall 的核心是写入闸门(write gate)。任何信息想从临时笔记转正,必须回答五个问题:它会不会改变 AI 下次行为?是不是别人的承诺?决策理由值不值得回顾?是不是稳定事实?你亲口说过「记住这个」吗?只要一个答案为「是」,才能晋级。否则,它只能在每日日志里待几天,然后自然消失。
这个设计把筛选压力推给了用户。AI 只负责捕获,人类负责判断价值。就像有人建议的,系统甚至可以加一个删除闸门------「这条记忆两周没用了,还要吗?」------把清理也变成主动选择。
四层记忆,像厨房收纳
插件把记忆分成四个抽屉,用厨房比喻很贴切:
- 台面 (
CLAUDE.local.md):每天伸手就拿的东西,比如编码偏好、项目边界。容量强制控制在 1500 词左右,自动加载,绝不膨胀。 - 储藏柜 (
memory/registers/):按主题归类的长期记忆------决策、人物、项目细节。需要时主动检索,不占用每次会话的上下文。 - 每日便签 (
memory/daily/):当天所有想法先堆这儿,不分贵贱,像草稿纸。 - 杂物间 (
memory/archive/):过时的、废弃的记录,能搜但永远不主动加载。
关键流程是:先写便签,再手动晋升 。AI 不能自己决定什么重要,你通过 /recall-promote 命令把值得留下的便签移到储藏柜。这个「人工筛选」环节,正是整个系统不沦为垃圾堆的保险栓。
工程师的吐槽与开发者的迭代
Hacker News 上这个项目收到的第一条尖锐批评居然是:README 太像 AI 写的。评论说文档充满「陈词滥调和绝对化表述,像产品经理给老板打预算,而不是给工程师用」。更糟的是缺了快速开始指南,全是概念复读。
开发者没辩解,几小时内重写了文档,加了厨房比喻和实操流程。这种「你说得对,我改」的姿态反而赢得信任。
技术实现也被扒出细节。有人问:多会话同时写入会不会冲突?确实,日志是追加写入,冲突概率小;但晋升操作是读-改-写,有 race condition 风险。开发者承认理论存在,但实践中没遇到,真要解决可以改成分会话日志文件。
更核心的疑问是:模型执行写入闸门靠谱吗? 开发者坦率说,实践中模型偏保守,容易漏掉该记的东西。但他认为漏记比多记好------漏了用户可以说「记住这个」强制写入,记多了系统就慢慢废了。这个「错杀好过放过」的策略,把修正成本交给了用户一句话的事。
同类工具与互补方向
评论区里出现了几个类似项目。「Dory」走相似路线,「MemoryLane」则完全相反------它后台截屏 + OCR,把所有屏幕活动全捕获,靠检索找出上下文。开发者认为两者互补:一个把项目知识管得精瘦,另一个填补「我当时在哪个网页/标签页」的模糊记忆。
全局记忆和项目记忆的矛盾也被点出。你的编码风格、名字跨项目不变,但决策、人员、架构是项目特有的。目前的方案是项目级隔离,显然冗余。理想的「两代同堂」应该是个人全局记忆 + 项目专用寄存器,只是还没实现。
筛选的意义
这个项目关键洞察是:让 AI 自己决定记什么,最后都是垃圾堆。记忆的价值不在于存得多,而在于删得准。主动筛选听着累,但比后期在噪音里找信号轻松。
一个开发者说得好:「任何自动化记忆最终都会失败,除非有代际淘汰机制」。Total Recall 把淘汰前置了------每天花上几分钟晋升和清理,换来的是每天打开编辑器,AI 真的记得你是谁,而不是假装记得。详情可见 Hacker News 上的讨论:https://news.ycombinator.com/item?id=46907183
