Commit Graph

61 Commits

Author SHA1 Message Date
vibe-code 6edb40d01e chore: 临时 80w 限额覆盖用于撞墙验证(验证后移除) 2026-08-13 03:21:22 +00:00
vibe-code 8a6416f28f feat: 前置闸门预计算输入 token 增加 DEBUG 日志 2026-08-13 03:21:22 +00:00
vibe-code 82502dda05 fix: 前置闸门 reserve 改用 token_counter 精确估算输入 token
reserve 从单凭 max_tokens fallback 50k 改为:
  reserve = litellm.token_counter(messages) + max_tokens(声明值)

- 输入 token 精确计数(未知模型 fallback cl100k_base,对中文偏高更安全)
- 输出用请求声明的 max_tokens,未声明时 fallback PREBLOCK_RESERVE_TOKENS
- 修复 2M 采集上限被单个大请求(176k output)击穿的问题
2026-08-12 14:58:04 +00:00
vibe-code 23778a8f7c feat: Snapshot-Offset 限额策略替换 BUFFER 盲猜
核心改动:不再用 BUFFER 猜滞后窗口消耗,而是用同步时点快照
 直接计算累计限额。

- BUFFER=300000 → SMALL_BUFFER=50000(仅覆盖非消耗性跳降)
- get_effective_limit: limit = B0 - SMALL_BUFFER,不依赖 current_usage
- 同步循环:写 balance_at_sync + usage_at_sync 替代 remaining/stable_limit
- 突发检测/低额度判断:读 balance_at_sync 替代 remaining
- volc_consume.py: vls.BUFFER → vls.SMALL_BUFFER
- debug/debug_volc_sync.py: 同步更新
- docs/volc-quota-notes.md: 新增 §7.6 v6 设计文档,更新各节口径
2026-08-12 12:22:22 +00:00
vibe-code 97484cb7f8 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。
2026-08-12 07:21:13 +00:00
vibe-code dd349b64cf fix: 限额改 v4 冻结快照,余额红线防扣费
v2 的 stable_limit = usage + balance - BUFFER 依赖余额 API 随消耗实时递减,
实测滞后(08-12 快照 1,558,307 在 usage 涨 45 万期间不动)导致池膨胀、限额
虚高,放行到扣费区(当日超余额 13.8 万已扣费)。
扣费口径(用户确认):是否扣费只取决于当下免费额度,超出即扣费,采集量只
决定明日发放。v4:stable_limit = balance - BUFFER 冻结快照,本地 usage 实时
撞线即拦,等价于本地实时扣减余额;effective = min(2M 配额, stable_limit)。
新增 docs/volc-quota-notes.md 额度机制速查;merge-auto-consume.md 补 §4.5。
2026-08-12 06:58:03 +00:00
vibe-code c6c122426a fix: 同步间隔打印重算 + 恢复/审计口径对齐,清理死代码
- 同步后按新 Min Rem 重算'下一次同步'间隔(compute_sync_interval 唯一实现),
  修复'旧 interval + 新 Min Rem'混打误导;删除过时的五档注释
- restore_blocked_models / startup_audit 补 MONITORED hash 过滤,
  与 soft_evict/请求闸门/即时恢复口径一致,防误恢复/误踢同名非监控条目
- 删除 THRESHOLD 死常量
2026-08-12 03:53:02 +00:00
vibe-code 505a55987f fix: 限额恢复即时解锁 + 前置预留闸门,修复有额度却被禁
- 同步守护写健康限额后立即恢复被软踢模型(restore_model_if_healthy),
  不等 restore_blocked_models 的 30min/4h 闸门,修复日返还额度到账后
  模型带额度空转被禁(no healthy deployments)
- 前置闸门改为 usage + reserve >= limit 即拦截,预留优先取请求
  max_tokens(零采集损失),堵住并发请求集体撞线的超限窗口
2026-08-12 03:40:44 +00:00
vibe-code 56b46652f2 feat: 日志统一加北京时间戳(_tagged_print 一处生效,实测 1.33us/次) 2026-08-11 15:10:24 +00:00
vibe-code b82fe3aa7e refactor: 余额分档退化为低余额加密两档,常规统一 30 分钟
按上一轮分析彻底落地:余额驱动的慢速档无意义(日返还下余额高=常态,
返还/过期/消耗随时发生)。仅保留 <10万 5min / <30万 10min(返还解锁、
扣费检测要紧),≥30万 统一 30min;慢同步完全交给 is_idle(×4 上限 60min)。
模式打印随分档简化并补充空闲状态。
2026-08-11 15:07:55 +00:00
vibe-code a93f806b33 fix: 同步模式打印图标改为余额风险语义(极速→中风险等,与档位自洽) 2026-08-11 15:06:26 +00:00
vibe-code 068f2ee658 fix: 取消高水位 60 分钟同步档(日返还模型下余额≥80万为常态)
- 高水位 base_interval 3600 → 1800:返还解锁/余额扣减检测延迟从 ≤60min 降到 ≤30min,
  消除每日返还后的额度空转窗口与余额虚高扣费窗口;真正的慢同步条件 = is_idle(已独立实现)
- All Dead 非晨间 1000000 → 300000:返还可能下午到账,不能睡 60 分钟
- 修复模式打印数值与 base_interval 全部错位的遗留 bug,改为输出实际同步间隔
2026-08-11 14:16:27 +00:00
vibe-code 5e40a311d1 fix: 消耗任务四类遗漏修复 + 清理死变量
volc_consume.py:
- payload 模型参数路由:doubao 系 max_completion_tokens+reasoning_effort minimal,
  其他模型 max_tokens(旧 MONITOR_TARGETS 实测配置,否则 doubao 消耗会 400 失效)
- _send_ark URL 单源:直接拼 HUOSHAN_BASE_URL(与 config.yaml 同 env),删 ARK_HOST
- 速率三档对齐旧 auto_consume(正常 15-40s / 极速 / 动态),避免 plan 大时 60s/次拖过 00:00
- run_consume_all 单次拉包复用,消除 6 次重复分页

volc_limit_sync.py:
- 修复 DEBUG 打印残留 current_peak 引用(v2 简化后已删变量,DEBUG 模式会 NameError)
- 清理旧遗留死变量 SYNC_INTERVAL / mode_str / display_limit,去重 limit_str
2026-08-11 13:58:58 +00:00
vibe-code b7df36bb4e fix: dynamic 限额缺失时 fallback 保守兜底(FALLBACK_LIMIT 90万)
免费模型余额常态 <2M(昨日采多少返多少),stable_limit 缺失窗口
(首次同步前/新增模型/TTL 过期)此前 fallback 裸奔到静态 2M,
余额不足的模型会被烧穿扣费。改为 min(static, FALLBACK_LIMIT=90万)。
2026-08-11 13:38:32 +00:00
vibe-code 96b81d52c4 feat: 合入火山免费额度自动消耗任务(每日23点洗过期包防扣费)
- 新增 volc_consume.py:消耗任务模块,直连 Ark 洗 9 天内过期资源包
  (旧 calculate_plan 均分×1.1/24h冲刺保留 + 双 clamp:2M 采集上限、余额−BUFFER 防扣费)
- volc_limit_sync.py:限额 v2 简化(stable_limit = usage+balance−BUFFER,删除峰值状态机 ~90 行),
  HARD_DAILY_LIMITS 统一 2M(pre-block 不滞后,1.8M 折扣作废),
  新增 _maybe_trigger_daily_consume(北京时间 23:00 ± 抖动,SETNX 去重,延迟导入)
- docker-compose 挂载 volc_consume.py;AGENTS.md/文档同步
2026-08-11 13:15:24 +00:00
root 8feb38db37 fix: 资源包查询修复翻页死循环并加 Status 过滤
- debug_volc_sync.py 缺少 seen_tokens 防循环保护,火山 API 翻页到头后
  NextToken 循环回起始 token,导致无限翻页(实测 900s 拉 1893 页假象,
  真实数据仅 8 页 137 个包)
- 两个 fetch_all_packages 请求加 Status=Effective,服务端直接过滤
  UsedUp/Expired/Refunded 等余额为 0 的无用包(实测过滤后 0 余额包为 0)
- 主脚本循环检测日志从 DEBUG 提升为 WARNING,循环收尾不再静默
2026-08-11 03:39:57 +00:00
root e29d94f9e8 feat: 日志统一加 [VolcSync] 前缀便于筛选
模块级重绑定 print(一处覆盖全部 52 处调用, 含 log()/dprint/裸print),
traceback.print_exc 改走带前缀通道, 去除 log() 内嵌标识避免双前缀。

筛选: docker logs litellm 2>&1 | grep VolcSync
2026-08-11 02:53:33 +00:00
root 729e5c7bc3 fix: 限额峰值改为首锁+余额门控重锁,修复越算越多
原 Smart Peak 逻辑把每次用量增长误判为余额恢复(Jump)锁更高峰值,
叠加火山 AvailableAmount 更新滞后,stable_limit 当天一路抬升
(399,836 -> 599,511)且闸门永不触发,额度实际被烧穿。

新策略(volc:peak_pool 当日键):
- 首次同步锁定当日峰值(usage + balance)
- 仅 balance 自身净上涨(新资源包/对账回补 >=50k)按发放增量抬峰
- pool 回落时 Drop 收紧,永不回升
- usage 驱动的 pool 上涨一律不得抬高限额
新增 volc:last_balance 键记录上次余额快照
2026-08-11 02:53:18 +00:00
root 1a36bf5dbc fix: RateLimitError构造去除request_data,对齐litellm main签名(message,llm_provider,model) 2026-08-10 08:43:44 +00:00
root 2e052734fc fix: 已踢模型请求也走限额拦截,统一返回429而非router 400 2026-08-10 08:21:39 +00:00
root 6b51d74e72 fix: 增加请求前限额拦截(async_pre_call_hook),修复超限滞后击穿漏洞 2026-08-10 08:07:04 +00:00
root 1e63653f52 fix: add deepseek-v4-flash-0731 alias and fix config discovery skipping commented lines
- Add MANUAL_MONITORED_MODEL_ALIASES entry for
  deepseek-v4-flash-0731 -> deepseek-v4-flash-ga-260731,
  since VolcEngine resource pack uses MMDD format while
  upstream model name uses -ga-YYMMDD (inconsistent naming).

- Fix config.yaml auto-discovery to skip lines starting with '#',
  preventing commented-out api_base lines from leaking into the
  currently-open entry and misclassifying non-VolcEngine models.
  This was causing deepseek-v4-flash (via NEWAPI) to be falsely
  detected as a monitored VolcEngine model.
2026-08-09 14:21:46 +00:00
kim 3dd97730b6 fix: default remaining to high quota for unknown models on startup and update AGENTS.md 2026-07-08 10:42:14 +08:00
kim 27324f459c fix: add doubao-seed-2-0-code alias to monitored models 2026-06-11 14:52:02 +08:00
kim 671ef1087f fix: resolve falsy effective_limit bug preventing model block on negative quota 2026-06-11 14:09:42 +08:00
kim 28c81c4816 fix: resolve volcengine package quota parsing and status filtering 2026-06-11 13:27:06 +08:00
kim f36c560bb0 fix: clarify effective limit debug output 2026-04-01 14:10:59 +08:00
kim 2f1c2642e5 fix: streamline monitored model maintenance 2026-04-01 13:29:10 +08:00
kim bdd51e8f9c feat: implement startup audit to block over-limit models on restart
- Add startup_audit() to check Redis usage against limits at startup
- Call startup_audit() in active_monitor_loop
- Add AGENTS.md for agent guidelines
2026-02-02 13:39:34 +08:00
kim 03df1d553e fix: strip volcengine prefix in limit sync to match config 2026-01-30 12:35:19 +08:00
kim f16af28dfe feat: 优化火山引擎配额同步策略
- 添加硬限制: doubao-seed-code 480w/日, 其他模型 180w/日
- 强制北京时间(UTC+8)计算日期,确保 Docker 容器时区无关
- 移除'忽略小跌'逻辑,Pool 下跌时立即接受(更保守的风控)
- 优化轮询间隔适配小时级 API 延迟(减少无效请求)
2026-01-30 00:39:06 +08:00
kim dd8cbe5f63 revert: remove hardcoded daily limits, restoring dynamic calculation only 2026-01-30 00:05:40 +08:00
kim d5b8829265 feat: add specific hard limits and log format 2026-01-29 23:54:32 +08:00
kim cd35a193b6 feat: finalize smart pool tracking with hysteresis (handle jumps, drops, and expiry) 2026-01-29 23:17:39 +08:00
kim 2d849dc62d fix: upgrade quota logic to track Total Pool (Usage + Rem) to prevent mid-day blocking 2026-01-29 22:30:42 +08:00
kim 73fe82de3b feat: enhance volcengine quota sync with hard limits and smart buffering 2026-01-29 22:21:29 +08:00
kim 0988b1fc1d optimize: increase burst traffic threshold to 300,000 tokens to handle long-context models 2026-01-29 20:54:18 +08:00
kim e6110cd9c1 optimize: adjust restore window to 07:00-13:00 Beijing time and optimize sleep logic for dead models 2026-01-29 20:27:32 +08:00
kim e21a510f0f fix: sync logic to filter non-volc models by api_base hash and add debug logs 2026-01-29 19:31:17 +08:00
kim 4a68121b3e Fix: Revert Doubao 1.6 mapping to shared list and remove hardcoded corner cases 2026-01-29 18:57:55 +08:00
kim 2d161c867e Fix: Separate Doubao 1.6 Standard and Thinking models into distinct quota keys 2026-01-29 18:52:43 +08:00
kim d66231a333 Enhance: Complete bilingual (CN/EN) log support for VolcSync 2026-01-29 18:48:03 +08:00
kim c536421410 Enhance: Format balance logs with thousands separators and add bilingual (CN/EN) descriptions 2026-01-29 18:39:55 +08:00
kim da41c569c0 Fix: Deduplicate packages based on full JSON content hash to prevent double counting 2026-01-29 18:26:38 +08:00
kim 587a005665 Fix: Remove duplicate code block causing IndentationError in process_packages_breakdown 2026-01-29 18:19:59 +08:00
kim 0e2acd85b0 Fix: Revert sync-all-models. Only sync configured VolcEngine models (Strict Whitelist) 2026-01-29 18:16:17 +08:00
kim fb77e4047c Fix: Sync ALL discovered VolcEngine models to Redis, ignoring INTERESTED_MODELS filter for cache 2026-01-29 18:11:59 +08:00
kim 2ceec7f1c6 Fix: Handle list mapping in process_packages_breakdown to resolve unhashable type error 2026-01-29 18:03:41 +08:00
kim d696c92879 Fix: Update VOLC_MODEL_MAP and suffixes to correctly normalize and map package names 2026-01-29 17:59:09 +08:00
kim ac62783fc6 Fix: Add infinite loop protection to API pagination 2026-01-29 17:32:58 +08:00