diff --git a/src/actions/providers.ts b/src/actions/providers.ts index b9a7f855d..eb35cc871 100644 --- a/src/actions/providers.ts +++ b/src/actions/providers.ts @@ -1057,6 +1057,30 @@ function extractErrorMessage(errorJson: unknown): string | undefined { return undefined; } + const obj = errorJson as Record; + + // 优先提取 upstream_error 中的错误信息(针对中转服务的嵌套错误) + const upstreamError = (obj.error as { upstream_error?: unknown } | undefined)?.upstream_error; + + if (upstreamError && typeof upstreamError === "object") { + const upstreamErrorObj = upstreamError as Record; + + // 尝试从 upstream_error.error.message 提取 + const nestedMessage = normalizeErrorValue( + (upstreamErrorObj.error as { message?: unknown } | undefined)?.message + ); + if (nestedMessage) { + return nestedMessage; + } + + // 尝试从 upstream_error.message 提取 + const directMessage = normalizeErrorValue(upstreamErrorObj.message); + if (directMessage) { + return directMessage; + } + } + + // 常规错误提取逻辑(保持原有优先级) const candidates: Array<(obj: Record) => unknown> = [ (obj) => (obj.error as Record | undefined)?.message, (obj) => obj.message, @@ -1069,7 +1093,7 @@ function extractErrorMessage(errorJson: unknown): string | undefined { for (const getter of candidates) { let value: unknown; try { - value = getter(errorJson as Record); + value = getter(obj); } catch { continue; }