乐于分享
好东西不私藏

这个插件装上后,彻底治好了我的 ��AI Agent 的健忘症

这个插件装上后,彻底治好了我的 ��AI Agent 的健忘症

导读

在使用 🦞OpenClaw 时,相信大家都遇到过这些问题:

  • • ❌ 问了几个小时前的决策,Agent 说”我不记得了”
  • • ❌ memory 文件夹里只有今天的文件,昨天的不见了
  • • ❌ 对话一长,Agent 越来越”傻”,细节全丢
  • • ❌ 每天都要重复”我不是说过用这个格式吗?”

这不是你的问题,是 OpenClaw 的记忆存储机制决定的。

今天要介绍的 Lossless-Claw 插件,彻底解决了这个痛点。装上之后,你就会感觉

“你在和一个永远不会失忆的 AI Agent 聊天”


一、OpenClaw 的”健忘症”痛点

OpenClaw 是目前最丝滑的本地 AI Agent 框架,但长会话用久了,所有人都会吐槽同一个问题

1.1 三大痛点

痛点
表现
影响
Compaction 后遗忘
对话达到 token 阈值,系统做有损总结,老消息被扔掉
具体数字、文件名、决策理由、代码片段全没了
Daily 文件懒加载
memory/ 目录下经常只有当天一个文件
昨天、前天的都不见踪影,历史靠手动维护
预压缩 flush 不稳定
即使开了 memoryFlush,也是让 Agent 自己写摘要
写得好就行,写得烂就完蛋

1.2 为什么会这样?

OpenClaw 官方记忆机制的核心设计是这样的:

从图中可以看到,OpenClaw 的记忆机制分为三个阶段:

1. 存储阶段(Memory Storage)

OpenClaw 使用 Markdown 文件作为记忆存储格式,主要包含两类文件:

    MEMORY.md:长期记忆文件,用于保存总结后的核心信息

    YYYY-MM-DD.md:每日记忆文件,记录当天的原始对话内容

所有新的对话信息会先写入 daily 文件,作为原始记录保存。

2. 压缩阶段(Memory Compression)

随着对话越来越多,模型的上下文窗口有限,无法加载全部历史信息,因此系统会进行压缩:

    滑动窗口(Sliding Window):只保留最近的一部分对话在上下文中    有损总结(Lossy Summarization):将较早的对话内容进行总结压缩,写入 MEMORY.md

在这个过程中,大量细节会被删除,只保留关键内容。

3. 结果阶段(Final Result)

当总结完成后:

    原始对话记录会被丢弃或覆盖

    只保留压缩后的总结内容

    被删除的细节无法恢复

因此最终结果是:

原始信息 → 总结压缩 → 原始内容丢失(不可逆)

此外,官方 memory 触发机制是:

  • • Daily log 文件只在”有内容要写“时才创建
  • • 只有 session 接近 token 阈值(~40k)时,才触发 pre-compaction flush
  • • 如果你每天用 /new 重启,或 session 都很短,几乎不会触发

结果就是:

memory 文件夹里只有一个当天的文件,历史的没有。不是 bug,是设计如此——daily 文件”懒创建”。

因此:

OpenClaw原生是”有损压缩 + 文件记忆”双保险,但压缩是硬伤,记忆是靠手动。


二、Lossless-Claw 解决“健忘症”问题

2.1 核心理念

一切永不删除 + DAG 分层总结 + 自动后台处理

它不是增强 memory,而是直接替换 OpenClaw 的 contextEngine(上下文引擎)

官方滑动窗口被彻底干掉,取而代之的是基于 LCM 论文的 Lossless Context Management

2.2 它做了什么?

当对话超出模型上下文窗口时,OpenClaw(和其他所有 Agent 一样)通常会截断旧消息

但是,LCM 的做法完全不同:

它经历了5个阶段
  1. 1. 持久化存储 – 系统首先将所有消息存入 SQLite 数据库,并按照对话组织。
  2. 2. 智能摘要 – 随后进入智能摘要阶段,利用配置 LLM 将旧消息分块总结,从而降低上下文长度。
  3. 3. DAG 压缩 – 在此基础上,系统进一步进行DAG压缩,将已有摘要抽象为更高层级的节点,并构建有向无环图结构,实现多层次信息压缩。
  4. 4. 动态组装 – 在实际对话中,系统会进行动态组装,将高层摘要与最近的原始消息结合,构建当前轮次所需的上下文。
  1. 5. 检索工具 – 最后,系统提供 lcm_greplcm_describelcm_expand 等检索工具,让 Agent 可以搜索和召回压缩历史,从而实现对压缩记忆的高效召回。
从而实现真正的

Nothing is lost.

2.3 自动触发流程

为了在有限的上下文窗口内持续保留长期记忆,同时避免传统“截断或覆盖历史”的问题,系统设计了一套基于压缩与检索的记忆机制。其整体流程可以分为以下几个过程:

1. 持久化存储

在每次用户与 AI 进行对话结束时,系统会自动识别对话的结束点,并准备进行接下来的处理。此时,AI 会回顾并保存当前对话内容。

2.  后台异步检查 token 使用率

AI 会在后台监控 token(数据单元)的使用情况,确保在任何时候系统资源都能够合理管理。每当用户输入或者 AI 输出时,都会消耗一定数量的 tokens。此时,系统会检测是否已接近设定的使用阈值(例如:75%)。

3. 达到阈值(默认 75%)→ 触发压缩

如果后台检测到 token 使用量已经接近设定的阈值(默认75%),系统会自动触发数据压缩机制,准备对旧的对话内容进行总结,从而释放更多的 token 以继续进行后续对话。

4. 把最老的未总结 chunk 交给 LLM 生成总结

系统会识别出对话中的最老且未被总结的“chunk”(对话块)。这些 chunk 可能是一些用户的提问、AI 的回答,或者是长时间未被总结的对话内容。接着,系统会将这些 chunk 交给大语言模型(LLM)进行处理并生成简洁的总结。

5. 总结节点链接回原始消息,形成 DAG 树

生成的总结会被“节点化”并与原始对话内容关联。通过这种方式,整个对话形成了一个有向无环图(DAG)结构。这种结构允许每个总结节点都能追溯到其原始消息,从而确保了数据的完整性和准确性。

6. 随着对话增长,总结自己也被总

随着对话的不断推进,AI 会不断对旧的总结进行更新和归纳。比如,原本的叶子总结会被转换成更高层次的总结,最终形成多层次的总结体系:

  • 叶子总结 → 逐步形成会话总结

  • 会话总结 → 形成项目阶段总结

  • 项目阶段总结 → 转化为整体决策总结

  • 通过这种方式,每个总结层次都能高度概括对话的精髓。

7. 每次组装上下文

每当系统需要处理新的用户请求时,它会根据当前的需求组装适当的上下文,确保 AI 的响应与对话历史相关。这个过程包括:

  • 最近 N 条原始消息:会话上下文会包括最近 N 条原始消息(默认是 32 条),以确保 AI 回应的内容有足够的背景支持。

  • 相关高层总结:除了原始消息,还会包括相关的高层次总结,如会话总结、项目阶段总结等,确保系统对话的流畅性和完整性。

8. Agent 需要细节时,自动调用 lcm_expand 工具

当 AI 需要获取更多细节时,它会自动调用 lcm_expand 工具。这是一个扩展工具,通过启动子 Agent 来对某些领域或信息进行深入探索,而不会导致上下文过载。子 Agent 会根据当前需求展开相应的对话和处理。

lossless-claw = 给 AI Agent 一个真正的长期记忆系统。不再失忆,不再重复,不再丢失上下文。

2.4 DAG 结构示意

DAG 是一个“可以不断压缩、但随时能还原”的记忆树。上图结构中,分为三层:

Depth 0(基础层)

SUMMARY x4 · DEPTH 0Turns 116 / 1732 / 3348 / 4964
  • 原始对话被切成 chunk(比如每 16 轮)

  • 每个 chunk 被总结一次

关联具体的决定、准确的技术细节。原始消息 → 第一层总结(局部总结),

Depth 1(流程层):

SUMMARY · DEPTH 1 · ~500 tok

每一个红色框:

  • 对应一个更大的区间(比如 32 条消息)

  • 是对多个 Depth 0 summary 的再次总结

因此,关联对话的发展脉络、当前状态的简要总结,它是“总结的总结”

Depth 2(叙事层):

SUMMARY · DEPTH 2 · 840 tokTurns 164

它是:

  • 把所有 Depth 1 再总结一次

  • 得到整个会话的“全局理解”

它是长期的里程碑、核心决策和全局故事线。当同级摘要积累到一定数量时,系统会触发“凝缩(Condensation)”,生成更高级别的抽象节点。相当于,全局压缩后的“脑子里的结论”

因此,这样的 DAG 结构具备以下特性:

✅ 所有原始消息永远在 DB 里,总结只是”索引”

✅ 想看原始,直接展开就行

✅ 在正常操作中,你永远不需要再考虑 compaction

2.5 装上之后的变化

装上这个插件之后,你会发现:

之前
之后
“我不记得了”
“3 天前你说的是这个…”
手动写 memory
完全无感,后台自动
有损压缩,细节丢失
无损保留,随时展开
滑动窗口,一刀切
DAG 分层,智能组装

2.6 社区评价

“连OpenClaw 作者都亲自推荐:如果你被 compaction 搞得头疼,就试试这个”


三、OpenClaw原生机制 VS Lossless-Claw 插件机制

如果觉得前两章 OpenClaw 原生记忆存储机制和 Lossless-Claw 插件记忆存储机制的解析太啰嗦,我们可以看下面的快速对比表,了解它们之间的差异:

项目
OpenClaw 官方
Lossless-Claw (LCM)
胜负
存储方式
Markdown 文件 + 向量索引
SQLite DB(按会话组织)
🏆 LCM
压缩方式
滑动窗口 + 有损总结
DAG 分层总结(叶子→枝干→主干)
🏆 LCM
是否丢失原始数据
是(总结后丢弃)
否(原始消息永存)
🏆 LCM
触发时机
接近 token 限时(需手动/预 flush)
每轮对话后自动后台检查
🏆 LCM
召回细节
靠向量检索(容易漏)
lcm_expand 工具精准展开
🏆 LCM
历史保留
只有当天 + 昨天自动加载
所有历史永久可追溯
🏆 LCM
Token 控制
容易爆窗或丢信息
始终保持 30-100k 安全范围
🏆 LCM
是否需要手动干预
需要经常命令”write to memory”
完全无感(后台异步)
🏆 LCM

如果打个比方来讲,OpenClaw 原生记忆存储机制和 Lossless-Claw 插件记忆存储机制,它们之间的差距就像:

OpenClaw:

像把书撕掉几页,再粘个摘要在上面。

想看原始内容?没了,真没了。

Lossless-Claw:

把整本书扫描进数据库,只在当前阅读时把相关页”智能折叠”给你。

需要翻哪页?随时展开就行。


四、安装与配置

4.1 前置要求

要求
说明
OpenClaw
2026.3+ 版本(支持 pluggable contextEngine)
Node.js
v22+
LLM Provider
已配置(用于摘要生成)

4.2 安装命令

# 方式一:Git 安装(推荐)openclaw plugins install \  https://github.com/martian-engineering/lossless-claw# 方式二:npm 包安装(如已发布)openclaw plugins install @martian-engineering/lossless-claw# 方式三:本地开发安装git clone https://github.com/martian-engineering/lossless-clawcd lossless-clawopenclaw plugins install -l .

4.3 配置文件

编辑 ~/.openclaw/config.json

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

4.4 环境变量

变量
默认值
说明
推荐值
LCM_ENABLED
true
启用/禁用插件
true
LCM_DATABASE_PATH ~/.openclaw/lcm.db
SQLite 数据库路径
默认即可
LCM_CONTEXT_THRESHOLD
0.75
触发压缩的上下文窗口比例 (0.0-1.0)
0.65-0.75
LCM_FRESH_TAIL_COUNT
32
受保护不被压缩的最近消息数
32-64
LCM_LEAF_MIN_FANOUT
8
每个叶子摘要的最小原始消息数
8
LCM_CONDENSED_MIN_FANOUT
4
每个浓缩摘要的最小子摘要数
4
LCM_CONDENSED_MIN_FANOUT_HARD
2
强制压缩时的宽松 fanout
2
LCM_INCREMENTAL_MAX_DEPTH
0
增量压缩深度 (0=仅叶子,-1=无限)
-1
LCM_LEAF_CHUNK_TOKENS
20000
每个叶子压缩块的最大 token 数
20000
LCM_LEAF_TARGET_TOKENS
1200
叶子摘要的目标 token 数
1200-2000
LCM_CONDENSED_TARGET_TOKENS
2000
浓缩摘要的目标 token 数
2000-3000
LCM_MAX_EXPAND_TOKENS
4000
子代理展开查询的 token 上限
4000
LCM_LARGE_FILE_TOKEN_THRESHOLD
25000
超过此大小的文件块单独存储
25000
LCM_AUTOCOMPACT_DISABLED
false
禁用自动压缩
false
# ~/.zshrc 或 ~/.bashrc# 推荐起始配置export LCM_FRESH_TAIL_COUNT=32       # 保护最近 32 条消息export LCM_INCREMENTAL_MAX_DEPTH=-1  # 启用无限自动浓缩export LCM_CONTEXT_THRESHOLD=0.75    # 75% 阈值触发

配置说明:

  • • freshTailCount=32 保护最近 32 条消息不被压缩,给模型足够的近期上下文保持连续性
  • • incrementalMaxDepth=-1 启用每次压缩后的无限自动浓缩——DAG 根据需要深入
  • • contextThreshold=0.75 在上下文达到模型窗口 75% 时触发压缩,为模型响应留出空间

4.5 Session 重置设置

LCM 通过压缩保留历史,但不改变 OpenClaw 的核心 session 重置策略。

如果 session 重置得比你期望的早,需要调整 OpenClaw 的 session 设置:

{  "session": {    "reset": {      "mode": "idle",      "idleMinutes": 10080    }  }}

配置说明:

参数
说明
推荐值
session.reset.mode
“idle” 保持 session 直到空闲窗口过期
idle
session.reset.idleMinutes
实际重置间隔(分钟)
10080 (7 天)

常用值参考:

  • • 1440 = 1 天
  • • 10080 = 7 天
  • • 43200 = 30 天
  • • 525600 = 365 天

对于大多数长周期 LCM 配置,推荐起点:

{  "session": {    "reset": {      "mode": "idle",      "idleMinutes": 10080    }  }}

注意: 如果同时使用 daily reset 模式,idleMinutes 作为次要保护,session 会在每日边界或空闲窗口先到期时重置。

4.6 重启生效

# 重启 OpenClawopenclaw restart# 或重启 gatewayopenclaw gateway restart

4.7 验证安装

# 查看已安装插件openclaw plugins list# 检查 LCM 特定日志openclaw logs | grep LCM# 验证 context engine 已注册openclaw logs | grep "context engine.*lossless-claw"

4.8 Agent 工具

安装后,Agent 会自动获得以下工具:

工具
用途
示例
lcm_grep
搜索历史消息
lcm_grep "deployment issue"
lcm_describe
查看 DAG 结构和统计
lcm_describe --stats
lcm_expand_query
展开特定查询的详情
lcm_expand_query "API 配置"

工具说明:

  • • lcm_grep – 在压缩历史中搜索关键词,支持多关键词和限制结果数
  • • lcm_describe – 查看当前 DAG 结构、节点数量、压缩统计
  • • lcm_expand_query – 子代理专用,展开特定主题的完整上下文(不会炸 token)

注意:lcm_expand 工具仅限子代理调用,主 Agent 应使用 lcm_expand_query 包装器。

4.9 推荐配置组合

# 推荐起始配置(~/.zshrc)export LCM_FRESH_TAIL_COUNT=32       # 保护最近 32 条消息export LCM_INCREMENTAL_MAX_DEPTH=-1  # 启用无限自动浓缩export LCM_CONTEXT_THRESHOLD=0.75    # 75% 阈值触发# Session 重置配置(~/.openclaw/config.json){  "session": {    "reset": {      "mode": "idle",      "idleMinutes": 10080  # 7 天    }  }}

五、最佳实践

5.1 推荐配置组合

Lossless-Claw + 官方 Memory 系统Lossless-Claw → 会话历史、对话上下文(自动管理)官方 Memory → 长期知识、用户偏好(手动/自动写入)├── MEMORY.md      → 项目架构、API Keys、Workflow Rules├── USER.md        → 用户偏好、习惯├── SOUL.md        → Agent 人格、语气└── lossless-claw  → 完整对话历史(SQLite DB)

5.2 配置调优建议

场景
推荐配置
长对话 freshTailCount: 64

contextThreshold: 0.8
短对话 freshTailCount: 16

contextThreshold: 0.7
代码审查 freshTailCount: 48

leafTargetTokens: 2000
日常聊天
默认配置即可

5.3 定期维护

# 每月检查数据库大小du -sh ~/.openclaw/lcm.db# 备份数据库cp ~/.openclaw/lcm.db ~/backups/lcm-$(date +%Y%m%d).db# 清理过旧的会话(可选,90 天+)sqlite3 ~/.openclaw/lcm.db \  "DELETE FROM messages WHERE created_at < datetime('now', '-90 days');"

🔗 相关链接

资源
链接
GitHub 仓库
https://github.com/martian-engineering/lossless-claw
LCM 论文
https://papers.voltropy.com/LCM
Loss-less Claw 结构演示
https://losslesscontext.ai
OpenClaw 文档
https://docs.openclaw.ai
ClawHub
https://clawhub.ai


关注我,获取 AI 技术前沿资讯与实战技巧 👇 点赞 + ❤️ + 分享,下期更精彩!

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 这个插件装上后,彻底治好了我的 ��AI Agent 的健忘症

猜你喜欢

  • 暂无文章