返回顶部
c

context-compactor上下文压缩器

Token-based context compaction for local models (MLX, llama.cpp, Ollama) that don't report context limits.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.3.8
安全检测
已通过
1,637
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

context-compactor

上下文压缩器

在使用无法正确报告令牌限制或上下文溢出错误的本地模型时,为OpenClaw提供自动上下文压缩功能。

问题

云API(Anthropic、OpenAI)会报告上下文溢出错误,从而触发OpenClaw内置的压缩功能。而本地模型(MLX、llama.cpp、Ollama)通常会出现以下情况:

  • - 静默截断上下文
  • 上下文超出时返回乱码
  • 无法报告准确的令牌数量

这会导致上下文过长时对话中断。

解决方案

上下文压缩器在客户端估算令牌数量,并在达到模型限制前主动对较旧消息进行摘要。

工作原理

┌─────────────────────────────────────────────────────────────┐
│ 1. 消息到达 │
│ 2. beforeagentstart 钩子触发 │
│ 3. 插件估算总上下文令牌数 │
│ 4. 如果超过 maxTokens: │
│ a. 将消息分为旧消息和最近消息 │
│ b. 对旧消息进行摘要(LLM 或回退方案) │
│ c. 将摘要作为压缩后的上下文注入 │
│ 5. 代理看到:摘要 + 最近消息 + 新消息 │
└─────────────────────────────────────────────────────────────┘

安装

bash

一键安装(推荐)


npx jasper-context-compactor setup

重启网关

openclaw gateway restart

安装命令会自动:

  • - 将插件文件复制到 ~/.openclaw/extensions/context-compactor/
  • 使用合理的默认值将插件配置添加到 openclaw.json

配置

添加到 openclaw.json:

json
{
plugins: {
entries: {
context-compactor: {
enabled: true,
config: {
maxTokens: 8000,
keepRecentTokens: 2000,
summaryMaxTokens: 1000,
charsPerToken: 4
}
}
}
}
}

选项

选项默认值描述
enabledtrue启用/禁用插件
maxTokens
8000 | 触发压缩前的最大上下文令牌数 | | keepRecentTokens | 2000 | 保留的最近消息令牌数 | | summaryMaxTokens | 1000 | 摘要的最大令牌数 | | charsPerToken | 4 | 令牌估算比率 | | summaryModel | (会话模型) | 用于摘要的模型 |

针对您的模型进行调优

MLX(8K 上下文模型):
json
{
maxTokens: 6000,
keepRecentTokens: 1500,
charsPerToken: 4
}

更大上下文(32K 模型):
json
{
maxTokens: 28000,
keepRecentTokens: 4000,
charsPerToken: 4
}

小上下文(4K 模型):
json
{
maxTokens: 3000,
keepRecentTokens: 800,
charsPerToken: 4
}

命令

/compact-now

强制清除摘要缓存,并在下一条消息时触发新的压缩。

/compact-now

/context-stats

显示当前上下文令牌使用情况以及是否会触发压缩。

/context-stats

输出:

📊 上下文统计

消息:共 47 条

  • - 用户:23
  • 助手:24
  • 系统:0

估算令牌数:~6,234
限制:8,000
使用率:77.9%

✅ 在限制范围内

摘要工作原理

当触发压缩时:

  1. 1. 分割消息 为旧消息(需要摘要)和最近消息(需要保留)
  2. 生成摘要 使用会话模型(或配置的 summaryModel)
  3. 缓存摘要 以避免为相同内容重新生成
  4. 注入上下文 并在前面添加摘要

如果 LLM 运行时不可用(例如启动期间),则会使用基于截断的回退摘要。

与内置压缩的区别

功能内置上下文压缩器
触发条件模型报告溢出令牌估算阈值
适用于本地模型
❌(需要溢出错误) | ✅ | | 持久化到记录 | ✅ | ❌(仅会话) | | 摘要方式 | Pi 运行时 | 插件 LLM 调用 |

上下文压缩器是补充性的——它在达到模型硬限制之前捕获问题。

故障排除

摘要质量差:

  • - 尝试更好的 summaryModel
  • 增加 summaryMaxTokens
  • 如果 LLM 运行时不可用,会使用回退截断

压缩触发过于频繁:

  • - 增加 maxTokens
  • 减少 keepRecentTokens(保留更少,更早进行摘要)

未按预期进行压缩:

  • - 检查 /context-stats 查看当前使用情况
  • 验证配置中的 enabled: true
  • 检查日志中的 [context-compactor] 消息

每令牌字符数不正确:

  • - 英语默认值为 4
  • 中日韩语言尝试 3
  • 高度技术性内容尝试 5

日志

启用调试日志:

json
{
plugins: {
entries: {
context-compactor: {
config: {
logLevel: debug
}
}
}
}
}

查找:

  • - [context-compactor] 当前上下文:~XXXX 令牌
  • [context-compactor] 压缩了 X 条消息 → 摘要

链接

  • - GitHub:https://github.com/E-x-O-Entertainment-Studios-Inc/openclaw-context-compactor
  • OpenClaw 文档:https://docs.openclaw.ai/concepts/compaction

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 context-compactor-1776419983 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 context-compactor-1776419983 技能

通过命令行安装

skillhub install context-compactor-1776419983

下载

⬇ 下载 context-compactor v0.3.8(免费)

文件大小: 14.91 KB | 发布时间: 2026-4-17 19:37

v0.3.8 最新 2026-4-17 19:37
v0.3.8: Enhanced Ollama detection

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部