关于 openclaw-cost-optimization
这项技能用于审查并降低 OpenClaw 的运行成本,涵盖模型路由、缓存、精简上下文、心跳调整、调用限制和工作区清理。适合持续运行 Agent、希望控制 API 支出且保留任务所需能力的运维者。
主要功能
- 01按任务路由模型
- 02缓存稳定上下文
- 03精简会话启动内容
- 04使用本地模型处理心跳
- 05设置 API 速率与预算限制
- 06精简工作区文件
适用场景
- 01降低常驻 Agent 的成本
- 02减少重复处理上下文
- 03防止搜索或 API 调用失控
- 04检查 OpenClaw 模型与 cron 设置
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ iammarcin/ cc4life --skill openclaw-cost-optimization安装后在 Claude Code 中输入/openclaw-cost-optimization确认已加载。
详细介绍
OpenClaw 成本优化
你的 OpenClaw 配置可能正把钱浪费在三件事上:用昂贵的模型处理简单任务、每收到一条消息就重新处理相同的静态文件,以及加载 Agent 根本不会用到的上下文。
默认配置优先优化能力。探索时这样做没问题。但当你开始 7×24 小时运行时,这就意味着每月花费是 1,500 美元还是 150 美元,甚至更少。
此技能会审查你当前的配置,并按影响大小依次应用六项优化。大多数优化用时不到 5 分钟。组合使用后,成本可降低约 97%,且不会降低关键场景下的质量。
不这样做时 Claude 会出错的地方
如果完全沿用默认设置,OpenClaw Agent 会:
- 用 Sonnet 或 Opus 回答“今天天气怎么样?”——这种任务用 Haiku 就行
- 在会话开始时加载 50KB 的上下文,而 8KB 就够了
- 每天向付费 API 发送 96 次心跳检查
- 每条消息都以全价重新处理你的 SOUL.md 和 USER.md
- 放任搜索循环在一夜之间烧掉 20 美元,却没有任何防护措施
这些都不是 bug,只是并非为 7×24 小时自主运行而设计的默认设置。
六项优化
按影响大小排序。从 #1 开始,依次进行。
1. 为合适的任务选择合适的模型
影响:根据使用情况,每月可节省 40–300 美元
这是影响最大的一项。你的 Agent 会处理许多不同类型的工作——聊天、心跳、编码、网页抓取、图像分析——每种任务都有一个在质量与成本之间达到最佳平衡的模型。用 Opus 做心跳检查,就像雇外科医生来测体温。
模型路由表:
| 任务 | 最佳选择(不考虑预算) | 预算有限时的替代选择 | 节省金额 |
|---|---|---|---|
| 聊天(大脑) | Opus 4.6 | Kimi K2.5 | 大幅节省——智能程度接近 Opus,个性稍弱 |
| 心跳检查 | Haiku 4.5 | Haiku 4.5(并减少频率) | 约 50 美元/月 |
| 编码 / 通宵开发 | Codex GPT-5.2 | Miniax 2.1 | 长时间编码任务每月约省 250 美元 |
| 网页浏览 / 抓取 | Opus 4.6 | DeepSeek V3 | 如果经常抓取,每月可省数百美元 |
| 图像理解 | Opus 4.6 | Gemini 2.5 Flash | 显著节省——Flash 的视觉能力很强 |
| 日常任务 | Haiku 4.5 | Haiku 4.5 | 比 Sonnet 便宜 10 倍 |
关键思路: 你不是在挑选一个便宜的模型,而是在建立一个模型阵容,让每种任务都使用能够胜任的最便宜模型。
默认模型——根据个性表现的重要程度,将日常主力模型设为 Haiku 或 Kimi:
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-haiku-4-5"
}
}
}
}
模型别名——在 agents.defaults.models 中定义别名,以便 cron 任务和 Agent 使用简短名称引用模型:
{
"agents": {
"defaults": {
"models": {
"anthropic/claude-haiku-4-5": { "alias": "haiku" },
"anthropic/claude-sonnet-4-5": { "alias": "sonnet" },
"anthropic/claude-opus-4-6": { "alias": "opus" },
"openai/codex-gpt-5.2": { "alias": "code" },
"deepseek/deepseek-v3": { "alias": "crawl" },
"google/gemini-2.5-flash": { "alias": "vision" }
}
}
}
}
心跳频率也很重要。 默认频率通常是每 10 分钟一次。如果心跳使用 Opus,每天约需 2 美元、每月约需 54 美元,只为检查“有没有需要处理的事?”。切换到 Haiku,并将频率降低至每小时一次:
{
"heartbeat": {
"every": "1h",
"model": "anthropic/claude-haiku-4-5"
}
}
仅这一项就能将心跳成本降至每天 0.01–0.10 美元。
将以下内容添加到 Agent 的 SOUL.md 或系统提示词中:
## Model Selection
Default: Haiku for routine tasks.
Escalate to Sonnet/Opus only for: architecture decisions, code review, security analysis, complex reasoning.
For coding sessions: prefer Codex or dedicated coding model.
For web crawling: use DeepSeek V3.
For image analysis: use Gemini Flash.
When uncertain, try the cheaper model first.
模型会将此内容作为行为约束遵循。无需更改代码。
2. 缓存稳定上下文
影响:重复使用的令牌最多可优惠 90%
每条消息都会重新读取 SOUL.md、USER.md、工具定义和参考文档。这些文件在不同请求之间不会变化。如果不使用缓存,你每天都要为数十次重复处理相同内容支付全价。
Anthropic 的提示词缓存会对重复使用的缓存令牌收取 10% 的费用。对于反复发送的内容,这能让最常发生的成本降低 90%。
适合缓存的内容(稳定、很少更新):
- SOUL.md — 个性、规则
- USER.md — 用户档案、偏好
- TOOLS.md — 工具定义
- 参考文档、项目规范
不适合缓存的内容(经常变化):
- 每日记忆文件
- 对话历史
- 工具输出、搜索结果
配置 — 在 agents.defaults.models 中按模型设置 cacheRetention:
{
"agents": {
"defaults": {
"models": {
"anthropic/claude-opus-4-6": {
"alias": "opus",
"params": { "cacheRetention": "short" }
}
}
}
}
}
| 值 | 缓存时长 | 备注 |
|---|---|---|
"none" | 不缓存 | 禁用提示词缓存 |
"short" | 5 分钟 | API 密钥认证的默认值 |
"long" | 1 小时 | 需要启用 beta 标志 |
注意: 使用 Anthropic API 密钥认证时,OpenClaw 会自动应用
"short"(5 分钟缓存)。只有想使用"long"或"none"时,才需要显式设置。
最大限度提高缓存命中率的提示:
- 在缓存有效期内(
short为 5 分钟,long为 1 小时)批量处理相关请求 - 将心跳频率设为略低于缓存 TTL(例如,
short每 4 分钟一次,long每 55 分钟一次),以保持缓存处于活跃状态 - 不要在对话过程中编辑 SOUL.md — 每次更改都会使缓存失效
- 将稳定内容放在上下文层级的顶部
3. 精简启动会话
影响:每个会话节省约 $0.35,频繁使用时每月节省 $10-15
许多配置会在启动时急于加载所有内容:完整记忆档案、过往对话、所有参考文件。其中大部分内容都不会用到。
只加载 Agent 保持自身身份并了解当天情况所需的内容:
| 启动时加载 | 启动时跳过 |
|---|---|
| SOUL.md | 完整对话历史 |
| USER.md | 过往记忆档案 |
| IDENTITY.md | 旧项目的研究文档 |
| 今日的记忆文件 | 其他 Agent 的文件 |
其他内容按需提取。 当遇到需要历史上下文的话题时,使用记忆搜索:
"Search my memory for what we discussed about the marketing campaign"
语义搜索无需加载完整历史记录,即可检索相关段落。这既更省钱,也更有效 — 定向检索胜过蛮力加载。
将以下内容添加到 Agent 的指令中:
## Session Startup
Load ONLY: SOUL.md, USER.md, IDENTITY.md, today's memory file.
For prior context: use memory_search() on demand. Don't pre-load history.
效果: 会话启动时的上下文约为 8KB,而不是 50KB 以上。Agent 会更快、更省钱,而且出乎意料地表现更好 — 上下文中的干扰更少,回复也就更聚焦。
4. 将心跳路由到本地模型
影响:每月节省 $5-15
心跳是定期检查 — “有没有需要处理的事情?”— 每 15-60 分钟运行一次。这些任务很简单,不需要前沿推理能力。但默认情况下,每次心跳都会产生一次付费 API 调用。
改用 Ollama 将它们路由到免费的本地模型。
设置:
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Pull a lightweight model (2GB, handles heartbeat tasks easily)
ollama pull llama3.2:3b
配置:
{
"heartbeat": {
"model": "ollama/llama3.2:3b"
}
}
原理: 心跳任务属于分类问题 — “有没有需要处理的事情?”本地运行的 3B 参数模型可以轻松回答这个问题。对于是/否监控任务,Sonnet 与它的质量差异微乎其微,而且 API 账单上的费用会降为零。
要求: 一台运行 Ollama、可用 RAM 约 2GB 的机器。如果 OpenClaw 已经运行在家庭服务器或 VPS 上,你就具备这个条件。
5. 设置速率限制和预算上限
影响:防止每月产生 50–200 美元的失控费用
AI Agent 可能会陷入循环。一次搜索会触发后续搜索。一次调试会话会在几秒内发出数十次 API 调用。如果没有防护措施,单次失控交互就可能在几分钟内耗尽一天的预算。
添加到 SOUL.md 或系统提示词中:
## API Discipline
- 5 seconds minimum between consecutive API calls
- 10 seconds minimum between web searches
- Max 5 searches per batch, then pause 2 minutes
- If a task needs more than 10 API calls, ask before continuing
- On rate limit error (429): stop, wait 5 minutes, retry once
通过行为规则管理预算:
OpenClaw 没有原生预算配置项。你可以通过 Agent 的指令和外部监控来强制执行限制:
- 设置 Anthropic API 支出提醒 — 直接在 Anthropic Console 或你的服务提供商控制面板中配置账单提醒
- 在 SOUL.md 中添加行为限制(见上文)— Agent 会自我约束
- 通过 CLI 监控:
openclaw cron list --all --json # Check what's running and on which model
- 通过 Anthropic 用量控制面板跟踪 — 查看每日/每周支出情况
速率限制可在正常运行期间避免浪费。服务提供商级别的预算提醒则能捕捉极端情况。二者结合,既能确保支出可预测,又不会限制能力。
6. 精简工作区文件
影响:虽逐步显现,但会不断累积——每次请求都能节省费用
SOUL.md、USER.md 和类似文件会在每次交互时加载。每一行不必要的内容都会消耗令牌,而且不是只消耗一次,而是每条消息都会消耗。如果 SOUL.md 有 200 行,而实际只需 80 行,那么在使用频率最高的场景中,其费用会在不知不觉间达到所需费用的 2–3 倍。
审核每一行时要问:“Agent 做好本职工作需要这条信息吗?”
保留内容:
- 核心个性(2–3 句话,而不是几段话)
- 会改变输出的硬性行为规则
- 沟通偏好
- 操作限制
删除内容:
- 背景故事或设定(移至参考文档,按需加载)
- 对同一规则的重复表述
- 对 Claude 已经了解的内容进行冗长解释
- 不会影响回复的“锦上添花”信息
修改前(臃肿,85 个令牌):
## Communication Style
You should always communicate in a way that is clear, concise, and helpful.
When talking to the user, make sure your responses are well-structured and easy
to follow. Use bullet points when listing things. Don't write overly long
responses unless the topic genuinely requires depth. The user values efficiency.
修改后(精简,22 个令牌):
## Style
Direct and concise. Use structure for complex answers. Match depth to the question.
行为不变。费用降至四分之一,并且每条消息都能节省。
综合效果
| 优化项 | 每月节省 | 设置时间 |
|---|---|---|
| 默认使用 Haiku | 40–60 美元 | 5 分钟 |
| 提示词缓存 | 15–30 美元 | 2 分钟 |
| 精简启动上下文 | 10–15 美元 | 30 分钟 |
| 本地心跳 | 5–15 美元 | 15 分钟 |
| 速率限制 + 预算 | 50–200 美元(避免的费用) | 10 分钟 |
| 精简工作区文件 | 5–10 美元 | 1 小时 |
从每月 1,500 美元以上降至 30–50 美元。
模型路由和缓存带来的绝对节省最多。精简工作区会随着时间推移不断累积效果,因为它能降低每次交互的费用。
如何应用
大多数情况下,你不需要手动编辑 JSON 文件。告诉你的 OpenClaw Agent:
“将默认模型切换为 Haiku。只有在需要复杂推理任务时才使用 Sonnet。”
“启用提示词缓存——将我的 Anthropic 模型的 cacheRetention 设置为 'long'。”
“在我的 SOUL.md 中添加 API 使用规范,包括速率限制、搜索批处理和升级阈值。”
“检查我的 SOUL.md 和 USER.md,标出所有不会直接影响输出质量的内容。”
大多数情况下,OpenClaw 可以自行修改配置。直接提出要求即可。
验证是否生效
验证命令
检查每个 cron 任务实际使用的模型(表格视图会隐藏此信息——必须使用 JSON):
openclaw cron list --all --json
查看每个任务的 payload.model 字段。不要根据 Agent 分配情况进行推断——cron 任务可以覆盖 Agent 的默认模型。
检查每个 Agent 的心跳状态(配置位于 ~/.openclaw/openclaw.json):
cat ~/.openclaw/openclaw.json | python3 -c "
import json,sys; c=json.load(sys.stdin)
d=c['agents']['defaults'].get('heartbeat',{}).get('every','')
print(f'Default: {d or \"(disabled)\"}')
for a in c['agents']['list']:
e=a.get('heartbeat',{}).get('every',d)
print(f'{a[\"id\"]}: {e or \"(disabled)\"}')
"
没有 heartbeat 块的 Agent 会继承默认值。若一个使用 Opus 的 Agent 继承了 every: "15m",这就是你费用最高的一项。
检查引导上下文大小:
wc -c SOUL.md USER.md AGENTS.md MEMORY.md
优秀配置示例
- 上下文大小: 会话开始时应为 2-8KB,而不是 50KB+
- 默认模型: 应显示 Haiku,而不是 Sonnet
- Cron 任务: 每个任务的
payload.model应与其复杂度匹配(检查任务用 Haiku,结构化任务用 Sonnet,仅创意或复杂工作用 Opus) - Heartbeat: 至少应路由到 Ollama/本地模型或 Haiku
- 每日费用: 应在第一天内降至 $0.10-0.50 区间
如果费用没有下降,最常见的问题是系统提示词没有加载模型选择规则。请确认系统已应用你对 SOUL.md 所做的更改。
常见审计错误
不要根据 Agent 分配情况推断 Cron 任务使用的模型。openclaw cron list 表格显示 Agent: sherlock,但任务本身可能会在其 payload 中覆盖模型。务必运行 openclaw cron list --all --json,检查实际的 payload.model 字段。
反模式
“我就所有任务都用 Haiku,包括复杂任务。” 别这样做。Haiku 速度快、成本低,但在多步推理、细致分析和创意工作方面确实更弱。目标是合理匹配模型,而不是一味降级。质量至关重要时,就升级模型。
“我把所有内容都缓存起来省钱。” 缓存易变内容(每日笔记、工具输出)会浪费缓存空间,毫无益处。只缓存稳定的内容。
“我把预算设为每天 $1,这样更安全。” 这太激进了。你的 Agent 会在正常工作时触及上限,并在任务进行到一半时停止。先从每天 $5 开始,观察一周,再根据实际使用情况调整。
“我把 SOUL.md 精简到 10 行,现在 Agent 的行为变得奇怪了。” 你删得太多了。有些个性和行为规则确实会影响输出质量。去掉冗余,保留关键内容。如果行为变差,就把起控制作用的具体规则加回来。
质量检查
与他人分享此配置前:
- 默认模型为 Haiku(而非 Sonnet/Opus)
- 已为稳定文件启用缓存
- 会话启动时仅加载必要内容
- Heartbeat 路由到本地模型(或可用的最低成本模型)
- 已设置预算上限和警告阈值
- 已审查工作区文件,移除不必要的内容
- 已验证 Agent 行为——重要任务的质量没有下降