From eddbee968c57155e9f8ea397c04e63d7e20fbca7 Mon Sep 17 00:00:00 2001 From: hmo Date: Thu, 23 Jul 2026 15:54:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20provider=E9=93=BE=E7=99=BD=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E4=B8=8E=E5=AE=9E=E9=99=85config=E8=84=B1=E8=8A=82?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E6=A8=A1=E5=9E=8B=E6=97=A0=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 原allowed仅4个provider(deepseek/volcengine/opencode-go*), config里只有deepseek(402欠费)→全链死 - 现按存活度排序: sense-nova(实测可用+tools支持)→deepseek→afw-proxy→ocg-key* - 模型名: options.model优先, 否则取provider models字典第一个key --- gateway/scripts/chat_bridge.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/gateway/scripts/chat_bridge.py b/gateway/scripts/chat_bridge.py index f16a219..f92f977 100644 --- a/gateway/scripts/chat_bridge.py +++ b/gateway/scripts/chat_bridge.py @@ -96,11 +96,17 @@ _DEFAULT_MODELS = { def _build_chain() -> list[tuple[str, str, str]]: """Build (provider_key, base_url, model_name) in priority order. - 优先用 deepseek(直连,稳定)→ volcengine(代理→Go)→ opencode-go(备用)。 + 2026-07-23 修复:原白名单只有 deepseek/volcengine/opencode-go*, + 但 config 里只有 deepseek(402欠费)→ 全链死 → 模型无响应。 + 现按实际存活度排序:sense-nova(实测可用+支持tools)→ deepseek → + afw-proxy(本地代理,活着时优先)→ ocg-key*(Windows IP 当前403,恢复即可用)。 + 模型名:options.model 优先,否则取 provider models 字典第一个 key。 """ - allowed = ["deepseek", "volcengine", "opencode-go", "opencode-go-new"] + priority = ["sense-nova", "deepseek", "afw-proxy", + "ocg-key6", "ocg-key5", "ocg-key4", "ocg-key3", "ocg-key2", "ocg-key1", + "volcengine", "opencode-go", "opencode-go-new"] chain = [] - for key in allowed: + for key in priority: prov = _PROVIDERS.get(key) if not prov: continue @@ -109,7 +115,12 @@ def _build_chain() -> list[tuple[str, str, str]]: api_key = opts.get("apiKey", "") if not base or not api_key: continue - model = opts.get("model") or _DEFAULT_MODELS.get(key, "deepseek-v4-flash") + model = opts.get("model") + if not model: + _models = prov.get("models", {}) + model = next(iter(_models.keys()), None) if _models else None + if not model: + model = _DEFAULT_MODELS.get(key, "deepseek-v4-flash") chain.append((key, base, model)) return chain