mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 00:11:23 +00:00
fix(agents): keep fallback chain reachable on configured fallback models (#25922)
This commit is contained in:
@@ -206,12 +206,24 @@ function resolveFallbackCandidates(params: {
|
||||
if (params.fallbacksOverride !== undefined) {
|
||||
return params.fallbacksOverride;
|
||||
}
|
||||
// Skip configured fallback chain when the user runs a non-default override.
|
||||
// In that case, retry should return directly to configured primary.
|
||||
if (!sameModelCandidate(normalizedPrimary, configuredPrimary)) {
|
||||
return []; // Override model failed → go straight to configured default
|
||||
const configuredFallbacks = resolveAgentModelFallbackValues(
|
||||
params.cfg?.agents?.defaults?.model,
|
||||
);
|
||||
if (sameModelCandidate(normalizedPrimary, configuredPrimary)) {
|
||||
return configuredFallbacks;
|
||||
}
|
||||
return resolveAgentModelFallbackValues(params.cfg?.agents?.defaults?.model);
|
||||
// Preserve resilience after failover: when current model is one of the
|
||||
// configured fallback refs, keep traversing the configured fallback chain.
|
||||
const isConfiguredFallback = configuredFallbacks.some((raw) => {
|
||||
const resolved = resolveModelRefFromString({
|
||||
raw: String(raw ?? ""),
|
||||
defaultProvider,
|
||||
aliasIndex,
|
||||
});
|
||||
return resolved ? sameModelCandidate(resolved.ref, normalizedPrimary) : false;
|
||||
});
|
||||
// Keep legacy override behavior for ad-hoc models outside configured chain.
|
||||
return isConfiguredFallback ? configuredFallbacks : [];
|
||||
})();
|
||||
|
||||
for (const raw of modelFallbacks) {
|
||||
|
||||
Reference in New Issue
Block a user