上下文窗口与压缩
每个模型都有一个上下文窗口(最大可见 token 数)。长时间运行的聊天会积累消息和工具结果;一旦窗口达到上限,OpenClaw 会压缩较早的历史记录,以保持在限制内。什么是压缩
压缩将较早的对话内容总结成简洁的摘要条目,同时保持近期消息不变。该摘要存储于会话历史中,未来请求使用:- 压缩摘要
- 压缩点之后的近期消息
配置
在你的openclaw.json 中使用 agents.defaults.compaction 设置来配置压缩行为(模式、目标 token 数等)。压缩摘要默认会保留不透明标识符(
identifierPolicy: "strict")。你可以用 identifierPolicy: "off" 来关闭,或者用 identifierPolicy: "custom" 并配合 identifierInstructions 提供自定义文本覆盖。
自动压缩(默认开启)
当会话接近或超出模型上下文窗口时,OpenClaw 会触发自动压缩,并可能使用压缩后的上下文重试原始请求。 你将看到:- 在详细模式中显示
🧹 Auto-compaction complete /status显示🧹 Compactions: <次数>
手动压缩
使用/compact 命令(可附带指令)强制进行一次压缩:
上下文窗口来源
上下文窗口大小与模型相关。OpenClaw 从配置的提供商目录中获取模型定义以确定限制。压缩与修剪的区别
- 压缩:进行总结并持久化保存于 JSONL。
- 会话修剪:仅内存中修剪老旧的工具结果,按请求执行。
OpenAI 服务器端压缩
OpenClaw 也支持兼容的 OpenAI 直连模型的 OpenAI 响应服务器端压缩提示。这与本地 OpenClaw 压缩分开,可并行运行。- 本地压缩:OpenClaw 自行总结并持久化至会话 JSONL。
- 服务器端压缩:当启用
store+context_management时,OpenAI 在提供端压缩上下文。
小贴士
- 当会话感觉陈旧或上下文臃肿时,使用
/compact。 - 大型工具输出已经被截断;修剪能进一步减少工具结果积累。
- 若需要全新开始,请使用
/new或/reset开启新的会话 ID。