自动会话压缩以优化 token 使用。当会话消息数超过阈值时,将早期历史压缩为结构化摘要,保留工具调用和关键事实。适用于长对话场景以节省上下文窗口。核心算法参考 claw-code 项目的 compact.rs 设计。
本技能提供自动化的会话压缩功能,解决长对话导致的 token 超限问题。
在 openclaw.config.json 中启用:
json
{
skills: {
session-compactor: {
enabled: true,
maxTokens: 3000,
minMessagesToKeep: 5,
autoCompact: true
}
}
}
设置 autoCompact: true 后,每次会话更新会自动检测并压缩。
调用工具 compact_session:
bash
openclaw tools call compact_session {force: false}
压缩 不可逆,早期消息细节会丢失。
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
| maxTokens | number | 3000 | 触发压缩的 token 阈值 |
| minMessagesToKeep |
json
[
{role:user,content:请分析赛力斯2025年报},
{role:assistant,content:[tavily_search] 正在搜索...},
{role:user,content:还要2024年对比数据},
{role:assistant,content:[tavily_search] 已找到...}
// ... 继续累积到 50+ 条
]
json
[
{role:system,content:## 会话摘要 (已压缩早期 45 条消息)\n- 对话目标: 分析赛力斯2025年报...\n- 工具调用: 6 次...},
{role:user,content:那么深信服的2025预测呢?},
{role:assistant,content:继续...}
// ... 最新 16 条保持完整
]
核心算法实现于 scripts/compact_session.js:
javascript
const { compactSession } = require(./scripts/compact_session);
const result = await compactSession(messages, {
maxTokens: 4000,
force: false
});
console.log(result.compacteded); // true/false
console.log(result.savedTokens); // 节省的 token 数
详细设计文档见 references/architecture.md。
⚠️ 压缩不可逆 - 早期消息细节永久丢失
⚠️ 阈值设置 - 建议 maxTokens 设较高 (4000-6000) 避免过早压缩
⚠️ 生产增强 - 考虑集成 LLM 生成高质量摘要
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 session-compactor-1775877431 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 session-compactor-1775877431 技能
skillhub install session-compactor-1775877431
文件大小: 10.4 KB | 发布时间: 2026-4-12 11:20