Token Optimization

通过文件拆分、缓存和上下文修剪,降低 OpenClaw 每轮提示成本70%以上。

已扫描
适合谁
需要降低 OpenClaw 使用成本的开发者、运行在 Anthropic 模型上的自动化代理用户
不适合谁
未使用 OpenClaw 或不涉及 API 成本优化的用户、无法修改 openclaw.json 配置的受限环境用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @jack-yang-ai/token-optimization

Skill 说明

命令、参数、文件名以原文为准

Token 优化指南(OpenClaw)

系统性方法,可将每轮对话的 token 消耗降低 70% 以上,且不损失任何功能。

何时使用此技能

  • session_status 显示简单消息时上下文占用 > 30%
  • 缓存命中率 = 0% 或持续偏低
  • AGENTS.md 文件大小 > 5KB 或 MEMORY.md > 3KB
  • 希望降低 Anthropic 模型的 API 成本

先决条件

  • OpenClaw 2026.3.x 或更高版本
  • 可编辑 openclaw.json 文件
  • 至少配置了一个 Anthropic 模型

步骤 1:审计当前状态

运行 session_status 并记录以下信息:

Cache: X% hit · Y cached, Z new
Context: Xk/200k (X%)

然后检查文件大小:

wc -c ~/.openclaw/workspace/*.md

红色警告:

  • 任一文件 > 10KB → 需要拆分
  • 工作区总文件大小 > 30KB → 内容冗余
  • 缓存命中率 0% → 缓存未启用
  • 简单消息上下文占用 > 40% → 清理策略过松

步骤 2:拆分大文件(第一层优化)

AGENTS.md(主要问题来源)

将不常使用的内容移至独立文件:

内容移动目标加载时机
子代理协议AGENTS_SUBAGENT.md仅在创建子代理时加载
心跳规则AGENTS_HEARTBEAT.md仅在心跳时加载
详细示例memory/ 目录下按需通过 read 命令调用

目标:AGENTS.md ≤ 5KB

仅保留:会话规则、安全策略、格式规范、快速参考子代理表格。

在文件顶部添加引用说明:

> 子代理协议 → `AGENTS_SUBAGENT.md`(按需读取)
> 心跳协议 → `AGENTS_HEARTBEAT.md`(心跳时读取)

MEMORY.md

将详细的 SOP 和操作流程移至 memory/ 子目录中的独立文件。仅保留高频引用内容。

目标:MEMORY.md ≤ 3KB

BOOTSTRAP.md

初始设置完成后删除该文件。它每轮都会加载,但无实际价值。

mv ~/.openclaw/workspace/BOOTSTRAP.md ~/.openclaw/workspace/BOOTSTRAP.md.bak

验证

# 统计每轮必加载文件的总大小
cat ~/.openclaw/workspace/{AGENTS,SOUL,TOOLS,IDENTITY,USER,HEARTBEAT,MEMORY}.md | wc -c
# 目标:总大小 < 15KB

步骤 3:启用提示词缓存(第二层优化)

openclaw.json 中为每个 Anthropic 模型添加 cacheRetention 配置:

{
  "agents": {
    "defaults": {
      "models": {
        "anthropic/claude-opus-4-6": {
          "params": { "cacheRetention": "long" }
        },
        "anthropic/claude-sonnet-4-6": {
          "params": { "cacheRetention": "long" }
        },
        "openrouter/anthropic/claude-3.5-sonnet": {
          "params": { "cacheRetention": "short" }
        }
      }
    }
  }
}

参数值说明

缓存周期适用场景
none不缓存突发性/通知类代理
short~5 分钟OpenRouter 模型
long~1 小时主代理(推荐)

各服务商支持情况

服务商是否支持
Anthropic 官方 API✅ 完全支持
OpenRouter anthropic/*✅ 自动注入 cache_control
Bedrock Anthropic Claude✅ 透传支持
其他服务商❌ 无效果

保持缓存活跃小技巧

cacheRetention: "long" 与约 55 分钟一次的心跳任务结合,确保缓存长期处于激活状态:

"heartbeat": {
  "every": "55m",
  "model": "your/cheap-model"
}

步骤 4:调整上下文清理策略(第三层优化)

{
  "agents": {
    "defaults": {
      "contextPruning": {
        "mode": "cache-ttl",
        "ttl": "3m",
        "keepLastAssistants": 2,
        "softTrimRatio": 0.25,
        "hardClearRatio": 0.45,
        "tools": {
          "allow": ["exec", "read", "browser"],
          "deny": ["web_search", "web_fetch"]
        }
      }
    }
  }
}

参数说明

参数激进适中保守
ttl2m3m5m
keepLastAssistants123
softTrimRatio0.200.250.30
hardClearRatio0.400.450.50

工具拒绝列表

将大型、一次性输出的工具加入 deny 列表:

  • web_fetch — 页面内容体积大,复用率低
  • web_search — 搜索结果每次不同,无法缓存

将频繁复用的工具保留在 allow 列表中:

  • exec — 命令输出常在后续对话中被引用
  • read — 文件内容可能跨轮次讨论
  • browser — 截图数据可能被引用

步骤 5:优化模型路由策略

对低价值任务使用低成本或免费模型:

"heartbeat": {
  "every": "4h",
  "model": "your/free-flash-model"
}
任务类型模型层级原因
心跳/定时任务免费/轻量模型简单检查,成本为零
简单问答免费/轻量模型无需高智能
中等复杂度任务中端模型成本与质量平衡
复杂/多步骤任务高端模型值得投入成本

步骤 6:验证与监控

完成所有修改后,重启网关并执行测试:

openclaw gateway restart

发送一条简单消息,再次运行 session_status

目标指标

指标目标值检查方式
缓存命中率> 80%查看 Cache: X% hit
简单问答输入 token 数< 20k查看 Tokens: X in
空闲状态上下文占用< 30%查看 Context: Xk/200k
每日压缩次数< 2 次查看 Compactions: X

故障排查

现象可能原因解决方案
缓存仍为 0%模型不支持缓存检查服务商是否为 Anthropic
每轮都有大量 cacheWrite系统提示中包含易变内容将动态内容移至按需加载
上下文迅速超过 50%清理策略过松降低 ttlsoftTrimRatio
每日压缩 > 3 次长对话未及时清理启用 cache-ttl 模式

总结清单

  • [ ] 审计:对工作区文件执行 wc -c 并检查 session_status
  • [ ] 拆分:确保 AGENTS.md ≤ 5KB,MEMORY.md ≤ 3KB
  • [ ] 删除:如果存在,删除 BOOTSTRAP.md
  • [ ] 缓存:在 Anthropic 模型上设置 cacheRetention: "long"
  • [ ] 剪枝:使用激进设置启用 contextPruning
  • [ ] 路由:对心跳或简单任务使用低成本模型
  • [ ] 验证:确认 session_status 显示缓存命中且上下文占用率低
  • [ ] 监控:每周审查 KPI 指标
JY
@jack-yang-ai

已收录 1 个 Skill

相关推荐