OpenClaw 上下文压缩配置实战

深入解析 OpenClaw 的 compaction 配置优化过程,从 safeguard 模式迁移到 lossless-claw (LCM),解决双重压缩触发问题,给出最佳实践配置方案。

本文摘要

深入解析 OpenClaw 的 compaction 配置优化过程,从 safeguard 模式迁移到 lossless-claw (LCM),解决双重压缩触发问题,给出最佳实践配置方案。

背景

在使用 OpenClaw 构建 AI Agent 系统时,上下文管理是核心挑战之一。随着对话历史增长,Token 消耗会迅速逼近模型上下文窗口上限。OpenClaw 提供了 compaction(上下文压缩)机制来自动处理这个问题,但默认配置并不总是适合所有场景。

本文记录了从 safeguard 模式迁移到 lossless-claw (LCM) 的完整过程,以及在此过程中遇到的问题和解决方案。

问题现象

当系统提示词(system prompt)非常大时——包含工作区文件(AGENTS.md、SOUL.md、TOOLS.md 等)、大量工具定义、飞书多账号配置,总计约 30-50k tokens——默认的 compaction 配置会过早触发压缩。

关键配置参数:

{
  "compaction": {
    "mode": "safeguard",
    "reserveTokens": 120000,
    "maxHistoryShare": 0.85,
    "recentTurnsPreserve": 5
  }
}

maxHistoryShare: 0.85 意味着对话历史达到上下文窗口 85% 时就触发压缩。对于大 system prompt 的场景,可用历史空间被严重压缩。

根因分析

问题的根本原因是双重压缩冲突

  1. OpenClaw 内置 compaction:基于 token 阈值自动触发
  2. lossless-claw (LCM):第三方压缩插件,基于 DAG 树状结构

当两者同时工作时,LCM 压缩后的历史可能又被内置 compaction 二次压缩,导致上下文丢失。

解决方案

方案:统一到 LCM

禁用内置 compaction,只保留 LCM:

{
  "compaction": {
    "mode": "default",
    "reserveTokens": 999999,
    "maxHistoryShare": 0.85,
    "recentTurnsPreserve": 0
  }
}

关键参数说明

参数 作用 推荐值
mode 压缩模式 default(非 safeguard)
reserveTokens 预留给 system prompt 的 token 数 999999(实际上永不触发)
maxHistoryShare 历史占上下文比例上限 0.85
recentTurnsPreserve 保留最近 N 轮不压缩 0(交给 LCM 处理)

LCM 的优势

LCM (lossless-claw) 的压缩策略更智能:

  • DAG 树状结构:将对话历史组织为有向无环图,保留关键节点
  • 按需展开:通过 lcm_expand 指令可以恢复被压缩的上下文
  • 无损压缩:不丢失信息,只是改变存储密度

效果对比

指标 优化前 优化后
有效上下文利用率 ~50% ~85%
压缩信息丢失 偶尔丢失 无损
压缩触发频率 频繁(双重触发) 仅 LCM 按需
298 条长会话稳定性 经常断档 稳定运行

最佳实践

  1. 大 system prompt 场景:设置 reserveTokens: 999999,让内置 compaction 实际上不触发
  2. 启用 LCM:作为唯一的压缩系统
  3. 监控 Token 使用:定期检查 session_status 了解消耗情况
  4. 定期清理历史:对于超长会话,适时使用 /new 开启新会话

总结

OpenClaw 的 compaction 系统设计灵活,但需要根据实际使用场景调整配置。对于多 Agent 协作、大 system prompt 的复杂场景,推荐使用 LCM 作为唯一压缩方案,避免双重压缩带来的上下文丢失问题。


作者:Jacky | 分类:DevOps & Tools | 标签:OpenClaw, AI Agent, 上下文管理

0 0 投票数
文章评级
订阅评论
提醒
guest

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

0 评论
最多投票
最新 最旧
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x