mcpField
O
openclaw-cost-optimization

openclaw-cost-optimization

github.com/iammarcinAgent 工作流351 次安装37 周前更新
代码仓库

关于 openclaw-cost-optimization

这项技能用于审查并降低 OpenClaw 的运行成本,涵盖模型路由、缓存、精简上下文、心跳调整、调用限制和工作区清理。适合持续运行 Agent、希望控制 API 支出且保留任务所需能力的运维者。

主要功能

  1. 01按任务路由模型
  2. 02缓存稳定上下文
  3. 03精简会话启动内容
  4. 04使用本地模型处理心跳
  5. 05设置 API 速率与预算限制
  6. 06精简工作区文件

适用场景

  1. 01降低常驻 Agent 的成本
  2. 02减少重复处理上下文
  3. 03防止搜索或 API 调用失控
  4. 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.6Kimi K2.5大幅节省——智能程度接近 Opus,个性稍弱
心跳检查Haiku 4.5Haiku 4.5(并减少频率)约 50 美元/月
编码 / 通宵开发Codex GPT-5.2Miniax 2.1长时间编码任务每月约省 250 美元
网页浏览 / 抓取Opus 4.6DeepSeek V3如果经常抓取,每月可省数百美元
图像理解Opus 4.6Gemini 2.5 Flash显著节省——Flash 的视觉能力很强
日常任务Haiku 4.5Haiku 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 的指令和外部监控来强制执行限制:

  1. 设置 Anthropic API 支出提醒 — 直接在 Anthropic Console 或你的服务提供商控制面板中配置账单提醒
  2. 在 SOUL.md 中添加行为限制(见上文)— Agent 会自我约束
  3. 通过 CLI 监控:
openclaw cron list --all --json  # Check what's running and on which model
  1. 通过 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.

行为不变。费用降至四分之一,并且每条消息都能节省。


综合效果

优化项每月节省设置时间
默认使用 Haiku40–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 行为——重要任务的质量没有下降

评论

支持 Markdown