你以为龙虾失忆,是模型不够强。
很多时候,真正的问题是:上下文管理方式不对。

如果你已经用 OpenClaw 聊过长任务,大概率会遇到这些情况:

  • 对话一长,Agent 开始“记不清前面说过什么”
  • 明明昨天讨论过的方案,今天又要你重新解释一遍
  • 工具调用、日志、文件内容一多,历史细节很快被压成一段模糊摘要
  • 多个 Agent 分头做事,但历史很难统一检索

这不是你一个人的问题。几乎所有 Agent 框架都会碰到:上下文窗口有限,而工作流会越来越长。

这篇文章讲的,就是 OpenClaw 里一套非常值得装的插件:

  • @martian-engineering/lossless-claw

它实现的是 LCM(Lossless Context Management),核心思想很简单:

压缩上下文,但尽量不丢原始信息。

如果你是 OpenClaw 新手,本文的目标只有一个:

让你看完之后,能自己把 LCM 配通,并且知道怎么验证它真的在工作。


一、LCM 到底解决什么问题?

先别急着安装,先搞清楚它解决的是什么问题。

传统 Agent 的上下文管理通常是这样的:

  1. 对话越来越长
  2. token 越来越多
  3. 系统为了不爆上下文,把前面的内容压缩成摘要
  4. 原始细节逐渐丢失

于是你就会看到一种很熟悉的现象:

  • 结论可能还在
  • 但路径、命令、参数、讨论过程、错误链路都变得模糊

这就是很多人感觉 Agent “失忆”的根本原因。

LCM 的思路不是“别压缩”,而是:

  • 把原始消息持久化保存
  • 在上面建立可检索、可展开的摘要结构
  • 需要细节时,可以沿着结构回到来源内容

你可以把它理解成两层系统:

1)原始数据层

  • 会话内容进入数据库
  • 不是只剩一句总结
  • 历史消息仍然有机会被检索到

2)摘要结构层

  • 老内容可以压缩
  • 但压缩不是“永久消失”
  • 后续可以通过工具搜索、描述、展开

这就是为什么它叫 Lossless

目标不是“不压缩”,而是不把重要上下文直接撕掉。


二、你会得到哪些能力?

装好之后,OpenClaw 侧通常会获得几类能力:

  • lcm_grep:在历史消息和摘要中搜索
  • lcm_describe:查看某个摘要的详细信息
  • lcm_expand:把摘要往下展开到更细层
  • lcm_expand_query:针对一个问题,委托子 Agent 去历史里深挖再回来回答

对新手来说,不用一开始就研究得很深。你只要知道:

LCM 不是一个“装饰性插件”,而是一套新的上下文引擎。

它影响的不是某一个命令,而是 OpenClaw 整个会话如何保存、压缩、检索和恢复。


三、安装前的三个前提

1. OpenClaw 版本要支持 contextEngine

这是最关键的前提。

LCM 之所以能真正接管记忆,不是因为它“注册了几个工具”,而是因为 OpenClaw 新增了:

  • plugins.slots.contextEngine

这个 slot 的意义是:

谁来管理上下文,不再完全写死在核心里,而是可以由插件接管。

如果你的 OpenClaw 版本太旧,不支持这个 slot,那么即使装了插件,也很可能只是“看起来装上了”,实际没有接管会话链路。


2. 你要能重启 gateway

安装或改配置后,通常需要重启:

openclaw gateway restart

如果你不能重启 gateway,就很难确认配置是否真正生效。


3. 你要确认自己改的是当前生效的配置文件

大多数情况下是:

~/.openclaw/openclaw.json

请注意:

  • 不是某个历史备份
  • 不是你自己随手复制出来的 demo 配置
  • 而是 gateway 当前真正读取的那一份

这是后面最容易踩坑的地方之一。


四、怎么安装

先执行:

openclaw plugins install @martian-engineering/lossless-claw

安装完成后,插件通常会:

  • 注册插件本体
  • 启用插件
  • 安装相关工具
  • 在支持的版本上,尝试自动设置 contextEngine slot

这里最重要的一句话是:

“通常会自动配置” 不等于 “一定已经配置成功”。

很多人装完以后,看见插件 loaded 就放心了,结果过一会儿发现数据库还是空的、检索也搜不到内容。

原因往往就在下一节。


五、最关键的配置点:不是 enabled,而是 contextEngine

很多人装完之后,会检查到类似这样的配置:

{
  "plugins": {
    "entries": {
      "lossless-claw": {
        "enabled": true
      }
    }
  }
}

看起来没问题,对吧?

其实这只说明一件事:

插件被启用了。

但这还不够。

真正决定它有没有接管上下文的是:

{
  "plugins": {
    "slots": {
      "contextEngine": "lossless-claw"
    }
  }
}

这一句非常关键。

如果只有 enabled: true

代表:

  • 插件可能能加载
  • 工具可能能注册
  • 你甚至可能已经能看到 lcm_grep 这些工具

但不代表:

  • 当前会话真的在走 LCM
  • 消息真的写进 lcm.db
  • 摘要和检索真的开始工作

如果 contextEngine 成功指向 lossless-claw

才代表:

  • 会话上下文引擎真正切到了 LCM
  • 新的 turn 会进入 LCM 数据层
  • 后续检索、摘要、展开才有真实数据可用

这是整套配置里最容易被忽略,但又最重要的一点。


六、一份适合新手直接抄的配置

如果你是第一次配,推荐从最小稳定版开始:

{
  "plugins": {
    "slots": {
      "contextEngine": "lossless-claw"
    },
    "entries": {
      "lossless-claw": {
        "enabled": true,
        "config": {
          "incrementalMaxDepth": -1
        }
      }
    }
  }
}

这份配置里,最重要的是两项:

1. contextEngine

"contextEngine": "lossless-claw"

这是上下文接管开关。

2. incrementalMaxDepth

"incrementalMaxDepth": -1

这表示摘要层级可以持续递进,适合长时间运行、长期使用的会话。

如果你是新手,不建议第一天就调太多参数。先把链路跑通,比什么都重要。


七、改完之后怎么让它生效

改完配置后,执行:

openclaw gateway restart

然后检查:

openclaw gateway status

你理想中应该看到的状态包括:

  • gateway 正在运行
  • probe 正常
  • 插件被成功加载
  • 日志里出现类似:
[lcm] Plugin loaded (enabled=true, db=/root/.openclaw/lcm.db, threshold=0.75)

这能说明:

  • 插件层已经起来了
  • 数据库路径也已初始化

但请记住:

“Plugin loaded” 只说明插件加载成功,不代表它已经真正开始管理你的会话。

所以你还要做下一步验收。


八、怎么验证它真的开始工作了

这一节比安装本身还重要。

第一步:确认数据库文件存在

默认数据库通常在:

~/.openclaw/lcm.db

如果你看到这些文件:

  • lcm.db
  • lcm.db-wal
  • lcm.db-shm

说明数据库层已经初始化。

但还是要再强调一次:

数据库文件存在,不等于已经有真实会话写进去。


第二步:检查关键表里有没有数据

你最值得关注的是这几个表:

  • conversations
  • messages
  • summaries
  • context_items

对于一个刚接通的新系统,理想状态通常是:

  • conversations > 0
  • messages > 0
  • context_items > 0
  • summaries 一开始可能还是 0,之后才慢慢出现

如果你看到的是:

  • 插件 loaded
  • 数据库文件也存在
  • conversations = 0
  • messages = 0

那大概率就是:

插件已经装上了,但并没有真正接管上下文引擎。

优先回头检查:

"plugins": {
  "slots": {
    "contextEngine": "lossless-claw"
  }
}

第三步:用 lcm_grep 搜一个独特关键词

最简单的 smoke test 是:

  1. 在当前会话里说一句独特内容,比如:
LCM_SMOKE_TEST_20260323_ABC
  1. 再用 lcm_grep 搜它

如果能搜回来,说明至少有一件事已经成立:

当前会话已经开始进入 LCM。

如果再过几轮对话后,summaries 也开始出现,就说明:

  • 入库正常
  • 检索正常
  • 摘要链路也开始工作

这就算是基本跑通了。


九、这套插件最容易踩的四个坑

坑 1:看到 enabled: true 就以为已经完成

这是最常见的错误。

错在把“插件启用”误当成“上下文接管”。

真正决定它是否在工作的是:

"contextEngine": "lossless-claw"

没有这一句,很多时候就只是“装着”,不是“在用”。


坑 2:工具能看见,不代表数据已经写进去了

你可能会看到这些工具已经出现:

  • lcm_grep
  • lcm_describe
  • lcm_expand
  • lcm_expand_query

这只能说明:

  • 插件已经把工具注册出来了

不代表:

  • lcm.db 里已经有真实会话
  • 会话已经开始 ingest

工具可见 ≠ 数据已通。


坑 3:数据库文件有了,不代表记忆开始了

很多人看到 ~/.openclaw/lcm.db 出现,就以为一切没问题。

其实数据库文件存在,最多只能说明:

  • schema 初始化了
  • 插件启动时至少碰到了数据库

但如果里面的 conversations/messages 还是 0,那仍然说明:

你现在只有壳,没有内容。


坑 4:当前会话能用,不代表所有老历史都自动回填了

这是另一个很容易误解的点。

当你修好配置后,通常最先成立的是:

  • 从现在开始的新会话 / 新 turn 会进入 LCM

但这不等于:

  • 所有很久以前的旧 session
  • 所有历史 Agent 的旧会话
  • 都已经自动补建成独立的 conversations

所以你要把这两个问题分开:

A. 新链路是不是通了?

这个比较容易验证。

B. 老历史是不是全部回填了?

这个不一定,需要额外观察或单独验收。


十、多 Agent 场景下,需要每个 Agent 单独配吗?

大多数情况下:不需要。

如果你的多个 Agent:

  • 跑在同一个 OpenClaw 实例里
  • 使用同一个 gateway
  • 共享同一份全局插件配置

那么一旦你把:

"plugins": {
  "slots": {
    "contextEngine": "lossless-claw"
  }
}

修好,后续这些 Agent 的新会话 / 新 turn 就会自动走 LCM。

什么时候才需要额外处理?

只有这几类场景:

1. 其实不是同一个 OpenClaw 实例

比如是不同机器、不同配置、不同 gateway。

2. 某些 session pattern 被显式排除

例如配置了:

  • ignoreSessionPatterns
  • statelessSessionPatterns

这会影响这些 session 是否写入 LCM。

3. 那个 Agent 根本还没真正发生新的有效 turn

如果只是 session 存在,但最近没有新处理动作,它不一定会立刻建 conversation。

所以正确的理解是:

一般不需要挨个告诉 Agent “你要开始用 LCM”。只要底层 context engine 已经切过去,它们自然会跟着走。


十一、推荐给新手的最小验收流程

如果你是第一次装,建议按这个顺序来:

Step 1:安装插件

openclaw plugins install @martian-engineering/lossless-claw

Step 2:检查配置

确认至少有:

{
  "plugins": {
    "slots": {
      "contextEngine": "lossless-claw"
    },
    "entries": {
      "lossless-claw": {
        "enabled": true,
        "config": {
          "incrementalMaxDepth": -1
        }
      }
    }
  }
}

Step 3:重启 gateway

openclaw gateway restart

Step 4:检查状态

openclaw gateway status

Step 5:发一条独特内容

比如:

LCM_SMOKE_TEST_20260323_ABC

Step 6:检查数据库

确认:

  • conversations > 0
  • messages > 0

Step 7:用 lcm_grep 搜刚才那句

如果能搜回来,说明链路基本通了。

这是新手最值得做的一轮验收。


十二、给新手的配置原则:先求通,再谈调优

第一次接触 LCM,最容易犯的错误是:

  • 一上来就研究很多高级参数
  • 追求“全历史回填”
  • 追求“多 Agent 一次到位”

这些都可以做,但顺序不要反。

更好的策略是:

1. 先确认当前会话能进库

如果当前会话都进不去,后面都不用谈。

2. 再确认 lcm_grep 能搜回来

这说明检索链路是活的。

3. 再观察 summaries 是否开始出现

这说明压缩链路也开始工作了。

4. 最后再去看多 Agent、新会话、老历史回填

这样排查成本最低,也最不容易误判。


十三、如果你只记一句话,请记这句

安装 lossless-claw 之后,真正决定它有没有在工作,不是“插件有没有 loaded”,而是 plugins.slots.contextEngine 有没有指向 lossless-claw,以及 lcm.db 里有没有真实的 conversations/messages

这是整套配置里最核心、也最容易被忽视的一点。


结语

lossless-claw 不是一个“装了就自动万事大吉”的插件。

它真正厉害的地方在于:

  • 一旦接通,OpenClaw 的会话会从“越来越容易失忆”
  • 变成“可保存、可检索、可分层摘要、可继续扩展”的记忆系统

但前提是:

你要确认它真的接管了 contextEngine

如果你以前装过,但感觉没效果,先别急着否定这套插件。很多时候,问题不是插件本身,而是配置差了最后那一跳。

把这一步补上,整个系统的感觉会非常不一样。