添加老明微信

老明微信二维码

RAG系统设计反思|为什么OpenClaw的方案更优雅


我在 GitHub 上开源了一套 RAG 记忆系统

折腾了大半个月,功能齐备:混合检索、权重系统、身份锚点、角色辨别、推理边界……代码写了小两千行,prompt 磨了几十版,自以为挺完善了。

然后我认真研究了 OpenClaw 的记忆模块源码。

看完之后,我沉默了。

我的方案:过度工程化

每次用户问问题,代理网关先把问题截下来,送去海马体检索,捞几条相关记忆,然后塞进 prompt 里,再发给 LLM。为了让 LLM 正确使用这些记忆,我让 AI写了一堆规则:

【回答优先级 - 从高到低】
1. 身份锚点中的固定信息 → 最高优先级,直接用
2. 记忆切片中明确是"我"说的内容 → 直接用
3. 基于以上两点的合理推理 → 可以用
4. 完全没有依据的猜测 → 禁止!
【角色辨别规则 - 重要!】
- 记忆切片中的 ID、微信号、手机号通常是【聊天对象的】
- 聊天记录文件名中的信息需判断是谁说的
- 当身份锚点与检索结果冲突时,以身份锚点为准
- 不确定是谁说的内容,不要当成自己的
【语言风格】
- 禁止"根据知识库"、"检索结果显示"等机械词汇
- 用第一人称回答,就像在回忆自己的事
【安全边界】
- 禁止调用任何工具验证信息,直接基于已有信息回答

这还没完。为了让 LLM 回答得更”像我”,我还加了沟通协议:

沟通协议:
1. 工作沟通倾向商务克制与确认式短句
2. 给我高质量代码和直接结论,无需废话
3. 崇尚"30秒原则",提供颗粒度极细、可立刻执行的建议

但问题来了:这些规则,LLM 真的能完美遵守吗?

不可能。

规则越多,LLM 越困惑。它不知道哪条优先级更高,不知道什么时候该推理、什么时候该承认不确定。结果就是:回答要么过度谨慎、要么过度自信,很少有刚刚好的时候。

更要命的是——不管用户问什么,海马体都先检索一遍。

“帮我写个 hello world”——检索。 “今天天气怎么样”——检索。 “1+1 等于几”——检索。

浪费。纯粹的浪费。

OpenClaw 的方案:信任

再来看 OpenClaw 的方案,我读出了两个字:信任。

它给 LLM 装了一个工具,叫 memory_search。工具描述就几行字:

"Mandatory recall step: semantically search MEMORY.md + memory/*.md
(and optional session transcripts) before answering questions about
prior 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 to
pull only the needed lines. If low confidence after search, say you checked."

没了。就这么多。

LLM 读到问题,自己判断要不要搜记忆。要搜就调工具,不要搜就直接回答。检索结果只拉需要的几行,不是整篇文档。

没有”回答优先级”的复杂规则,没有”角色辨别”的冗长说明,没有”沟通协议”的风格限制。OpenClaw 信任 LLM,让 LLM 自己决定怎么回答。

效果反而更好。

为什么?因为 LLM 不是规则的奴隶,它是一个会思考的智能体。你给它越少的束缚,它表现得越自然。你试图用规则穷尽所有情况,结果只会制造更多边界,让系统越来越臃肿。

核心的差异:控制 vs 信任

我的方案,本质上是不信任 LLM。因为我从没搭过 RAG,也知道它的复杂,所以生怕驾驭不住这个记忆体系,只能强行的给他设置各种各样的规则,让我以为这套系统能够在我的掌控之中一样:

我怕它乱说,所以加”回答优先级”、我怕它角色混淆,所以加”角色辨别规则”、我怕它说话不像我,所以加”沟通协议”、我怕它乱调工具自行线索和本地资料发生冲突,所以”物理缴械”把工具都禁了。

每一条规则,都是对 LLM 能力的不信任。结果就是:LLM 被绑得死死的,变成了一个只会照本宣科的复读机。

而OpenClaw 的方案,本质上是信任 LLM

它相信 LLM 知道什么时候该搜索、什么时候该推理、什么时候该承认不确定。它不给 LLM 穿小鞋,不限制 LLM 的表达风格。它只给 LLM 一个工具、一个简单的使用说明,然后放手让它干。

两个方案的对比

维度我的方案OpenClaw
检索触发每次都检索LLM 按需调用
Token 消耗固定开销按需消耗
Prompt 规则几十条几行
LLM 自主性被动接受主动决策
风格限制强制约束自然表达
失败处理复杂兜底”说查过了”
心智模型控制信任

我那套”精心设计”的 RAG 系统,在 OpenClaw 面前,就像一个过度焦虑的父母,对孩子管得太多、太细,反而绑住了孩子的手脚。

OpenClaw 像一个开明的父母,给孩子一个工具、一个简单的说明,然后放手让它自己去探索。

不得不服,OpenClaw,有点东西。

👀 本文阅读量