目录

上一篇,我给几个项目的 AI 记忆库做了一次系统的“除草”,也归纳出记忆衰退的六种“杂草”。可越除到后面我越确定一件事:手动除草只能治标而不能治本——只要记忆系统本身缺了自我体检的机制,“草”拔完了,但过一阵子照样长。所以那篇结尾我给自己留了个作业:做一个会“自动体检”的记忆工具。这一篇,就是来交作业的。

先来讲讲这工具到底是干嘛的。

你可以把它想象成记忆库的专属医生。你把它指向某个项目的记忆库,它就从头到尾扫一遍,把发现的问题一条条摆在你面前:这条链接断了、那份记忆放错了目录、这两条内容看着自相矛盾……然后停在这儿,等你来决定每一条怎么办。

别小看这句“等你来决定”,它定了整个工具的性格:只负责看、负责说,就是不动手。

🩺 它只负责“看”,不替你动手

为什么要这么设计?这得回到上一篇那个最痛的教训:删记忆这种事,绝不能全权交给 AI。它可以提议哪条该删、哪条该合并,但最后拍板的必须是人。被删掉的往往是历史记录,AI 一顺手,很容易把要紧的一并抹掉。

做工具的时候,我把这条教训写成了一条死规矩:整个程序里,没有任何一条路径会自己去改、去删你的记忆文件。它能扫描、能给每条问题标出轻重、能把改法都替你想好摆在那儿,但真正“改”或“删”的那一下,得你自己按。

这么一讲好像有点亏——造了个工具,却把它最能干的那截给砍了。可恰恰是这份克制,让我敢天天开着它用。要是换成一个会自作主张动我记忆库的工具,我一次都不敢碰。

工具只管扫描、分级、给建议;改和删的那一下,永远你自己按

🔍 机器看“硬伤”,AI 读“语义”

说完它不动手,再说说它到底能看出什么。工具扫出来的问题,其实分两种,处理方式大不相同。

一种是机器一眼就能判的硬伤:链接指向的文件根本不存在、一份记忆躺错了目录、命名不规范……这些不用理解内容,规则一比对就知道,而且不会看走眼。

另一种要难缠得多。比如“这两条记忆是不是在自相矛盾”,光看字面判断不了,它得真的读懂两条记忆各自在说什么。这种活,绕不开一个能理解语言的大模型。好在这工具本来就是 Claude Code 的插件,运行的时候旁边就坐着一个 Claude——现成的、能读懂意思的模型,用不着再往外接。

于是硬伤交给一个本地小引擎——它不联网、不调任何模型,同一个记忆库每次都给出一模一样的结果;要读懂意思的判断,交给宿主 Claude,也就是正陪你干活的这个模型。这么分下来,工具装起来不需要任何 API key,不依赖任何外部服务,你的记忆内容也一个字都不会往外发。

机器能判的硬伤交给本地引擎,要读懂意思的判断交给宿主 Claude,两层各管一段

顺着这个思路,我把检查铺成三层,从最确定的到最需要动脑的:

  1. 静态检查(硬伤):引擎的主力,判得又快又准——死链(命名从连字符漂成下划线,链接就静默断了)、悬空索引(目录里记着、文件却没了)、孤儿记忆(文件在、目录里却没登记)、缺字段、命名不规范、放错目录。都是机器能一眼识别、不会误判的硬伤。
  2. 连蒙带猜(线索):比如一条记忆写着“开发中”“审批中”,又很久没更新,多半是事早办完了、状态却还冻在那儿。这层给的是线索,算不上定论。
  3. 读懂意思(语义):上一篇里最难缠的两种“草”——项目里重复抄了一遍全局规则(我叫它幽灵副本)、看着相反其实各管一个场景的“伪矛盾”——都得读进内容才判得出来。这层交给宿主 Claude,它读完给建议,我来拍板。

三层扫完,工具按红黄绿把问题分好轻重,一条条陪你过:这条断链改吗?这条孤儿补进目录吗?这条冻住的状态是不是早结束了?你说改它才改,你说跳过它绝不碰。

⏰ 让它到点提醒,但别来烦我

光有体检还不够,因为维护记忆最大的敌人不是“不会修”,是压根忘了修。上一篇我说记忆得定期维护,可“定期”全靠自觉,基本等于没有。

所以我给工具加了个提醒:每次开始干活,如果当前项目的记忆库太久没体检,它就轻轻提一句“🩺 已 N 天未体检”。

但提醒这东西,多了就是噪音,一成噪音就被无视。于是我给它上了两道约束:一天最多冒一次头,不会每开一次会话都跳出来;真要嫌烦,一条命令就能先把它关掉。

体检提醒一天只在限时窗口冒一次头,嫌烦一条命令就能关掉

📌 现在它能干什么,不能干什么

说点实在的。

能干的:六个检测器、旧格式记忆的迁移建议、中英双语的输出,现在都跑通了。我拿它把自己九个项目的记忆库挨个体检了一遍,断链、过时命名、冻住的状态,一次清干净。

不能干的(也是我故意画的界):

  • 要读懂意思的判断,最后还得人点头,工具只出主意;
  • 它绝不会自动替你改任何东西;
  • 对小库、新库,体检收益有限,真正值回票价的是那些攒了很久的大库。

一个管记忆的工具,最不该做的就是自作主张。

工具本身现在还是我自己在用,但从第一行代码起就是照开源标准写的:测试齐、历史干净、中英文文档都有。什么时候公开、怎么公开,等我自己用踏实了再说,所以这篇先不放链接,免得你点进去扑个空。

💡 回头看,三点想法

  1. 给一个会“动手”的工具,先想清楚它的边界在哪。 越是不可逆的操作,工具越能干就越危险。把“绝不自动动手”定成死规矩,反倒让我敢放心用它。
  2. 做提醒、通知这类功能,别忘了留一个“让人关掉它”的开关。 我们总惦记着怎么把消息推到用户眼前,却容易忘了:被反复打扰的提醒,最后都会被无视。能被关掉的提醒,才有人真看。
  3. 自己造的工具,自己先当那个较真的用户。 别象征性跑一下就算,真拿它去干活,那些误判、漏判才会一个个冒出来。

下一篇:聊聊 loop

关于记忆,从搭建、除草到这次的体检工具,就聊到这儿。下一篇换个话题——聊聊 loop:怎么让 AI 按固定节奏自己跑起来,把一件重复的事持续做下去,而不用我每次守着。


如果你也在给 AI 攒记忆库,或者正想给自己的工具立几条“绝不越界”的规矩,希望这篇能给你搭把手。觉得有用的话,点个赞、点个“在看”,或者转给同样在折腾 AI 记忆的朋友——你的每一次转发,都是我写下去的动力。