上个月账单出来我真的愣了一下------光 Claude Code 相关的 API 调用就烧了 2400 块。用 OpenClaw 当 Claude Code 的终端入口已经快两个月了,体验确实丝滑,但这个烧钱速度顶不住。花了一个周末专门研究怎么把成本打下来,最后实测月开销从 2400 降到了 700 左右,踩过的坑和最终方案全写在这里。
先说结论
OpenClaw(也叫 Clawdbot)是 2026 年最火的 Claude Code 开源替代客户端之一,它本身免费,但底层要调 Claude 4.6 的 API,真正烧钱的是 API 调用费。省钱的核心思路就三个:控制上下文长度、分级使用模型、选对 API 接入方式。
| 优化手段 | 省钱幅度 | 难度 | 适用场景 |
|---|---|---|---|
配置 --max-context 限制上下文 |
约 30% | ⭐ | 所有场景 |
| 大小模型分级调用 | 约 40-50% | ⭐⭐ | 日常开发 |
| 换用聚合 API 平台 | 约 10-20% | ⭐ | 高频调用 |
| 三招组合拳 | 约 60-70% | ⭐⭐ | 认真省钱的人 |
环境准备
确保你已经装好了 OpenClaw,没装的先跑一下:
bash
# 安装 OpenClaw(需要 Node.js 18+)
npm install -g openclaw
# 验证安装
openclaw --version
# 输出类似:openclaw v0.9.x
还需要一个能调 Claude 4.6 的 API Key。官方的 Anthropic Key 当然可以,但后面我会说为什么最后换了别的方案。
方案一:限制上下文长度,堵住最大的窟窿
OpenClaw 默认会把整个项目的文件树加上最近对话全塞进上下文,这是最烧钱的地方。Claude 4.6 的输入 Token 虽然比输出便宜,但架不住量大------抓了一下日志,一次普通的「帮我重构这个函数」请求,输入 Token 经常飙到 80K-120K。
bash
# 启动时限制最大上下文 Token 数
openclaw --max-context 40000
# 或者写进配置文件 ~/.openclaw/config.yaml
配置文件写法:
yaml
# ~/.openclaw/config.yaml
context:
max_tokens: 40000
# 排除不需要 AI 读的目录
exclude_patterns:
- "node_modules/**"
- "dist/**"
- "*.lock"
- ".git/**"
- "**/*.min.js"
- "coverage/**"
- "__pycache__/**"
exclude_patterns 很多人不配,导致 node_modules 里的东西也被扫进上下文。加上排除规则后,单次请求的平均输入 Token 从 95K 降到了 35K 左右,直接省了 60% 的输入成本。这一步性价比最高,建议第一个配。
实测数据(连续 3 天记录):
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 平均输入 Token/次 | ~95,000 | ~35,000 |
| 平均输出 Token/次 | ~2,500 | ~2,500 |
| 日均请求次数 | 45 | 45 |
| 日均花费(估算) | ¥80 | ¥45 |
方案二:大小模型分级调用,杀鸡别用牛刀
不是所有任务都需要 Claude 4.6 Opus 级别的模型。写个简单的工具函数、格式化代码、生成单元测试这种活,用轻量模型完全够。
OpenClaw 支持在配置里指定不同任务对应不同模型:
yaml
# ~/.openclaw/config.yaml
models:
# 复杂任务:架构设计、复杂重构、Debug 疑难杂症
primary:
provider: "openai-compatible"
model: "claude-sonnet-4.6"
base_url: "https://api.ofox.ai/v1"
api_key: "your-api-key"
# 简单任务:生成测试、代码补全、格式化
secondary:
provider: "openai-compatible"
model: "deepseek-chat"
base_url: "https://api.ofox.ai/v1"
api_key: "your-api-key"
# 任务路由规则
routing:
# 这些关键词触发 primary 模型
primary_triggers:
- "refactor"
- "architect"
- "debug"
- "review"
# 其余默认走 secondary
default: "secondary"
这里我用了 ofox.ai 的聚合接口做统一接入。ofox.ai 是一个 AI 模型聚合平台,一个 API Key 可以调用 Claude 4.6、DeepSeek V3、GPT-5、Gemini 3 等 50+ 模型,兼容 OpenAI 协议,改个 base_url 就能用。大小模型切换不需要管两套 Key 和两套鉴权,省心。
分级之后的费用变化很明显。统计了一周的使用情况:大概 70% 的请求其实是简单任务,走 DeepSeek V3 处理绰绰有余,只有 30% 真的需要 Claude 4.6 出马。
方案三:API 接入方式的隐藏成本
很多人只看模型单价,忽略了接入方式带来的隐藏成本:
- 请求失败重试的钱:官方 API 偶尔 429/500,重试就是重新发一遍 Token,等于双倍扣费
- 多 Key 的管理成本:Anthropic 一个 Key、OpenAI 一个 Key、DeepSeek 一个 Key,充值分散在三个平台
- 网络延迟导致的超时重发:连接不稳定时 OpenClaw 会自动重试
之前用官方 Anthropic API,一个月大概有 8-12% 的请求是重试产生的浪费。换了聚合平台后这个比例降到了 2% 以下,因为聚合网关有多供应商冗余,一条链路挂了自动切另一条。
python
# 验证配置是否生效的小脚本
from openai import OpenAI
client = OpenAI(
api_key="your-ofox-key",
base_url="https://api.ofox.ai/v1"
)
# 测试 Claude 4.6
response = client.chat.completions.create(
model="claude-sonnet-4.6",
messages=[{"role": "user", "content": "说 hello"}],
max_tokens=50
)
print(f"Claude 4.6: {response.choices[0].message.content}")
print(f"Token 用量: {response.usage}")
# 测试 DeepSeek
response2 = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "说 hello"}],
max_tokens=50
)
print(f"DeepSeek: {response2.choices[0].message.content}")
print(f"Token 用量: {response2.usage}")
跑一下这个脚本,确认两个模型都能正常返回,再去改 OpenClaw 的配置。
踩坑记录
坑 1:exclude_patterns 不支持 ! 取反语法
我一开始写了 !src/** 想表示「只包含 src 目录」,结果 OpenClaw 直接忽略了这条规则,上下文该多大还是多大。正确做法是列举要排除的目录,别想着用取反。
坑 2:routing 的关键词匹配是对用户输入做的,不是对代码做的
我以为写了 primary_triggers: ["debug"],代码里有 debugger 语句就会触发 primary 模型。实际上它只匹配你在 OpenClaw 里输入的指令文本。想用 Claude 4.6 处理,就在指令里明确写「debug this」或「review this」。
坑 3:max_tokens 设太小会导致截断错误
第一次把 max_context 设成了 20000,结果稍微大一点的文件 OpenClaw 读不全,生成的代码各种引用不存在的变量。试下来 35000-45000 是比较好的平衡点,太小影响质量,太大又费钱。
坑 4:secondary 模型不支持某些 OpenClaw 高级功能
OpenClaw 的「multi-file edit」功能依赖模型的 function calling 能力。DeepSeek V3 支持得还行,但有些更小的模型(比如早期的 GLM 版本)会在多文件编辑时翻车。secondary 模型至少用 DeepSeek V3 级别的。
我现在的完整配置
直接抄:
yaml
# ~/.openclaw/config.yaml
context:
max_tokens: 40000
exclude_patterns:
- "node_modules/**"
- "dist/**"
- "build/**"
- "*.lock"
- ".git/**"
- "**/*.min.js"
- "**/*.min.css"
- "coverage/**"
- "__pycache__/**"
- ".next/**"
- ".nuxt/**"
- "vendor/**"
models:
primary:
provider: "openai-compatible"
model: "claude-sonnet-4.6"
base_url: "https://api.ofox.ai/v1"
api_key: "${OFOX_API_KEY}" # 环境变量引用
secondary:
provider: "openai-compatible"
model: "deepseek-chat"
base_url: "https://api.ofox.ai/v1"
api_key: "${OFOX_API_KEY}"
routing:
primary_triggers:
- "refactor"
- "architect"
- "debug"
- "review"
- "redesign"
- "optimize"
- "security"
default: "secondary"
# 额外省钱选项
output:
max_tokens: 4000 # 限制单次输出长度,防止模型话痨
然后在 shell 的 rc 文件里加一行:
bash
export OFOX_API_KEY="sk-your-key-here"
小结
说白了就这几招:排除垃圾文件别让它读、简单活交给便宜模型干、找个稳定的 API 接入减少重试浪费。三板斧下去,月均从 2400 降到了 700 左右,代码生成质量体感上没什么下降------因为真正需要 Claude 4.6 硬实力的场景没那么多。
建议先从 exclude_patterns 配起,零成本,效果最明显。模型分级可以慢慢调,根据自己的使用习惯找到 primary/secondary 的最佳比例就行。