mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-09-13 03:13:41 +08:00
Track the primary model health, not just fallback entries - NodeStreamingChatHelper accepts primaryProviderId via a new 5-arg constructor; AgentGraphBuilder passes ModelConfigEntity.getProvider() - Before the 5-retry primary loop, check healthTracker.isInCooldown(primaryProviderId): if true, log + broadcast "主模型暂时不可用(冷却中),直接尝试备选模型..." and short-circuit straight to the fallback chain. Prevents a degraded primary from burning 30+ seconds of backoff on every conversation turn. - recordPrimary(success/failure) now fires on every primary verdict — AUTH, BILLING, MODEL_NOT_FOUND, EMPTY_RESPONSE, generic UNKNOWN, and the explicit success path. Three consecutive failures push the primary provider into cooldown automatically. - Legacy 1/2/3-arg constructors leave primaryProviderId null; tracking silently disables for them so existing tests/wiring keep working. Split BILLING and MODEL_NOT_FOUND out of CLIENT_ERROR / AUTH_ERROR - BILLING (HTTP 402, "insufficient_quota", "credit balance is too low", "billing_hard_limit_reached", "quota exceeded"): payment failure on primary does not kill the call — a different provider may have credits. Skips same-model retries and heads to fallback chain. - MODEL_NOT_FOUND (HTTP 404, "Model not exist", "model_not_found", DashScope "[InvalidParameter] url error"): unknown model id will not start working on retry. Was previously misclassified as CLIENT_ERROR and terminated the whole call; now routes to fallback so a different provider can attempt with its default model. - classifyError ordering matters: BILLING / MODEL_NOT_FOUND are matched BEFORE the generic 400 / Bad Request branch, otherwise they would be swallowed by CLIENT_ERROR. Tests - ErrorClassificationTest: 11 tests, covers multi-vendor error phrasing for both new types + regression checks that 401 / 429 / 400 still classify as before - NodeStreamingChatHelperFallbackChainTest: +2 tests verifying primaryProviderId persistence on the new constructor and null on legacy ones - 181 tests pass (was 168 + 13 new) |
||
|---|---|---|
| .. | ||
| src | ||
| Dockerfile | ||
| pom.xml | ||