free-model-router-laodao

为 OpenClaw 提供免费模型智能路由服务,支持本地代理、自动配置、自动轮询、故障切换和配置零侵入。在需要设置免费模型路由、配置 Provider、切换模型或诊断模型可用性问题时使用。

Audits

Pass

Install

openclaw skills install free-model-router-v1

free-model-router

免费模型智能路由 — 本地代理,自动配置,自动轮询,故障切换,配置零侵入

引导注册免费模型,永久在线,实现token自由。自动同步、自动检测、自动切换、自动救援。

数据流向说明

本技能的数据流向分为三层,所有行为均透明可控:

Layer 1: 用户 → OpenClaw → 127.0.0.1:5678 本地 Router
         (数据不离开本机)

Layer 2: 本地 Router → 外部模型 Provider(OpenRouter、NVIDIA NIM 等)
         (提示词和模型响应经过 Provider 服务器)

Layer 3: 本地 Router ↔ freemodel 控制服务器
         (仅同步 provider 列表、模型 ID、健康状态,不含对话内容)
行为说明用户控制
外部通信freemodel.eu.org 等服务器注册匿名 API Key、拉取 provider 列表和模型元数据仅同步 provider 配置,不含任何用户对话内容
数据上报可选的匿名健康状态上报(模型延迟、可用性)默认关闭,可随时通过 reporting off 命令或管理面板开启/关闭
设备指纹SHA256(hostname + homedir + platform + arch) 不可逆哈希仅用于区分设备,无法反推原始信息
配置修改仅在 setup 时向 openclaw.json 添加 free-model-router provider自动备份(最多3份)+ 失败自动回滚,幂等设计
本地代理127.0.0.1:5678 仅监听本地回环不暴露公网,仅接收 OpenClaw 内部请求
推荐码完全自愿的推荐试用系统不参与不影响任何免费功能

重要提示:你的提示词和模型响应会被转发到外部模型 Provider(如 OpenRouter、NVIDIA NIM 等),请知悉。本技能不收集、不传输、不存储任何用户对话内容、提示词或模型响应数据。所有外部请求仅涉及模型配置元数据。

核心架构

  • OpenClaw 配置只改一次 — 仅在 setup 时写入 free-model-router provider 指向本地 Router (127.0.0.1:5678)
  • 所有模型切换在 Router 层透明完成 — 运行期间不再触碰 openclaw.json,避免 Gateway 宕机
  • Round-Robin 轮询 — 默认策略在各 provider 主模型间轮询
  • 自动故障切换 — 主模型故障自动切换到备模型,所有 provider 不可用时自动降级
  • 事件通知系统 — 模型切换、故障等事件写入 events.json,由 cron 任务推送

安装幂等性

本技能支持幂等安装 — 多次触发 setup 不会产生副作用。

详见 references/idempotency.md

核心要点:

  • Router 已运行则跳过,OpenClaw 已配置则跳过
  • 重复执行时仅同步 provider 列表,不会覆盖用户手动设置的主备模型
  • 用户手动配置的 API Key 和主模型值始终保留

配置流程触发

安装/识别技能后,向用户展示:

选项 A:现在设置(推荐) — 回复 "现在设置"/"开始配置" 选项 B:延后设置 — 回复 "延后设置"/"稍后再说"

配置完成后,Router 注册两个定时任务(北京时间 UTC+8):

  • 事件通知检查: 每天 10:00、15:00、20:00 检查一次(避免夜间打扰)
  • 每日状态汇报: 每天 9:00 自动汇报各 provider 运行状态

注意: 如果已安装(Router 运行 + OpenClaw 已配置),setup 命令会输出当前状态摘要而非重新配置。

CLI 路径: 下文所有命令中的 <skill_dir> 指技能安装目录。默认路径为 ~/.openclaw/skills/free-model-router,具体路径取决于当前 OpenClaw 变种的安装目录和技能名称(例如 ~/.kimi-openclaw/skills/free-model-router)。

命令执行约束

禁止复合命令: OpenClaw 的 exec 工具不支持 cd ... && node ...bash -c "..." 等复合命令。所有命令必须使用直接调用格式:

node <skill_dir>/scripts/free-model-cli.js <command>

其中 <skill_dir> 的完整路径取决于当前 OpenClaw 变种的安装目录(例如 ~/.openclaw/skills/free-model-router~/.kimi-openclaw/skills/free-model-router)。如需切换目录,应使用 OpenClaw 的 workingDirectory 参数指定,而不是在命令中使用 cd &&

常用命令

查看完整命令列表:

node <skill_dir>/scripts/free-model-cli.js help

意图匹配

用户说动作
/free-model-router setup、"开始配置"、"安装免费模型路由"Setup 流程
/free-model-router/free-model-router status运行 providers 查看状态
/free-model-router providers、"有哪些免费模型provider"运行 providers
/free-model-router models、"有哪些免费模型"运行 models
/free-model-router models xxx、"xxx 有哪些模型"运行 models xxx
/free-model-router providerApiKey xxx yyy设置 provider API Key
/free-model-router switchProviderPrimaryModel xxx yyy、"换成 yyy"切换主模型
/free-model-router disableProvider xxx、"禁用 xxx"禁用 provider
/free-model-router enableProvider xxx、"启用 xxx"启用 provider
/free-model-router configureModelRole primary、"设为主模型"、"作为主模型"设为 OpenClaw 主模型
/free-model-router configureModelRole fallback、"设为备用模型"、"作为备用模型"设为 OpenClaw 备用模型
/free-model-router stop、"停止 Router"停止 Router 进程
/free-model-router uninstall、"卸载技能"卸载 free-model-router
"openclaw 挂了"、"模型不可用"检查 provider 状态 → 诊断 → 引导修复

意图识别规则

1. 用户主动切换模型

用户说 "换成/切换到/换用 + 模型名" → 解析后在已配置 Provider 中查找并调用 switchProviderPrimaryModel

歧义处理:

  • 用户提供了完整模型 ID(如 qwen/qwen3-coder:free) → 直接切换
  • 用户只说了模型名(如 "qwen3-coder") → 在已配置 Provider 中查找匹配:
    • 仅一个 Provider 有 → 自动使用该 Provider 的完整 ID
    • 多个 Provider 都有 → 请用户确认使用哪个 Provider
    • 找不到匹配 → 提示用户输入完整 ID 或先运行 models 查看
  • 用户未指定 Provider → 先运行 models 列出各 Provider 的主模型,请用户确认

2. 用户引导配置(首次)

触发 Setup 流程逐步引导,详见 references/setup-guide.md

3. 兜底机制

openclaw 无法回复时:1) 检查 Router 状态 → 2) 检查各 provider 状态 → 3) 如有故障切换,汇报结果

Setup 流程

核心原则: 多 Provider 优于单 Provider。引导用户尽可能提供多个 Key。

完整 6 步流程详见 references/setup-guide.md

流程概览:

  1. 运行 setup 命令 — 启动 Router + 初始化 + OpenClaw 配置
  2. 注册定时任务 — 事件检查(北京时间 08:00~22:00 每30分钟) + 每日状态汇报(北京时间每天9:00)
  3. 展示 Provider 列表,引导设置 API Key
  4. [重要]主动询问用户将free-model-router设为主模型还是备用模型,否则技能将不会生效
  5. 展示各 Provider 主备模型,可选择切换
  6. 完成配置

事件通知系统

Router 内置事件通知系统,自动推送模型切换、故障等事件。

详见 references/event-system.md

核心机制:

  • 事件状态: pending(待推送) → notified(已推送) → read(已读)
  • Cron 在北京时间 08:00~22:00 期间每 30 分钟读取 status=pendingshouldNotify=true 的事件
  • 推送后调用 mark-notified 标记,避免重复推送
  • 无事件时保持静默: 如果没有待推送事件,Cron 不会向用户发送任何消息

公告事件超链接:

  • 公告事件可能包含 metadata.url 链接
  • 推送时使用 Markdown 格式展示: [🔗 {action}]({url})
  • 详见 event-system.md 公告格式

停止与卸载

停止 Router

node <skill_dir>/scripts/free-model-cli.js stop
  • 读取 PID 文件并发送 SIGTERM 信号
  • 自动清理 PID 文件
  • 如果 Router 未运行,输出提示信息

卸载

node <skill_dir>/scripts/free-model-cli.js uninstall
  • 自动停止 Router 进程
  • 移除 OpenClaw 配置中的 free-model-router provider
  • 卸载后请在 OpenClaw 技能管理界面中移除 free-model-router 技能以清理 cron 任务

注意事项

  1. API Key 安全: 仅存本地 router-config.json,不发送到外部
  2. 模型可用性: 免费模型随时可能下架/收费
  3. 配置安全: 所有修改自动备份,失败自动回滚
  4. 配置零侵入: OpenClaw 配置仅在 setup 和配置模型角色时修改,运行期间不再触碰

📚 参考文档

文档内容
references/setup-guide.mdSetup 完整 6 步流程
references/event-system.md事件通知系统详解
references/idempotency.md安装幂等性说明