Skip to content

Latest commit

 

History

History
79 lines (63 loc) · 12.7 KB

quota-support-audit.md

File metadata and controls

79 lines (63 loc) · 12.7 KB

额度支持审计矩阵

审计日期:2026-10-22(2026-10-24 增补 ZCode Start Plan 行)。范围:本仓库 main 开发线及本轮修复,不代表已发布、已安装或全部厂商已真账号验收。

结论与证据等级

  • v1.5.2 正式版 ≠ main 开发版;开发源码、仓库插件副本、安装缓存、稳定运行文件须分别核对,不能以源码存在推断正式版可用。
  • 原“自动支持”承诺已收窄:只对已知协议、明确凭据与可证明的账号归属适配;不是任意供应商、任意中转自动查账。
  • BigModel、当前 BX-GPT 的 sub2api /v1/usage、ZCode Start Plan(bigmodel 家族)已本机真实账号实测。其余源码转写适配按夹具验证理解,不是真实账号验证;即使未标 unverified,也不因此升级证据等级。
  • sub2api 已接入自定义中转适配路径,同源 /v1/usage 命中即停止 legacy 探测;尚未发布。
  • 未新增任意域管理接口探测;自定义中转仅在配置地址同源内查询已知用量协议,不猜测管理凭据或跨域发送 key。

实装、凭据与验证矩阵

“实装”指开发源码具有适配逻辑,不等于账号可访问、自动激活正确或桌面展示已实测。

对象 实装与缺失 自动凭据取得 / 额外权限 实测程度与解析、展示边界
BigModel 个人 Coding 套餐 monitor 额度 + 订阅元数据 可解密宿主 OAuth;apiKey 模式连接(provider bigmodel-api[-N])读 provider_config.json 同家族 key(编码套餐 key 优先,baseUrl 须在 bigmodel.cn 域);支持专用 env 覆盖,不需额外索取管理 key 本机实测;账号级套餐池;团队套餐仍不支持
Z.ai Coding 已有 Coding monitor 适配 宿主 Z.ai OAuth,或 apiKey 模式(zai-api[-N])provider_config 同家族 key(baseUrl 须在 z.ai 域);与 BigModel 凭据族区分 源码/夹具证据,不是真账号验收
ZCode Start Plan(bigmodel/zai 免费档,如 1024 Dev Day 的 one_time 发放池) 本轮新增(2026-10-24):zcode.z.ai /api/v1/zcode-plan/billing/balance 专用适配(plans[]/balances[] 归一,按 meter=model_usage 桶聚合为「套餐」分段——不按 period 过滤,到期语义) 解密宿主凭据 zcodejwttoken(enc:v1;OAuth access_token 实测 401 不可用);请求必须带 X-Device-Mid(读 credentials.json 同目录 telemetry-state.json / onboarding-record.json,缺失 fail-closed 不发请求);可选 secrets 覆盖 bigmodel 家族 Start Plan 已本机真实账号实测(HTTP 200 全链含源状态与视图,2026-10-24);zai 家族 start-plan 同链未实测;monitor 与 subscription 端点不含 Start Plan 数据,同账号编码套餐与 Start Plan 两池并存分源展示
MiniMax Coding 已有 remains 适配 env / 本机 secrets / 已知官方域供应商配置 源码转写、夹具验证;剩余比例转已用比例;weekly_status == 3 不展示周窗
Kimi Coding / Moonshot PAYG Coding 额度;401 回落 PAYG 余额 env / secrets / 已知官方域供应商配置 源码转写、夹具验证;remaining 口径与分转元须分别处理,不能假设所有 Coding key 有 PAYG 权限
CommandCode 已有订阅与用量适配 专用 key,env / secrets;非通用推理 key 自动发现保证 源码转写、夹具验证;需匹配订阅和统计周期;组织账号带 orgId 查询,个人订阅(whoami org:null)省略 orgId 走用户作用域
Cline Pass 已有用量窗口适配 专用 key,env / secrets 源码转写、夹具验证;配置型源,凭据可读不等于一定激活
Anthropic Pro / Max OAuth 用量适配;不是普通 API 计费余额 必须显式 opt-in;env / secrets,或另读 ~/.claude/.credentials.json 的 Claude OAuth,属跨应用读取 源码转写、夹具验证;不是自动复用宿主推理 key;仅支持选定主窗口,不冒充子配额完整覆盖
DeepSeek 官方余额适配 env / secrets / 官方域供应商 key 夹具验证,非真账号;有效零余额处理列入本轮修复
SiliconFlow 官方用户余额适配 env / secrets / 官方域供应商 key;国内外域须保持对应 夹具验证,非真账号;分域及 totalBalance 选择列入本轮修复,不能以赠额等单项冒充总余额
OpenRouter /api/v1/credits 账户余额适配 需 management key,不是普通推理 key;使用 OPENROUTER_MANAGEMENT_KEY 或设置中的 Management Key,不自动将推理 key 发往 /credits 夹具验证,非真账号;缺 total_usage 不得当 0;本轮修复严格检查响应完整性
小米 MiMo 控制台套餐/余额协议适配 控制台 Cookie,需 userId + serviceToken;env / secrets;不是自动读取推理 API key 源码转写、夹具验证;Cookie 有效性、控制台协议与展示待真账号校准
火山 签名查询,双用量接口探测 AK/SK,env / secrets,须具备对应查询权限;不是自动读取推理 API key 源码转写、夹具验证;签名和 HTTP 200 错误信封均需校验;尚无真账号保证
SCNet 本地账本估算 / 外部快照输入 不要求在线凭据;需套餐 Credits、周期、模型映射等估算配置 不是官方在线额度接口;抵扣表及本地记录覆盖影响准确性,展示必须标识估算
sub2api 本轮新增:同源 /v1/usage,识别 key 用量/余额及订阅窗口 配置中转地址及其推理 key;不索取后台管理 key 当前 BX-GPT 真站查询及最终运行文件的 createQuotaClient 全链均返回 status=ok、kind=plan、日/周/月 USD 窗口;remaining 不作为钱包余额
OpenCode Go 本轮新增:https://opencode.ai/zen/go/v1/usage 三窗口(rolling→5 小时/weekly→周/monthly→月),仅百分比无金额 env OPENCODE_API_KEY / secrets sources.opencode.apiKey / 自定义供应商 baseUrl host 为 opencode.ai 且路径以 /zen/go 开头(两档命中;/zen/v1 按量版无用量 API,刻意不命中) 源码转写(cc-switch,MIT)、夹具验证,非真账号;403=key 有效但无 Go 订阅(no_plan)、401=auth_failed
CLIProxyAPI 无专用管理适配 管理 API 需要独立 management key,不能把推理 key 当管理权限 通用 OpenAI legacy 路径不等于支持其管理 API;不新增管理端探测
new-api 无专用适配 用户/管理访问令牌等不能由普通推理 key 默认推定 部分部署兼容 legacy 不能构成 new-api 全面支持承诺
其他自定义中转 已有同源 OpenAI legacy 查询尝试;非万能识别器 仅配置地址及其 key;不猜测额外管理凭据 协议或字段不匹配按 unsupported / parse_error,不用 0 伪装成功

解析、激活与展示问题

类别 审计事实 / 本轮状态 验收要求
本轮解析修复 DeepSeek 有效 0 值、SiliconFlow 分域与 totalBalance、OpenRouter 缺 usage;由主智能体本轮修复,不列为最终遗留未修项 以最终 diff 和对应回归结果确认,不将“在修”写成“已发布”
本轮新增接入 sub2api 由主智能体接入,旧实现不足以表达其余额及订阅响应;OpenCode Go 为源码转写新适配(cc-switch,MIT),/zen/go 与 /zen/go/v1 两档命中,/zen/v1 按量版无用量 API 刻意不命中 检查同源 URL、余额/订阅夹具和 chip 展示;OpenCode 检查三窗口/403 no_plan/401 auth_failed 夹具;真实站点与真实账号另验
env 激活缺口 resolveCred() 能读 env 不代表调度器能激活;activeSet() 对多数源未用 env 建立上下文,配置型源还受 enabled 门控 本轮已修并测试:env-only 默认源、enabled+env 的 Cline、无 primary 均可取数;Anthropic 继续要求显式开启
源开关失效 默认源使用 `defaultOn
权限提示 自动发现 OpenRouter 推理 key 可能随后认证失败;管理权限要求与“发现凭据”是两件事 文案明确 management key,不承诺零配置成功
字段完整性 缺额度、usage、余额或窗口字段不是数值 0;合法零值也不能按缺失丢弃 响应字段不完整不补零;解析失败 fail-closed;旧成功值如保留须标 stale
展示归属 chip 主显跟随当前 pane 的 provider;tooltip 可列多源,均为账号池/余额,不是单模型独享 源激活成功不等于 chip 必然主显;未完成请求的 fallback、切源、关闭后残留需桌面验收
验证边界 VM / HTTP 夹具能检验解析与状态机,不能证明真实凭据、厂商权限或客户端挂载 除 BigModel 与已验证的 BX-GPT/sub2api 接口外不得把夹具通过表述成真账号实测;本文件不新增该类实测声明;OpenCode Go 为转写+夹具验证,未真实账号实测

核对入口

  • quota-client.cjs:适配器、凭据发现、resolvePrimary()、activeSet()、tickSource() 与源列表。
  • overlay.js:源开关、凭据字段、chip/tooltip 的状态与归属展示。
  • inject-main.cjs:额度快照、配置写入与刷新桥接;zusage.py:SCNet 本地估算输入。
  • tests/quota-client.test.cjs、tests/overlay-quota-chip.test.cjs:隔离夹具;不是实际厂商账号凭据测试。
  • OpenRouter 官方文档:Get remaining credits(management key 要求及 total_credits / total_usage 字段)。

本矩阵描述开发版修复;真账号范围仅限上述接口,部署、重启与正式发布另行记录。

尚未承诺全自动的边界

  • Z.ai Start Plan、CLIProxyAPI 管理协议、new-api 专用协议未在本轮新增,不能继续列入“已支持零配置”。
  • 配置型源(Anthropic/Cline/MiMo/火山/SCNet)的后台查询与“当前自定义 provider 自动映射到此源”是两回事;缺 detect/显式绑定者不能承诺随模型主显,详见矩阵。
  • 供应商 key/baseURL 在 provider 不变时的即时失效/冻结恢复仍需完善;本轮不把一次成功查询外推成所有账号切换都已实机验证。
  • Kimi PAYG 仍继承参考项目按金额猜分/元的启发式,低余额有单位误判风险,待明确厂商响应协议后修正;MiniMax weekly status=2 的参考实现存在分歧,不能无真实样本硬改。
  • OpenRouter 改用管理密钥是权限正确性修复,不是新增零配置支持;SiliconFlow 410 为明确不可用提示,不是已恢复端点。
  • OpenCode Go 为源码转写+夹具验证,未经真实账号实测;/zen/v1 按量版无用量 API,刻意不在自动发现命中范围,不能声称支持按量版。

本轮验证:Node 583/583(opencode-quota 15 用例,含变异测试补齐的 detect 前缀/凭据优先级/同源换 key 解冻断言);四路对抗复审问题已修(403 分流改结构化 httpStatus、detect 前缀收紧、注释对齐、文档数字刷新)。OpenCode Go 冻结语义与 BigModel 同款:403 判无订阅后同 key 购买订阅需 ⚙ 立即刷新或换 key 触发指纹变化。真实账号实测待做(unverified)。

Issue #56:非默认数据目录与 key-only 规则

  • 路径优先级:显式调用参数 → 宿主 ZCODE_PERSONAL_PROVIDER_CONFIG_FILE / ZCODE_BUILTIN_PROVIDER_CONFIG_FILE → ZCODE_DATA_BASE_DIR/.zcode/v2 → 历史 desktopHome / OS HOME。凭据与监听目录采用同一解析结果,不再读迁移前 HOME 的陈旧副本。AES 密钥派生仍用 OS HOME,不因数据目录迁移而改变。
  • builtin 与 personal 供应商配置按 providerId 合并,access/api 字段逐层继承,个人显式空 key 不复活内置 key;key-only 规则保留。只有精确内置 minimax ID 可使用国内默认域,国际 builtin 域优先,不能按供应商名称或模型名猜域。
  • 配置缓存包含两文件路径、mtime 和 size;删除/无法 stat 时撤销缓存。配置变更重新判断全部已登记 provider 的归属、撤销旧凭据及迟到响应,非焦点窗格也不能继续展示旧额度。
  • 读配置和监听位置已用 Windows 中文、空格、根目录、迁移 HOME 陈旧副本、同时间戳文件重建夹具验证;不等价于在反馈者 Windows 设备上实测。
  • sub2api 同时支持真实 subscription 日/周/月额度、quota_limited Key 总额度和 5h/1d/7d 支出窗口,以及具有明确 balance 字段的钱包;Key 额度不标钱包,缺省 remaining 不补零。