教程

OpenClaw Session Pruning 与 Compaction 的区别:谁在悄悄给你的会话上下文瘦身

详解 OpenClaw Session Pruning 会话修剪机制:如何在每次 LLM 调用前修剪旧的工具调用结果以降低成本,与 Compaction 压缩机制的区别与配合方式,附智能默认值和手动配置方法。

2026/8/123分钟 阅读ClaudeEagle

长时间运行的 OpenClaw 会话,上下文窗口会被大量工具调用输出(exec 结果、文件读取、搜索结果)不断撑大。官方提供了两种互补的应对机制——Session Pruning(会话修剪)Compaction(压缩),本文基于官方文档理清两者的区别和配合方式。

Session Pruning 是什么

Session Pruning 在每次调用 LLM 之前,从上下文中修剪掉 "旧的工具调用结果"——用来减少 exec 结果、文件读取、 搜索结果等累积输出造成的上下文膨胀,且完全不触碰 你的对话消息本身

一个关键前提要理解——修剪只发生在内存中,不会修改磁盘上的会话记录。你的完整历史始终被保留,修剪只影响"这一次发给模型的内容"。

为什么这件事重要

长会话累积的工具输出会撑大上下文窗口,这既增加成本,也可能迫使 Compaction(压缩)比原本需要的时机更早触发。对于 Anthropic 提示缓存,Pruning 的价值尤其明显——缓存 TTL 过期后,下一次请求要重新缓存完整提示,而 Pruning 减小了这次"重新缓存写入"的体积,直接降低成本。

具体的修剪流程

1. 等待缓存 TTL 过期(默认 5 分钟) 2. 找到旧的工具调用结果(用户和助手的对话消息永远不动) 3. 软修剪(Soft-trim):对超大结果保留头尾,中间插入 "..." 4. 硬清除(Hard-clear):其余的直接替换为占位符 5. 重置 TTL,让后续请求能复用刚刷新的缓存

智能默认值

OpenClaw 针对 Anthropic Profile 自动启用 Pruning: Profile 类型 Pruning是否启用 心跳周期 OAuth 或 setup-token 登录 是 1小时 API key 登录 是 30分钟

如果你自己显式设置了这些值,OpenClaw 不会覆盖你的配置。对于非 Anthropic Provider,Pruning 默认是关闭的

如何手动启用或关闭

json5
{
  agents: {
    defaults: {
      contextPruning: { mode: "cache-ttl", ttl: "5m" },
    },
  },
}
json5
// 关闭 Pruning
{
  agents: {
    defaults: {
      contextPruning: { mode: "off" },
    },
  },
}

Pruning vs Compaction:一张表看懂区别

维度 Pruning(修剪) Compaction(压缩) 做什么 修剪工具调用结果 总结整段对话 是否持久化 否(仅限单次请求) 是(写入会话记录) 作用范围 仅工具调用结果 整个对话

两者是互补关系而非替代关系——Pruning 让工具输出在两次Compaction 周期之间保持精简,Compaction 则负责在上下文真正快满时做一次性的整体总结。可以理解为 Pruning 是"日常轻量瘦身",Compaction 是"定期大扫除"。

实战建议

1. 使用 Anthropic 模型且走 OAuth/setup-token 登录的场景, Pruning 已经默认开启,通常不需要额外配置 2. 使用非 Anthropic Provider 但同样面临长会话上下文膨胀问题, 考虑手动开启 contextPruning: cache-ttl 3. 排查"为什么这次请求缓存写入这么大"这类成本异常时, 先确认 Pruning 是否生效、TTL 设置是否合理 4. 不要指望 Pruning 能替代 Compaction—— 前者不持久化、只管工具输出,真正的历史总结 还是要靠 Compaction 完成

总结

Session Pruning 和 Compaction 分工明确——Pruning 管"工具输出别越攒越大",Compaction 管"整个对话该总结了",两者配合才能让长时间运行的 Agent 会话既保持上下文精简,又不丢失完整历史记录。理解这个分工,是调优 OpenClaw 长会话成本和性能的基础一课。


来源:Session Pruning — OpenClaw 官方文档

相关文章推荐

教程OpenClaw Prompt Caching 调优指南:cacheRetention、cache-ttl 修剪与心跳保温三件套详解 OpenClaw 提示缓存调优三大配置项:cacheRetention 缓存保留策略、contextPruning cache-ttl 上下文修剪、heartbeat 心跳保温,附配置合并优先级和不同场景的调优建议。2026/8/12教程OpenClaw SecretRef 完全教程:让 API Key 不用再以明文躺在配置文件里详解 OpenClaw SecretRef 密钥引用机制:内存快照运行时模型、active/inactive Surface 判定逻辑、env/file/exec 三种引用来源写法,以及生产环境凭据管理的实战建议。2026/8/12教程OpenClaw "Sandbox 越狱"排障指南:Sandbox / Tool Policy / Elevated 三层控制到底谁说了算详解 OpenClaw 三套独立又叠加的权限控制机制:Sandbox 决定工具运行位置、Tool Policy 决定工具是否可用、Elevated 是仅针对 exec 的提权逃生舱,附 sandbox explain 排障命令和常见问题修复清单。2026/8/12教程OpenClaw Standing Orders 完全教程:让 Agent 拥有"常设授权",不再事事请示详解 OpenClaw Standing Orders(常设指令)机制:如何在 AGENTS.md 中定义授权范围、触发条件、审批关卡和升级规则,让 Agent 在边界内自主执行常规工作,配合 Cron Jobs 实现定时自动化。2026/8/12教程OpenClaw 多代理路由完全指南:一个 Gateway 进程运行多个独立 AI 助手OpenClaw 支持在同一个 Gateway 进程中运行多个完全隔离的 AI 代理,各自拥有独立工作区、认证配置和会话存储。本文详解 Agent 与 Binding 核心概念、路径配置表,以及切勿跨代理复用 agentDir 的关键安全警告。2026/7/6教程Claude Cache Diagnostics 教程:定位 Prompt Cache Miss 的真正原因Claude Cache Diagnostics 解决 prompt cache miss 难排查问题。通过传入上一次 response id,API 会比较请求 fingerprint,告诉你 model/system/tools/messages 哪个部分破坏了缓存 prefix。2026/6/6