AI视频实时配额从服务端到供应商的可信链路示意图

本地按钮点击数只能描述本机行为,不能代替供应商窗口、周窗口与任务归属。

摘要| AI视频生成贵在每一次任务都可能消耗有限窗口。把“今天点了几次”存进浏览器,看起来简单,却无法识别别的设备、别的节点、失败重试和供应商窗口重置。本文基于当前源码、5项客户端测试和一次真实脱敏回读,拆解Microi吾码AI如何用客户端去密钥、管理员只读入口、供应商实时余量与稳定RequestId守住创建门禁。

① 本地计数最危险的地方,是它看起来很确定

浏览器把每次点击加一,只能回答“这个浏览器记录了几次”。用户换电脑、页面清缓存、后台任务从另一节点创建,数字就失真;供应商窗口按自己的时钟重置,本地自然日也未必与它一致。

更麻烦的是超时。一次创建请求返回超时,不代表上游没有收下任务。如果前端把失败当成零消耗并立刻重试,同一个镜头可能重复占用额度。

本地计数与供应商实时配额的可信链对比

可信答案必须从当前登录用户进入服务端,再由服务端读取供应商当前窗口。

第一条边界| 本地计数可以做交互提示,不能作为是否允许创建视频的权威依据。

② 客户端先做减法:密钥、租户和身份一律不透传

当前前端SDK在请求前复制参数,再删除OsClient、ApiKey、Authorization、Token、Endpoint等字段。额度查询固定走GET,最终只发送空的GetParam。即使可编辑脚本伪造密钥或租户,也不会进入平台接口。

await V8.AI.GetMiniMaxTokenPlanRemains({
  ApiKey: 'forged', OsClient: 'forged'
});
// 实际请求:GET /api/Ai/GetMiniMaxTokenPlanRemains
// 实际参数:{}

第二条边界| 前端只表达业务意图;供应商凭据、真实租户和当前用户必须由可信后端解析。

③ 服务端再做身份收口:只有平台管理员能读脱敏余量

控制器上的额度入口带有PlatformAdminOnly限制,并从DiyToken读取CurrentUser与OsClient。它不接收调用方传入的供应商地址或Key,也不把原始凭据返回给页面。

AI视频配额入口的客户端与服务端安全矩阵

“能调用接口”不等于“能看到密钥”;管理员得到的是窗口和用量,不是供应商凭据。

  1. 会话入口仍是当前DiyToken,不创建第二套身份。
  2. OsClient来自服务端会话声明,不能被Header或请求体覆盖。
  3. 额度读取是管理员只读动作,不开放给匿名或普通脚本。
  4. 响应只保留模型、窗口、已用量和状态等运营字段。

最小暴露| 运营需要知道“还能不能生成”,并不需要知道“供应商Key是什么”。

④ 实时回读要同时看当前窗口和周窗口

本轮真实调用返回HTTP 200、Code=1。video模型当前窗口总量3、已用0;周窗口总量21、已用6。两组状态均为1。这个结果只能代表2026-08-19凌晨这次回读,不能写成长期固定配额。

MiniMax视频当前窗口与周窗口实时回读证据

实时数字有时间戳;文章发布时记录证据,下一次创建前仍要重新读取。

当前窗口:0 / 3 已用
周窗口:6 / 21 已用
HTTP:200 Code:1
证据时间:2026-08-18 20:37:05 UTC

第三条边界| 任何一个窗口不可用都应停止新建;历史截图、客户端缓存和“每天N条”的经验值都不能放行。

⑤ 有余量也不能裸奔:稳定RequestId负责防重

额度允许创建,只解决“现在能不能做”;稳定RequestId解决“这是不是同一件事”。镜头槽位应在业务侧拥有固定键,同一参数重放拿回原任务;相同键改参数则拒绝。

实时配额检查与稳定RequestId组合流程

先读权威余量,再以稳定键创建;网络结果不确定时查询旧任务,不换键重发。

RequestId = promotion:20260819:story:shot-01:v1
创建超时 → 查询原TaskHandle或按原键回放
禁止:shot-01-retry-2、随机UUID、换键盲重试

第四条边界| 实时配额防止超额启动,稳定幂等防止同一意图重复扣减;两者缺一不可。

⑥ 回读失败时为什么必须失败关闭

如果供应商余量接口超时,最诱人的做法是回退到浏览器计数继续生成。但此时系统恰好失去了权威事实,放行只会把不确定性变成真实扣减。正确做法是保留已存在任务的查询能力,暂停创建新镜头。

  • 已有TaskHandle可以继续轮询,不需要占用新额度。
  • 创建请求结果未知时保留原RequestId,不生成“重试号”。
  • 界面明确显示“余量不可确认”,不要伪装成“剩余0”或“系统正常”。
  • 恢复后重新读取两个窗口,再判断是否创建。

失败语义| 查询失败不等于额度为零,也不等于额度充足;它等于“当前没有资格创建新任务”。

⑦ 五项测试把客户端边界固定下来

本轮执行node --test tests/v8-ai.spec.mjs,5项通过、0失败、0跳过。与本文直接相关的用例验证了伪造ApiKey、Authorization和OsClient会被清除,额度查询固定成为空参数GET,其余视频、语音和音乐能力也只走平台路径。

tests 5 pass 5
fail 0 skipped 0
exitCode 0
总运行 168.1535 ms

证据边界| 这组测试证明客户端路由与去密钥规则;真实余量另由在线只读回读证明,二者不能互相冒充。

⑧ 结论:配额是外部事实,门禁必须放在可信链上

Microi吾码AI这条链路的价值,不是多做一个余额页面,而是把四个容易混淆的问题拆开:客户端不能带密钥,管理员只能读脱敏事实,创建前必须看供应商双窗口,同一镜头必须有稳定RequestId。

上线验收也应分层:源码和测试说明规则存在;实时回读说明此刻余量可见;任务句柄说明生成已落地;最终视频与公开页面才说明作品真正交付。只看到按钮可点,或只看到HTTP 200,都不是完整结论。

最终判断| 本地计数可以提醒,供应商回读才能裁决;稳定键可以重放,随机重试只会放大不确定性。

Logo

宁波官方开源宣传和活动阵地,欢迎各位和我们共建开源生态体系!

更多推荐