Compaction 压缩
Compaction 是 OpenClaw 对话历史的压缩机制,用于管理长期运行的会话。
为什么需要压缩
随着对话的进行,上下文会不断增长,可能导致:
- 上下文超出 LLM 限制
- 响应速度下降
- 成本增加
压缩策略
1. 摘要压缩
将旧消息压缩为摘要:
yaml
compaction:
strategy: "summarize"
trigger:
messages: 100 # 每100条消息压缩
tokens: 8000 # 或每8000 tokens
summary_model: "gpt-4" # 用于摘要的模型2. 选择性保留
保留重要消息,删除低信息量消息:
yaml
compaction:
strategy: "selective"
keep:
- type: "tool_call"
- type: "tool_result"
- type: "user_decision"
remove:
- type: "greeting"
- type: "acknowledgment"3. 分层压缩
按时间分层压缩:
yaml
compaction:
strategy: "hierarchical"
layers:
- name: "recent"
depth: 50 # 保留最近50条完整消息
- name: "middle"
depth: 200 # 早期消息压缩为摘要
- name: "old"
depth: 1000 # 更早的消息进一步压缩手动触发
bash
openclaw compact --session-id=<session>相关概念
- 会话 (Session) - 会话管理
- 记忆 (Memory) - 长期记忆存储