为什么需要专门的记忆召回

OpenClaw 把你的工作区当成"家":SOUL.md、USER.md、AGENTS.md 是长期人设,而 memory/ 目录下的 MEMORY.md 和 YYYY-MM-DD.md 才是真正会累积的经验。

但光写下来没用——模型每次会话是"醒来即空白"的。要让 AI 在回答"我们之前怎么决定的""上周那个报错怎么修的"时,能准确翻到对应的记忆,靠的就是两个专用工具:

  • memory_search:语义检索记忆库,按"意思"找,而不是按文件名。
  • memory_get:精确读取某段记忆的原文切片,带省略提示,不浪费 token。

这两个工具是 OpenClaw 记忆系统的"检索层"。下面全部基于真实工具定义与字段,可直接操作。

memory_search:先搜再答,别凭印象

memory_search 的强制语义是:在回答任何关于"之前的工作、决策、日期、人、偏好、待办"的问题前,必须先调用它。

它的关键参数(来自真实工具 schema):

| 参数 | 说明 | 默认值/约束 |

|------|------|------------|

| query | 检索词,语义匹配 | 必填 |

| corpus | memory / wiki / all;memory 只搜索引过的记忆文件,排除会话片段 | 默认 memory |

| maxResults | 返回条数 | 最小 1,建议 5–10 |

| minScore | 相似度阈值,过滤噪声 | 越高越严 |

实战命令示例(在 OpenClaw 工具调用语境下):

memory_search({
  query: "之前部署 OpenClaw 遇到的真实报错",
  corpus: "memory",
  maxResults: 8,
  minScore: 0.3
})

关键行为(必须知道)

  1. 它会标注"警告":如果某个 corpus 结果不完整(比如 wiki 只命中部分),工具会在返回值里显式告诉你"结果部分命中,需向用户说明"。这时候你要如实转告,而不是假装全知。
  1. corpus=wiki 会额外搜已注册的编译知识库补充;corpus=all 是两者叠加。
  1. 检索结果按相似度排序,低分行不代表没用——决策类记忆往往关键词少但命中精准,别只看第一条。

memory_get:精确抽取,省 token

搜到线索后,用 memory_get 把对应文件的具体片段读出来,而不是整篇 MEMORY.md 灌进上下文。

它的参数:

| 参数 | 说明 |

|------|------|

| path | 记忆文件路径,如 memory/2026-09-28.md 或 MEMORY.md |

| from | 起始行(1-based) |

| lines | 读取行数 |

| corpus | 同上,可指定 memory/wiki/all |

示例:只想看某天日志里"部署结论"那段,而不是整月流水账:

memory_get({
  path: "memory/2026-09-10.md",
  from: 40,
  lines: 25
})

返回里如果原文更长,会带 truncation / continuation 提示,告诉你"还有后续,需要再读偏移"。这时候别猜,按提示继续翻。

标准工作流:三步召回

真实可用的记忆检索流程:

  1. 用户问到"之前/上次/我们决定" → 先 memory_search 定位,绝不凭空编。
  1. 找到候选文件 → 用 memory_get 精确读关键片段,避免整库灌入烧 token。
  1. 若检索命中不全(工具返回带 warning)→ 明确告诉用户"这部分记忆只部分命中",而非伪装完整。

踩坑与反模式

  • ❌ 跳过检索直接回答历史问题:模型空白醒来,没搜就答 = 编造。memory_search 是"强制召回步骤",不是可选优化。
  • ❌ 整篇 MEMORY.md 塞进上下文:用 memory_get 按行切片,长记忆库能省掉 70%+ 无效 token。
  • ❌ 忽略 warning:工具明确说"结果部分命中"时,转述给用户,别当没看见。
  • ✅ 日常写作纪律:重要决策、踩过的坑、学到的教训,及时写进 memory/YYYY-MM-DD.md,否则检索层无米下锅。

和其他工具的分工

  • memory_search / memory_get:检索已写下的记忆(人话经验)。
  • sessions_search:搜历史会话的对话内容(另一条线)。
  • read:读工作区任意文件,但不带记忆索引与省略提示,适合读代码/配置而非回忆。

一句话总结

OpenClaw 的记忆不是"写了就记得",而是"写了 + 检索得到"才记得。把 memory_search 当每次回忆问题的第一步,memory_get 当精确读取的刀,warning 当诚实的边界线——你的 AI 搭档才真的不会"转头就忘"。


扫码关注公众号,获取更多 OpenClaw 实操技巧:

公众号二维码