OpenClaw内置memory_search配免费向量模型实现记忆检索

2026年9月11日 4点热度 0人点赞 0条评论

一、什么是 memory_search

OpenClaw 提供的"跨会话记忆"能力。新对话开始时,从过去的对话、文件、笔记里语义检索相关片段,喂给当前 LLM 当上下文。

工作原理:

  1. 切片(chunking):memory 目录的 .md 文件按 800 token 切块
  2. 向量化(embedding):每个 chunk 走 embedding 模型 → 1024 维向量
  3. 存到 sqlite-vec(vec0 表)+ FTS5 关键词检索

查询时 FTS5 + vec0 双路召回,融合排序后返回 top-N。

没有 embedding provider 就跑不起来。可以用 OpenClaw 自带的 OpenAI 兼容 provider,或写插件桥接私有协议 API。

二、我之前是怎么做的:自写插件 + MiniMax

最初用 MiniMax embo-01(因为有他家的 Token Plan 订阅)。

还写过一篇公众号文章来介绍我是如何实现的。

MiniMax 协议跟 OpenAI 不一样:

OpenAI MiniMax
请求字段 input texts
响应字段 data[].embedding vectors
入库标记 type: "db"

没有 OpenAI 兼容端点。所以我写了插件 ~/.openclaw/extensions/minimax-portal-embedding/,做字段翻译(input ↔ textsdata ↔ vectors),跑 Token Plan OAuth。

现在看来就是踩一个大坑,基本每次升级 OpenClaw 都会导致 memory_search 工具失败,持续几个月每次升级完成后第一件事就是"测 memory_search 是否可用"。

三、现在是怎么配置的:原生 provider + 免费 BGE-M3

最近在群里抱怨修 memory_search 的问题,才知晓有免费的向量模型,感觉白吃了几个月的苦。

BAAI/bge-m3(SiliconFlow 提供):

关键是 OpenAI 兼容 → 直接用 OpenClaw 原生 openai-compatible provider,不用写插件

最终配置

{
  "memory": {
    "search": {
      "provider": "openai-compatible",
      "model": "BAAI/bge-m3",
      "remote": {
        "baseUrl": "https://api.siliconflow.cn/v1",
        "apiKey": "***",
        "headers": {
          "X-API-Key": "***",
          "Authorization": "***"
        }
      },
      "enabled": true
    }
  }
}

遇到两个小坑

  1. OpenClaw 默认加 Bearer,但 SiliconFlow 用 X-API-Key。hack:headers.Authorization"skip"(magic value,跳过自动 Bearer),真 key 写到 headers.X-API-Key,apiKey"***" placeholder。
  2. apiKey: *** 不是 bug —— 走 X-API-Key,apiKey 字段就是占位符。

验证

openclaw memory index --force --agent main 重建索引。5193 个新 embeddings 写入、DB +108 MiB atomic swap

自写插件下线,配置干净。

kenny

曾经是一位IT相关行业工作者...

文章评论