fix: v5 恢复 v2 骨架,修正 v4 误拦
v4(stable = balance - BUFFER)把「剩余余额」当「从 0 累计的上限」, U>0 时低估初始池:15:09:51 实测 Bal=596,869(剩 59.7 万)却被 usage 1,696,135 >= 296,869 全拦。守恒反推(U+B=2,293,004)证明 v2 公式数学正确——B 滞后收敛后满足 B = B0 - U,今日消耗 1.696M < B0 2.293M 无扣费(此前「超余额 13.8 万扣费」基于滞后快照的推断 不成立)。v5 = 恢复 v2(stable = usage + balance - BUFFER), 残留风险仅同步时点 B 滞后(13:36 高估 ~50 万),由 BUFFER + 低余额 加密同步覆盖。文档同步:volc-quota-notes §7.3/§7.5、merge-auto-consume §4.5。
This commit is contained in:
+25
-15
@@ -155,7 +155,7 @@ daily_usage ≥ 2M → 停(采集上限,再烧不返还
|
||||
|
||||
---
|
||||
|
||||
## 四、限额设计(防扣费)——v2 简化逻辑(v4 修订见 §4.5,2026-08-12 已实施)
|
||||
## 四、限额设计(防扣费)——v2 简化逻辑(v5 修订见 §4.5,2026-08-12 已实施)
|
||||
|
||||
### 4.1 为什么废弃 Peak-Buffer 峰值状态机(存量场景产物)
|
||||
|
||||
@@ -175,8 +175,8 @@ daily_usage ≥ 2M → 停(采集上限,再烧不返还
|
||||
|
||||
### 4.2 新公式
|
||||
|
||||
> ⚠️ 2026-08-12 修订:本节 v2 公式「池恒定」假设(usage ↑ / balance ↓ 同步)失效,
|
||||
> 已由 v4 取代(见 §4.5)。保留原文作历史论证。
|
||||
> ⚠️ 2026-08-12 修订:本节 v2 公式经实测确认**数学正确**(B 滞后收敛后守恒成立),
|
||||
> 无需取代;v4 冻结快照尝试因误拦已回退(见 §4.5)。保留原文作论证。
|
||||
|
||||
```
|
||||
effective_limit = min(HARD_DAILY_LIMITS, max(0, usage + balance − BUFFER))
|
||||
@@ -213,26 +213,36 @@ HARD_DAILY_LIMITS → 统一 2M(采集上限;doubao-seed-code-preview-251028
|
||||
|
||||
同步线程检测 balance 归零 → limit 收紧有 2–60min 滞后;消耗量计入让拦截在**滞后窗口内也有效**,双保险。
|
||||
|
||||
### 4.5 v4 修订(2026-08-12 已实施):冻结快照,余额红线
|
||||
### 4.5 v5 修订(2026-08-12 已实施):恢复 v2 骨架,实测修正论证
|
||||
|
||||
**v2 失效点**:`usage + balance = 当日初始可用池,消耗中恒定` 依赖余额 API 随消耗**实时递减**。实测余额 API 滞后(2026-08-12:快照 1,558,307 在 usage 1.24M→1.70M 期间纹丝不动,滞后上限未知),balance 不随消耗递减 → 池随 usage 膨胀(2.80M→3.26M)→「余额耗尽 → 限额 0」防线失效 → 放行到扣费区(当日超余额 13.8 万已扣费)。
|
||||
**v2 曾被误判失效**:2026-08-12 上午观察到「balance 快照 1,558,307 在 usage 1.24M→1.70M 期间
|
||||
不动」,据此推断 v2 的 `usage + balance` 池膨胀失效,改为 v4 冻结快照 `balance − BUFFER`。
|
||||
|
||||
**扣费口径(用户确认,2026-08-12)**:是否扣费只取决于**当下免费额度(余额)**;超出免费额度的请求都会被扣费;采集量只决定明日发放,与今日是否扣费无关。→ 余额必须是闸门红线,且不能依赖 API 实时性。
|
||||
**v4 错误实证(15:09:51 生产日志)**:Bal=596,869(真实剩余 59.7 万),stable=296,869,
|
||||
usage=1,696,135 → `[PRE-BLOCK] (1,696,135+16/296,869)` **误拦**——把「剩余余额」当
|
||||
「从 0 累计的上限」,U>0 时低估初始池,有真实免费额度却全拦。
|
||||
|
||||
**v4 公式**:
|
||||
**守恒反推(14:59:51 同步)**:U=1,696,135 + B=596,869 = B0=2,293,004 ≈ 理论剩余 597,004
|
||||
+ 已用 1,696,135 → **B 滞后收敛后满足 B = B0 − U,v2 公式数学正确**;
|
||||
13:36 的 1,558,307 是滞后快照(高估真实剩余约 50 万),非余额不足。
|
||||
今日消耗 1,696,135 < B0 2,293,004 → **当日无扣费**。
|
||||
|
||||
**v5 公式(= v2 原式)**:
|
||||
|
||||
```
|
||||
stable_limit = max(0, balance − BUFFER) # 冻结快照,同步时算一次,不随 usage 膨胀
|
||||
effective_limit = min(HARD_DAILY_LIMITS, stable_limit) # 2M 防白烧;余额红线防扣费
|
||||
stable_limit = max(0, usage + balance − BUFFER) # 同步时算一次
|
||||
effective_limit = min(HARD_DAILY_LIMITS, stable_limit)
|
||||
```
|
||||
|
||||
- 以最近同步快照的余额为「当日免费池上限」,本地 usage 实时累计撞线即拦 → **等价于本地实时扣减余额**,不依赖 API 刷新
|
||||
- 返还:balance 跳涨 → 下次同步红线上升 → 自动解锁 ✓;过期/异常:balance 跳跌 → 红线收紧 ✓
|
||||
- 余额 < BUFFER → 限额 0 → 全拦,扣费结构性杜绝 ✓
|
||||
- `usage + balance` = 当日初始免费池(守恒),消耗中恒定(B 实时时);usage 累计撞线
|
||||
= 用到剩 BUFFER 时停 —— 防扣费语义正确
|
||||
- 残留风险仅「同步时点 B 滞后」→ stable 虚高 ≤ 滞后窗口消耗 → BUFFER + 低余额加密
|
||||
同步(600s/300s)+ burst 触发覆盖;滞后收敛后池回守恒值
|
||||
- 与消耗任务「余额快照 − 已烧 ≤ 0 停」同一把尺子(不变量:放行条件 = `balance − BUFFER ≥ 0`)
|
||||
- 与昨日采集量**无关**:昨日 10K、余额 2M → 今日可用 1.7M(存量余额守恒,v3「昨日锚」因把单日流量当存量已被否决,见 volc-quota-notes.md §7.2)
|
||||
- 与昨日采集量**无关**(存量余额守恒;v3「昨日锚」因把单日流量当存量已被否决)
|
||||
|
||||
**BUFFER 语义变化**:v2 里防「余额统计滞后 ≤ 20 万」;v4 里防「快照滞后窗口内(30min 常规同步 + burst 触发)的消耗 + 返还/过期抖动」。默认 30 万(env 可调),滞后上限未知时建议调大(如 50 万)。
|
||||
**BUFFER 语义**:防「同步时点余额滞后窗口内的消耗」。13:36 实测滞后高估 ~50 万 > 30 万,
|
||||
滞后上限未实测 → 建议调大(如 50 万,env 可调)或实测后定。
|
||||
|
||||
### 4.3 限额与消耗共用数据、方向相反
|
||||
|
||||
@@ -313,7 +323,7 @@ litellm-config/
|
||||
| 风控 | 23:00 ± 抖动 + 15–40s 随机间隔 + 每天 3–5 次请求,接近真实行为 |
|
||||
| 容器语料 | LiteLLM 容器内无 `/var/log` 系统日志 → 合成语料兜底(5000 行够用) |
|
||||
| 消耗任务自身扣费 | 结构性杜绝:plan ≤ 余额快照 − 缓冲,且每轮检查余额 |
|
||||
| 余额 API 滞后(v2 池膨胀根因) | v4 冻结快照:balance − BUFFER 定上限,本地 usage 实时撞线,滞后窗口由 BUFFER 覆盖 |
|
||||
| 余额 API 滞后 | v5 恢复 v2(usage+balance−BUFFER):滞后收敛后守恒成立;滞后窗口由 BUFFER + 低余额加密同步覆盖;v4 冻结快照(balance−BUFFER)因误拦已回退 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user