Files
CC-Switch/docs/user-manual/ja/2-providers/2.5-usage-query.md
T
Jason c4630b5c26 feat(providers): add Volcengine Ark usage query with AK/SK signing
Query coding-plan / agent-plan usage for Volcengine Ark via the
control-plane OpenAPI (open.volcengineapi.com), which requires
account-level AccessKey signing rather than the inference API key.

- Implement Volcengine Signature V4 (an AWS SigV4 variant: fixed
  canonical header order, "HMAC-SHA256" algorithm without the AWS4
  prefix, scope ending in "request", service "ark") in
  services/coding_plan.rs
- Auto-detect the plan by probing GetAFPUsage (Agent Plan, AFP
  five-hour/weekly/monthly quotas) first, falling back to
  GetCodingPlanUsage (Coding Plan, session/weekly/monthly percentages);
  a single credential covers whichever plan the account holds
- Parse the real response shape: the window label lives in the `Level`
  field; guard ResetTimestamp <= 0 (session returns -1)
- Store account-level credentials on UsageScript (accessKeyId /
  secretAccessKey), threaded through both the test command and the
  TOKEN_PLAN auto-refresh path
- Add an independent AK/SK input block with a detailed hint pointing to
  the Volcengine console -> API Access Keys
- Add the `monthly` tier label (frontend TIER_I18N_KEYS + tray
  TIER_LABEL_GROUPS + subscription service)
- Sync zh / en / ja / zh-TW locales and the usage-query docs
2026-06-22 10:28:10 +08:00

13 KiB
Raw Blame History

2.5 使用量クエリ

CC Switch のクォータ・残高表示は 2 つのカテゴリに分かれます:自動クエリ(公式サブスクリプション系、すぐに使える)と 手動有効化(内蔵テンプレート + カスタムスクリプト、ユーザー設定後に表示)。

カテゴリ 範囲 ユーザー操作必要
自動クエリ Claude / Codex / Gemini 公式サブスクリプション、GitHub Copilot、Codex OAuth リバースプロキシ 不要(デフォルト有効)
手動有効化(内蔵テンプレート) Token Plan、第三者残高クエリ 必要(下記参照)
手動有効化(カスタムスクリプト) 内蔵テンプレート未対応の中継サービス、プライベートデプロイ、特殊 API 必要(下記参照)

自動クエリ(公式サブスクリプション系)

v3.13.0 より、以下の 3 カテゴリはプロバイダー有効化後に 自動的 にカード下部にクォータが表示され、追加設定は不要です:

カテゴリ 対象プロバイダー 表示内容
公式サブスクリプション Claude / Codex / Gemini 公式ログイン 公式サブスクリプションクォータ
GitHub Copilot Copilot プロバイダーカード Premium interactions 残量
Codex OAuth Codex OAuth リバースプロキシカード(Claude プロバイダー) ChatGPT アカウント Codex クォータ

これら 3 カテゴリの共通点は、データソースが唯一かつ意味が明確 であることです(公式サブスクリプションの使用率)。そのため CC Switch は対応する公式または OAuth クエリエンドポイントを直接呼び出します。

自動クエリの操作

  • カード下部表示:使用率 + リセットまでのカウントダウン、使用率に応じて色が変化(< 70% 緑 / 7089% オレンジ / ≥ 90% 赤)
  • 手動更新:カード上の更新アイコンをクリックして再取得
  • カードの簡略化:これら 3 カテゴリでは、ヘルスチェック使用量クエリ設定 ボタンが自動的に非表示となり、内蔵表示への干渉を防ぎます
  • セッション期限切れ通知:Token の更新に失敗した場合、カードに黄色の「セッション期限切れ」警告が表示されます(Copilot / Codex OAuth

手動有効化(内蔵テンプレート + カスタムスクリプト)

上記 3 カテゴリの自動クエリ対応プロバイダー以外、その他すべてのプロバイダー(Token Plan、第三者残高クエリ、各種中継サービスを含む)では、プロバイダーカード上で 手動で「使用量クエリ」スイッチをオン にして初めてクォータが表示されます。

なぜ手動有効化が必要なのか?

重要な理由の一つは:同じリクエスト URL(同じベンダー)が複数のクエリモードを提供している場合がある ことです —— プランごとのクォータクエリと、アカウント残高クエリの両方が存在する可能性があります。CC Switch はどちらをクエリすべきか自動判定できないため、このようなプロバイダーの内蔵クエリは デフォルトで無効 になっており、適切なテンプレートを選択してから有効化する必要があります。

内蔵テンプレートの対象範囲

v3.13.0 では以下のカテゴリに すぐに使える内蔵テンプレート を提供しており、有効化後にスクリプトを書く必要はありません:

カテゴリ 対象プロバイダー テンプレートタイプ
Token Plan Kimi / Zhipu GLM / MiniMax / Volcengine(火山方舟) プランクォータ(使用進捗付き)
第三者残高 DeepSeek / StepFun / SiliconFlow / OpenRouter / Novita AI 公式残高クエリ

ヒント:上記の内蔵テンプレート以外で対象外のプロバイダーには、カスタムスクリプト 方式(下記参照)で独自のクエリロジックを記述できます。

有効化手順

  1. プロバイダーカードにマウスをホバーして操作ボタンを表示
  2. 使用量クエリ ボタン(📊 アイコン)をクリック
  3. 設定パネル上部の 使用量クエリを有効にする スイッチをオンにする
  4. 適切な内蔵テンプレート(Token Plan、第三者残高など)または「カスタム」を選択
  5. 必要に応じて API Key / Base URL / Access Token などのパラメータを入力(多くの場合は空欄のままプロバイダー自身の認証情報を使用可能)
  6. 「スクリプトをテスト」をクリックして正常に応答するか確認
  7. 設定を保存 —— 次回プロバイダーを有効化すると、カード下部にクォータが表示されます

⚠️ 注意:有効化後の自動更新間隔は「自動クエリ間隔」フィールドで制御します(0 に設定すると自動更新を無効化)。プロバイダーが「現在有効」状態のときのみバックグラウンドクエリがトリガーされます。


カスタムスクリプトクエリ(高度)

機能説明

プロバイダーが 内蔵テンプレートの対象範囲外 の場合、JavaScript でカスタムクエリスクリプトを記述できます。中継サービス、プライベートデプロイ、特殊な API 形式などに適しています。

使用シーン

  • API アカウントの残額確認
  • プランの使用状況の監視
  • 複数プランの残額を集約表示

設定を開く

  1. プロバイダーカードにマウスをホバーして操作ボタンを表示
  2. 「使用量クエリ」ボタンをクリック
  3. 使用量クエリ設定パネルが開く

使用量クエリの有効化

設定パネル上部の「使用量クエリを有効にする」スイッチをオンにします。

プリセットテンプレート

CC Switch は 3 種類のプリセットテンプレートを提供しています:

カスタムテンプレート

リクエストと抽出ロジックを完全にカスタマイズします。特殊な API 形式に対応します。

汎用テンプレート

ほとんどの標準的な API 形式のプロバイダーに適しています:

({
  request: {
    url: "{{baseUrl}}/user/balance",
    method: "GET",
    headers: {
      "Authorization": "Bearer {{apiKey}}",
      "User-Agent": "cc-switch/1.0"
    }
  },
  extractor: function(response) {
    return {
      isValid: response.is_active || true,
      remaining: response.balance,
      unit: "USD"
    };
  }
})

設定パラメータ

パラメータ 説明
API Key 認証用のキー(任意、空欄の場合はプロバイダーに設定されたキーを使用)
Base URL API ベースアドレス(任意、空欄の場合はプロバイダーのエンドポイントを使用)

New API テンプレート

New API タイプの中継サービス専用に設計されています:

({
  request: {
    url: "{{baseUrl}}/api/user/self",
    method: "GET",
    headers: {
      "Content-Type": "application/json",
      "Authorization": "Bearer {{accessToken}}",
      "New-Api-User": "{{userId}}"
    },
  },
  extractor: function (response) {
    if (response.success && response.data) {
      return {
        planName: response.data.group || "デフォルトプラン",
        remaining: response.data.quota / 500000,
        used: response.data.used_quota / 500000,
        total: (response.data.quota + response.data.used_quota) / 500000,
        unit: "USD",
      };
    }
    return {
      isValid: false,
      invalidMessage: response.message || "クエリ失敗"
    };
  },
})

設定パラメータ

パラメータ 説明
Base URL New API サービスアドレス
Access Token アクセストークン
User ID ユーザー ID

共通設定

タイムアウト時間

リクエストのタイムアウト時間(秒)、デフォルトは 10 秒。

自動クエリ間隔

使用量データの自動更新間隔(分):

  • 0 に設定すると自動クエリを無効化
  • 範囲:0-1440 分(最長 24 時間)
  • プロバイダーが「現在有効」のときのみ動作

エクストラクターの戻り値形式

エクストラクター関数は以下のフィールドを含むオブジェクトを返します。すべてのフィールドは任意です:

フィールド 必須 説明
isValid boolean いいえ アカウントが有効かどうか、デフォルト true
invalidMessage string いいえ 無効時の通知メッセージ
remaining number いいえ 残額
unit string いいえ 単位(例:USD、CNY、回)
planName string いいえ プラン名(複数プラン対応)
total number いいえ 総額
used number いいえ 使用済み額
extra string いいえ 追加表示テキスト

スクリプトのテスト

設定完了後、「スクリプトをテスト」ボタンをクリックして確認します:

  1. 設定された URL にリクエストを送信
  2. エクストラクター関数を実行
  3. 結果またはエラー情報を表示

表示効果

設定が成功すると、プロバイダーカードに以下が表示されます:

  • 単一プラン:残額を直接表示
  • 複数プラン:プラン数を表示、クリックで詳細を展開

変数プレースホルダー

スクリプト内で以下のプレースホルダーを使用でき、実行時に自動的に置換されます:

プレースホルダー 説明
{{apiKey}} 設定された API Key
{{baseUrl}} 設定された Base URL
{{accessToken}} 設定された Access TokenNew API
{{userId}} 設定された User IDNew API

一般的なプロバイダーの設定例

トラブルシューティング

自動クエリにクォータが表示されない(公式サブスクリプション系)

確認事項

  1. プロバイダーが公式サブスクリプション系であることを確認 —— Claude / Codex / Gemini 公式ログイン、GitHub Copilot、Codex OAuth リバースプロキシ
  2. プロバイダーが「現在有効」状態か(非アクティブ時はクエリがトリガーされません)
  3. OAuth タイプ(Copilot / Codex OAuth)の場合、Token がまだ有効期限内か確認。カードに「セッション期限切れ」と表示される場合は OAuth 認証センター で再ログインしてください
  4. 公式クォータエンドポイントへのネットワークアクセス可否

手動有効化後もクォータが表示されない

確認事項

  1. プロバイダーカードの「使用量クエリ」パネル上部にある 使用量クエリを有効にする スイッチがオンか
  2. 適切な内蔵テンプレート(Token Plan / 第三者残高 / カスタム)が選択されているか
  3. 「スクリプトをテスト」をクリックして具体的なエラー情報を確認
  4. API Key / Base URL などの必須フィールドが正しく入力されているか
  5. プロバイダーのクォータエンドポイントへのネットワークアクセス可否
  6. プロバイダーが「現在有効」状態のときのみ、バックグラウンドの自動更新がトリガーされます

クエリ失敗

確認事項

  1. API Key が正しいか
  2. Base URL が正しいか
  3. ネットワークがアクセス可能か
  4. タイムアウト時間が十分か

返却データが空

確認事項

  1. エクストラクター関数に return 文があるか
  2. レスポンスのデータ構造がエクストラクターと一致しているか
  3. 「スクリプトをテスト」で生のレスポンスを確認

フォーマット失敗

スクリプトに構文エラーがある場合、「フォーマット」ボタンをクリックするとエラー箇所が表示されます。

注意事項

  • 使用量クエリは少量の API リクエスト枠を消費します
  • 頻繁なリクエストを避けるため、適切な自動クエリ間隔を設定してください
  • 機密情報(API Key、Token)はローカルに安全に保存されます