概述
LanceDB 记忆系统(memory-lancedb-pro)是 fries-mac 的长期记忆存储方案(213条消息),支持向量检索 + BM25 混合检索。通过 JSONL Session Distillation 功能,自动从聊天记录中提取重要信息并存储为持久记忆。
关键事件
- 2026-03-03: 用户发现 lancedb-pro 配置不完整,要求补充 JSONL Session Distillation 功能
- 2026-03-03: 创建 memory-distiller agent,初始化 cursor(追踪 8 个会话文件)
- 2026-03-03: 添加
jsonl-memory-distillcron job(每小时运行一次) - 2026-03-03: 首次运行成功,提取了 1 条全局记忆(关于 UNTRUSTED DATA 安全规则)
- 2026-03-03: 验证 Hybrid Retrieval(Vector + BM25)功能正常
- 2026-03-07: 使用记忆搜索功能查找 macOS 界面操作和 peekaboo 相关研究
- 2026-03-22: 为 memory-lancedb-pro 提交 PR #252(添加 Azure OpenAI 支持)
技术要点
- 存储引擎: LanceDB(嵌入式向量数据库)
- 检索方式: Hybrid Retrieval = Vector 语义检索 + BM25 关键词检索
- 记忆提取: memory-distiller agent 每小时自动从聊天日志中蒸馏关键信息
- 记忆类型: 全局记忆(decision:global)、事实性记忆、偏好记忆等
- 手动记忆:
/remember命令可直接写入记忆
经验教训
- 自动蒸馏需要配置正确的 cursor 起点,否则会重复处理历史数据
- Hybrid Retrieval 效果优于纯向量检索,新写入的内容可立即召回
- PR 提交时注意代码格式化改动不要和功能改动混在一起
- 记忆系统是 Agent 连续性的关键,确保定时任务稳定运行
Surface WSL Bot 的 LanceDB 配置与管理
以下信息来源于 surface-wsl-bot DM 记录(2026-03-08 ~ 2026-03-20)。
版本升级历程
- v1.0.20 → v1.1.0-beta.6 → v1.1.0-beta.9
- 新增功能:Memory Reflection、Access Tracker、Long-context Chunking、Session Recovery
配置细节
{
"embedding": {
"model": "text-embedding-3-large",
"dimensions": 3072,
"baseURL": "https://resley-sweden-ext.openai.azure.com/openai/v1/"
},
"autoCapture": true,
"autoRecall": true,
"smartExtraction": true,
"llm": { "model": "azure-foundry/gpt-5.2" },
"retrieval": { "mode": "hybrid", "vectorWeight": 0.7, "bm25Weight": 0.3 },
"mdMirror": { "enabled": true }
}已解决的问题
embedding.normalized/taskQuery/taskPassage对 generic-openai-compatible provider 不支持(警告可忽略)- Smart Extraction LLM 默认 fallback 到
openai/gpt-oss-120b,需显式指定为azure-foundry/gpt-5.2 enableManagementTools默认 false,需手动开启才能用 memory_store 等工具
本地向量化方案(规划)
完全无外部 API Key 的本地方案:
- Embedding:
mxbai-embed-large(Ollama, 1024维) - LLM:
qwen3:8b(JSON 结构化输出最稳) - Reranker: None (Ollama 暂无交叉编码器)
CRUD 验证
完整的 store → recall → update → forget 闭环测试验证通过。
相关主题
2026-04-11 更新:ARM64/x64 Native Module 不匹配修复
问题
在 iMac(x64 架构)上,LanceDB 的 native 模块被错误安装为 arm64 版本,导致记忆系统无法正常工作。
排查过程
- 用户要求检查本地记忆系统是否正常(
/status) - 执行记忆读写自检:召回旧记忆 ✅、写入测试记忆 ✅、删除测试记忆 ✅
- 发现
memory/2026-04-10.md、2026-04-11.md未生成(日记型 md 记忆未落盘) - 进一步排查发现 LanceDB 安装了 arm64 的 native 模块,但运行机器是 x64 (iMac)
修复
重新安装正确架构的 LanceDB native 模块后,重启 gateway,记忆功能完全恢复:
- 写入 ✅ — 能成功写入记忆条目
- 检索 ✅ — 能召回旧记忆
- 删除 ✅ — 测试记忆清理正常
经验教训
- LanceDB 的 native 模块是架构相关的(arm64 vs x64),跨架构安装会导致静默失败
- 日记型 md 记忆(daily note)未生成不一定是主记忆系统故障,可能只是 daily note 生成任务未运行
- 文件型 memory 目录需要确认存在
2026-04-12 更新:Clawfood 全量迁移
resley-sweden 的 API Key 认证被禁用(403 AuthenticationTypeDisabled),Embedding 和 Rerank 服务全部切换到 clawfood Azure endpoint。
完整配置(可直接移植)
| 服务 | 模型 | Endpoint |
|---|---|---|
| Embedding | embed-v-4-0 (1536维) | https://clawfood.openai.azure.com/openai/v1 |
| Rerank | Cohere-rerank-v4.0-pro | https://clawfood.services.ai.azure.com/providers/cohere/v2/rerank |
| LLM | gpt-4o | https://clawfood.openai.azure.com/openai/v1 |
注意:
- OpenAI 兼容接口用
clawfood.openai.azure.com - Cohere provider 接口用
clawfood.services.ai.azure.com - Auth header 用
api-key(不是Authorization: Bearer) - Embedding input 必须是数组
["text"]
fires 机器独立配置
fires 机器的 Azure provider 从 resley-sweden 切换到 resley-sweden-ext(04-11),apiKey 也更新,28 个模型全部可用。memory embedding 也同步更新。
2026-04-28 升级 1.1.0-beta.10(OpenClaw 2026.3+ Hook Adaptation)
ottor-laptop 上 memory-lancedb-pro 显示 unavailable,重启 gateway 后继续。升级流程:
- 来源:GitHub
CortexReach/memory-lancedb-pro(npm registry 上 1.0.32 是老分支,跟 1.1.x beta 线不是一条,别被误导) - 1.1.0-beta.9 → 1.1.0-beta.10(“OpenClaw 2026.3+ Hook Adaptation”,2026-03-23 发布)
- 旧版本备份在
~/.openclaw/_backups/memory-lancedb-pro.bak-1.1.0-beta.9-* - ⚠️ 踩坑:第一次把备份留在
extensions/同级目录 → OpenClaw 当成 duplicate plugin id 扫到甚至覆盖了新版。备份必须挪到~/.openclaw/_backups/才干净 - 升级后
gateway ready (5 plugins; 13.6s)
内存峰值警示
升级前那个进程 CPU 1h39min、内存峰值 3.1G —— lancedb-pro 是 OpenClaw gateway 的内存大头。04-28 gateway 被 SIGTERM 三次 reboot 没起回(详见 monitoring-and-cron § OpenClaw gateway SIGTERM 事故)的现场也观察到了这个量级。回头如果继续涨需单独 profile lancedb-pro。