通过文件分割、提示缓存、上下文修剪和模型路由,将 OpenClaw 每次对话的提示成本降低 70% 以上。已在生产环境中测试...
Token OpenClaw 优化是一项面向实际任务的技能,主要用于系统化指南将每回合的令牌消费减少70% , 但不失去任何功能;当使用此特性时;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
系统性操作指南:在不损失任何功能的前提下,将每轮对话的 Token 消耗降低 70% 以上。
session_status 显示 Context 占比 > 30%(即使发送简单消息)AGENTS.md 文件大小 > 5KB,或 MEMORY.md > 3KBopenclaw.json 的权限运行 session_status 并记录以下输出:
Cache: X% hit · Y cached, Z new Context: Xk/200k (X%)
然后检查各工作区文件大小:
wc -c ~/.openclaw/workspace/*.md
异常信号(Red flags):
将使用频率较低的内容迁移至独立文件:
| 内容 | 迁移至 | 加载时机 |
|---|---|---|
| 子代理协议(Subagent protocols) | AGENTS_SUBAGENT.md |
仅在创建子代理(spawning)时加载 |
| 心跳规则(Heartbeat rules) | AGENTS_HEARTBEAT.md |
仅在执行心跳(heartbeat)时加载 |
| 详细示例(Detailed examples) | memory/ 目录 |
按需通过 read 加载 |
目标:AGENTS.md ≤ 5KB
仅保留:会话规则、安全策略、格式规范、高频使用的子代理速查表。
在文件顶部添加引用说明:
> Subagent protocol → `AGENTS_SUBAGENT.md` (read on demand) > Heartbeat protocol → `AGENTS_HEARTBEAT.md` (read during heartbeat)
将详细的 SOP 和操作流程迁移至 memory/ 子目录下的独立文件;仅保留在多轮对话中高频引用的核心条目。
目标:MEMORY.md ≤ 3KB
初始设置完成后即可删除。该文件每轮均被加载,但无实际价值。
mv ~/.openclaw/workspace/BOOTSTRAP.md ~/.openclaw/workspace/BOOTSTRAP.md.bak
# 仅统计每轮必加载的文件总大小
cat ~/.openclaw/workspace/{AGENTS,SOUL,TOOLS,IDENTITY,USER,HEARTBEAT,MEMORY}.md | wc -c
# 目标:总和 < 15KB
在 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 上的 Anthropic 模型 |
long |
约 1 小时 | 主代理(推荐) |
| 厂商 | 是否支持 |
|---|---|
| Anthropic 直连 API | ✅ 完全支持 |
OpenRouter anthropic/* |
✅ 自动注入 cache_control |
| Bedrock Anthropic Claude | ✅ 透传支持 |
| 其他厂商 | ❌ 不生效 |
将 cacheRetention: "long" 与约 55 分钟一次的心跳配合使用,可使缓存长期保持活跃:
"heartbeat": {
"every": "55m",
"model": "your/cheap-model"
}
{
"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"]
}
}
}
}
}
| 参数 | 激进模式 | 平衡模式 | 保守模式 |
|---|---|---|---|
ttl |
2m | 3m | 5m |
keepLastAssistants |
1 | 2 | 3 |
softTrimRatio |
0.20 | 0.25 | 0.30 |
hardClearRatio |
0.40 | 0.45 | 0.50 |
将体积大、一次性使用的工具输出移入 deny 列表:
web_fetch — 页面内容体积大,且极少复用web_search — 每次搜索结果均不同将高频复用的工具保留在 allow 列表中:
exec — 命令输出常被后续对话引用read — 文件内容可能跨多轮讨论browser — 快照数据可能被反复引用对低价值任务使用低成本或免费模型:
"heartbeat": {
"every": "4h",
"model": "your/free-flash-model"
}
| 任务类型 | 模型层级 | 原因 |
|---|---|---|
| 心跳 / 定时任务(Heartbeat/cron) | 免费 / Flash 级别 | 仅需简单校验,零成本 |
| 简单问答(Simple Q&A) | 免费 / Flash 级别 | 无需强推理能力 |
| 中等复杂度任务 | 中端模型 | 兼顾成本与质量 |
| 复杂 / 多步骤任务 | 高端模型(Premium) | 投入产出比合理 |
完成全部配置后,重启网关并检查效果:
openclaw gateway restart
随后发送一条简单消息,并运行 session_status:
| 指标 | 目标值 | 查看方式 |
|---|---|---|
| 缓存命中率(Cache Hit Rate) | > 80% | Cache: X% hit |
| 简单问答输入 Token 数 | < 20k tokens | Tokens: X in |
| 空闲状态下 Context 占比 | < 30% | Context: Xk/200k |
| 每日上下文压缩次数(Compactions/day) | < 2 | Compactions: X |
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 缓存命中率仍为 0% | 所用模型不支持缓存 | 确认厂商为 Anthropic |
每轮均产生高 cacheWrite |
系统提示词中存在易变内容(volatile content) | 将易变文件迁移至按需加载 |
| Context 占比迅速升至 > 50% | 上下文裁剪策略过宽松 | 降低 ttl 和 softTrimRatio |
| 每日压缩次数 > 3 次 | 长对话未触发有效裁剪 | 启用 cache-ttl 模式 |
wc -c 统计工作区文件大小 + 执行 session_statusAGENTS.md ≤ 5KB,MEMORY.md ≤ 3KBBOOTSTRAP.md(如存在)cacheRetention: "long"contextPruning 并采用激进参数session_status 显示高缓存命中率 + 低 Context 占比