9Router トラブルシューティング完全ガイド:よくあるエラー8種の原因と対処法 9Router トラブルシューティング完全ガイドよくあるエラー8種の原因と対処法【免费下载链接】9routerUnlimited FREE AI coding. Connect Claude Code, Codex, Cursor, Cline, Copilot, Antigravity to FREE Claude/GPT/Gemini via 40 providers. Auto-fallback, RTK -40% tokens, never hit limits.项目地址: https://gitcode.com/GitHub_Trending/9r/9router本記事は、9RouterオープンソースのAIエンドポイント・プロキシを利用中に遭遇する代表的なエラー——空レスポンス、レート制限、OAuthトークン期限切れ、接続拒否、モデル未発見、応答遅延、APIキー無効、コスト高騰——の原因と解決策を体系的に解説する実践ガイドです。Dashboard操作・CLIコマンド・APIリクエストの3層から対処手順を示し、あわせてリポジトリ内のソースコードopen-sse/services/tokenRefresh.js、open-sse/services/usage/などで裏付けされた動作原理を確認できます。本記事を読み終えると、9Routerの障害を自己診断し、Comboフォールバック・クォータ監視・トークン自動更新を駆使してダウンタイムを最小化できるようになります。1. はじめに9Routerの動作モデルとエラー分類9Routerは、Claude Code・Codex・Cursor・Cline・CopilotなどのAI CLIツールと、40以上のプロバイダー無料・サブスク・低価格APIをつなぐ統合エンドポイントです。クライアントはローカルプロキシ既定ポート20128またはクラウドエンドポイントに向けてリクエストを送り、9Routerがモデルルーティング・クォータ管理・OAuth認証・トークン自動更新を一手に引き受けます。この構成ゆえに、エラーは大きく次の3層に分類できます。層代表的なエラー原因の主な所在クライアント層ECONNREFUSED、Invalid API key起動状態、ポート、設定値プロキシ層Rate limit exceeded、Token expiredクォータ管理、OAuth自動更新プロバイダー層Language model did not provide messages上流APIの利用不可・クォータ枯渇以降の章では、公式トラブルシューティングドキュメントgitbook/content/ja/troubleshooting.mdの8つの問題を順に取り上げます。2. Language model did not provide messages空レスポンスが返る症状と原因リクエストが空レスポンス、またはエラーメッセージを伴わず失敗します。主な原因は次の3つです。プロバイダーのクォータが消費済み無料枠・サブスク枠の使い切りAPIキーが無効または期限切れモデルが利用不可モデルIDの誤り、プロバイダー側の障害対処手順1. クォータ状況を確認Dashboard → Providers → クォータトラッカーを表示クォータが消費済みなら、リセットを待つかプロバイダーを切り替えます。9Routerのクォータ追跡はプロバイダーごとに実装されており、たとえばClaudeのクォータ取得処理open-sse/services/usage/claude.jsでは、five_hour5時間セッション・seven_day週次・モデル別週次クォータの3種類を取得し、それぞれのresetAtリセット時刻を返します。つまり「いつリセットされるか」を画面で確認できるのは、こうした上流APIのレスポンスをパースして表示しているためです。2. コンボフォールバックを使用Dashboard → Combos → フォールバックチェーンを作成 例: cc/claude-opus → glm/glm-4.7 → if/kimi-k2Comboとは、優先度順に並べたモデルのフォールバックチェーンです。先頭のモデルがクォータ枯渇やエラーで失敗すると、自動的に次のモデルへ切り替わります詳細はgitbook/content/ja/features/combos.md。3. プロバイダー接続を確認Dashboard → Providers → 必要に応じて再接続3. レート制限Rate limit exceeded / Too many requests症状と原因上流プロバイダーからレート制限エラーが返ります。原因は主に次の3つです。サブスクリプションのクォータ枯渇5時間/日次/週次の制限APIレート制限に到達同時リクエストが多すぎる対処手順1. リセット時間を確認Dashboard → Quota Tracking → リセットカウントダウンを表示2. 低価格階層へ切り替え使用: glm/glm-4.7 (100万トークンあたり$0.6) minimax/MiniMax-M2.1 (100万トークンあたり$0.20)3. フォールバックコンボを追加Dashboard → Combos → バックアップモデルを追加 優先: cc/claude-opus (サブスクリプション) バックアップ: glm/glm-4.7 (低価格) 緊急時: if/kimi-k2 (無料)実装の補足クォータ取得API自体が429を返した場合、9RouterはOAuthの使用量ポーリングをクールダウンさせる処理を実装していますopen-sse/services/usage/claude.js。つまり上流のレート制限は、そのままクライアントへのエラーとなるだけでなく、内部の監視ループにも影響するため、まずはリクエスト頻度そのものを落とすことが有効です。4. OAuthトークン期限切れUnauthorized / Token expired症状と原因OAuthトークンが期限切れ自動更新に失敗した場合プロバイダーセッションが無効化された更新中のネットワーク問題対処手順1. 自動更新デフォルト9Routerはトークンを自動更新します。30秒待ってから再試行してください。この自動更新は、プロバイダーごとのリフレッシュ関数群として実装されており、Claude・Codex・Gemini・Kimi・Kiro・iFlow・GitHub・Copilot・Trae・Zed・Windsurf・Qwen・X旧Twitterなど16種類以上のリフレッシュ処理がopen-sse/services/tokenRefresh.jsに集約されています。各関数はOAUTH_ENDPOINTSとREFRESH_LEAD_MSリフレッシュを開始する期限前リード時間を参照して動作しますopen-sse/config/appConstants.js。2. 手動で再接続Dashboard → Providers → [プロバイダー名] → Reconnect → OAuthフローを再度完了3. プロバイダーステータスを確認Claude Code、Codexなど、プロバイダー側のサービスがオンラインであることを確認します。自動更新が失敗し続ける場合は、上流側でセッションが無効化されている可能性が高いため、Reconnectによる再認証が最短の解決策です。5. 高コスト予期しない使用量・請求額症状と原因不必要に高価なモデルを使用している低価格階層へのフォールバックがない大きなコンテキストウィンドウを送り続けている対処手順1. 使用統計を確認Dashboard → Usage Stats → トークン消費量を表示 → 高コストモデルを特定2. より安いモデルへ切り替え置換: cc/claude-opus (月$20〜100サブスクリプション) へ: glm/glm-4.7 (100万トークンあたり$0.6) minimax/MiniMax-M2.1 (100万トークンあたり$0.20)3. 無料階層を使用if/kimi-k2-thinking (無料) qw/qwen3-coder-plus (無料) kr/claude-sonnet-4.5 (無料) gc/gemini-3-flash-preview (月18万無料)4. プロンプトを最適化コンテキストサイズを削減メッセージ履歴のトリミング長い応答にはストリーミングを使用一般的なプロンプトをキャッシュ実装の補足9Routerには、RTKReasoning Token Kill機能としてopen-sse/rtk/配下にトークン削減フィルタopen-sse/rtk/index.jsが実装されており、リクエストを送信する前に推論トークン等の冗長部分を削ることで、実質的なトークン消費を減らす仕組みがあります。高コスト対策の一環として、CLIツール側のコンテキスト剪定機能とあわせて利用できます。6. Connection RefusedECONNREFUSED / Cannot connect to localhost:20128症状と原因クライアントがローカルプロキシに接続できません。9Routerが起動していないポート20128がブロックされているファイアウォールが接続をブロック対処手順1. 9Routerを起動9routerダッシュボードが http://localhost:3000 で開くはずです。なお、APIプロキシの既定ポートは20128で、これは.env.exampleのPORT20128として明示されています。2. ポート20128を確認# ポートがリッスンしているか確認 lsof -i :20128 # またはWindowsで netstat -ano | findstr :201283. ファイアウォールを確認macOSシステム設定 → ネットワーク → ファイアウォールWindowsWindows Defenderファイアウォール → アプリを許可Linuxsudo ufw allow 201284. クラウドエンドポイントを使用localhostが機能しない場合例Cursor IDEが別コンテナ/別ホストから接続する場合Endpoint: https://9router.com/v1実装の補足プロキシの待ち受けポートは環境変数PORTで制御されます.env.example。ポートを変更した場合は、クライアント側のBase URLも同じポートに合わせる必要があります。7. ダッシュボードが開かないlocalhost:3000 にアクセスできない症状と原因ポート3000がすでに使用中9Routerがクラッシュしたブラウザキャッシュの問題対処手順1. 9Routerが実行中か確認# プロセスを確認 ps aux | grep 9router # ポート3000を確認 lsof -i :30002. 競合するプロセスを終了# macOS/Linux lsof -ti:3000 | xargs kill -9 # Windows netstat -ano | findstr :3000 taskkill /PID PID /F3. 9Routerを再起動# 停止 pkill -f 9router # 起動 9router4. ブラウザキャッシュをクリアChromeCtrlShiftDelete → キャッシュをクリアシークレットモードを試す5. ファイアウォール設定を確認ポート3000がブロックされていないことを確認します。実装の補足ダッシュボードはNext.jsアプリとして実装されておりsrc/app、APIプロキシとは別のポートで配信される構成です。.env.exampleのBASE_URLhttp://localhost:20128からも分かるように、ダッシュボードポート3000とAPIプロキシポート20128は役割が分かれており、両方が起動していることが正常動作の前提です。8. モデルが見つからないModel not found / Invalid model症状と原因プロバイダーが接続されていないモデルIDのタイポプロバイダーが非アクティブ対処手順1. プロバイダー接続を確認Dashboard → Providers → ステータスを確認緑 アクティブ2. モデルID形式を確認正しい: cc/claude-opus-4-5-20251101 誤り: claude-opus-4-5-20251101 形式: [provider-prefix]/[model-name]モデルIDはプロバイダープレフィックススラッシュモデル名という形式です。プレフィックスccClaude Code、glmGLM、ifiFlow、krKiro、gcGemini CLI、qwQwenなどを省略すると「Invalid model」になります。3. 利用可能なモデルを一覧表示curl http://localhost:20128/v1/models \ -H Authorization: Bearer your-api-key4. プロバイダーを再接続Dashboard → Providers → [Provider] → Reconnect実装の補足プロバイダーのモデル定義はopen-sse/providers/registry/にプロバイダーごとのファイル例open-sse/providers/registry/claude.js、open-sse/providers/registry/glm.jsとして登録されており、プレフィックスとモデル名の対応関係はこのレジストリで管理されています。/v1/modelsエンドポイントはこのレジストリを参照して一覧を返すため、モデルが一覧に出ない場合はプロバイダー接続そのものを見直すのが先決です。9. 応答が遅いリクエストのタイムアウト症状と原因プロバイダーのレイテンシネットワーク問題大きなコンテキスト/レスポンスプロバイダーのレート制限対処手順1. プロバイダーステータスを確認Dashboard → Providers → レイテンシ統計を表示2. 高速モデルへ切り替え高速: cc/claude-haiku-4-5 (HaikuはOpusより高速) gc/gemini-3-flash-preview qw/qwen3-coder-flash3. ストリーミングを使用{ model: cc/claude-opus-4-5, messages: [...], stream: true }4. ネットワークを確認# レイテンシをテスト ping api.anthropic.com ping api.openai.com5. コンテキストサイズを削減メッセージ履歴をトリミング短いプロンプトを使用CLIツールでコンテキストの剪定を有効化実装の補足stream: trueを指定した場合、9Routerは上流からのSSEServer-Sent Eventsストリームを逐次クライアントへ中継する実装になっていますopen-sse/utils/stream.js、open-sse/handlers/chatCore/streamingHandler.js。最初のトークンが届き次第表示が始まるため、体感待ち時間が大幅に短縮されます。10. APIキー無効Invalid API key / Authentication failed症状と原因間違ったAPIキーをコピーしたAPIキーが期限切れAPIキーが生成されていない対処手順1. APIキーを再生成Dashboard → Settings → API Keys → Generate New Key → 新しいキーをコピーして使用2. キー形式を確認正しい: 9r_xxxxxxxxxxxxxxxxxxxxxxxx 誤り: 9r_プレフィックスがない9RouterのAPIキーは必ず9r_プレフィックスで始まります。プレフィックスがない場合、9Routerのキーではなく別のサービスOpenAI等のキーが設定されている可能性が高いです。3. CLI設定でキーを確認# Cursor Settings → Models → OpenAI API Key # Cline Settings → API Key # 環境変数 export OPENAI_API_KEY9r_your_key4. APIキーをテストcurl http://localhost:20128/v1/models \ -H Authorization: Bearer 9r_your_key正常なキーであればモデル一覧がJSONで返り、無効なキーであれば認証エラーが返ります。実装の補足APIキーによる認証は、環境変数REQUIRE_API_KEYで必須化を制御できます.env.example。また、プロキシのAPIキー検証はAPI_KEY_SECRETをシードにした署名・検証ロジックと連動しているため、API_KEY_SECRETを変更した場合は再生成したキーでクライアント側を更新する必要があります。11. さらなるヘルプが必要な場合GitHub Issuesバグ報告・機能要望はGitHub Issuesへ公式ドキュメント最新のドキュメントgitbook/content/ja/index.mdを参照FAQfaq.mdトラブルシューティングの基本原則は「エラーを層で切り分ける」ことです。クライアント設定APIキー・モデルID・Base URL→ プロキシ状態ポート・プロセス・クォータ→ 上流プロバイダーレート制限・セッションの順に確認すれば、大半の問題は数分で切り分けられます。そして、Comboフォールバックチェーンとクォータ監視を常時有効にしておくことで、単一プロバイダー起因の障害を未然に吸収できる構成を維持することが、9Router運用の最大のコツです。【免费下载链接】9routerUnlimited FREE AI coding. Connect Claude Code, Codex, Cursor, Cline, Copilot, Antigravity to FREE Claude/GPT/Gemini via 40 providers. Auto-fallback, RTK -40% tokens, never hit limits.项目地址: https://gitcode.com/GitHub_Trending/9r/9router创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考