深度

OpenClaw Session 压缩(Compaction)机制详解:上下文窗口管理与手动压缩技巧

OpenClaw Session 压缩机制深度解析:Compaction 与 Session Pruning 的区别、自动压缩触发条件、identifierPolicy 配置、为压缩单独指定模型(支持本地 Ollama)、手动 /compact 命令用法,以及 OpenAI 服务端压缩与本地压缩的协同工作原理。

2026/3/103分钟 阅读ClaudeEagle

每个模型都有上下文窗口限制(最大 Token 数)。长时间对话积累的消息和工具结果会填满窗口,OpenClaw 的 Compaction 机制通过自动压缩解决这个问题。

什么是 Compaction?

Compaction 将旧对话历史压缩为一条摘要,同时保留最近的消息。压缩结果持久化到会话 JSONL 文件中,后续请求使用:

  • 压缩摘要
  • 压缩点之后的最近消息

与 Session Pruning 的区别

CompactionSession Pruning
作用对象整体对话历史仅工具调用结果
存储方式持久化到 JSONL内存中,不持久
触发时机上下文接近限制每次请求时

自动压缩(默认开启)

当 Session 接近或超出上下文窗口时,OpenClaw 自动触发压缩,并可能用压缩后的上下文重试原始请求。

可见标志:

  • 详细模式下显示 Auto-compaction complete
  • /status 显示 Compactions: <count>

配置项

json
{
  "agents": {
    "defaults": {
      "compaction": {
        "identifierPolicy": "strict",
        "model": "openrouter/anthropic/claude-sonnet-4-5"
      }
    }
  }
}

identifierPolicy

压缩摘要中如何处理标识符(ID、变量名等):

  • strict(默认):尽可能保留不透明标识符
  • off:不特殊处理
  • custom + identifierInstructions:自定义处理规则

为压缩指定独立模型

当主模型是小型本地模型时,可以让更强的模型负责生成压缩摘要:

json
{
  "agents": {
    "defaults": {
      "compaction": {
        "model": "openrouter/anthropic/claude-sonnet-4-5"
      }
    }
  }
}

也适用于本地模型:

json
{
  "agents": {
    "defaults": {
      "compaction": {
        "model": "ollama/llama3.1:8b"
      }
    }
  }
}

手动压缩

可以随时用 /compact 命令手动触发,还可以附加自定义指令:

/compact 重点关注决策和未解决的问题

压缩前记忆刷新

压缩前,OpenClaw 会触发一个静默的 Agent 轮次,提醒模型在上下文被压缩前把重要内容写入记忆文件(见 Memory 文档)。

OpenAI 服务端压缩

OpenClaw 也支持 OpenAI Responses 的服务端压缩提示(适用于兼容的 OpenAI 模型):

  • 本地 Compaction:OpenClaw 压缩并持久化到 JSONL
  • 服务端 Compaction:OpenAI 在提供商侧压缩上下文

两者可以同时运行。详情见 OpenAI 提供商文档。

实用技巧

  • 感觉 Session 变「迟钝」时:用 /compact 主动压缩
  • 大型工具输出已被截断;Pruning 可进一步减少工具结果堆积
  • 需要全新开始:用 /new/reset 开启新的 Session ID
  • 频繁压缩说明对话过长或上下文过重,考虑拆分任务

原文:Compaction - OpenClaw | 来源:OpenClaw 官方文档

相关文章推荐

深度OpenClaw 多 Gateway 架构完全指南:一台机器运行多个独立 AI 助手实例OpenClaw 多 Gateway(Multi-Gateway)架构完整教程:多实例的隔离优势、同一台机器运行多个 Gateway(不同端口/配置文件/workspace)、systemd 管理多个 Gateway 服务、Nginx 虚拟主机为每个实例分配独立域名、API Key 隔离与成本拆分、单机多实例 vs 多机方案对比,以及 Docker Compose 多容器隔离部署方案。2026/3/26深度OpenClaw Hooks 自动化进阶:消息前后的智能拦截、转换与触发机制OpenClaw Hooks(钩子)自动化系统进阶教程:Hooks 的触发时机(before-send/after-receive/on-tool-call)、用 Hooks 拦截消息并修改内容(自动翻译/过滤/格式化)、基于条件的 Hook 触发(渠道过滤/关键词匹配)、Hook 中调用外部 API(Notion 记录/Bark 通知/监控告警)、exec 工具二次确认 Hook,以及 Hooks 与 SOUL.md 和 Standing Orders 的优先级关系详解。2026/3/26深度OpenClaw 插件开发完全指南:从零构建自定义渠道和工具插件OpenClaw 插件(Plugin)开发完整教程:插件类型(渠道插件/工具插件/Provider插件)、插件的目录结构和 package.json 规范、使用 Plugin SDK 开发自定义消息渠道(实现 onMessage/sendMessage 接口)、开发自定义工具(Tool)的函数签名和参数 Schema、本地插件安装与调试(openclaw plugins install ./local-plugin)、发布到 npm 的规范要求(@openclaw/ 命名空间)、插件的权限声明(capabilities)、社区插件列表(Plugin Bundles)获取,以及常见插件开发错误和调试技巧。2026/3/25深度OpenClaw 安全威胁模型深度解析:MITRE ATLAS 框架下的 AI 助手攻防分析OpenClaw 安全架构深度分析:个人助手信任模型(单用户/单 Gateway 边界)、形式化验证的认证逻辑、基于 MITRE ATLAS 框架的 AI 系统威胁分类(直接提示注入/间接提示注入/工具滥用/数据泄露/会话劫持)、多租户共享 Gateway 的风险与安全边界说明、exec/browser/文件工具的权限最小化配置、频道白名单与沙箱配置对应的威胁缓解措施,以及 `openclaw security audit` 命令的使用方法。2026/3/24深度OpenClaw 多模型路由完全指南:30+ 模型提供商接入、智能切换与故障转移OpenClaw 多模型路由系统完整教程:支持的 30+ 模型提供商全览(Anthropic/OpenAI/Gemini/Ollama/OpenRouter/DeepSeek/Qwen/GLM 等)、provider/model 格式的模型指定方式、按渠道/Agent/任务类型设置不同默认模型、Model Failover 故障转移配置(主模型失败自动切换备用模型)、Claude Max API Proxy 接入方式、本地模型(Ollama/vLLM)与云端模型混用策略,以及 Token 限制和费用控制实践。2026/3/24深度OpenClaw 多渠道路由完全指南:同时管理 Telegram、WhatsApp、Slack 的统一 AI 助手OpenClaw 多渠道路由(Channel Routing)完整教程:如何在一个 OpenClaw 实例上同时运行 Telegram、WhatsApp、Slack 等多个渠道、每个渠道使用独立 Agent(SOUL.md)的路由配置、基于渠道类型和群组 ID 的路由规则、同一消息跨渠道广播(Broadcast Groups)、根据渠道身份动态调整 AI 人格与语言风格,以及多渠道管理的最佳实践(避免消息混淆/保持上下文独立/渠道专属配置)。2026/3/23