接入 CC Switch(多供应商配置管理)
功能概述
CC Switch 是一款面向 Claude Code、Codex、Gemini 等多 AI 编程工具的配置管理器。你可以在一个界面里添加多个供应商(官方 / 第三方中转),并在每个供应商卡片底部开启"用量查询",实时看到剩余额度。
无量AI开放平台提供与 OpenAI 兼容的 API 端点以及一个专门的余额查询接口 /v1/balance,可以直接接入 CC Switch:
- 基础配置:把无量作为一个供应商,API Key 和 Base URL 填进去即可调用模型。
- 用量查询:开启"自定义用量查询"后,卡片底部会实时显示账户余额,或该 API Key 的日/月预算剩余。
前提条件
基础配置
- 打开 CC Switch,在顶部 Tab 切换到你的目标配置对象(Claude / Codex / Gemini)。
- 点击「添加自定义配置」。
- 按以下参数填写并保存:
| 字段 | 填写值 |
|---|---|
| 供应商名称 | 自定义,如 无量AI 或 Wuliang |
| API Key | 你在无量控制台创建的 sk-… |
| API 请求地址 | https://open.dieyuyun.com |
保存后,CC Switch 会把对应 AI 工具的请求转发到无量平台。
可选:开启余额 / 预算显示
CC Switch 支持在每个供应商卡片底部显示剩余额度。无量提供了一个专门的余额查询接口,你只需要把下面的"自定义用量查询配置"粘贴进去即可。
步骤
- 在当前供应商卡片中,打开「用量查询」开关。
- 用量 API Key:直接填写与上方相同的无量 API Key(
sk-…)。 - 查询方式选择「自定义」。
- 将下方代码完整粘贴到自定义配置中:
;({
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 || '-'),
}
},
})保存后点击「刷新」,卡片底部会出现余额 / 预算数字,并在 Key 失效时显示红色失效提示。

提示:
{{apiKey}}与{{baseUrl}}会被 CC Switch 自动替换成你在卡片中填写的值。如果你为同一 Key 创建了多个供应商卡片,每张卡片都会显示相同的余额。
接口字段说明
余额查询接口返回的 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),请求直接失败。
排查步骤:
打开 CC Switch 的日志面板(DevTools / 输出区)。
在 extractor 函数第一行加一行日志:
jsextractor: function(response) { console.log("[wuliang]", JSON.stringify(response)); // ... 其余代码保持不变 }保存 + 刷新,看日志:
日志内容 说明 {"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"的预算信息。如果想分别查看:
- 在控制台为每个 Key 复制好完整
sk-…。 - 在 CC Switch 里为每个 Key 创建一个独立的供应商卡片(供应商名可以写成
无量-项目A/无量-项目B)。 - 每张卡片底部会显示对应 Key 的预算或账户余额。
extractor 里为什么优先展示日预算?
如果你的 Key 设置了日预算(例如 ¥20 / 天),CC Switch 卡片显示"今日还能用多少"更有意义;如果没设日预算,则退化为显示账户可用总额。你可以按需要调整 extractor,例如强制只显示账户余额:
extractor: function(response) {
return { remaining: response.balance, unit: response.currency || "CNY" };
}