fix: provider链白名单与实际config脱节导致模型无响应

- 原allowed仅4个provider(deepseek/volcengine/opencode-go*), config里只有deepseek(402欠费)→全链死
- 现按存活度排序: sense-nova(实测可用+tools支持)→deepseek→afw-proxy→ocg-key*
- 模型名: options.model优先, 否则取provider models字典第一个key
This commit is contained in:
hmo
2026-07-23 15:54:38 +08:00
parent ea193a9881
commit eddbee968c
+15 -4
View File
@@ -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