【插件】openclaw之Memory LanceDB 插件完全指南
发布时间:2026/8/24 3:25:37 作者:尧图编辑部 阅读量:1,286

让 AI 拥有“长期记忆”——基于 LanceDB 的向量存储自动召回与捕获重要信息。 Memory LanceDBmemory-lancedb是 OpenClaw 的官方外部存储插件利用LanceDB和向量搜索为智能体提供长期记忆能力。它会在每次对话轮次前自动召回相关记忆并在响应后智能捕获重要事实让 AI 真正“记住”用户的偏好、决策和历史上下文。✅ 本地向量数据库数据安全可控✅ 兼容 OpenAI 格式的嵌入端点也可接入 Ollama、智谱等✅ 作为默认内置记忆的替代或补充支持跨会话记忆✅ 每个智能体拥有独立记忆空间互不干扰 安装与启用1. 安装插件openclaw pluginsinstallopenclaw/memory-lancedb该命令会下载 npm 包注意未预置在运行时镜像中写入插件条目到配置文件自动启用插件并将plugins.slots.memory切换为memory-lancedb若当前有其他插件占用记忆槽位会发出警告并自动禁用冲突插件注意memory-wiki等配套插件可与本插件同时运行但同一时间只能有一个插件占用活动记忆槽位即负责实际召回/捕获。2. 验证加载重启网关并检查状态openclaw gateway restart openclaw plugins list⚙️ 快速配置在 OpenClaw 配置文件中通常为~/.openclaw/config.json5添加{ plugins: { slots: { memory: memory-lancedb, // 指定活动记忆插件 }, entries: { memory-lancedb: { enabled: true, config: { embedding: { provider: openai, // 使用 OpenAI 嵌入 model: text-embedding-3-small, }, autoRecall: true, // 自动召回相关记忆 autoCapture: false, // 暂不自动捕获新记忆可手动调用 }, }, }, }, } 详细配置项1. 嵌入Embedding配置embedding是必填配置指定将文本转换为向量的方式。字段类型说明embedding.providerstring适配器ID如openai、github-copilot、ollama。默认openai。embedding.modelstring模型名默认text-embedding-3-small。embedding.apiKeystring可选支持${ENV_VAR}环境变量展开。embedding.baseUrlstring可选自定义 API 端点支持环境变量。embedding.dimensionsinteger (1)向量维度非内置表模型必须设置详见下文。两种请求路径提供商适配器路径推荐仅设置provider无需apiKey/baseUrl。插件会通过memory-core的嵌入适配器自动解析认证信息例如读取环境变量OPENAI_API_KEY或models.providers.provider.apiKey。直接兼容 OpenAI 的客户端路径不设置provider或设为openai同时指定apiKey和baseUrl适用于未内置适配器的原始兼容端点。⚠️重要OpenAI Codex / ChatGPT OAuth 凭据不适用于嵌入 API请使用 OpenAI API Key 或选择其他支持嵌入的提供商如github-copilot、ollama。示例使用 GitHub Copilot 嵌入{ embedding: { provider: github-copilot, model: text-embedding-3-small, } }格式兼容性某些兼容端点会拒绝encoding_format参数另一些则忽略它。本插件自动省略该参数并同时支持float[]数组和 base64 编码的 float32 响应无需额外配置。2. 向量维度dimensionsOpenClaw 仅内置了两个模型的维度text-embedding-3-small→ 1536text-embedding-3-large→ 3072其他模型必须显式指定embedding.dimensions否则 LanceDB 无法创建向量列。示例智谱embedding-3维度 2048{ embedding: { apiKey: ${ZHIPU_API_KEY}, baseUrl: https://open.bigmodel.cn/api/paas/v4, model: embedding-3, dimensions: 2048, } }示例Ollama本地模型{ plugins: { slots: { memory: memory-lancedb, // 指定活动记忆插件 }, entries: { memory-lancedb: { enabled: true, config: { embedding: { provider: ollama, baseUrl: http://192.168.x.x:11434, model: nomic-embed-text:v1.5, dimensions: 768 }, recallMaxChars: 400, autoRecall: true, autoCapture: false } } }, }, }3. 召回Recall与捕获Capture限制这些参数控制自动召回和自动捕获的行为避免超出模型上下文窗口。设置默认值范围作用对象recallMaxChars1000100–10000发送到嵌入 API 的查询文本长度captureMaxChars500100–10000判断消息是否“足够短”以自动捕获customTriggers[]0–50项每项≤100字符自定义字面短语触发自动捕获recallMaxChars限制自动召回查询、memory_recall工具、ltm search等操作的输入长度。自动召回会优先嵌入本轮最新的用户消息若无用户消息则回退到完整提示词避免将系统元数据也送入嵌入请求。captureMaxChars用于判断用户消息是否适合自动捕获若消息过长则跳过不影响手动调用memory_store。customTriggers可添加自定义触发词字面匹配非正则。内置触发器已覆盖常见语言英语、捷克语、中文、日语、韩语的记忆短语如remember、记住、覚えて、기억해等。自动捕获还会拒绝类似提示词注入载荷或已嵌入relevant-memories上下文的文本每轮最多捕获 3 条新记忆每条记忆归当前智能体所有存储时强制校验所有权4. 存储路径与外部存储默认数据库位置~/.openclaw/memory/lancedb。可通过dbPath覆盖支持本地路径或 S3 兼容对象存储。本地路径覆盖示例{ config: { dbPath: ~/.openclaw/memory/lancedb, // ... } }使用 S3 存储{ config: { dbPath: s3://memory-bucket/openclaw, storageOptions: { access_key: ${AWS_ACCESS_KEY_ID}, secret_key: ${AWS_SECRET_ACCESS_KEY}, endpoint: ${AWS_ENDPOINT_URL}, }, // ... } }storageOptions支持任意字符串键值对并支持${ENV_VAR}展开。5. 智能体所有权与权限隔离每个记忆归属一个智能体agent。所有操作召回、存储、删除、列表、统计都会先强制过滤所有者确保智能体之间相互隔离。若智能体配置中memory.search.enabled: false或继承禁用则即使插件级autoRecall/autoCapture开启该智能体也不会获得memory_recall、memory_store、memory_forget工具且不参与自动召回/捕获。升级兼容在引入按智能体所有权之前创建的数据库升级时会运行openclaw doctor --fix将旧行一次性分配给已配置的默认智能体。迁移完成前访问会采用“故障关闭”策略其他智能体不会继承旧共享行。 工作原理自动召回与捕获流程图是否是是命中否否未命中用户发送消息autoRecall 开启?提取最新用户消息文本调用嵌入API生成查询向量在LanceDB中执行向量搜索限定当前智能体召回相关记忆注入到提示词上下文智能体生成回复autoCapture 开启?检查用户消息长度 captureMaxChars检查是否包含触发词内置或自定义调用嵌入API生成存储向量存入LanceDB去重、归属当前智能体完成️ CLI 命令ltm命名空间只要安装了本插件无论是否占用活动槽位即可使用以下命令管理长期记忆。基础命令命令说明openclaw ltm list [--agent id] [--limit n] [--order-by-created-at]列出记忆条目openclaw ltm search query [--agent id] [--limit n]向量搜索记忆openclaw ltm stats [--agent id]显示记忆统计信息openclaw ltm query [flags]执行非向量的结构化查询如果没有cli命令可以先刷一下试下openclaw plugins registry--refresh21如果还不行就再enable一下openclaw pluginsenablememory-lancedb21openclaw gateway restart如果cli命令还不行检查下配置文件cat~/.openclaw/npm/projects/openclaw-memory-lancedb-6a4d78c41e/node_modules/openclaw/memory-lancedb/openclaw.plugin.json|jq.activationltm query详细用法openclaw ltm query--agentresearch--colsid,text,createdAt--limit20openclaw ltm query--filtercategory preference--order-by createdAt:desc标志默认值说明--agent id配置的默认智能体指定智能体命名空间--cols columnsid,text,importance,category,createdAt输出列逗号分隔--filter condition无对输出列的条件比较如category preference或importance 0.8字符串值需引号--limit n10正整数--order-by column:asc|desc无结果排序排序列会自动加入投影若未请求则输出时移除 查询中的filter会与强制所有者谓词合并构建无法跨智能体查询。 智能体工具Agent Tools当智能体启用了记忆插件它会获得三个核心工具工具名功能memory_recall对已存记忆执行向量搜索返回最相关条目memory_store保存事实、偏好、决策或实体自动拒绝提示词注入跳过近似重复memory_forget按memoryId或query删除记忆若单条匹配得分 90% 则自动删除否则列出候选ID供确认这些工具仅对未禁用记忆搜索的智能体可见。 故障排查常见问题❌ “输入长度超过上下文长度”嵌入模型拒绝召回查询memory-lancedb: 召回失败错误400 输入长度超过上下文长度解决办法降低recallMaxChars并重启网关。例如设为 400{ config: { recallMaxChars: 400, } }若使用 Ollama请先验证能从网关主机访问嵌入服务器curlhttp://192.168.x.x:11434/api/embed\-HContent-Type: application/json\-d{model:nomic-embed-text:v1.5,input:hello}❌ 提示“不支持的嵌入模型”若未设置embedding.dimensions插件只知道 OpenAI 内置模型的维度。对于其他模型必须显式添加dimensions字段值为该模型输出的向量长度。❌ 插件已加载但看不到记忆确认plugins.slots.memory指向memory-lancedb。运行以下命令检查openclaw ltm stats openclaw ltm searchrecent preference如果autoCapture为false插件不会自动存储新记忆请手动调用memory_store工具或开启autoCapture。❌ Intel Macdarwin-x64平台不支持lancedb/lancedb目前无darwin-x64原生构建。在该平台上插件加载时会记录 LanceDB 不可用。解决方案使用默认记忆后端在受支持平台如 Apple Silicon、Linux x64 等运行网关暂时禁用本插件❌ 运行时依赖缺失memory-lancedb依赖原生lancedb/lancedb包由插件包自行管理。若启动时提示缺失请重新安装或更新插件包然后重启网关。 完整配置示例含所有常用字段{ plugins: { slots: { memory: memory-lancedb, }, entries: { memory-lancedb: { enabled: true, config: { dbPath: ~/.openclaw/memory/lancedb, // 可选 storageOptions: { // 可选S3 参数 // access_key: ..., // secret_key: ..., }, embedding: { provider: openai, // 或 ollama, github-copilot model: text-embedding-3-small, apiKey: ${OPENAI_API_KEY}, // 可选 baseUrl: https://api.openai.com/v1, // 可选 dimensions: 1536, // 非内置模型必须 }, autoRecall: true, autoCapture: true, recallMaxChars: 1000, captureMaxChars: 500, customTriggers: [请记住, 不要忘记], // 可选 }, }, }, }, }✨ 总结Memory LanceDB 为 OpenClaw 提供了强大、灵活的长期记忆能力。通过向量检索和智能捕获AI 可以在多轮对话中保持上下文连贯性真正“记住”用户的个性化信息。无论是本地开发、S3 云端存储还是接入多种嵌入模型本插件都能满足你的需求。