自动截断过长的对话会话文件,智能提取关键事实保存至记忆库,防止上下文窗口溢出导致信息丢失。
说明:
## 核心用法
Context Compression 是一套面向 OpenClaw 代理系统的本地会话管理工具集,通过定时任务自动处理 `~/.openclaw/agents/*/sessions/*.jsonl` 会话文件。核心工作流分为三步:
1. **事实识别**:在截断前扫描会话内容,通过关键词匹配(或可选的 AI 辅助)提取重要信息
2. **安全截断**:按配置字符上限修剪会话文件,保留 JSONL 行边界完整性,跳过带 `.lock` 的活跃会话
3. **记忆持久化**:将提取的事实写入 `~/.openclaw/workspace/memory/YYYY-MM-DD.md` 和 `MEMORY.md`
关键脚本 `truncate-sessions-safe.sh` 设计有多层保护机制:截断前创建 `.pre-trim` 备份、基于 `priority-first` 策略保留含关键词的行、通过 crontab 每 10 分钟执行一次。`session-start-hook.sh` 和 `session-end-hook.sh` 提供会话级上下文加载/保存能力。
## 显著优点
– **零数据丢失设计**:截断非删除,备份机制确保可恢复;关键词优先策略保护关键决策信息
– **完全本地运行**:除可选的 AI 辅助模式外,所有脚本仅操作本地文件系统,无直接网络请求
– **用户高度可控**:crontab 由用户手动配置,配置项通过交互式向导生成,可随时停用
– **细粒度权限**:仅访问 OpenClaw 代理目录和记忆工作区,不触碰系统文件或其他用户数据
– **活跃会话保护**:`.lock` 文件机制确保正在进行的对话不会被中断
## 潜在缺点与局限性
– **依赖外部调度**:需用户手动配置 crontab,无内置守护进程,新手可能遗漏此步骤
– **AI 辅助的隐私权衡**:`identify-facts-enhanced.sh` 启用后会将内容发送至配置的 LLM 服务,存在数据出境风险
– **关键词识别的局限**:默认的关键词库(中英文)可能无法覆盖专业领域术语,需手动扩展配置
– **无可视化界面**:纯 CLI 工具,状态查看依赖 `check-context-health.sh` 的文本输出
– **备份清理责任**:`.pre-trim` 备份在成功写入后清理,但异常中断可能残留备份文件需手动处理
## 适合人群
– 长期使用 OpenClaw 进行复杂多轮对话的高级用户
– 需要严格遵守上下文长度限制的企业/研究场景
– 重视数据主权、倾向本地优先架构的隐私敏感用户
– 具备基础 Linux 系统管理能力(crontab、JSON 配置)的技术用户
## 常规风险
| 风险场景 | 等级 | 说明 |
|———|——|——|
配置错误导致过度截断 | 中 | `maxChars` 设置过小会丢失有用历史,建议初次使用保持默认值 40000 |
crontab 环境变量缺失 | 中 | 计划任务可能因 PATH 不含 `openclaw` 二进制而失败,需在 crontab 中显式声明 |
AI 辅助模式误启用 | 高 | `useAiIdentification: true` 可能在用户不知情时传输敏感会话内容至第三方 LLM |
锁文件残留 | 低 | 异常崩溃可能导致 `.lock` 文件未清理,需手动删除以恢复该会话的截断功能 |
备份堆积 | 低 | 长期运行若频繁异常中断,`.pre-trim` 文件可能占用额外磁盘空间 |
## 使用建议
首次部署时,先以 `check-context-health.sh` 检视当前会话规模,通过 `configure.sh` 生成保守配置,手动运行 `truncate-sessions-safe.sh` 验证行为符合预期后,再添加至 crontab。生产环境建议关闭 `useAiIdentification`,依赖本地关键词识别保障隐私。









