You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Model providers: close runtime failover and live UI acceptance gaps #55
Activity
lunnynight commentedon Aug 8, 2026
自主开发进度(nightly agent):已选择路径并完成生产链路接线,PR #75 待合入
选择的路径:将一个明确 provider role 接入
resolve_with_fallback()—— 选了chatrole(Agent 对话坞,最常被使用的消费点),未删除 failover 表面。PR #75(https://github.com/2233admin/opencli-Razormind/pull/75):`feat(chat): wire chat role into ProviderResolver.resolve_with_fallback (#55)`
验收项对照
model_defaults.candidates配置后走resolve_with_fallback()(连接级失败按序转移、4xx 立即重抛);无 candidates / 显式provider_id保持原单 provider 行为,兼容既有安装。tests/integration/test_chat_failover_api.py,经真实POST /api/v1/chat端点验证 legacy、可重试转移、4xx 不转移、全不可用 502、disabled 跳过、显式 provider 绕过(resolver 单测之外)。POST /{id}/test连接测试ok:true(7.8ms,models_sample 2 个)、POST /{id}/models/sync发现 2 模型、PUT/GET /model-defaults默认顺序持久化、chat 错误提示(无 provider 400 / SSRF guard 502 / 非法 role 400 / 未注册 model 400)。浏览器 UI 走查(创建/编辑/删除/同步/连接测试/默认顺序/提示反馈)仍需真机人工或浏览器自动化完成 —— 本环境无可用浏览器,这是唯一遗留的人工项。test_resolver.py并发测试的unittest.mock.patch泄漏(gather 内逐任务 patch 围绕 await 产生还原竞争)。验证证据
环境性发现(与本 PR 无关,但影响本机测试稳定性)
本机 host 有 Clash 代理(
127.0.0.1:7897),沙箱偶发注入ALL_PROXY=socks5://...;httpx 0.28.1 在AsyncClient()构造时急切构建 SOCKS transport,无socksio时抛 ImportError,导致一批真实 HTTP 测试(graphon is_healthy 等)偶发失败。证据:tests/integration单独跑、不含本 PR 文件时同样复现 17 个相同失败。建议 dev 依赖补httpx[socks](本机pip install socksio后全量通过)。推送说明
本机 git 凭据(lunnynight)对 2233admin/opencli-Razormind 无写权限(HTTPS 403 / SSH 均拒),已走 fork + PR 路径(lunnynight:feat/chat-failover-wiring-55 → main)。需要 2233admin 合并 PR #75。
feat(chat): wire chat role into ProviderResolver.resolve_with_fallback (