From d345ec67b796cc4ee5f0c2eb5fd42f1737d49491 Mon Sep 17 00:00:00 2001 From: hex2077 Date: Wed, 25 Mar 2026 12:48:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(provider):=20=E6=B8=85=E9=99=A4=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E6=A0=87=E8=AE=B0=E9=81=BF=E5=85=8D=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=8D=A1=E6=AD=BB=E5=B9=B6=E6=9B=B4=E6=96=B0=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当 provider 报错时,清除 needsRefresh 和 refreshCount 标记,防止健康检查逻辑陷入刷新循环导致节点卡死。同时更新 provider-models.js 中的模型列表,添加 gpt-5.4-mini 模型,并更新项目版本号至 2.11.8。 --- VERSION | 2 +- src/providers/provider-models.js | 1 + src/providers/provider-pool-manager.js | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/VERSION b/VERSION index dd52175..9462efa 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.11.7.2 +2.11.8 diff --git a/src/providers/provider-models.js b/src/providers/provider-models.js index 4998f71..faa044c 100644 --- a/src/providers/provider-models.js +++ b/src/providers/provider-models.js @@ -88,6 +88,7 @@ export const PROVIDER_MODELS = { 'gpt-5.3-codex', 'gpt-5.3-codex-spark', 'gpt-5.4', + 'gpt-5.4-mini', ], 'forward-api': [], 'grok-custom': [ diff --git a/src/providers/provider-pool-manager.js b/src/providers/provider-pool-manager.js index a6a6783..6ec77ed 100644 --- a/src/providers/provider-pool-manager.js +++ b/src/providers/provider-pool-manager.js @@ -1330,6 +1330,10 @@ export class ProviderPoolManager { provider.config.lastErrorTime = new Date().toISOString(); // 更新 lastUsed 时间,避免因 LRU 策略导致失败节点被重复选中 provider.config.lastUsed = new Date().toISOString(); + + // 只要报错,就清除刷新标记,由下次触发或健康检查决定是否需要刷新 + provider.config.needsRefresh = false; + provider.config.refreshCount = 0; // 保存错误信息 if (errorMessage) { @@ -1368,6 +1372,8 @@ export class ProviderPoolManager { if (provider) { const wasHealthy = provider.config.isHealthy; provider.config.isHealthy = false; + provider.config.needsRefresh = false; // 报错时不健康,清除刷新标记,防止卡死 + provider.config.refreshCount = 0; provider.config.errorCount = this.maxErrorCount; // Set to max to indicate definitive failure provider.config.lastErrorTime = new Date().toISOString(); provider.config.lastUsed = new Date().toISOString(); @@ -1404,6 +1410,8 @@ export class ProviderPoolManager { const provider = this._findProvider(providerType, providerConfig.uuid); if (provider) { provider.config.isHealthy = false; + provider.config.needsRefresh = false; // 报错时不健康,清除刷新标记,防止卡死 + provider.config.refreshCount = 0; provider.config.errorCount = this.maxErrorCount; // Set to max to indicate definitive failure provider.config.lastErrorTime = new Date().toISOString(); provider.config.lastUsed = new Date().toISOString();