基于分层策略的智能上下文压缩系统,用于监控和优化OpenClaw会话的上下文使用。
- 实时监控: 持续监控会话上下文使用情况
- 分层压缩: HOT/WARM/COLD三层数据管理
- 智能触发: 基于内存使用、时间和事件的触发机制
- 自动优化: 根据阈值自动执行压缩
- 详细报告: 完整的压缩统计和性能报告
| 层级 | 描述 | 保留时间 | 最大项目 | 重要性阈值 | 压缩方法 |
|---|---|---|---|---|---|
| HOT | 最近的关键信息 | 1天 | 20 | 0.7 | 总结 |
| WARM | 中等重要性的历史信息 | 7天 | 100 | 0.4 | 关键词提取 |
| COLD | 长期存储的参考信息 | 30天 | 500 | 0.2 | 归档 |
- 内存触发: Token使用率 > 70% 或消息数 > 50
- 时间触发: 每小时自动检查,或按计划时间
- 事件触发: 会话开始/结束、任务完成、错误发生
cd ~/.openclaw/workspace/context-compactor
./start_system.sh./check_status.sh./stop_system.shcontext-compactor/
├── monitor.py # 监控服务
├── hierarchical_compactor.py # 分层压缩器
├── integration.py # 集成服务
├── config.json # 配置文件
├── start_system.sh # 启动脚本
├── stop_system.sh # 停止脚本
├── check_status.sh # 状态检查
├── start_monitor.sh # 监控启动
├── stop_monitor.sh # 监控停止
├── logs/ # 日志目录
├── context_compactor.db # SQLite数据库
└── README.md # 本文档
{
"hot": {
"retention_days": 1,
"max_items": 20,
"importance_threshold": 0.7
}
}{
"memory_based": {
"enabled": true,
"token_usage_threshold": 0.7,
"message_count_threshold": 50
}
}{
"summarization": {
"enabled": true,
"max_length_ratio": 0.3
}
}python3 hierarchical_compactor.py --trigger manualpython3 -c "
import json
with open('status.json', 'r') as f:
data = json.load(f)
print(json.dumps(data, indent=2, ensure_ascii=False))
"tail -f logs/monitor.log记录所有压缩操作的历史。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键 |
| timestamp | TEXT | 压缩时间 |
| tier | TEXT | 压缩层级 |
| trigger_type | TEXT | 触发类型 |
| items_before | INTEGER | 压缩前项目数 |
| items_after | INTEGER | 压缩后项目数 |
| tokens_before | INTEGER | 压缩前token数 |
| tokens_after | INTEGER | 压缩后token数 |
| compression_ratio | REAL | 压缩率 |
| details | TEXT | 详细信息 |
存储分层后的数据。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | TEXT | 唯一ID |
| tier | TEXT | 数据层级 |
| content | TEXT | 原始内容 |
| compressed_content | TEXT | 压缩后内容 |
| original_length | INTEGER | 原始长度 |
| compressed_length | INTEGER | 压缩后长度 |
| importance_score | REAL | 重要性评分 |
| timestamp | TEXT | 时间戳 |
| source | TEXT | 数据来源 |
| metadata | TEXT | 元数据 |
| created_at | TEXT | 创建时间 |
| last_accessed | TEXT | 最后访问时间 |
- Token使用率: 当前会话的token使用百分比
- 消息数量: 当前会话的消息总数
- 压缩率: 压缩前后的长度比例
- 节省Token: 压缩节省的token总数
- 处理时间: 压缩操作的处理时间
- 保持Token使用率 < 70%
- 单次压缩时间 < 5秒
- 压缩率目标: 30-50%
- 每小时最多压缩4次
# 检查依赖
python3 --version
# 检查文件权限
chmod +x *.sh
# 查看错误日志
cat logs/integration.log# 检查配置阈值
grep "token_usage_threshold" config.json
# 检查当前使用率
./check_status.sh
# 手动触发测试
python3 hierarchical_compactor.py --trigger test# 检查数据库文件
ls -la context_compactor.db
# 备份并重建数据库
cp context_compactor.db context_compactor.db.backup
rm context_compactor.db- INFO: 常规操作日志
- WARNING: 警告信息
- ERROR: 错误信息
- DEBUG: 调试信息(需要修改配置)
编辑OpenClaw配置文件,添加自动启动:
# 在OpenClaw启动脚本中添加
cd ~/.openclaw/workspace/context-compactor
./start_system.sh &在HEARTBEAT.md中添加压缩检查:
## 定期检查
- [ ] 检查上下文压缩状态
- [ ] 查看压缩报告
- [ ] 清理旧日志- 在
hierarchical_compactor.py中添加新的压缩方法 - 更新
config.json中的压缩方法配置 - 在
CompressionMethod枚举中添加新方法
- 在
monitor.py中添加新的触发条件 - 更新
config.json中的触发配置 - 实现相应的触发逻辑
修改calculate_importance方法,添加自定义的重要性计算规则。
本项目基于MIT许可证开源。
如有问题或建议,请:
- 查看日志文件
- 检查配置设置
- 提交Issue报告
提示: 系统首次启动时会创建数据库和日志文件,可能需要几秒钟时间。