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