OpenClaw用 モデルルーター(自動ルーティング)

AI/ML

概要

OpenClaw向けの「Model Router」は、利用可能な複数のモデル(複数プロバイダ)を自動検出し、各モデルのベンチマークを取得してタスクの特性に応じたルーティングを行うスキルです。運用者が新しいモデルを追加すると自動的に発見・評価してレジストリを更新し、最適なモデルを選択するルール(ルーティングテーブル)を維持します。特に「Sonnet 4.6」と「Opus 4.6」のように同一世代のモデル間でタスク複雑度に応じた振り分けをしたい場面で有用です。clawhubで簡単にインストール可能で、SKILL.mdをOpenClawのスキルフォルダに置くだけで導入できます。

GitHub

リポジトリの統計情報

  • スター数: 8
  • フォーク数: 0
  • ウォッチャー数: 8
  • コミット数: 4
  • ファイル数: 4
  • メインの言語: 未指定

主な特徴

  • 自動検出: 設定済みプロバイダとモデルを自動で検出して管理。
  • ベンチマーク取得とルーティング: ベンチマークを「ルーティングテーブル」として扱い、タスク特性に応じたモデル選定を実行。
  • 自己学習/動的更新: 新しいモデル追加時に自動で発見・評価・レジストリ更新を行う。
  • 簡単導入: clawhub経由のインストール、またはSKILL.mdの手動配置で利用可能。

技術的なポイント

Model Routerのコアコンセプトは「ベンチマークは順位を付けるためではなく、ルーティングを設計するための情報源である」という点にあります。実装上は、OpenClawの環境に登録されているプロバイダ(例えば複数のAPIキーやエンドポイント)を走査して利用可能なモデル一覧を作成し、model-registry.seed.jsonなどのレジストリで管理します。各モデルについては事前定義されたベンチマークセット(タスクごとの性能指標)を取得または外部ソースからフェッチして、タスクの複雑度や応答性/コストのトレードオフを考慮した「ルーティングテーブル」を生成します。

ルーティングは静的なランキングではなく、入力タスクの属性(短文 vs 長文、生成量、レイテンシ要件、コスト制約など)に基づいて最適なモデルを選択するルールセットで構成されます。これにより同世代のモデル間(たとえば Sonnet 4.6 と Opus 4.6)でも、単純な問い合わせは高速で安価なモデルに、複雑な推論はより高性能なモデルに振り分けるといった運用が可能です。

設計上の注意点としては、ベンチマークの信頼性(測定条件やデータセットの偏り)、レジストリの整合性、モデル追加時のスケーラブルな検出・評価フロー、そしてプロバイダ機密情報の管理があります。Model Routerは比較的小規模なファイル群(README、SKILL.md、model-registry.seed.json)で構成され、OpenClawのスキルとして軽量に組み込める点も特徴です。運用では、ベンチマーク更新の頻度、ルーティングのログ取得、フォールバック戦略(モデル呼び出し失敗時の代替)を設計しておくと実運用での安定性が向上します。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • SKILL.md: file
  • model-registry.seed.json: file

まとめ

OpenClaw環境で複数モデルを賢く使い分けるための実用的な自動ルーター。

リポジトリ情報:

READMEの抜粋:

🧭 Model Router for OpenClaw

Self-learning multi-provider model routing. Auto-detects your available models, discovers new ones when you add them, fetches their benchmarks, and updates routing automatically.

Benchmarks are routing tables, not leaderboards.

Install

clawhub install chandika/model-router

Or manually copy SKILL.md to your OpenClaw skills directory.

How It Works

  1. Detects which providers and models you have configured
  2. Maintains a registry — `m…