上个月收到 Anthropic 账单的那一刻,我盯着屏幕上的数字愣了好几秒。
比我预期的整整高出三倍。手指悬在触控板上,我甚至怀疑是不是看错了小数点。我的 OpenClaw 助手明明只是帮我处理了一些日常琐事——回复几封邮件、整理笔记、偶尔写点代码片段……怎么就烧掉了这么多?
那天晚上我没睡好。躺在床上翻来覆去地想:问题出在哪?后来翻日志才发现端倪——默认配置下,所有请求都走最昂贵的 Claude Opus 4.6。心跳检查、简单查询、文件操作,一视同仁。更可怕的是子代理并行工作时,每个都在"烧钱"。
说实话,当时挺崩溃的。
后来我花了一个周末研究 OpenClaw 的模型路由功能,发现原来可以通过智能分层,让"便宜货"处理简单工作,只把真正需要深度思考的任务交给"expensive guys"。一个月后,账单降到了 $68。
理解 OpenClaw 的成本黑洞
为什么默认配置这么贵?
先来看一组触目惊心的数字:
模型
输入价格 ($/MTok)
输出价格 ($/MTok)
适用场景
Claude Opus 4.6
$5.00
$25.00
复杂推理、长文档分析
Claude Sonnet 4.5
$0.80
$4.00
一般任务、代码生成
Claude Haiku 3.5
$0.25
$1.25
简单查询、快速响应
Llama 3 (本地)
$0
$0
心跳、文件操作、基础问答
MTok = Million Tokens,100 万 token
做个简单的算术题。假设每天发送 100 条消息,平均每条 500 tokens:
全用 Opus 的话,100 × 500 × $5 / 1,000,000 = $0.25/天,也就是 $7.5/月。
听起来还行?
问题是——这算法太天真了。OpenClaw 的系统提示词就占 2k-4k tokens,加上工具调用、重试机制……实际消耗是裸计算的 3-5 倍。
隐藏的成本陷阱
陷阱 1:心跳请求(Heartbeat)
每 30 秒一次心跳检查,一天就是 2880 次。每次心跳即使没实质内容,也要带上完整的系统提示词。
这就是纯纯的"token 税"。
陷阱 2:子代理(Sub-agents)
并行任务时,每个子代理都用主模型。"查一下日历"这种简单操作也走 Opus,想想就肉疼。
陷阱 3:重试机制
网络波动时的自动重试,失败请求的 token 已经产生,但不会返回结果。钱花了,事没办成。
三层模型路由策略
核心理念:任务分层
不是每个请求都值得用最贵的模型。
我们要建立三层体系:
┌─────────────────────────────────────────────┐
│ Layer 1: 本地模型(Llama 3 / Qwen 等) │
│ → 心跳、文件操作、简单问答、状态检查 │
│ → 成本:$0 │
├─────────────────────────────────────────────┤
│ Layer 2: 轻量云端(Claude Haiku / GPT-4o-mini)│
│ → 日常对话、邮件起草、简单代码 │
│ → 成本:$0.25/MTok │
├─────────────────────────────────────────────┤
│ Layer 3: 重型武器(Claude Opus / GPT-4o) │
│ → 复杂架构设计、深度分析、创意写作 │
│ → 成本:$5/MTok(但用量极少) │
└─────────────────────────────────────────────┘
说白了,就是让合适的人干合适的活。
配置实战:OpenClaw + Ollama 本地模型
Step 1: 安装并启动 Ollama
# macOS/Linux
curl -fsSL https://ollama.com/install.sh | sh
# Windows 下载安装包后
ollama serve
# 拉取适合的模型
ollama pull llama3.2:latest # 轻量级,适合简单任务
ollama pull qwen2.5:14b # 更强一些,支持工具调用
Step 2: 配置 OpenClaw 使用本地模型
编辑 ~/.openclaw/openclaw.json:
{
"models": {
"defaults": {
"model": "ollama/qwen2.5:14b",
"fallbacks": [
"anthropic/claude-sonnet-4-5",
"anthropic/claude-opus-4-6"
]
},
"providers": {
"ollama": {
"type": "openai-compatible",
"baseUrl": "http://127.0.0.1:11434/v1",
"apiKey": "ollama"
}
}
}
}
几个关键点:
baseUrl: Ollama 默认运行在 11434 端口
context window: OpenClaw 需要至少 64k 上下文,选模型时注意
tool calling: 不是所有本地模型都支持,推荐 qwen2.5 或 mistral-nemo
高级路由:基于任务类型的智能分配
使用 OpenRouter Auto Model:
{
"models": {
"defaults": {
"model": "openrouter/openrouter/auto",
"fallbacks": [
"anthropic/claude-sonnet-4-5"
]
}
}
}
OpenRouter 的 Auto 模式会自动根据 prompt 复杂度选择最便宜的合适模型。省事。
自定义路由规则(iblai-openclaw-router):
对于更精细的控制,可以用开源的 iblai-openclaw-router:
{
"routing": {
"enabled": true,
"tiers": {
"free": {
"models": ["ollama/llama3.2"],
"keywords": ["heartbeat", "status", "ping", "check"]
},
"cheap": {
"models": ["anthropic/claude-haiku-3-5"],
"maxCostPerRequest": 0.001
},
"standard": {
"models": ["anthropic/claude-sonnet-4-5"]
},
"premium": {
"models": ["anthropic/claude-opus-4-6"],
"keywords": ["architect", "design", "analyze deeply", "complex"]
}
}
}
}
真实案例:一个月的成本对比
优化前的账单构成
某开发者的典型月度使用(来自社区真实数据):
用途
请求次数
估算 Token
模型
费用
日常对话
800
400k
Opus 4.6
$10.00
代码辅助
200
600k
Opus 4.6
$18.00
心跳检查
86,400
172M
Opus 4.6
$860.00
文件操作
150
75k
Opus 4.6
$1.88
子代理任务
300
450k
Opus 4.6
$13.50
总计
$903.38
看到这个心跳检查的费用了吗?$860。这就是最大的罪魁祸首。
优化后的账单
实施三层路由后:
用途
请求次数
估算 Token
模型
费用
日常对话
800
400k
Sonnet 4.5
$1.60
代码辅助
200
600k
Opus 4.6
$18.00
心跳检查
86,400
172M
Llama 3 (本地)
$0
文件操作
150
75k
Llama 3 (本地)
$0
子代理任务
300
450k
Sonnet 4.5
$1.80
总计
$21.40
stats={[ { value: ‘97.6%’, label: ‘节省比例’ } ]} /> 当然,这是个比较极端的例子——那位老哥的心跳占比实在太高了。实际节省通常在 70-80%,取决于具体使用场景。 不同场景的预期节省 使用场景 原月均费用 优化后 节省比例 轻度用户(<100 消息/天) $50-80 $15-25 70% 中度用户(100-500 消息/天) $200-400 $50-100 75% 重度用户(>500 消息/天 + 子代理) $500-1000 $100-250 80% 避坑指南:常见问题与解决方案 本地模型不响应或报错 症状: Error: Connection refused 或者模型返回空内容 排查步骤: 确认 Ollama 正在运行:ollama list 检查端口是否正确:curl http://127.0.0.1:11434/api/tags 确认模型已下载:ollama pull qwen2.5:14b 增加上下文窗口:某些模型默认 4k,OpenClaw 需要 64k+ 推荐的高性价比组合: ollama pull qwen2.5:14b-instruct # 支持工具调用,中文友好 ollama pull mistral-nemo:latest # 性能均衡 ollama pull glm-4.7-flash # 轻量级,速度快 工具调用失败 原因:不是所有本地模型都支持 function calling。 解决: 使用明确标注支持 tool use 的模型(如 qwen2.5、mistral-nemo) 在配置中关闭特定模型的工具调用: { "models": { "ollama/llama3.2": { "supportsTools": false } } } Fallback 链配置错误 常见错误: // 错误:Anthropic 被限流时,Sonnet 和 Opus 可能同时不可用 "fallbacks": [ "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-6" ] // 正确:跨供应商 fallback "fallbacks": [ "anthropic/claude-sonnet-4-5", "openai/gpt-4o", "google/gemini-pro" ] 质量下降怎么办? 如果发现本地模型处理不了某些任务: 逐步升级:本地 → Haiku → Sonnet → Opus 关键词触发:在 prompt 中明确标注任务复杂度 人工复核:重要任务可以要求确认后再执行 总结与行动清单 说了这么多,核心就几点: 成本主要来自心跳和简单查询,不是你以为的"大任务" 本地模型完全可以胜任日常琐事,别浪费 Opus 的额度 Fallback 链要跨供应商配置,避免单点故障 从小处开始:先让心跳走本地模型,就能看到明显节省 进阶探索 尝试 iblai-openclaw-router 实现智能任务分级 结合 Prompt Caching 进一步降低重复调用的成本 监控各模型的成功率和响应时间,持续优化配置 本文首发自个人博客