Skip to main content

上下文窗口与压缩

每个模型都有一个上下文窗口(最大可见 token 数)。长时间运行的聊天会积累消息和工具结果;一旦窗口达到上限,OpenClaw 会压缩较早的历史记录,以保持在限制内。

什么是压缩

压缩将较早的对话内容总结成简洁的摘要条目,同时保持近期消息不变。该摘要存储于会话历史中,未来请求使用:
  • 压缩摘要
  • 压缩点之后的近期消息
压缩会持续保存在会话的 JSONL 历史中

配置

在你的 openclaw.json 中使用 agents.defaults.compaction 设置来配置压缩行为(模式、目标 token 数等)。
压缩摘要默认会保留不透明标识符(identifierPolicy: "strict")。你可以用 identifierPolicy: "off" 来关闭,或者用 identifierPolicy: "custom" 并配合 identifierInstructions 提供自定义文本覆盖。

自动压缩(默认开启)

当会话接近或超出模型上下文窗口时,OpenClaw 会触发自动压缩,并可能使用压缩后的上下文重试原始请求。 你将看到:
  • 在详细模式中显示 🧹 Auto-compaction complete
  • /status 显示 🧹 Compactions: <次数>
压缩前,OpenClaw 会执行一次静默内存刷新,将持久笔记存储到磁盘。详见 内存 的相关配置和说明。

手动压缩

使用 /compact 命令(可附带指令)强制进行一次压缩:
/compact 关注决策和未解决的问题

上下文窗口来源

上下文窗口大小与模型相关。OpenClaw 从配置的提供商目录中获取模型定义以确定限制。

压缩与修剪的区别

  • 压缩:进行总结并持久化保存于 JSONL。
  • 会话修剪:仅内存中修剪老旧的工具结果,按请求执行。
关于修剪详情见 /concepts/session-pruning

OpenAI 服务器端压缩

OpenClaw 也支持兼容的 OpenAI 直连模型的 OpenAI 响应服务器端压缩提示。这与本地 OpenClaw 压缩分开,可并行运行。
  • 本地压缩:OpenClaw 自行总结并持久化至会话 JSONL。
  • 服务器端压缩:当启用 store + context_management 时,OpenAI 在提供端压缩上下文。
详细参数和覆盖请见 OpenAI 提供商

小贴士

  • 当会话感觉陈旧或上下文臃肿时,使用 /compact
  • 大型工具输出已经被截断;修剪能进一步减少工具结果积累。
  • 若需要全新开始,请使用 /new/reset 开启新的会话 ID。