- [Account State Management & Routing Convergence: Priority Hierarchy, Model-Scoped 403 & Recovery Authority] (Ref #3863, #3865, #3875, commit 9850f75, Thanks to @jeikl, @cubelikeplayDaniel):
- State Priority Hierarchy: Established a unified
banned > validation > hard 403 > quota_protection > manualpriority chain, preventing account-level bans from being downgraded or wiped by model-level 403s or daily quota refreshes. (Ref #3863, #3875) - Model-Scoped 403 Isolation: Introduced
forbidden_modelsfreeze mechanism so a 403 on a single model only freezes that model and associated dynamic rewrite routes, allowing healthy models to remain in proxy routing and preventing whole-account dropouts. (Ref #3863, #3865) - Recovery Authority & Anti-Privilege Escalation: Introduced
probe_intentto strictly distinguish targeted live probes from background warmups, preventing automated schedulers from unlocking accounts; targeted probes safely unblock validated models and verification locks while keeping heterogeneous models (Claude/Opus) and TOS bans isolated. (Ref #3863, #3875) - Physical Isolation of User Intent: Separated
manual_proxy_disabledfrom runtime system locks, ensuring system self-healing never reenables user-disabled accounts and resolving state drift between GUI switches and scheduler gates. (Ref #3863, #3875) - Zero-Migration Legacy Healing & Locked Index Sync: Smoothly migrates legacy model 403s during proxy startup, unifies
until == 0with a 24-hour timeout safeguard, and synchronizes index updates underACCOUNT_INDEX_LOCKto eliminate concurrent index overwrite and console warnings. (Ref #3863, #3875)
- State Priority Hierarchy: Established a unified
- [账号状态管理与调度收敛:确立优先级模型、模型级 403 作用域与恢复权威闭环] (Ref #3863, #3865, #3875, commit 9850f75, Thanks to @jeikl, @cubelikeplayDaniel):
- 状态优先级模型收敛: 确立
banned > validation > hard 403 > quota_protection > manual统一优先级链条,杜绝账号级封禁被模型级 403 或日配额刷新降级/冲掉,并在读写路径中全链路保持同一套判断逻辑。(Ref #3863, #3875) - 模型级 403 作用域隔离: 引入
forbidden_models模型冻结机制,单个模型的 403 仅冻结对应模型与同线通道,账号其余健康模型继续参与调度,杜绝单模型 403 导致整号停用;重构作用域匹配与路径清洗,杜绝具体模型逆向误伤模型族,文本模型不误伤生图模型。(Ref #3863, #3865) - 恢复权威与防越权解限: 引入
probe_intent严格区分定向测活与自动预热,禁止后台自动调度越权解封,账号级封禁/403 仅由真实生产探测Healthy解除;定向测活成功精准解开对应通道模型与验证锁,保持异构模型(Claude/Opus)与 TOS 封禁严格隔离。(Ref #3863, #3875) - 意图与系统锁物理隔离: 物理拆分
manual_proxy_disabled与运行时系统锁,系统解限绝不越权恢复用户手动禁用的账号,修复手动开关覆盖系统锁导致的状态不一致。(Ref #3863, #3875) - 老版本读时自愈与全局写锁索引同步: 反代调度加载时自动平滑迁移老格式模型 403,统一
until == 0的 24 小时兜底自愈判定;实现set_account_index_proxy_disabled全局写锁更新,消除并发索引覆盖与控制台漂移日志。(Ref #3863, #3875)
- 状态优先级模型收敛: 确立
What's Changed
- fix(docker): 修复 HEALTHCHECK 无超时泄露与缺少 tini init 导致容器假死 503 (Fixes #3850) by @cubelikeplayDaniel in #3854
- fix(proxy): 上传预算只允许放宽不允许收紧,根治大请求体 15s 误杀 by @wakeupnotfound in #3857
- fix(pipeline): stop billing base64 media embedded in text as text tokens (Ref #3830) by @mclinyeshi in #3864
- fix(pipeline): fold commentary wedged between tool call and result to stop Claude prefill 400 on Responses by @mclinyeshi in #3866
- fix(pipeline): apply commentary folding to Gemini targets to prevent cache invalidation (Ref #3866) by @mclinyeshi in #3867
- fix(proxy,quota): 根治跨模型重置时间污染与零配额到期自愈,发布 5.0.4-beta.1 (Ref #3840, #3845) by @cubelikeplayDaniel in #3852
- fix(proxy,probe): 统合 Web 端测活自动调度选号与凭据刷新 (Ref #3861, Follow-up to #3852) by @cubelikeplayDaniel in #3868
- fix(account,probe): 测活成功按模型与受限原因安全自愈,拦截 TOS 封禁与跨模型误解限 (Ref #3861, Follow-up to #3852) by @cubelikeplayDaniel in #3869
- fix(pedal): 提升蹬额度稳定性与多账号自愈,优化浅色主题与待蹬账号视觉标识 by @cubelikeplayDaniel in #3870
- feat(accounts): 启动后按账号上限异步刷新配额并新增工具栏入口 (Ref #3726) by @jeikl in #3871
- fix(ui): 修复添加账号按钮 z-index 穿透更新弹窗缺陷 (Fixes #3853) by @cubelikeplayDaniel in #3872
- fix(account,ui): 修复配额刷新冲掉403状态缺陷并新增异常封禁快捷筛选 (Fixes #3863, Ref #3865) by @cubelikeplayDaniel in #3875
- chore(release): update changelog for 5.0.4-beta.1 release (Ref #3863, #3865, #3853, #3871) by @cubelikeplayDaniel in #3877
Full Changelog: v5.0.4-beta.0...v5.0.4-beta.2