用量查询

flexgate status 和 flexgate usage 会逐一查询每个 key 的用量/额度。 默认输出统一摘要:每个 key 一行,包含套餐名、5 小时窗口余额百分比、 周窗口余额百分比、5 小时窗口剩余时间(距重置的倒计时)和周用量剩余时间; --verbose 才显示各适配器的原始明细。

各平台的查询方式差异很大(有的平台根本没有可用的接口),flexgate 按 base_url 自动选择适配器:

平台

查询方式

说明

MiniMax(api.minimaxi.com / api.minimax.io)

GET /v1/api/openplatform/coding_plan/remains(Bearer 认证,复用 provider key)

官方 token plan 接口,返回 5 小时窗口和周窗口的剩余次数(注意响应里 *_usage_count 字段实际是剩余量)

Kimi Code(api.kimi.com)

GET {base}/v1/usages(Bearer 认证,复用 provider key)

未公开文档、与 Kimi Code CLI /usage 相同的接口,返回周配额、5 小时滚动窗口剩余量和并发上限

z.ai 个人版(api.z.ai)

GET /api/monitor/usage/quota/limit(Authorization 直接带 key)

未公开文档、但 z.ai 官方 coding 插件在用的接口,返回各窗口已用百分比与重置时间。仅对 GLM Coding Plan 个人订阅有效:按量付费 key 会返回"当前用户不存在coding plan"并退化为 probe

智谱团队版(open.bigmodel.cn)

GET /api/monitor/usage/quota/limit?type=2,带 bigmodel-organization/bigmodel-project 头(取自 key 条目的 organization/project 字段)

同一 monitor 接口的团队版变体,返回 5 小时/每周窗口的积分用量(绝对值 + 百分比 + 重置时间);另查 querySubscribeDetail 显示套餐名与有效期。key 条目未配 organization/project 时不查询,退化为 probe(团队 key 不适用个人版接口)

USTC(api.llm.ustc.edu.cn,LiteLLM)

GET /key/info(Bearer 认证)

LiteLLM proxy 自带的 key 信息接口,返回 spend / max_budget / 限速等

小米 MiMo(token-plan-cn.xiaomimimo.com)

无 key 可用的官方接口(控制台内部接口需要浏览器 cookie,不采用)

退化为 minimal probe

其他/未知平台

minimal chat probe

发一条输入 "hi"、max_tokens=128 的最小 /v1/messages 请求,验证 key 是否还能正常服务(会消耗极少量额度)

如果某平台的专用接口调用失败,flexgate 会自动退化为 minimal probe 再试 一次。

小心

用量查询接口多为平台内部接口,可能随时变动;查询结果仅供参考。

统一摘要(默认输出)

Usage (timeout 15s per key)
  zai
    ✓ #1 cbc4***sL7n [main]  plan pro   5h 88% · 4h 36m   weekly 81% · 6d 16h 15m
    ✓ #2 302b***RLBh [gsj]   plan max   5h 100% · —   weekly 99% · 6d 17h 46m
  ustc
    ✗ #1 sk-G***jJYg  LiteLLM /key/info failed (ConnectError: ); probe: ConnectError:
  • plan:套餐名(z.ai 的 pro/max、智谱团队的套餐名、Kimi 的会员等级); 平台不提供时显示 —。

  • 5h / weekly 百分比:窗口剩余百分比(≤25% 黄色、≤10% 红色)。

  • 倒计时:距窗口重置的剩余时间。--time-format 控制格式:

    • dhm(默认):4d 4h 23m / 2h 47m / 23m

    • hours:52.1h

    • minutes:3125m

  • 无配额接口的 key(probe / 缓存失败)只显示一行方法或错误摘要。

"?" 值的语义

平台有时不返回某项数据(verbose 明细里显示 ?)。统一摘要按如下处理:

  • 余额 ? → 0%:平台没有报余额时按 0 计(如 Kimi 的 weekly remaining ?/100)。

  • 重置时间 ? → —(无倒计时):平台没有返回重置时间通常表示 窗口未激活、没有正在进行的计数(如 z.ai / 智谱 5h 窗口用量为 0 时)。 JSON 输出中对应字段为 null。

--verbose:原始明细

flexgate usage --verbose(flexgate status --verbose 同理)输出各适配器 的原始逐行信息,与旧版输出一致:

Usage (timeout 15s per key)
  kimi:
    ✓ key #1 (sk-k***66N6) [ywj]  Kimi Code usages API (unofficial)
        plan: advanced
        weekly remaining 63/100 (reset 08-28 22:17)
        5h window remaining 74/100 (reset 08-23 14:17)
        parallel limit: 30
  zhipu-team:
    ✓ key #2 (ddb6***oZoj) [zhangsiyi]  zhipu team quota API (unofficial)
        plan: 团队套餐高级版 (until 2026-10-14, auto-renew off)
        5h window: used 264/35000 credits (1%), reset 09-25 14:00
        weekly window: used 93043/155000 credits (60%), reset 09-28 16:17

--json:结构化输出

flexgate usage --json(以及 flexgate status --json 的 usage 字段)输出 结构化数据;--json --verbose 额外附带每个 key 的 raw_lines:

{
  "ok": true,
  "version": "0.10.0",
  "timeout": 15.0,
  "skipped": 0,
  "providers": [
    {
      "provider": "minimax",
      "keys": [
        {
          "index": 1,
          "key": "sk-c***jbgk",
          "note": "main",
          "ok": true,
          "skipped": false,
          "method": "MiniMax coding_plan API",
          "adapter_error": null,
          "plan": null,
          "five_hour": {
            "remaining_percent": 100.0,
            "remaining_seconds": 9241,
            "reset_at": "2026-10-07T20:00:00+08:00",
            "window_hours": 5.0
          },
          "weekly": {
            "remaining_percent": 99.0,
            "remaining_seconds": 369241,
            "reset_at": "2026-10-12T00:00:00+08:00"
          }
        }
      ]
    }
  ]
}
  • 字段语义与统一摘要一致:余额未知 → remaining_percent: 0.0; 重置时间未知 → remaining_seconds/reset_at 为 null。

  • 平台额外信息保留在 window_hours(如 5.0)和 used(原始用量文本)。

  • key 一律掩码显示,永不输出明文。

查询失败缓存与 --force

用量查询中报错的 key(彻底失败,或专用接口报错但 probe 证明 key 仍 可用)会记录到 ~/.flexgate/usage-cache.json(只存 key 的 sha256 指纹和 结果文本,不存 key 明文),此后 flexgate status / flexgate usage 默认跳过这些 key——不再发起任何网络请求,直接显示缓存的错误和一行 提示:

Usage (timeout 15s per key)
  2 key(s) skipped — last check failed (recheck with: flexgate usage --force)
  zai
    ✓ key #1 (9f2c***abCD)  cached (15s ago)
        z.ai quota API (unofficial) failed (platform error: 当前用户不存在coding plan); probe: key can serve glm-5.3
        recheck with: flexgate usage --force
  ustc
    ✗ key #1 (sk-G***jJYg)  cached failure (8s ago)
        LiteLLM /key/info failed (ConnectError: ); probe: ConnectError:
        recheck with: flexgate usage --force
  • 跳过的 key 按上次结果显示状态:key 仍可用的显示暗色 ✓ + cached (… ago),彻底失败的显示暗色 ✗ + cached failure (… ago)。

  • flexgate usage --force 忽略缓存、重新查询所有 key 并更新缓存; 重查干净成功(无任何报错)的 key 会自动清除缓存条目,恢复默认实时查询。

  • 占位符 key(未填写的默认值)不会进入缓存。

新增平台适配器

适配器登记在 flexgate/usage.py 的 _ADAPTERS 列表中:每条是 (url 子串, 适配器协程, 方法标签),首个命中生效。bigmodel.cn 的团队版 适配器额外要求 key 条目上配置 organization/project,否则视为无适配 接口。已知没有 key 可用接口的平台放入 _PROBE_ONLY_MARKERS,直接走 probe,避免浪费一次失败的 HTTP 请求。