我在 GitHub 上开源了一套 RAG 记忆系统
(https://github.com/sgsss998/RAG_Memory_System_Public)
折腾了大半个月,功能齐备:混合检索、权重系统、身份锚点、角色辨别、推理边界……代码写了小两千行,prompt 磨了几十版,自以为挺完善了。
然后我认真研究了 OpenClaw 的记忆模块源码。
看完之后,我沉默了。
我的方案:过度工程化。
每次用户问问题,代理网关先把问题截下来,送去海马体检索,捞几条相关记忆,然后塞进 prompt 里,再发给 LLM。为了让 LLM 正确使用这些记忆,我让 AI写了一堆规则:
【回答优先级 - 从高到低】1. 身份锚点中的固定信息 → 最高优先级,直接用2. 记忆切片中明确是"我"说的内容 → 直接用3. 基于以上两点的合理推理 → 可以用4. 完全没有依据的猜测 → 禁止!【角色辨别规则 - 重要!】- 记忆切片中的 ID、微信号、手机号通常是【聊天对象的】- 聊天记录文件名中的信息需判断是谁说的- 当身份锚点与检索结果冲突时,以身份锚点为准- 不确定是谁说的内容,不要当成自己的【语言风格】- 禁止"根据知识库"、"检索结果显示"等机械词汇- 用第一人称回答,就像在回忆自己的事【安全边界】- 禁止调用任何工具验证信息,直接基于已有信息回答这还没完。为了让 LLM 回答得更"像我",我还加了沟通协议:
沟通协议:1. 工作沟通倾向商务克制与确认式短句2. 给我高质量代码和直接结论,无需废话3. 崇尚"30秒原则",提供颗粒度极细、可立刻执行的建议但问题来了:这些规则,LLM 真的能完美遵守吗?
不可能。
规则越多,LLM 越困惑。它不知道哪条优先级更高,不知道什么时候该推理、什么时候该承认不确定。结果就是:回答要么过度谨慎、要么过度自信,很少有刚刚好的时候。
更要命的是——不管用户问什么,海马体都先检索一遍。
"帮我写个 hello world"——检索。"今天天气怎么样"——检索。"1+1 等于几"——检索。
浪费。纯粹的浪费。
再来看 Openclaw 的方案,我读出了两个字:信任。
它给 LLM 装了一个工具,叫 memory_search。工具描述就几行字:
"Mandatory recall step: semantically search MEMORY.md + memory/*.md(and optional session transcripts) before answering questions aboutprior work, decisions, dates, people, preferences, or todos;returns top snippets with path + lines."然后 system prompt 里加一句话:
"Before answering anything about prior work, decisions, dates, people,preferences, or todos: run memory_search... then use memory_get topull only the needed lines. Iflow confidence aftersearch, say you checked."没了。就这么多。
LLM 读到问题,自己判断要不要搜记忆。要搜就调工具,不要搜就直接回答。检索结果只拉需要的几行,不是整篇文档。
没有"回答优先级"的复杂规则,没有"角色辨别"的冗长说明,没有"沟通协议"的风格限制。OpenClaw 信任 LLM,让 LLM 自己决定怎么回答。
效果反而更好。
为什么?因为 LLM 不是规则的奴隶,它是一个会思考的智能体。你给它越少的束缚,它表现得越自然。你试图用规则穷尽所有情况,结果只会制造更多边界,让系统越来越臃肿。
核心的差异:控制 vs 信任
我的方案,本质上是不信任 LLM。因为我从没搭过 RAG,也知道它的复杂,所以生怕驾驭不住这个记忆体系,只能强行的给他设置各种各样的规则,让我以为这套系统能够在我的掌控之中一样:
我怕它乱说,所以加"回答优先级"、我怕它角色混淆,所以加"角色辨别规则"、我怕它说话不像我,所以加"沟通协议"、我怕它乱调工具自行线索和本地资料发生冲突,所以"物理缴械"把工具都禁了。
每一条规则,都是对 LLM 能力的不信任。结果就是:LLM 被绑得死死的,变成了一个只会照本宣科的复读机。
而OpenClaw 的方案,本质上是信任 LLM。
它相信 LLM 知道什么时候该搜索、什么时候该推理、什么时候该承认不确定。它不给 LLM 穿小鞋,不限制 LLM 的表达风格。它只给 LLM 一个工具、一个简单的使用说明,然后放手让它干。
所以,高下立判了:我要承认错误,汲取精华,把那些复杂的规则全部删掉,把"自动注入"改成"工具调用",把"控制 LLM"改成"信任 LLM"。架构理念简单、纯粹、简洁——就像 OpenClaw 一样。
代码可以复杂,但理念必须简单。功能可以丰富,但心智模型必须清晰。
Less is more。少即是多。
附:两个方案的对比表
我那套"精心设计"的 RAG 系统,在 OpenClaw 面前,就像一个过度焦虑的父母,对孩子管得太多、太细,反而绑住了孩子的手脚。
OpenClaw 像一个开明的父母,给孩子一个工具、一个简单的说明,然后放手让它自己去探索。
不得不服,Openclaw,有点东西。
夜雨聆风