Appearance
用量查询
不打开控制台也能看今日 / 本周用量、剩余额度和订阅到期时间。两种方式选一种:
- 浏览器插件:装进 Chrome,点工具栏图标查看。不用 CC-Switch 的人选这个
- CC-Switch 用量查询:已经用 CC-Switch 管理配置的,在软件界面里直接显示
最准确的明细(每次调用的模型、Token、扣费)以 控制台用量明细 为准。
浏览器插件
CodexZH 提供了一个 Chrome 浏览器插件。安装后,点击工具栏图标即可查看 API Key 的剩余额度、今日消费、本周额度和订阅到期时间,无需每次打开控制台。

安装只有 3 步
下载插件 → 解压文件 → 在 Chrome 加载解压后的文件夹
不要直接加载 .zip 压缩包,必须先解压。
第 1 步:下载插件
下载完成后,你会得到 codexzh-browser-extension.zip。
第 2 步:解压插件压缩包
Chrome 不能直接加载 .zip 文件,需要先解压。
- Windows:右键点击压缩包 → 选择全部解压缩 → 解压到不会随便删除的位置(如桌面或文档文件夹)。
- macOS:双击压缩包,系统会自动解压出一个文件夹。
解压后打开文件夹,确认里面包含以下文件:
text
manifest.json
popup.html
popup.js
background.js
usage.js选文件夹时要注意
加载插件时,要选择能直接看到 manifest.json 的那层文件夹,不是 .zip 压缩包,也不是外层目录。
第 3 步:打开 Chrome 扩展管理页面
先看一下完整安装流程:
在地址栏输入以下地址并按回车:
text
chrome://extensions/第 4 步:开启开发者模式
在扩展程序页面右上角找到「开发者模式」开关,打开它。
开启后,页面上方会出现「加载已解压的扩展程序」按钮。
第 5 步:加载插件文件夹
点击「加载已解压的扩展程序」,在弹出的文件选择窗口中,选择第 2 步解压出来的、包含 manifest.json 的文件夹。
加载成功后,扩展列表里会出现 CodexZH 插件。
第 6 步:固定到工具栏
- 点击 Chrome 右上角的拼图图标。
- 找到 CodexZH 插件,点击旁边的图钉按钮。
固定后,插件图标会常驻在工具栏。
第 7 步:填写 API Key
点击工具栏中的 CodexZH 插件图标,在弹出的面板中填写你的 API Key(以 sk- 开头),然后点击「保存并刷新」。
保管好 API Key
API Key 是你的使用凭证,不要截图发给别人,也不要粘贴到公开群聊或论坛里。
第 8 步:确认安装成功
配置成功后,插件面板中会显示:
- 实时可用额度 / 本周已用额度 / 周限额度
- 今日消费 / 今日调用量 / 总使用额度
- 订阅开始和到期时间
插件图标上出现绿色数字,说明已正常读取额度。
常见问题
提示找不到 manifest.json
选错文件夹了。重新点击「加载已解压的扩展程序」,选择打开后能直接看到 manifest.json 的那层文件夹。
点了插件但没有数据
通常是 API Key 有误或订阅已到期,请检查:
- API Key 是否以
sk-开头 - 前后是否多复制了空格
- 订阅是否仍然有效
Chrome 提示「开发者模式扩展」
正常现象。插件是手动安装的,不是从 Chrome 网上应用店安装的,会出现这个提示。来源是本文的下载链接,可以继续使用。
如何更新插件?
- 下载并解压新版插件压缩包。
- 打开
chrome://extensions/,找到 CodexZH 插件。 - 点击刷新按钮(如果是覆盖原文件夹);或删除旧版后重新加载新版文件夹。
隐私说明
- API Key 存储在浏览器本地,不会同步到 Google 账号,也不会上传到服务器。
- 插件只请求 CodexZH 的用量查询接口,不会替你发起任何模型调用。
CC-Switch 用量查询
在 CC-Switch 里配置自定义用量查询,界面上会显示今日用量、本周用量、消费金额等。还没装 CC-Switch 的见 CC Switch 一键导入。
效果图

步骤 1:打开用量查询设置
在 CC-Switch 中找到用量查询入口,点击进入设置页面。

步骤 2:预设模版选择 自定义

步骤 3:填写提取器代码
把下方代码完整粘贴到提取器输入框中,把 key= 后面的内容换成你控制台里 sk- 开头的 API Key。点底部「测试脚本」,没问题再保存。

javascript
({
request: {
url: "https://codexzh.com/api/v1/usage/stats?key=把你自己的 apikey,sk-开头的粘贴到这里,注意删除中括号",
method: "GET",
headers: {
"Content-Type": "application/json",
},
},
extractor: function (response) {
const data = response?.success ? response.data : null;
if (!data) {
return {
isValid: false,
invalidMessage: response?.message || response?.error || "查询失败",
};
}
const TOKEN_PER_USD = 500000;
const toNumberOrNull = (value) => {
if (value === null || value === undefined || value === "") return null;
if (typeof value === "number") return Number.isFinite(value) ? value : null;
if (typeof value === "string") {
const normalized = value.replace(/[$,\s]/g, "");
if (!normalized) return null;
const parsed = Number(normalized);
return Number.isFinite(parsed) ? parsed : null;
}
return null;
};
const toNumber = (value, fallback = 0) => {
const parsed = toNumberOrNull(value);
return parsed === null ? fallback : parsed;
};
const quotaPointsToUsd = (points) => toNumber(points) / TOKEN_PER_USD;
const formatUsd = (value) => `$${toNumber(value).toFixed(2)}`;
const formatUsdFromApi = (formattedValue, rawValue) => {
if (typeof formattedValue === "string" && formattedValue.trim()) {
return formattedValue.trim().startsWith("$")
? formattedValue.trim()
: `$${formattedValue.trim()}`;
}
return formatUsd(rawValue);
};
const formatCount = (value) => Math.round(toNumber(value)).toLocaleString("zh-CN");
const dailyBudgetUsd = toNumberOrNull(data.dailyBudget) ?? quotaPointsToUsd(data.dailyQuota);
const weeklyBudgetUsd = toNumberOrNull(data.weeklyBudget) ?? quotaPointsToUsd(data.weeklyQuota);
const todayUsedUsd = toNumber(data.todayUsed);
const weekUsedUsd = toNumber(data.weekUsed);
const totalUsedUsd = toNumberOrNull(data.analyticsTotalUsed) ?? toNumber(data.totalUsed);
const todayRemainingUsd = Math.max(dailyBudgetUsd - todayUsedUsd, 0);
const realtimeRemainingUsd = toNumberOrNull(data.remainQuota);
const weekRemainingUsd = realtimeRemainingUsd ?? Math.max(weeklyBudgetUsd - weekUsedUsd, 0);
return {
isValid: true,
planName: "Usage Stats",
unit: "USD",
// 主指标改为本周口径:周限额度 / 本周消费 / 实时剩余
total: weeklyBudgetUsd,
used: weekUsedUsd,
remaining: weekRemainingUsd,
extra: [
`今日调用:${formatCount(data.todayCalls)}`,
`今日消费:${formatUsdFromApi(data.todayUsedFormatted, todayUsedUsd)}`,
`今日 Token:${formatCount(data.todayTokens)}`,
`日限额度:${formatUsd(dailyBudgetUsd)}`,
`今日剩余:${formatUsd(todayRemainingUsd)}`,
`本周调用:${formatCount(data.weekCalls ?? data.totalCalls)}`,
`本周消费:${formatUsdFromApi(data.weekUsedFormatted, weekUsedUsd)}`,
`周限额度:${formatUsd(weeklyBudgetUsd)}`,
`实时剩余:${formatUsd(weekRemainingUsd)}`,
`总请求次数:${formatCount(data.totalRequests ?? data.totalCalls)}`,
`总使用额度:${formatUsdFromApi(data.analyticsTotalUsedFormatted ?? data.totalUsedFormatted, totalUsedUsd)}`,
`总使用 Token:${formatCount(data.totalTokens)}`,
`RPM:${formatCount(data.rpm)}`,
`TPM:${formatCount(data.tpm)}`,
`订阅开始:${data.subscriptionStart ?? "-"}`,
`订阅到期:${data.subscriptionEnd ?? "-"}`,
].join("\n"),
};
},
});步骤 4:保存配置
点击右下角「保存」按钮,配置立即生效。
配置成功后,CC-Switch 会自动查询并展示:
- 今日/本周调用次数
- 今日/本周/总消费金额
- 今日剩余额度、本周剩余额度
- 当前 RPM / TPM 限速情况
- 订阅有效期