






















@@ -39,6 +39,7 @@ type RetryLimitDecisionParams = {
39394040type PromptDecisionParams = {
4141stage: "prompt";
42+allowFormatRetry?: boolean;
4243aborted: boolean;
4344externalAbort: boolean;
4445fallbackConfigured: boolean;
@@ -49,6 +50,7 @@ type PromptDecisionParams = {
49505051type AssistantDecisionParams = {
5152stage: "assistant";
53+allowFormatRetry?: boolean;
5254aborted: boolean;
5355externalAbort: boolean;
5456fallbackConfigured: boolean;
@@ -75,11 +77,25 @@ function shouldEscalateRetryLimit(reason: FailoverReason | null): boolean {
7577);
7678}
777980+function isTerminalFormatFailure(params: {
81+allowFormatRetry?: boolean;
82+failoverReason: FailoverReason | null;
83+}): boolean {
84+return params.failoverReason === "format" && params.allowFormatRetry !== true;
85+}
86+7887function shouldRotatePrompt(params: PromptDecisionParams): boolean {
79-return params.failoverFailure && params.failoverReason !== "timeout";
88+return (
89+params.failoverFailure &&
90+params.failoverReason !== "timeout" &&
91+!isTerminalFormatFailure(params)
92+);
8093}
81948295function shouldRotateAssistant(params: AssistantDecisionParams): boolean {
96+if (isTerminalFormatFailure(params)) {
97+return false;
98+}
8399return (
84100(!params.aborted && (params.failoverFailure || params.failoverReason !== null)) ||
85101(params.timedOut && !params.timedOutDuringCompaction && !params.timedOutDuringToolExecution)
@@ -128,7 +144,7 @@ export function resolveRunFailoverDecision(params: RunFailoverDecisionParams): R
128144reason: params.failoverReason,
129145};
130146}
131-if (params.fallbackConfigured && params.failoverFailure) {
147+if (params.fallbackConfigured && params.failoverFailure && !isTerminalFormatFailure(params)) {
132148return {
133149action: "fallback_model",
134150reason: params.failoverReason ?? "unknown",
@@ -146,6 +162,12 @@ export function resolveRunFailoverDecision(params: RunFailoverDecisionParams): R
146162reason: params.failoverReason,
147163};
148164}
165+if (isTerminalFormatFailure(params)) {
166+return {
167+action: "surface_error",
168+reason: params.failoverReason,
169+};
170+}
149171const assistantShouldRotate = shouldRotateAssistant(params);
150172if (!params.profileRotated && assistantShouldRotate) {
151173return {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。