跳转至

name: shared-vector-search description: Hermes 与 OpenClaw 共享的向量语义检索+写入 — 共用 LanceDB + doubao-embedding-vision,支持双向同步 tags: [lancedb, memory, shared, openclaw]


共享向量语义检索 + 记忆写入

架构

Hermes (Python lancedb) ──┐
                          ├── 同一 LanceDB ── doubao-embedding-vision (2048维)
OpenClaw (Node 插件) ─────┘

记忆分工

存储位置 存什么 不存什么
Hermes key-value memory 行为偏好、职责、路径 ❌ 事实性知识
LanceDB memories 表 所有事实性知识(两个 agent 共享)

什么时候写 LanceDB?

  • 新学到的事实、配置、技术知识点 → 写 LanceDB
  • 用户偏好、操作习惯、角色定义 → 写 Hermes memory
  • 不确定时,两个都写

工具

方式1:MCP 原生工具(推荐)

Hermes 的 friend 和牛马豆腐两个 profile 已配置 memory-lancedb MCP Server, agent 可直接调用以下原生工具:

工具名 功能 参数
memory_recall 语义搜索记忆 query (必填), limit (默认5), category (可选过滤)
memory_store 写入新记忆 text (必填), category (默认fact), importance (默认0.7)
memory_forget 删除记忆 query (必填), limit (默认3) — 删除与query最相似的记忆
memory_stats 查看记忆库统计 无参数

使用场景:对话中需要回忆事实、存储新知识时直接调用。

方式2:CLI 脚本

/root/data/disk/.openclaw/memory/lancedb_memory.py

所有 agent(friend、牛马豆腐等)共用此脚本。

# 写入记忆
cd /root/data/disk/.openclaw/memory
python3 lancedb_memory.py add "记忆内容" --category fact --importance 0.7
# category: fact | decision | entity | other
# importance: 0.0~1.0

# 搜索记忆
python3 lancedb_memory.py search "查询内容" --limit 5

# 列出所有记忆
python3 lancedb_memory.py list
0

# 搜索记忆
python3 lancedb_memory.py search "查询内容" --limit 5

# 列出所有记忆
python3 lancedb_memory.py list# 删除记忆
python3 lancedb_memory.py delete --id <record_id>

方式3:Hermes 代码内调用

import sys
sys.path.insert(0, '/root/data/disk/.openclaw/memory')
import lancedb_memory as ldb

# 写入
ldb.add_memory("内容", category="fact", importance=0.7)

# 搜索
results = ldb.search_memory("查询", limit=5)

自动提取(写入侧)

Cron 任务 hermes-auto-memory-extract(每2小时): - 扫描 friend 和牛马豆腐的 state.db 新 session - 用 doubao-seed-2.0-lite LLM 提取关键事实 - 去重后写入 LanceDB memories 表 - 进度文件:/root/data/disk/.openclaw/memory/hermes_extraction_progress.json

脚本/root/data/disk/.openclaw/memory/hermes_auto_extract.py

手动运行

python3 /root/data/disk/.openclaw/memory/hermes_auto_extract.py

数据表

表名 用途
memories 共享记忆(Hermes + OpenClaw 双向同步)
wiki_docs Wiki 文档语义索引

配置

  • LanceDB 路径: /root/data/disk/.openclaw/memory/lancedb-pro
  • Embedding: doubao-embedding-vision, 2048维
  • API 配置: /root/data/disk/.openclaw/openclaw.jsonplugins.entries.memory-lancedb-pro.config.embedding
  • API 端点: https://ark.cn-beijing.volces.com/api/coding/v3(Coding Plan 专属 URL)
  • API Key: Coding Plan key(与主模型 Plan key 不同)
  • API 限制: 单次最多 10 条 input,需限速 0.5s/批

陷阱

  • 🔴 doubao embedding API 单次最多 10 条 input,超过返回 400
  • 🔴 限速:连续请求需间隔 ≥0.5s,否则 429
  • 🔴 大文件需先 chunk(按 ## 标题切分,max 1500 chars/chunk)
  • 🔴 零向量无法被搜索到,嵌入后务必验证
  • 🔴 Hermes 当前只做纯向量搜索,没有 OpenClaw 的 BM25+rerank 混合检索能力
  • 🔴 MCP Server 的 memory_forget 是按语义相似度删除,可能误删相近内容,谨慎使用 当前只做纯向量搜索,没有 OpenClaw 的 BM25+rerank 混合检索能力
  • 🔴 MCP Server 的 memory_forget 是按语义相似度删除,可能误删相近内容,谨慎使用## 维度迁移记录

  • 2026-05-25: 1024维→2048维迁移完成

  • 备份: /root/data/disk/.openclaw/memory/lancedb-pro.backup.1024dim

回滚方案

systemctl --user stop openclaw-gateway.service
rm -rf /root/data/disk/.openclaw/memory/lancedb-pro
cp -r /root/data/disk/.openclaw/memory/lancedb-pro.backup.1024dim /root/data/disk/.openclaw/memory/lancedb-pro
systemctl --user start openclaw-gateway.service