Skip to content

接入 CC Switch(多供应商配置管理)

功能概述

CC Switch 是一款面向 Claude Code、Codex、Gemini 等多 AI 编程工具的配置管理器。你可以在一个界面里添加多个供应商(官方 / 第三方中转),并在每个供应商卡片底部开启"用量查询",实时看到剩余额度。

无量AI开放平台提供与 OpenAI 兼容的 API 端点以及一个专门的余额查询接口 /v1/balance,可以直接接入 CC Switch:

  • 基础配置:把无量作为一个供应商,API Key 和 Base URL 填进去即可调用模型。
  • 用量查询:开启"自定义用量查询"后,卡片底部会实时显示账户余额,或该 API Key 的日/月预算剩余。

前提条件

  • 已下载并安装 CC Switch
  • 已在无量AI开放平台创建 API Key(前往创建)。
  • 账户已完成充值,或该 API Key 已配置日/月预算(可选)。

基础配置

  1. 打开 CC Switch,在顶部 Tab 切换到你的目标配置对象(Claude / Codex / Gemini)。
  2. 点击「添加自定义配置」。
  3. 按以下参数填写并保存:
字段填写值
供应商名称自定义,如 无量AIWuliang
API Key你在无量控制台创建的 sk-…
API 请求地址https://open.dieyuyun.com

保存后,CC Switch 会把对应 AI 工具的请求转发到无量平台。

可选:开启余额 / 预算显示

CC Switch 支持在每个供应商卡片底部显示剩余额度。无量提供了一个专门的余额查询接口,你只需要把下面的"自定义用量查询配置"粘贴进去即可。

步骤

  1. 在当前供应商卡片中,打开「用量查询」开关。
  2. 用量 API Key:直接填写与上方相同的无量 API Key(sk-…)。
  3. 查询方式选择「自定义」。
  4. 将下方代码完整粘贴到自定义配置中:
js
;({
  request: {
    url: '{{baseUrl}}/v1/balance',
    method: 'GET',
    headers: { Authorization: 'Bearer {{apiKey}}' },
  },
  extractor: function (response) {
    // 1) 错误处理:API Key 无效 / 被禁用 / 余额为 0 时,卡片会显示失效提示
    if (response && response.error) {
      return {
        isValid: false,
        invalidMessage: response.error.message || '接口调用失败',
      }
    }
    if (!response || typeof response.balance !== 'number') {
      return { isValid: false, invalidMessage: '响应格式异常' }
    }

    // 2) 基础字段
    var unit = response.currency || 'CNY'
    var key = response.api_key || {}
    var balance = response.balance

    // 3) 优先展示 Key 的日预算;否则退化为账户余额
    if (key.daily_budget != null && key.daily_remaining != null) {
      var extraParts = []
      if (key.daily_reset_at) extraParts.push('重置: ' + key.daily_reset_at)
      if (key.monthly_budget != null) {
        extraParts.push('月预算: ' + key.monthly_remaining + '/' + key.monthly_budget)
      }
      return {
        isValid: true,
        remaining: key.daily_remaining,
        total: key.daily_budget,
        used: key.daily_used,
        unit: unit,
        planName: '无量 · ' + (key.name || '日预算'),
        extra: extraParts.join(' · ') || undefined,
      }
    }

    if (key.monthly_budget != null && key.monthly_remaining != null) {
      return {
        isValid: true,
        remaining: key.monthly_remaining,
        total: key.monthly_budget,
        used: key.monthly_used,
        unit: unit,
        planName: '无量 · ' + (key.name || '月预算'),
        extra: key.monthly_reset_at ? '重置: ' + key.monthly_reset_at : undefined,
      }
    }

    // 4) 未设预算:仅展示账户可用总额
    return {
      isValid: true,
      remaining: balance,
      unit: unit,
      planName: '无量 · 按量计费',
      extra: 'Key: ' + (key.name || '-'),
    }
  },
})
  1. 保存后点击「刷新」,卡片底部会出现余额 / 预算数字,并在 Key 失效时显示红色失效提示。

    CC Switch 余额显示成功示例

提示{{apiKey}}{{baseUrl}} 会被 CC Switch 自动替换成你在卡片中填写的值。如果你为同一 Key 创建了多个供应商卡片,每张卡片都会显示相同的余额。

接口字段说明

余额查询接口返回的 JSON 结构:

json
{
  "object": "balance",
  "currency": "CNY",
  "balance": 138.5,
  "api_key": {
    "id": "1923456789012345678",
    "name": "claude-code",
    "daily_budget": 20.0,
    "daily_used": 3.25,
    "daily_remaining": 16.75,
    "daily_reset_at": "2026-06-09T00:00:00+08:00",
    "monthly_budget": null,
    "monthly_used": null,
    "monthly_remaining": null,
    "monthly_reset_at": null
  }
}
字段说明
currency固定 CNY(人民币)。
balance可用总额(元),包含充值余额与赠金余额。
api_key.id / api_key.name当前 API Key 的 ID 与名称。
api_key.daily_budget该 Key 的日预算(元),未设置则为 null
api_key.daily_used当日已消费(元)。
api_key.daily_remaining当日剩余预算(元),max(0, daily_budget - daily_used)
api_key.daily_reset_at下一次日预算重置时间(本地时区 ISO8601)。
api_key.monthly_budget / monthly_used / monthly_remaining / monthly_reset_at月预算相关字段,语义同上。

extractor 里用到的 CC Switch 标准字段(所有字段均为可选):

extractor 返回字段说明
isValid布尔值,套餐是否有效;为 false 时卡片显示红色失效状态。
invalidMessage字符串,失效原因说明(仅当 isValid=false 时显示)。
remaining剩余额度数值(推荐填写,卡片主体数字)。
unit货币单位,无量统一返回 CNY
planName套餐名称,如 无量 · claude-code
total总额度,用于显示进度条。
used已用额度。
extra扩展字段,可自由追加文本,如"重置时间"或"月预算剩余"。

常见问题

卡片底部一直显示 0.00 USD(或模板默认值)

这是 CC Switch 默认 extractor 模板的返回值({ remaining: 0, unit: "USD" }),说明我们的 extractor 没真正生效。常见原因:

  • 只替换了 request 部分,没替换 extractor 函数体:请把 ({}) 整块一起替换,extractor 函数里不能只剩 return { remaining: 0, unit: "USD" }
  • 自定义配置没保存:粘贴完代码后一定要点"保存",再点卡片右上角的刷新按钮。
  • 「API 请求地址」字段是空的{{baseUrl}} 变量从这个字段取值,留空会把 URL 变成 /v1/balance(无 host),请求直接失败。

排查步骤:

  1. 打开 CC Switch 的日志面板(DevTools / 输出区)。

  2. 在 extractor 函数第一行加一行日志:

    js
    extractor: function(response) {
      console.log("[wuliang]", JSON.stringify(response));
      // ... 其余代码保持不变
    }
  3. 保存 + 刷新,看日志:

    日志内容说明
    {"object":"balance",…,"balance":1198.1,…}接口正常,问题在 extractor 后半段。
    {"error":{"message":"…","code":"invalid_api_key"}}Key 鉴权失败,去控制台检查 Key 状态。
    undefined / null / 没日志请求根本没发出去,多半是 {{baseUrl}} 空了。

卡片底部显示 0 或 N/A(单位是 CNY)

  • 确认 API Key 处于 active 状态(未被禁用或逻辑删除)。
  • 确认 API Key 填写正确(sk- 前缀,完整 32 位)。
  • 点击卡片右上角刷新按钮,触发一次用量查询。
  • 若账户余额为 0 且 Key 未设置预算,remaining 会返回 0,属正常。

提示 invalid_api_key 或 401 错误

  • API Key 可能已禁用或过期,请到控制台 管理 API Key 查看状态。
  • 确认复制 Key 时没有遗漏字符。

为什么余额与控制台显示一致?

balance 字段是充值余额 + 赠金余额的合计,等于控制台的"可用总额"。控制台 财务概览 里可以分别看到充值、赠金、累计消费等明细。

想分别查看多个 Key 的预算

无量 API 每次只返回"当前请求所用 Key"的预算信息。如果想分别查看:

  1. 在控制台为每个 Key 复制好完整 sk-…
  2. 在 CC Switch 里为每个 Key 创建一个独立的供应商卡片(供应商名可以写成 无量-项目A / 无量-项目B)。
  3. 每张卡片底部会显示对应 Key 的预算或账户余额。

extractor 里为什么优先展示日预算?

如果你的 Key 设置了日预算(例如 ¥20 / 天),CC Switch 卡片显示"今日还能用多少"更有意义;如果没设日预算,则退化为显示账户可用总额。你可以按需要调整 extractor,例如强制只显示账户余额:

js
extractor: function(response) {
  return { remaining: response.balance, unit: response.currency || "CNY" };
}

相关链接