Skip to content

fix(tiers): 修复 Zhipu 非流式 429 无法触发 tier 降级#123

Merged
ThreeFish-AI merged 1 commit into
feature/1.x.xfrom
vk/4c6b-fix-tiers-anthro
Apr 8, 2026
Merged

fix(tiers): 修复 Zhipu 非流式 429 无法触发 tier 降级#123
ThreeFish-AI merged 1 commit into
feature/1.x.xfrom
vk/4c6b-fix-tiers-anthro

Conversation

@ThreeFish-AI

Copy link
Copy Markdown
Owner

Summary

  • 根因factory.pyZhipuVendor 构造时未传入 failover_cfg,导致 BaseVendor._failover_config = Noneshould_trigger_failover() 永远返回 False
  • 影响:当 Zhipu GLM-5.1 在非流式(message)路径返回临时 429 时,executor 无法判定应降级,直接将 429 原样返回给 Claude Code 导致任务中断
  • 修复:3 处最小化改动(zhipu.py 接收参数 + factory.py 注入 + 补充测试)

变更文件

文件 改动
src/coding/proxy/vendors/zhipu.py __init__ 新增 failover_config 可选参数并转发至基类
src/coding/proxy/server/factory.py _create_vendor_from_configZhipuVendor 注入 failover_cfg
tests/test_router_executor.py 新增 TestExecuteMessageFailoverOn429 测试类(5 个用例)

测试验证

  • 单元测试:58/58 passed(含 5 个新增用例)
  • 全量测试:971/971 passed — 零回归

修复后行为

# 修复前
Tier zhipu message vendor error response: status=429 → 直接返回 429 给客户端 ❌

# 修复后
Tier zhipu error 429, failing over → 自动降级到 copilot / antigravity ✅

🤖 Generated with Claude Code, CodeX, Gemini

根因:factory.py 中 ZhipuVendor 构造时未传入 failover_cfg 参数,
导致 BaseVendor._failover_config 为 None,should_trigger_failover() 永远返回 False。
当 Zhipu 在 message(非流式)路径返回临时 429 时,executor 无法判定应降级,
直接将 429 原样返回给客户端导致任务中断。

修复:
- zhipu.py: __init__ 新增 failover_config 可选参数并转发至基类
- factory.py: _create_vendor_from_config 中给 ZhipuVendor 注入 failover_cfg
- test_router_executor.py: 新增 TestExecuteMessageFailoverOn429 测试类(5 个用例)

测试结果:971/971 passed,零回归

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
@ThreeFish-AI
ThreeFish-AI merged commit e213d6c into feature/1.x.x Apr 8, 2026
5 of 6 checks passed
@ThreeFish-AI
ThreeFish-AI deleted the vk/4c6b-fix-tiers-anthro branch April 8, 2026 08:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant