当对话太长、裁剪也不够用时:Compaction 深度解析与 OpenClaw 的实战策略

发布时间:2026/7/1 0:47:19
当对话太长、裁剪也不够用时:Compaction 深度解析与 OpenClaw 的实战策略 当对话太长、裁剪也不够用时Compaction 深度解析与 OpenClaw 的实战策略1. 引言当“工作台”被彻底塞满2. 什么是 Compaction2.1 核心定义2.2 工作原理2.3 一个精妙的细节工具调用的配对保护3. OpenClaw 的 Compaction 策略3.1 触发机制自动 手动3.2 核心配置参数3.3 “记忆刷写”压缩前的关键一步3.4 “后继转录”压缩后的文件管理3.5 可插拔压缩提供商4. Compaction 的最新前沿4.1 PAACE计划感知的自动化上下文工程4.2 Focus Agent自主压缩的智能体4.3 ACCP标准化压缩协议5. 一张图看懂 Compaction 的完整流程6. 日常实践建议7. 结语The Begin点点关注收藏不迷路⬇ ⬇ 底部 ⬇ ⬇1. 引言当“工作台”被彻底塞满在上一篇文章中我们讨论了工具返回超大结果带来的挑战以及应对策略。但有一个更棘手的问题当整个对话历史本身已经长得无法裁剪时该怎么办想象一个场景你和 Agent 进行了一个长达 50 轮的复杂项目讨论中间穿插了大量文件读取、代码搜索、命令执行。即使你启用了会话剪除Pruning每次只保留最近几轮的工具输出对话的“骨架”——用户和助手的交替消息——本身已经累积到了一个可怕的 Token 数。在某个时刻你发送一条新消息模型直接返回context length exceeded。裁剪Pruning只是“清理桌面”而压缩Compaction是“把旧文件归档到仓库”。2. 什么是 Compaction2.1 核心定义Compaction压缩是将较早的对话轮次摘要成一条精简条目从而释放上下文窗口空间的过程。它的核心思想与人类处理信息的方式一致对于过去发生的事情你不需要记住每一个细节只需要记住“发生了什么”和“关键结论”。Compaction 正是为 Agent 提供这种“记笔记”的能力——把早期对话浓缩成一段摘要让模型在后续推理中仍然知道“之前讨论过什么”但不再被原始的长文本占用空间。关键区别Pruning剪除只针对工具输出在内存中临时处理Compaction 针对整个对话会持久化保存摘要到会话转录中。2.2 工作原理当对话接近上下文限制时Compaction 会介入识别压缩边界系统扫描对话历史确定从哪里开始压缩生成摘要用 LLM 将较早的对话轮次提炼为一段精简文本保留尾部最近的消息保持完整确保当前任务不受影响持久化存储摘要作为compaction条目写入会话转录.jsonl 文件完整对话历史仍保留在磁盘上——压缩只改变模型在下一轮“看到”的内容不删除任何原始数据。2.3 一个精妙的细节工具调用的配对保护Compaction 有一个容易被忽视但至关重要的设计它会确保工具调用assistant tool call与对应的工具结果toolResult永远不被拆散。如果拆分点恰好落在工具调用和结果之间OpenClaw 会自动移动边界让这对条目保持在一起。这意味着即使在压缩后工具调用的上下文完整性依然得到保证——模型不会看到一个“调用了工具但没有结果”或者“有结果但没有对应调用”的碎片化历史。3. OpenClaw 的 Compaction 策略3.1 触发机制自动 手动OpenClaw 支持两种触发方式自动压缩默认开启会在两种情况下触发阈值维护当已用 Token 上下文窗口 - reserveTokens时在一个成功轮次之后触发溢出恢复当模型返回上下文溢出错误时自动压缩并重试OpenClaw 能够识别多种溢出错误模式request_too_largecontext length exceededinput exceeds the maximum number of tokensollama error: context length exceeded手动压缩通过/compact命令触发。还可以带聚焦指令/compact Focus on API design and configuration这让摘要更精准地保留你关心的信息。如果设置了keepRecentTokens手动压缩会保留最近尾部否则是“硬检查点”——从新摘要继续尾部会被截断。3.2 核心配置参数以下配置在openclaw.json的agents.defaults.compaction下设定参数作用推荐值mode压缩模式default/safeguardsafeguard分块摘要更稳定reserveTokensFloor为未来消息预留的最低 Token 数24000model用于摘要的模型可覆盖主模型轻量模型节省成本keepRecentTokens手动压缩时保留的尾部 Token 数按需设定identifierPolicy是否保留不透明标识符strict默认保留notifyUser是否在压缩时通知用户true/false3.3 “记忆刷写”压缩前的关键一步这是 OpenClaw 压缩机制中最具前瞻性的设计。在自动压缩发生之前OpenClaw 可以运行一次静默的“记忆刷写”轮次将当前对话中的关键信息写入memory/YYYY-MM-DD.md等持久化文件。配置如下memoryFlush:{enabled:true,model:ollama/qwen3:8b,softThresholdTokens:4000}这解决了压缩的核心风险摘要可能丢失你关心的细节。通过刷写关键事实被保存到长期记忆中即使压缩把原始对话“归档”了这些信息依然可以在后续会话中被检索到。3.4 “后继转录”压缩后的文件管理开启truncateAfterCompaction后OpenClaw 不会就地重写现有转录而是创建一个新的“后继转录”后续 JSONL包含压缩摘要 保留状态 未摘要尾部。之前的转录作为归档检查点保留。好处压缩不会破坏原始记录压缩前的检查点可用于调试重复的冗长用户轮次如渠道重试风暴会被丢弃避免污染新转录3.5 可插拔压缩提供商插件可以通过registerCompactionProvider()注册自定义压缩提供商。当设置provider时摘要生成被委托给该提供商而不是内置的summarizeInStages流水线。设置provider会自动强制mode: safeguard。如果提供商失败OpenClaw 会自动回退到内置 LLM 摘要。4. Compaction 的最新前沿关于上下文压缩2026 年的学术界和工业界有一些值得关注的进展。4.1 PAACE计划感知的自动化上下文工程2025 年 12 月发布的 PAACE 框架提出了一个核心观点上下文压缩应该“感知计划”——根据任务的计划结构来决定何时、如何压缩。PAACE 包含两个核心组件PAACE-Syn大规模合成 Agent 工作流生成器带有逐步骤压缩监督PAACE-FT从成功教师演示中训练的轻量级压缩器在 AppWorld、OfficeBench 等多任务基准测试中PAACE 在提升准确率的同时降低了峰值上下文和累积依赖。4.2 Focus Agent自主压缩的智能体卡内基梅隆大学等机构提出的 Focus Agent 采用了一种更激进的思路让 Agent 自主决定何时压缩。引入start_focus和complete_focus两个工具Agent 在探索完成后自主调用complete_focus生成摘要并删除原始探索日志上下文呈现“锯齿形”增长 → 压缩 → 再增长在 SWE-bench Lite 测试中Focus 实现了 22.7% 的 Token 减少14.9M → 11.5M同时保持与 Baseline 相同的准确率3/560%。最高单实例节约达 57%。4.3 ACCP标准化压缩协议IETF 的互联网草案 ACCPAgent Context Compression Protocol提出了一种跨 Agent 通信的标准化压缩协议。核心设计包括三级状态模型Hot上下文中→ Warm压缩摘要→ Cold外部存储检查点机制任务完成或 Hot 状态超过 400 Token 时触发压缩增量编码检查点后只传输变更的增量目标是实现 60-90% 的 Token 消耗降低。5. 一张图看懂 Compaction 的完整流程否是对话持续进行上下文逐步增长接近上下文限制触发 Compaction阶段1: 记忆刷写将关键事实写入 memory/ 目录静默执行用户无感知阶段2: 确定压缩边界检测工具调用与结果的配对移动边界确保配对不被拆散阶段3: 生成摘要较旧轮次 → 精简摘要最近消息保持完整阶段4: 持久化摘要写入会话转录 .jsonl完整历史保留在磁盘阶段5: 后继转录创建新的活跃转录原转录归档为检查点上下文空间释放对话继续6. 日常实践建议基于 OpenClaw 的官方文档和社区经验保持自动压缩默认开启——它是最核心的防线压缩太频繁尝试启用会话剪除Pruning——工具输出可能是元凶压缩后上下文感觉“过时”使用/compact Focus on topic引导摘要方向或启用记忆刷写需要彻底清理/new启动全新会话跳过压缩用轻量模型做摘要设置agents.defaults.compaction.model为本地小模型如ollama/qwen3:8b节省主模型成本关注/status查看 Compactions: count了解压缩频率7. 结语Compaction 是 Agent 应对“超长对话”的最后一道防线。当剪除Pruning不足以解决上下文膨胀时Compaction 通过摘要早期对话释放空间让 Agent 能够持续工作。OpenClaw 的 Compaction 策略体现了几个重要的工程智慧配对保护确保工具调用的完整性记忆刷写压缩前把关键信息存入长期记忆后继转录不破坏原始历史建立检查点可插拔设计允许自定义压缩提供商这三个机制——Pruning剪除、Compaction压缩和Memory记忆——共同构成了 OpenClaw 上下文管理生态的完整拼图。理解它们各自的作用和边界是构建可靠、长生命周期的 AI Agent 系统的必修课。The End点点关注收藏不迷路⬆ ⬆ 顶部 ⬆ ⬆