我给 OpenClaw 做了个"省钱"插件,API 费用直降 60%
一个真实的痛点
用 OpenClaw 做开发的人,大概都经历过这样的尴尬:
你让 AI 帮你查个天气,它用的是 Claude Opus。你让它回复一句”收到”,它还是 Claude Opus。
所有消息,无差别地发给最强(也最贵)的模型。
几天下来一看账单,好家伙,一大半 Token 花在了”你好”、”帮我翻译这句话”这种日常对话上。
这就像每次出门买菜都开劳斯莱斯 — 不是不行,是没必要。
所以我做了 Claw Router
核心思路很简单:根据消息的复杂度,自动选择最合适的模型。
简单消息 → 便宜快速的模型,复杂任务 → 顶级模型。
先看一组实测数据:
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
从数据可以清楚看到:日常交互(问天气、翻译、算数)全部被路由到了便宜模型,只有真正复杂的编码和架构设计任务才会调用贵的模型。
这不是手动配规则。是全自动、实时、本地计算的。
一个有意思的 Bug:当 “hi” 被路由到了最贵的模型
上线 v1.0.0 的时候,有用户反馈了一个令人哭笑不得的问题:发一条 “hi”,居然被路由到了 Claude Opus。
一个两个字母的招呼语,花了最贵模型的 Token。这显然不对。
根因分析:初始版本缺少对超短消息的硬规则保护。”hi” 进入了评分引擎,而当时的校准函数没有足够的区分力,导致低分区间也被映射到了高档位。
修复方案 — 双重保险:
-
硬规则拦截:≤5 个字符且不包含技术关键词 → 直接返回 TRIVIAL,不经过评分引擎 -
Sigmoid 校准优化:通过网格搜索找到最优参数(k=8, midpoint=0.18),S 曲线在低分区间提供了更强的压制力
修复后,”hi” 被硬规则直接拦截,耗时 <1ms,Token 成本为零。
这个 Bug 教会了我一个道理:规则引擎的第一道防线不是评分算法的精度,而是对显而易见的 case 做硬编码拦截。这比任何精妙的数学模型都可靠。
技术实现:8 维评分引擎
claw-router 的核心是一个 8 维复杂度评分引擎,从以下维度分析每条消息:
-
推理深度(权重 0.20)— 需要多少逻辑推导? -
代码/技术(权重 0.18)— 涉及多少技术概念或代码? -
任务步骤(权重 0.15)— 有多少子任务需要完成? -
领域专业度(权重 0.12)— 是否需要特定领域的专业知识? -
输出复杂度(权重 0.10)— 期望的输出有多复杂? -
创意要求(权重 0.10)— 是否需要创造性思维? -
上下文依赖(权重 0.08)— 需要多少上下文理解? -
消息长度(权重 0.07)— 消息本身的信息密度
每个维度有中英文关键词库,使用 soft-max 累积计分。最终通过 Sigmoid 校准函数 将原始分数映射到 0-1 区间,再根据阈值分配到 5 个档位(TRIVIAL → SIMPLE → MODERATE → COMPLEX → EXPERT)。
整个过程在本地完成,耗时不到 1 毫秒,零 API 调用。
边界难题:LLM 辅助模式
纯规则引擎有个天然的弱点:边界情况。
当评分刚好落在两个档位的交界处(比如 SIMPLE 和 MODERATE 之间),规则引擎很难做出准确判断。
我的解法是:在边界区间(±0.08)自动触发一个小型 LLM 做二次判断。
工程上做了几个关键设计:
-
70% 的消息直接跳过 LLM — 只有边界区间才触发,大部分消息纯规则就够了 -
3 秒超时保护 — LLM 调用超时后自动回退到规则结果 -
加权融合 — 规则分数和 LLM 分数按置信度加权融合,而不是简单替换
效果:既保留了规则引擎的速度,又解决了边界模糊的精度问题。
v1.0.4 升级了什么?
从 v1.0.0 到 v1.0.4,经历了 4 次迭代,主要改进:
Token 用量追踪:每次 Agent 完成任务后,自动记录 Token 的消耗(输入、输出、总量)、耗时和实际使用的模型。终于能清楚看到钱花在了哪里。
Sigmoid 校准优化:通过网格搜索找到了最优参数(k=8, midpoint=0.18),S 曲线在中间区间的分辨力大幅提升,档位判断更准确。
硬规则修复:解决了 “hi” 被路由到贵模型的 Bug,双重保险机制确保短消息不再翻车。
OpenClaw 兼容性适配:紧跟 OpenClaw 2026.2.13 的插件配置格式变更,确保无缝使用。
实际省了多少?
坦率讲,”省 60%”这个数字因人而异,取决于你日常的消息构成。
如果你大部分交互是日常对话、简单翻译、格式整理 — 这些消息会被路由到便宜模型,省下的比例会非常可观。
如果你天天跟 AI 讨论系统架构 — 那大部分消息本来就该用顶级模型,路由器能省的有限。
但关键不只是省钱。 路由到轻量模型的消息,响应速度也更快。便宜模型处理简单任务的速度通常是顶级模型的 3-5 倍。日常交互的流畅度会有明显提升。
怎么用?
两步搞定:
安装:
ounter(lineounter(linenpm install @aiwaretop/claw-routercp -r node_modules/@aiwaretop/claw-router ~/.openclaw/extensions/claw-router
配置: 在 openclaw.json 中启用插件即可,所有参数都有合理的默认值。
想自定义模型映射、调整评分权重、启用 LLM 辅助模式,都可以在配置中灵活设定。
完整文档:GitHub – HackSing/claw-router
为什么要开源?
做这个插件的初衷很简单 — 自己要用。
每天和 OpenClaw 交互几百条消息,大部分都是日常对话,没必要每条都调最贵的模型。路由器帮我自动做这个决策,我只关注结果就好。
开源是因为这个需求不只我有。用 OpenClaw 的人都面临同样的问题。
如果你也在用 OpenClaw,试一下。Star、Fork 或者提 PR 都欢迎。
GitHub: github.com/HackSing/claw-routernpm:
@aiwaretop/claw-router
夜雨聆风
