diff --git a/lib/canvas/generate-image.ts b/lib/canvas/generate-image.ts index 3c7dfa44f..2ae709c20 100644 --- a/lib/canvas/generate-image.ts +++ b/lib/canvas/generate-image.ts @@ -4917,7 +4917,7 @@ export async function generateCanvasImage( : imageModels.find((m) => m.model.isDefault) || imageModels[0]; if (!selectedModel) { - if (model && request.allowFailover === false) throw new Error("指定的图片模型不可用,未切换到其他模型"); + if (model && (model !== "auto" || request.agentImageMode === "pinned") && request.allowFailover === false) throw new Error("指定的图片模型不可用,未切换到其他模型"); selectedModel = request.agentImageMode === "auto" ? imageModels.find(entry => !entry.model.excludeFromFailover) : imageModels[0]; if (!selectedModel) throw new Error("当前没有可用的备用图片模型,请稍后重试"); } diff --git a/tests/routes/canvas-agent-runtime-image-failover.test.ts b/tests/routes/canvas-agent-runtime-image-failover.test.ts index b53ac7683..19ec552a0 100644 --- a/tests/routes/canvas-agent-runtime-image-failover.test.ts +++ b/tests/routes/canvas-agent-runtime-image-failover.test.ts @@ -61,3 +61,10 @@ test("automatic fallback respects requested dimensions, disabled candidates and const result = await h.generate({ ...h.request, agentImageMaxCreditCost: 3 }); expect(result.modelRef).toBe("backup"); expect(h.calls.map(c => c.id)).toEqual(["primary", "backup"]); }); + + +test("the existing non-Agent auto alias continues to select its configured default", async () => { + const h = harness(); + const result = await h.generate({ ...h.request, model: "auto", agentImageMode: undefined, allowFailover: false }); + expect(result.modelRef).toBe("primary"); expect(h.calls).toHaveLength(1); +});