OpenClaw 总是忘记你说过的话?来试试这个插件

0 阅读9分钟

大家好,我是星浩。

最近在折腾 OpenClaw 的时候,遇到了一个特别头疼的问题:交待他的事情,他经常忘记,让人非常的恼火

为什么 AI Agent 总是"失忆"?

我总结了一下,主要有这么几个痛点:

第一个,上下文窗口衰减。 聊得越久,AI 就越容易忘记前面说过的话。就像你拿着一本厚厚的书,翻到后面的时候,前面的内容就模糊了。

第二个,检索精度不够。 很多系统就是简单的关键词匹配,你说"上次那个项目",它可能根本不知道你在说什么。

第三个,信息时效性缺失。 AI 分不清哪些信息是新的、重要的,哪些是旧的、过时的。

第四个,重复学习。 每次对话都要重新教一遍,Agent 永远无法积累经验。

这些问题叠加在一起,用户体验就特别差。

发现了 memory-lancedb-pro

它最大的特点,就是让你的 Agent 真正"记住"你们之间的每一次对话。不是那种简单的存储,而是智能化的记忆管理。

它到底能做什么?

简单来说,memory-lancedb-pro 是 OpenClaw 生态里的一个企业级长期记忆插件。它有几个核心能力:

持久化记忆存储:基于 LanceDB 向量数据库,数据不会丢。

智能化记忆管理:用 LLM 自动提取和分类重要信息,不需要你手动管理。

生产级可靠性:有完整的运维工具链,备份、迁移都不在话下。

高度可配置:支持多种 Embedding 提供商,想用哪个用哪个。

用一句话概括就是:传统 Agent 每次对话都是"初次见面",而用了 memory-lancedb-pro 的 Agent,记得你的每一次对话、每一个偏好。

核心功能,到底有多强?

研究这个插件,发现它有几个功能特别有意思。

1. 混合检索:双管齐下,一个都不漏

向量检索虽然能理解语义,但有时候会漏掉一些精确的关键词。关键词检索虽然精确,但理解不了上下文。

memory-lancedb-pro 的做法很聪明:双路召回 + RRF 融合 + Rerank

简单来说,就是同时用两种方式检索,然后把结果融合起来,再用跨编码器重新排序。这样既能理解语义,又能精确匹配关键词。

我测试了一下,召回率确实比单一方式高了不少。而且它还有个降级策略,如果 API 失败了,会自动回退到基础的相似度计算,不会直接报错。

2. 智能记忆提取:AI 帮你整理记忆

以前你要手动决定哪些信息需要存储,哪些不需要。现在不用了,LLM 会自动帮你提取和分类。

它会把记忆分成六大类:

  • profile:用户画像信息,比如你的姓名、职业、所在地
  • preferences:偏好设置,比如你喜欢简洁的回答、习惯用中文
  • entities:重要实体,比如公司名称、项目名称、人名
  • events:重要事件,比如上周发布的版本、昨天的会议
  • cases:历史案例,比如之前解决的 bug、处理过的工单
  • patterns:行为模式,比如你总是在周五提交代码、喜欢深夜工作

三层存储架构:

  • L0 是一句话索引,快速召回;
  • L1 是结构化摘要,中等详细度;
  • L2 是完整叙述,保留完整上下文。

智能去重功能:它会先用向量相似度预过滤,然后用 LLM 做语义决策,判断是创建新记忆、合并到现有记忆,还是直接跳过。这样就不会有重复的记忆了。

3. 记忆生命周期管理:让记忆"活"起来

这个功能解决了一个很实际的问题:记忆无限增长,检索质量下降。

memory-lancedb-pro 用了一个叫 Weibull 衰减的算法,加上三层晋升系统。

简单理解就是,记忆会根据时效性、访问频率、内在重要性来评分。重要的记忆衰减慢,不重要的衰减快。

三层晋升系统是这样的:

  • Peripheral(外层):低频访问、低重要性
  • Working(工作层):中频访问、中重要性
  • Core(核心层):高频访问、高重要性

记忆会根据使用情况自动晋升或降级。这样,重要的记忆会一直保持活跃,不重要的会慢慢淡出,检索质量就不会因为记忆太多而下降。

4. 多 Scope 隔离:不同场景,记忆不混乱

这个功能对于多用户、多项目的场景特别有用。

你可以把记忆分成不同的 Scope:

  • global:全局共享记忆,比如通用知识、公司政策
  • agent:<id>:Agent 专属记忆,比如某个 Agent 特定的交互风格
  • user:<id>:用户专属记忆,比如个人偏好、历史对话
  • project:<id>:项目隔离记忆,比如项目特定的知识库
  • custom:<name>:自定义 Scope,按需创建

这样,不同 Agent、不同用户、不同项目的记忆就不会混在一起了。

5. 噪声过滤:自动过滤垃圾信息

它会自动过滤掉那些没有价值的内容,比如:

  • Agent 拒绝回复的对话
  • Meta 问题("你能做什么?")
  • 寒暄和简单确认("好的"、"谢谢")
  • Slash 命令
  • 纯 emoji 消息

它还有自适应检索触发机制。如果检测到你说"之前"、"上次"这些关键词,会强制检索记忆。如果是简单问候或者 slash 命令,就跳过检索,节省资源。

和内置版本比,强在哪里?

OpenClaw 其实有个内置的 memory-lancedb 版本,但功能比较基础。

我对比了一下,pro 版本在以下方面都有提升:

  • ✅ BM25 全文检索(内置版没有)
  • ✅ 混合融合(内置版没有)
  • ✅ 跨编码器 Rerank(内置版没有)
  • ✅ 时效性加权和时间衰减(内置版没有)
  • ✅ 多 Scope 隔离(内置版没有)
  • ✅ 噪声过滤(内置版没有)
  • ✅ 自适应检索(内置版没有)
  • ✅ 管理 CLI(内置版没有)
  • ✅ LLM 智能提取(内置版没有)
  • ✅ Weibull 衰减 + 三层晋升(内置版没有)

总的来说,pro 版本在检索精度、记忆管理、运维工具三个维度都有显著提升。


技术架构深度解析

整体架构

┌─────────────────────────────────────────────────────────┐
│                   index.ts (入口)                        │
│  插件注册 · 配置解析 · 生命周期钩子 · 自动捕获/回忆       │
└────────┬──────────┬──────────┬──────────┬───────────────┘
         │          │          │          │
    ┌────▼───┐ ┌────▼───┐ ┌───▼────┐ ┌──▼──────────┐
    │ store  │ │embedder│ │retriever│ │   scopes    │
    │ .ts    │ │ .ts    │ │ .ts    │ │    .ts      │
    └────────┘ └────────┘ └────────┘ └─────────────┘
         │                     │
    ┌────▼───┐           ┌─────▼──────────┐
    │migrate │           │noise-filter.ts │
    │ .ts    │           │adaptive-       │
    └────────┘           │retrieval.ts    │
                         └────────────────┘
    ┌─────────────┐   ┌──────────┐
    │  tools.ts   │   │  cli.ts  │
    │ (Agent API) │   │ (CLI)    │
    └─────────────┘   └──────────┘

模型兼容性

提供商EmbeddingRerank备注
OpenAItext-embedding-3-small/large
Jina AIjina-embeddings-v3
GeminiGoogle AI
Ollama本地部署
其他兼容 API⚠️需支持 OpenAI 格式

数据库选型:LanceDB

为什么选择 LanceDB?

  • ✅ 原生支持向量 ANN + 全文检索(FTS)

  • ✅ 无服务器架构,易部署

  • ✅ 基于 Apache Arrow,高性能

  • ✅ 支持本地存储,数据安全


怎么上手?其实很简单

安装很简单,一条命令:

npm i memory-lancedb-pro@beta

然后在 openclaw.json 里配置一下:

{
  "plugins": {
    "slots": {
      "memory": "memory-lancedb-pro"
    },
    "entries": {
      "memory-lancedb-pro": {
        "enabled": true,
        "config": {
          "embedding": {
            "provider": "openai-compatible",
            "apiKey": "${OPENAI_API_KEY}",
            "model": "text-embedding-3-small"
          },
          "autoCapture": true,
          "autoRecall": true,
          "smartExtraction": true,
          "extractMinMessages": 2,
          "extractMaxChars": 8000,
          "sessionMemory": {
            "enabled": false
          }
        }
      }
    }
  }
}

几个关键配置:

  • autoCapture:自动捕获对话内容,建议开
  • autoRecall:自动注入相关记忆,建议开
  • smartExtraction:启用 LLM 智能提取,建议开
  • extractMinMessages:触发提取的最少消息数,我设置的是 2
  • sessionMemory.enabled:会话记忆摘要,初期建议关掉,避免污染检索

配置好之后,验证一下:

openclaw config validate
openclaw gateway restart

然后查看日志,如果看到 memory-lancedb-pro: smart extraction enabledmemory-lancedb-pro@...: plugin registered,就说明安装成功了。

CLI 工具链:运维很方便

这个插件还提供了完整的 CLI 工具链,运维起来很方便。

记忆管理

# 列出记忆
openclaw memory-pro list --scope global --category fact --limit 20

# 搜索记忆
openclaw memory-pro search "query" --scope global --limit 10

# 查看统计
openclaw memory-pro stats --scope global

数据维护

# 删除单条记忆
openclaw memory-pro delete <id>

# 批量删除
openclaw memory-pro delete-bulk --scope global --before 2025-01-01 --dry-run

# 导出记忆
openclaw memory-pro export --scope global --output memories.json

# 导入记忆
openclaw memory-pro import memories.json --scope global --dry-run

高级操作

# 重新嵌入
openclaw memory-pro reembed --source-db /path/to/old-db --batch-size 32

# 升级旧记忆
openclaw memory-pro upgrade --dry-run --batch-size 10 --no-llm

# 迁移检查
openclaw memory-pro migrate check --source /path

# 执行迁移
openclaw memory-pro migrate run --source /path --dry-run

# 验证迁移
openclaw memory-pro migrate verify --source /path

这些工具对于生产环境来说,真的很实用。

适合什么场景?

这个插件适合以下场景:

✅ 长周期对话:需要跨会话记忆积累的场景,Agent 会越用越智能。

✅ 精准信息召回:对检索准确率要求高的场景,混合检索 + Rerank 确实能提高召回率。

✅ 多用户/多项目:需要记忆隔离的场景,Scope 功能很实用。

✅ Token 成本敏感:智能去重 + 长度归一化,能减少 Token 消耗。

✅ 生产环境:有完整的 CLI 工具链,运维和监控都很方便。

不过,也有一些场景要谨慎使用:

⚠️ 短对话/一次性查询:如果只是简单的一问一答,记忆积累的优势不明显。

⚠️ 本地隐私敏感数据:需要配置本地 Embedding,比如用 Ollama。

⚠️ 极低延迟要求:Embedding + Rerank 有额外开销,可能会影响响应速度。

我的使用建议

初期配置:建议把 sessionMemory.enabled 设为 false,避免污染检索。

Embedding 选择:生产环境推荐 Jina 或 OpenAI,本地用 Ollama。

监控指标:定期查看 stats,关注记忆数量和检索质量。

升级策略:如果是从旧版本升级,可以用 upgrade 命令平滑迁移。

成本控制:合理设置 extractMinMessages,避免过度提取。

优点和不足

优点

  1. 检索精度高:混合检索 + Rerank,召回率和准确率都不错。
  2. 自动化程度高:LLM 驱动的智能提取,基本不需要手动管理。
  3. 生命周期管理:Weibull 衰减 + 三层晋升,记忆质量会持续优化。
  4. 运维友好:完整的 CLI 工具链,备份、迁移、升级都很方便。
  5. 生态兼容:支持多种 Embedding 提供商,部署很灵活。

不足

  1. 复杂度较高:配置项比较多,学习成本还是有的。
  2. Beta 版风险:v1.1.0 还是 Beta 版,稳定性还需要验证。
  3. 资源消耗:Embedding + Rerank 需要额外的 API 调用,成本会高一些。

写在最后

如果你正在构建生产级的 AI Agent 应用,需要跨会话的知识积累和精准的信息召回,这个插件值得深入尝试。

对于个人开发者:建议先从内置版本开始,熟悉概念后再升级到 Pro。

对于团队/企业:直接上 Pro 版本,生命周期管理和运维工具能显著降低后期维护成本。

项目地址:github.com/win4r/memor…


参考资料

  1. Memory Lancedb Pro
  2. OpenClaw