Config Validator
验证 OpenClaw 配置字段与值的正确性,提供官方 schema 参考和示例。
下载 663
通过文件拆分、缓存和上下文修剪,降低 OpenClaw 每轮提示成本70%以上。
openclaw skills install @jack-yang-ai/token-optimization命令、参数、文件名以原文为准
系统性方法,可将每轮对话的 token 消耗降低 70% 以上,且不损失任何功能。
session_status 显示简单消息时上下文占用 > 30%openclaw.json 文件运行 session_status 并记录以下信息:
Cache: X% hit · Y cached, Z new
Context: Xk/200k (X%)然后检查文件大小:
wc -c ~/.openclaw/workspace/*.md红色警告:
将不常使用的内容移至独立文件:
| 内容 | 移动目标 | 加载时机 |
|---|---|---|
| 子代理协议 | AGENTS_SUBAGENT.md | 仅在创建子代理时加载 |
| 心跳规则 | AGENTS_HEARTBEAT.md | 仅在心跳时加载 |
| 详细示例 | memory/ 目录下 | 按需通过 read 命令调用 |
目标:AGENTS.md ≤ 5KB
仅保留:会话规则、安全策略、格式规范、快速参考子代理表格。
在文件顶部添加引用说明:
> 子代理协议 → `AGENTS_SUBAGENT.md`(按需读取)
> 心跳协议 → `AGENTS_HEARTBEAT.md`(心跳时读取)将详细的 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 模型 |
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"
}| 任务类型 | 模型层级 | 原因 |
|---|---|---|
| 心跳/定时任务 | 免费/轻量模型 | 简单检查,成本为零 |
| 简单问答 | 免费/轻量模型 | 无需高智能 |
| 中等复杂度任务 | 中端模型 | 成本与质量平衡 |
| 复杂/多步骤任务 | 高端模型 | 值得投入成本 |
完成所有修改后,重启网关并执行测试:
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% | 清理策略过松 | 降低 ttl 和 softTrimRatio |
| 每日压缩 > 3 次 | 长对话未及时清理 | 启用 cache-ttl 模式 |
wc -c 并检查 session_statuscacheRetention: "long"contextPruningsession_status 显示缓存命中且上下文占用率低已收录 1 个 Skill