夜雨聆风学习资料网

ARTICLE · 1025964

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

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

一、什么是 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 订阅)。

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

OpenClaw 长期记忆架构 + MiniMax embedding 对接实现

MiniMax 协议跟 OpenAI 不一样:

- 请求字段 input(OpenAI) / texts(MiniMax)

- 响应字段 data[].embedding(OpenAI) / vectors(MiniMax)

- 入库标记 无(OpenAI) / type: "db"(MiniMax)

没有 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 提供):

  • 1024 维、OpenAI 兼容协议、支持 100+ 语言、MTEB 排行榜前列
  • SiliconFlow 上完全免费
  • 拿人手短,贴推荐链接:https://cloud.siliconflow.cn/i/mY9pSsE5

关键是 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 = 真活了

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

相关学习资料

返回首页浏览学习资料