From b7a9c30e704fd70be3b6b377872f7c580d72a0ff Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 14 Feb 2026 10:44:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DAgent=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=8D=E5=86=8D=E8=87=86=E9=80=A0=E6=9C=AA?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(chat)/api/chat/route.ts | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/app/(chat)/api/chat/route.ts b/app/(chat)/api/chat/route.ts index fef99be53..8afc65b70 100644 --- a/app/(chat)/api/chat/route.ts +++ b/app/(chat)/api/chat/route.ts @@ -247,6 +247,46 @@ function mergeImageParamsWithAgentRecommendation(params: { return Object.keys(merged).length > 0 ? merged : undefined; } +function sanitizeAgentOutputSettingsSection(params: { + message?: string; + userImageParams?: PostRequestBody["imageParams"]; + hasUserCustomImageParams: boolean; +}): string | undefined { + const { message, userImageParams, hasUserCustomImageParams } = params; + if (!message?.trim()) return message; + + const outputSectionRegex = /###\s*输出设置[\s\S]*?(?=\n###\s*|$)/; + if (!outputSectionRegex.test(message)) return message; + + if (!hasUserCustomImageParams) { + return message.replace( + outputSectionRegex, + "### 输出设置\n- 参数:按用户面板当前设置执行(未自动改写)" + ); + } + + const lines: string[] = []; + const aspectRatio = + typeof userImageParams?.aspectRatio === "string" ? userImageParams.aspectRatio.trim() : ""; + const imageSize = + typeof userImageParams?.imageSize === "string" ? userImageParams.imageSize.trim() : ""; + const imageCount = + typeof userImageParams?.imageCount === "number" ? userImageParams.imageCount : undefined; + + if (aspectRatio && aspectRatio !== "auto") { + lines.push(`- 宽高比:${aspectRatio}(来自用户面板设置)`); + } + if (imageSize && imageSize.toUpperCase() !== "2K") { + lines.push(`- 清晰度档位:${imageSize.toUpperCase()}(来自用户面板设置)`); + } + if (typeof imageCount === "number" && Number.isFinite(imageCount) && imageCount !== 1) { + lines.push(`- 出图数量:${Math.max(1, Math.round(imageCount))} 张(来自用户面板设置)`); + } + lines.push("- 其余参数:保持用户面板当前设置"); + + return message.replace(outputSectionRegex, `### 输出设置\n${lines.join("\n")}`); +} + function guessImageMediaType(url: string): string { const cleanUrl = url.split("?")[0]?.toLowerCase() || ""; if (cleanUrl.endsWith(".jpg") || cleanUrl.endsWith(".jpeg")) return "image/jpeg"; @@ -1286,6 +1326,14 @@ export async function POST(request: Request) { }); } + if (shouldRunAgentConversation && smartAutoFriendlyMessage) { + smartAutoFriendlyMessage = sanitizeAgentOutputSettingsSection({ + message: smartAutoFriendlyMessage, + userImageParams: requestBody.imageParams, + hasUserCustomImageParams, + }); + } + const session = await auth(); if (!session?.user) {