乐于分享
好东西不私藏

让小龙虾拥有完美记忆:OpenClaw 本地记忆系统补全指南

让小龙虾拥有完美记忆:OpenClaw 本地记忆系统补全指南


OpenClaw 默认配置下,记忆系统靠关键字匹配做检索。如果你没配 embedding 模型,语义搜索就废了——AI 只能死板地搜你说过什么关键词,搜不到你想表达什么意思。结果就是:你在第 1 轮聊过的东西,第 5 轮它完全没印象;你说”上次那个文章”,它问”哪个文章”。

这不是 bug,是检索能力的问题。下面这套方案,用 SQLite + 本地嵌入模型,把语义搜索补上,让 AI 真正理解你在说什么、记住你说过的内容。


1. 记忆系统是怎么工作的

OpenClaw 的记忆由两层协作:存储引擎调度器

Memory-Core 引擎主动记忆调度器用户提问子智能体分析需要记忆?接收搜索向量+关键词混合搜索返回记忆片段主智能体回复

存储引擎叫 memory-core,用 SQLite 的 FTS5(全文搜索)加上 sqlite-vec(向量搜索)实现混合检索。你问问题的时候,它会同时做向量相似度搜索和关键词搜索,然后拼出最相关的记忆片段。

调度器叫 active-memory,是个可选插件。每次回复前它会自动调记忆引擎,不需要主模型自己去”想起来”要搜索。如果你没装这个插件,记忆搜索不会完全失效——主模型会根据上下文自己判断要不要调用搜索,但这样有时候会漏掉东西。

所有记忆存在本地工作区的 Markdown 文件里,没有网络、没有 API 费用、不怕隐私泄露


2. 长期记忆存在哪

你的记忆存在两个地方:

核心记忆文件~/.openclaw/workspace/MEMORY.md。这里放用户偏好、个人资料、重要决策这些永久性信息。每次对话默认加载。

每日对话日志~/.openclaw/workspace/memory/ 目录下,以 YYYY-MM-DD.md 格式存储每天的对话摘要。默认加载今天和昨天的文件。

想管理记忆就直接编辑这些文件,改完之后运行:

openclaw memory index --force

重建索引就能生效。


3. 安装依赖

核心引擎 sqlite-vec 已经内置了,但本地嵌入模型需要手动装 node-llama-cpp

npm install -g node-llama-cpp

装好之后,系统就能在本地跑 GGUF 格式的嵌入模型。


4. 下载嵌入模型

推荐用 embeddinggemma-300m,300MB 左右,768维向量,ARM64 上跑起来很轻松。

mkdir -p ~/.node-llama-cpp/models
wget -O ~/.node-llama-cpp/models/embeddinggemma-300M-Q8_0.gguf \
  "https://www.modelscope.cn/models/unsloth/embeddinggemma-300m-GGUF/resolve/master/embeddinggemma-300M-Q8_0.gguf"

如果你网络不好,可以手动下载然后拷贝到对应路径。


5. 配置

编辑 ~/.openclaw/openclaw.json,加入 memorySearch 配置:

{
  "agents": {
    "defaults": {
      "memorySearch": {
        "provider": "local",
        "fallback": "none",
        "local": {
          "modelPath": "~/.node-llama-cpp/models/embeddinggemma-300M-Q8_0.gguf"
        }
      }
    }
  }
}

然后重建索引并验证:

openclaw memory index --force
openclaw memory status --deep

看到 Embeddings: readyVector dims: 768 就说明成功了。


6. 配好 active-memory 插件

active-memory 是内置插件,但默认没启用,需要手动加到白名单。

openclaw.jsonplugins 里加入:

{
  "plugins": {
    "allowlist": ["active-memory"],
    "entries": {
      "active-memory": {
        "enabled": true,
        "config": {
          "enabled": true,
          "agents": ["main"],
          "timeoutMs": 60000,
          "setupGraceTimeoutMs": 30000
        }
      }
    }
  }
}

然后重启服务:

openclaw gateway restart

验证一下:运行 openclaw plugins list,状态应该是 enabled。在对话里输入 /active-memory status,提问后看到 Active Memory: on for this session. 就正常了。


7. 日常维护

  • 搜索记忆:openclaw memory search "关键词"
  • 手动写入长期记忆:直接编辑 ~/.openclaw/workspace/MEMORY.md
  • 删掉过时内容后:运行 openclaw memory index --force
  • 把某段临时记忆升级为长期:openclaw memory promote --apply

总结

跑起来之后,你的 OpenClaw 就有了完全本地化的记忆系统:

  • SQLite + sqlite-vec:向量搜索加关键词检索
  • node-llama-cpp:跑本地嵌入模型
  • embeddinggemma-300m:把文本转成语义向量
  • active-memory:每次回复前自动注入相关记忆

整套方案零成本、完全离线、隐私安全。小龙虾用久了会越来越懂你,而不是每次都从零开始。