OpenClaw从入门到应用——Agrnt:上下文窗口与压缩
通过OpenClaw实现副业收入:《OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南》
每个模型都有一个上下文窗口(即模型能够处理的最大令牌数)。长时间运行的对话会不断积累消息和工具结果;一旦上下文窗口空间紧张,OpenClaw 就会压缩较早的历史记录,以保持在限制范围内。
什么是压缩
压缩将较早的对话内容汇总成一个紧凑的摘要条目,同时保留最近的消息。该摘要会存储在会话历史记录中,因此后续请求将使用:
- 压缩摘要
- 压缩点之后的最近消息
压缩会持久保存在会话的 JSONL 历史记录文件中。
配置
使用openclaw.json中的agents.defaults.compaction设置来配置压缩行为(模式、目标令牌数等)。
压缩摘要默认会保留不透明的标识符(identifierPolicy: "strict")。你可以通过设置identifierPolicy: "off"来覆盖此行为,或者通过设置identifierPolicy: "custom"并提供identifierInstructions自定义文本来覆盖。
你还可以通过agents.defaults.compaction.model为压缩摘要指定一个不同的模型。当你的主模型是本地模型或小型模型,而你希望由能力更强的模型来生成压缩摘要时,此功能非常有用。该覆盖设置接受任何provider/model-id格式的字符串:
{"agents":{"defaults":{"compaction":{"model":"openrouter/anthropic/claude-sonnet-4-5"}}}}这也适用于本地模型,例如,专门用于摘要生成的第二个 Ollama 模型,或者一个经过微调的压缩专家模型:
{"agents":{"defaults":{"compaction":{"model":"ollama/llama3.1:8b"}}}}如果未设置该值,压缩将使用代理的主模型。
自动压缩(默认开启)
当会话接近或超过模型的上下文窗口时,OpenClaw 会触发自动压缩,并可能使用压缩后的上下文重试原始请求。你会看到:
- 在详细模式下显示
🧹 Auto-compaction complete /status命令显示🧹 Compactions:
在压缩之前,OpenClaw 可以执行一次静默内存刷新操作,将持久性笔记存储到磁盘。有关详细信息和配置,请参阅内存(请参考:https://blog.csdn.net/hy592070616/article/details/81707766)。
手动压缩
使用/compact命令(可选择附带指令)来强制进行一次压缩:
/compact 关注决策和未解决的问题上下文窗口来源
上下文窗口大小是模型特定的。OpenClaw 使用配置的提供者目录中的模型定义来确定限制。
压缩 vs. 修剪
- 压缩:对内容进行摘要并持久保存到 JSONL 文件中。
- 会话修剪:仅修剪旧的工具结果,每次请求时在内存中操作。有关修剪的详细信息,请参阅 /concepts/session-pruning(请参考:https://blog.csdn.net/hy592070616/article/details/81707766)。
OpenAI 服务端压缩
OpenClaw 还支持兼容的 OpenAI 直接模型使用 OpenAI Responses 服务端压缩提示。这与本地的 OpenClaw 压缩是分开的,可以同时运行。
- 本地压缩:OpenClaw 生成摘要并持久保存到会话 JSONL 文件中。
- 服务端压缩:当启用
store和context_management时,OpenAI 在提供者一侧压缩上下文。请参阅 OpenAI 提供者(请参考:https://blog.csdn.net/hy592070616/article/details/81707766)了解模型参数和覆盖设置。
提示
- 当会话感觉陈旧或上下文臃肿时,使用
/compact。 - 大型工具输出已被截断;修剪可以进一步减少工具结果的累积。
- 如果你需要一个全新的开始,使用
/new或/reset可以启动一个新的会话 ID。
