乐于分享
好东西不私藏

我给 OpenClaw 做了个"省钱"插件,API 费用直降 60%

我给 OpenClaw 做了个"省钱"插件,API 费用直降 60%


一个真实的痛点

用 OpenClaw 做开发的人,大概都经历过这样的尴尬:

你让 AI 帮你查个天气,它用的是 Claude Opus。你让它回复一句”收到”,它还是 Claude Opus。

所有消息,无差别地发给最强(也最贵)的模型。

几天下来一看账单,好家伙,一大半 Token 花在了”你好”、”帮我翻译这句话”这种日常对话上。

这就像每次出门买菜都开劳斯莱斯 — 不是不行,是没必要。


所以我做了 Claw Router

核心思路很简单:根据消息的复杂度,自动选择最合适的模型。

简单消息 → 便宜快速的模型,复杂任务 → 顶级模型。

先看一组实测数据:

消息
复杂度评分
路由结果
对应模型
“hi” / “你好” / “ok” / “👍”
硬规则直接拦截
TRIVIAL
便宜模型
“今天天气怎么样?”
0.1583
SIMPLE
便宜模型
“Translate hello world to French”
0.0565
TRIVIAL
便宜模型
“帮我算一下 123 × 456”
0.0730
TRIVIAL
便宜模型
“对比 React 和 Vue 的优缺点”
0.3776
SIMPLE
便宜模型
“写一篇 AI 趋势短文,500字”
0.6558
COMPLEX
强力模型
“用 Python 写爬虫,处理反爬和分页”
0.5884
COMPLEX
强力模型
“BST 实现 + 单元测试”
0.5537
COMPLEX
强力模型
“从零搭建高并发消息队列系统”
硬规则直接拦截
EXPERT
最强模型
“Design a collaborative doc editor”
硬规则直接拦截
EXPERT
最强模型

从数据可以清楚看到:日常交互(问天气、翻译、算数)全部被路由到了便宜模型,只有真正复杂的编码和架构设计任务才会调用贵的模型。

这不是手动配规则。是全自动、实时、本地计算的。


一个有意思的 Bug:当 “hi” 被路由到了最贵的模型

上线 v1.0.0 的时候,有用户反馈了一个令人哭笑不得的问题:发一条 “hi”,居然被路由到了 Claude Opus。

一个两个字母的招呼语,花了最贵模型的 Token。这显然不对。

根因分析:初始版本缺少对超短消息的硬规则保护。”hi” 进入了评分引擎,而当时的校准函数没有足够的区分力,导致低分区间也被映射到了高档位。

修复方案 — 双重保险

  1. 硬规则拦截:≤5 个字符且不包含技术关键词 → 直接返回 TRIVIAL,不经过评分引擎
  2. Sigmoid 校准优化:通过网格搜索找到最优参数(k=8, midpoint=0.18),S 曲线在低分区间提供了更强的压制力

修复后,”hi” 被硬规则直接拦截,耗时 <1ms,Token 成本为零。

这个 Bug 教会了我一个道理:规则引擎的第一道防线不是评分算法的精度,而是对显而易见的 case 做硬编码拦截。这比任何精妙的数学模型都可靠。


技术实现:8 维评分引擎

claw-router 的核心是一个 8 维复杂度评分引擎,从以下维度分析每条消息:

  1. 推理深度(权重 0.20)— 需要多少逻辑推导?
  2. 代码/技术(权重 0.18)— 涉及多少技术概念或代码?
  3. 任务步骤(权重 0.15)— 有多少子任务需要完成?
  4. 领域专业度(权重 0.12)— 是否需要特定领域的专业知识?
  5. 输出复杂度(权重 0.10)— 期望的输出有多复杂?
  6. 创意要求(权重 0.10)— 是否需要创造性思维?
  7. 上下文依赖(权重 0.08)— 需要多少上下文理解?
  8. 消息长度(权重 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

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 我给 OpenClaw 做了个"省钱"插件,API 费用直降 60%

评论 抢沙发

3 + 3 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮