乐于分享
好东西不私藏

OpenClaw Token 深度优化指南:从架构原理到实战省 Token 策略

OpenClaw Token 深度优化指南:从架构原理到实战省 Token 策略

OpenClaw Token 深度优化指南:从架构原理到实战省 Token 策略

OpenClaw 用得越多,Token 烧得越快?这不是错觉。一个长期运行的 Agent session,每轮对话都要重新处理系统提示、工具定义、历史消息和文件注入。理解 OpenClaw 的运行机制,是省 Token 的前提。

先搞清楚:Token 都花在哪了?

OpenClaw 每次调用模型时,会组装一个完整的"上下文窗口"(Context Window),发送给模型的内容包括:

系统提示(System Prompt):工具定义、技能列表、安全规则、工作区文件注入
对话历史:你和 Agent 之间的所有消息
工具调用和结果:每次 exec、read、browser 等工具的输入输出
附件/图片:发送的图片、文件内容

根据 OpenClaw 官方文档的 /context list 示例输出,一个典型的 session 中:

组件消耗(示例)
系统提示总计~9,600 tokens
工具 Schema(JSON)~8,000 tokens
技能列表~550 tokens
注入的工作区文件~6,000+ tokens
对话历史 + 工具结果随 session 增长
关键发现:系统提示每轮都要重新发送,占总消耗的 30%-50%。对话历史的增长则会让 context window 越来越满,最终触发压缩。

第一层:压缩(Compaction)——被动省钱

OpenClaw 内置了自动压缩机制。当对话接近模型的 context window 上限时,系统会自动将较早的消息压缩成摘要,保留最近的消息不变。

两种压缩方式
1.自动压缩:默认开启,context 接近上限或溢出时自动触发
2.手动压缩:输入 /compact 强制压缩,可加指令引导摘要方向
0.配置项openclaw.json):
JSON
{
  "agents": {
    "defaults": {
      "compaction": {
        "mode": "safeguard"
      }
    }
  }
}
进阶技巧:用更便宜的模型做压缩摘要。如果你的主力模型较贵,可以指定一个专门做压缩的模型:
JSON
{
  "agents": {
    "defaults": {
      "compaction": {
        "model": "xiaomi-coding/mimo-v2-pro"
      }
    }
  }
}

压缩前,OpenClaw 会自动提醒 Agent 把重要笔记存到 memory 文件,防止信息丢失。

第二层:会话裁剪(Session Pruning)——减少无效 Token

压缩是把旧消息变成摘要,而裁剪是更轻量的操作——只清理旧的工具调用结果,不改动对话文本。

工作原理
1.等待 Prompt Cache TTL 过期(默认 5 分钟)
2.找到旧的工具结果
3.软裁剪:保留头部和尾部,中间用 ... 替代
4.硬清理:其余结果替换为占位符
5.重置缓存 TTL
0.为什么重要:工具结果(尤其是 exec 的大段输出、文件读取内容)是 context 膨胀的最大来源。一次 grepexec 的输出可能就有几千 tokens。
0.开启方式
JSON
{
  "agents": {
    "defaults": {
      "contextPruning": {
        "mode": "cache-ttl",
        "ttl": "5m"
      }
    }
  }
}

裁剪是内存操作,不会修改磁盘上的会话记录。你的完整历史始终保留。

第三层:Prompt 缓存——复用不花钱

Prompt Caching 是最有效的省钱机制。模型提供商可以复用跨轮次不变的 prompt 前缀(通常是系统提示和工具定义),而不必每轮重新处理。

核心配置
JSON
{
  "agents": {
    "defaults": {
      "params": {
        "cacheRetention": "long"
      }
    }
  }
}

三个级别:

none:不使用缓存
short:短期缓存(Anthropic 默认 5 分钟,OpenAI 自动管理)
long:长期缓存(Anthropic 1 小时,OpenAI 24 小时)
省钱原理:以 Anthropic 为例,缓存读取的价格是输入 Token 的 10%,而缓存写入则有额外费用。如果一个 10,000 Token 的系统提示每轮都重新处理,10 轮就是 100,000 输入 Token。启用缓存后,第一轮写入 10,000 Token(带写入溢价),后续 9 轮每轮只花 1,000 Token 的缓存读取费。
保持缓存有效:设置心跳间隔略低于缓存 TTL:
JSON
{
  "agents": {
    "defaults": {
      "heartbeat": {
        "every": "55m"
      }
    }
  }
}

这样即使 Agent 空闲,心跳也能保持缓存不冷。

第四层:系统提示瘦身——从源头减少

系统提示是每轮必发的内容,瘦身效果立竿见影。

4.1 控制工作区文件注入

OpenClaw 默认注入 7 个文件到系统提示中:

AGENTS.md / SOUL.md / TOOLS.md / IDENTITY.md / USER.md
HEARTBEAT.md / MEMORY.md
关键配置
JSON
{
  "agents": {
    "defaults": {
      "bootstrapMaxChars": 20000,
      "bootstrapTotalMaxChars": 150000
    }
  }
}
实战建议
AGENTS.mdSOUL.md 保持精简,避免冗长的行为规范
TOOLS.md 定期清理过时内容
MEMORY.md 是最大的陷阱——长期积累后可能有几万字符,每轮都注入。定期清理,只保留真正重要的长期记忆
memory/.md 日志文件不会自动注入,只在 Agent 主动 read_file 时才消耗 Token,所以放心使用

4.2 精简技能列表

每个已安装的技能都会在系统提示中注入一条描述(名称 + 描述 + 路径)。安装 20 个技能就会多出约 1,000+ tokens。

建议:只安装真正常用的技能。不常用的技能及时卸载。

4.3 工具 Schema 是隐形大户

工具定义的 JSON Schema 占了系统提示最大的一块(示例中 ~8,000 tokens)。每个工具的参数定义、枚举值、描述都会计入。

如果你的 Agent 不需要浏览器自动化*,禁用 browser 工具可以节省约 2,500 tokens(示例数据)。

第五层:模型选择——别用牛刀杀鸡

不同任务用不同模型,是最直接的省钱策略:

探索性对话、简单任务:用便宜的小模型
复杂推理、代码生成:用强模型
压缩摘要:可以用小模型(配置 compaction.model

OpenClaw 支持 per-session 模型切换,用 /model 命令随时切换。

第六层:图片优化

发送截图给 Agent 时,图片会被编码成大量 Token。

JSON
{
  "agents": {
    "defaults": {
      "imageMaxDimensionPx": 800
    }
  }
}

默认 1200px,降低到 800px 可以显著减少视觉 Token 消耗。如果你的场景主要是文字识别,800px 足够;如果需要看清 UI 细节,可以适当调高。

实战配置模板

综合以上策略,推荐的 openclaw.json 配置:

JSON
{
  "agents": {
    "defaults": {
      "compaction": {
        "mode": "safeguard"
      },
      "contextPruning": {
        "mode": "cache-ttl",
        "ttl": "5m"
      },
      "params": {
        "cacheRetention": "long"
      },
      "imageMaxDimensionPx": 800,
      "bootstrapMaxChars": 20000,
      "bootstrapTotalMaxChars": 150000
    }
  }
}

省 Token 检查清单

[ ] 开启了 contextPruning: "cache-ttl" 吗?
[ ] 设置了 cacheRetention: "long" 吗?
[ ] MEMORY.md 控制在 5,000 字符以内吗?
[ ] TOOLS.md 清理了过时内容吗?
[ ] 只安装了真正需要的技能吗?
[ ] 压缩使用了便宜的模型吗?
[ ] 图片尺寸限制合理吗?
[ ] 用 /context list 检查过实际消耗吗?

最后

Token 优化不是一次性工作,而是持续的习惯。定期用 /context list 看看 Token 都花在哪了,用 /status 监控消耗趋势,用 /compact 主动管理长 session。

记住:理解机制才能有效优化。OpenClaw 的压缩、裁剪、缓存三层机制设计精巧,配置得当可以节省 60% 以上的 Token 消耗。