AI 助手总忘事?我找到了解法
AI 助手总忘事?我找到了解法
上篇聊了养 AI Agent 最容易踩的 6 个坑。
今天开始讲解法。第一个问题,也是最让人崩溃的那个——
它总忘事。
翻车现场
我的 agent 帮我发了条推特,说”用 Claude Code 三个月的体感……”
三个月?我去年六月就开始用了,九个月。
它不是故意写错。是我告诉它这件事的那段对话,已经被”清掉”了。
还有一次我说”公众号文章别用’信息差’这种词”,过两天它又写了一篇全是”信息差”。问它,它说不记得我说过。
为什么 AI 会忘事
你可以把 AI 的记忆想成一张桌子。
桌子就这么大,能摊开的文件有限。你们聊的每一句话都是一张纸,新的不断往上放,放不下就得清。
清的时候它写一张便签:”之前聊过工作习惯和项目进度。”然后把原来那一摞纸扔掉,只留便签。
便签能记多少东西?”用 Claude Code 九个月”这种细节,一压缩就没了。
不是选择性失忆,是物理上放不下了。
解法一:手写记忆文件(土办法)
最直觉的方案——写一个文本文档,把重要的事记进去:
你的主人叫阿娇,前端开发,用 Claude Code 九个月了,不喜欢 AI 套话……
每次它”醒来”先读这个文件,像新同事入职先看手册。
管用,但有三个毛病:
1. 你得记得更新它——但你经常忘
2. 写多了太长——全加载进去又占桌子空间
3. 搜不了——它只能从头读到尾,某句具体的话找不到
土办法能撑一阵,但不长久。
解法二:给它装个”档案柜”
后来我发现了一个更好的方案,原理很简单:
聊天记录不扔了,全存进一个本地数据库。
桌子还是那么大,但旁边多了一个档案柜。放不下的纸不进碎纸机,归档到柜子里。
平时工作还是看桌上的纸。需要回忆之前的事,站起来去柜子翻。
具体来说:
• 最近的对话照常摊在桌上
• 更早的内容自动生成摘要,摘要占空间小
• 原文存在数据库里,随时可以搜出来
装了之后什么感觉
好的方面:
九个月不会再被说成三个月了。 就算那段对话从桌面上清了,数据库里还有,搜一下就能找到原话。
不用疯狂维护记忆文件了。 之前每次聊完重要的事都要手动更新,现在自动存档。
还不够完美的:
它得意识到自己需要去查。 档案柜在那儿,但如果它自以为知道答案直接回了,不去翻柜子,还是会出错。就像一个人明明可以查资料,但偷懒凭印象说了个错的数字。
我现在的方案:两层保险
• **记忆文件**保留,只写最核心的东西(我是谁、关键偏好、重要教训)
• **数据库**管细节(具体说过什么话、什么时候说的)
一个管”理解”,一个管”记录”。
不完美,但比纯靠记忆文件强太多。
你也可以试试
AI 失忆说到底是当前的技术限制。上下文窗口就这么大,塞不下所有历史。
但不一定要等窗口变成无限大。先把”存”和”找”做好,体验就能好一大截。
不管你用的是 OpenClaw 还是 ChatGPT,记忆管理都是 AI 从”玩具”变成”工具”的关键一步。
下一篇聊第二个解法——怎么让 AI 学会”主动做事”,而不是永远等你问它。
技术角:给想深挖的人
上面说的”档案柜”,技术上叫 ContextEngine,是 Agent 平台的一个插件接口,定义记忆该怎么存、取、压缩。
我用的实现叫 lossless-claw,核心思路:
• **存**:每条消息写入本地 SQLite,按对话隔离
• **压**:用 DAG 做分层摘要——原始消息压成叶子摘要,再压成更高层凝缩摘要
• **取**:最近 N 条保持原文,更早的用摘要顶层节点代替
• **查**:提供检索工具,agent 可以从摘要一路展开回原始消息
关键设计:摘要会丢信息,但原文永远在数据库里。
几个参数供参考:
• `freshTailCount`:最近多少条不压缩(我设 32)
• `contextThreshold`:上下文用多少比例触发压缩(我设 75%)
• `summaryModel`:摘要用什么模型(Sonnet,便宜够用)
记忆管理这个方向值得关注,后面有新发现我会继续写。
夜雨聆风