Skip to content

CC Switch

当前状态:待复验。本页按 CC Switch 自定义用量查询格式编写;生产使用前,应通过 CC Switch 的“测试脚本”确认当前版本、接口部署状态和卡片展示结果。

前置条件

  • 在 Token Factory 控制台创建可撤销的 API Key,不要把真实 Key 写入脚本、截图或仓库。
  • 在 CC Switch 中先创建对应供应商,并准确选择通用余额或 Coding Plan 的 Base URL。
  • CC Switch 的默认“通用模板”把单位固定为 USD,且 response.is_active || true 会把无效状态误判为有效,因此本页统一使用“自定义”模板。
  • 用量查询只读,不扣余额、不预留套餐次数,也不会产生模型调用。

入口与计费方式

CC Switch 会在供应商 Base URL 后追加 /user/balance。四种配置对应如下:

权益协议供应商 Base URL实际查询地址展示内容
通用余额OpenAI 兼容https://tokenfactory.cn/api/v1/api/v1/user/balance剩余人民币金额
通用余额Anthropic Messageshttps://tokenfactory.cn/api/api/user/balance剩余人民币金额
Coding PlanOpenAI 兼容https://tokenfactory.cn/api/v1/coding/api/v1/coding/user/balance5 小时与周限剩余百分比
Coding PlanAnthropic Messageshttps://tokenfactory.cn/api/anthropic/api/anthropic/user/balance5 小时与周限剩余百分比

四个用量查询地址都使用:

http
Authorization: Bearer <API Key>

即使供应商使用 Anthropic Messages 协议,用量查询也不使用 x-api-key。通用余额和 Coding Plan 权益相互隔离,不会自动切换或改扣另一种权益。

准确配置

  1. 在 CC Switch 打开对应供应商卡片。
  2. 点击“用量查询”,开启用量查询开关。
  3. 选择“自定义”模板。
  4. 如果供应商卡片已经配置正确的 Base URL 和 API Key,用量查询面板中的同名可选字段保持空白。
  5. 粘贴下面的完整脚本,先点击“测试脚本”,确认结果后再保存。
js
({
  request: {
    url: "{{baseUrl}}/user/balance",
    method: "GET",
    headers: {
      "Authorization": "Bearer {{apiKey}}",
      "User-Agent": "cc-switch/1.0"
    }
  },

  extractor: function(response) {
    if (!response || typeof response.balance === "undefined") {
      return {
        isValid: false,
        invalidMessage:
          response &&
          response.error &&
          response.error.message
            ? response.error.message
            : "查询失败"
      };
    }

    // 套餐响应即使无可用套餐,也始终包含 active 或 calls 单位。
    var isPackage =
      typeof response.active !== "undefined" ||
      response.unit === "calls";

    if (isPackage) {
      if (
        response.active !== true ||
        !response.fiveHour ||
        !response.weekly
      ) {
        return {
          isValid: false,
          invalidMessage: response.message || "没有可用套餐"
        };
      }

      var fiveHourUsed = Number(response.fiveHour.usedPercent);
      var weeklyUsed = Number(response.weekly.usedPercent);

      var fiveHourRemaining = Number.isFinite(fiveHourUsed)
        ? Math.max(0, Math.min(100, 100 - fiveHourUsed))
        : 0;

      var weeklyRemaining = Number.isFinite(weeklyUsed)
        ? Math.max(0, Math.min(100, 100 - weeklyUsed))
        : 0;

      return {
        isValid: true,
        // CC Switch 卡片按单行显示 extra,使用短文案避免省略号截断。
        extra:
          "5h剩" +
          fiveHourRemaining +
          "%|周剩" +
          weeklyRemaining +
          "%"
      };
    }

    var balance = Number(response.balance);

    if (!Number.isFinite(balance)) {
      return {
        isValid: false,
        invalidMessage: "余额格式错误"
      };
    }

    return {
      isValid: response.is_active === true,
      invalidMessage:
        response.is_active === true
          ? undefined
          : "账户不可用",
      remaining: balance,
      unit: "人民币"
    };
  }
})

不要在套餐分支返回 remainingusedtotalunit。否则 CC Switch 会自动在 extra 前增加“已使用、剩余”等内容,挤压双窗口文案。

验证

在 CC Switch 的“测试脚本”中依次确认:

配置预期请求预期卡片内容
通用余额 OpenAIGET /api/v1/user/balance剩余:10000.00 人民币
通用余额 AnthropicGET /api/user/balance剩余:10000.00 人民币
Coding Plan OpenAIGET /api/v1/coding/user/balance5h剩100%|周剩100%
Coding Plan AnthropicGET /api/anthropic/user/balance5h剩100%|周剩100%

实际数值以账户余额和当前套餐窗口为准。套餐剩余百分比按 100 - usedPercent 计算;两个窗口都会展示,不用一个窗口替代另一个窗口。

故障排查

  • 404 资源不存在:当前生产版本可能尚未发布用量查询接口,或供应商 Base URL 配置错误。先核对上表的四个 Base URL。
  • 401 无效的 API Key:确认脚本使用 Authorization: Bearer ,不要改成 x-api-key
  • 显示 USD:仍在使用 CC Switch 默认通用模板;切换到“自定义”并保存本页脚本。
  • 套餐显示成人民币:旧脚本只通过 fiveHour 是否非空判断套餐,无套餐时会误判。应完整替换为本页脚本。
  • 套餐文字出现省略号:CC Switch 卡片是单行展示,不要恢复“5小时剩余”等长文案,保持 5h剩…|周剩…
  • 没有自动刷新:确认供应商处于当前启用状态,并检查用量查询开关和自动刷新间隔。

完整响应字段和接口语义见用量与余额查询

安全提示

  • 脚本中只保留 占位符,不粘贴真实 Key。
  • 测试结果、错误截图和导出配置不得包含明文凭证。
  • API Key 泄露后应立即在控制台禁用并重新创建,不要仅删除本地配置。
  • 查询失败不代表模型调用失败;不要因为用量卡片异常自动切换余额与套餐入口。

更新信息

本页保持待复验。完成真实版本验证后,应补充 CC Switch 版本、验证日期、四个入口的测试结果和已知显示限制。

Token Factory · 国产合规 AI Gateway