From ffed16d802d5a2d75e825d362f5194ec20ec30e3 Mon Sep 17 00:00:00 2001 From: 134 Date: Mon, 15 Jun 2026 15:33:58 +0800 Subject: [PATCH] fix: hide internal image failure messages --- components/message.tsx | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/components/message.tsx b/components/message.tsx index 3224e530d..7693f0e32 100644 --- a/components/message.tsx +++ b/components/message.tsx @@ -194,6 +194,15 @@ function stripModelBadgeLines(text: string): string { .trim(); } +function isInternalImageGenerationFailureText(text: string): boolean { + const normalized = stripModelBadgeLines(filterAgentRoutingNoise(filterVideoContent(text))).trim(); + if (!normalized) return false; + if (extractImageUrlsFromText(normalized).length > 0) return false; + return /^(?:生成图片失败|图片生成失败)[,,::\s]*(?:未找到图片数据|未解析到图片|模型未返回生成图片|图片数据不可用)?$/i.test( + normalized + ); +} + function appendImageDoneSummary(text: string): string { if (!text) return text; const normalized = String(text || "").trim(); @@ -375,9 +384,23 @@ const PurePreviewMessage = ({ const attachmentsFromMessage = message.parts.filter( (part) => part.type === "file" ); + const hasVisibleTextPart = message.parts.some( + (part) => + part.type === "text" && + part.text?.trim() && + !(message.role === "assistant" && isInternalImageGenerationFailureText(part.text)) + ); useDataStream(); + if ( + message.role === "assistant" && + !hasVisibleTextPart && + attachmentsFromMessage.length === 0 + ) { + return null; + } + return (
- {message.role === "assistant" && message.parts.some((part) => part.type === "text" && part.text && part.text.trim().length > 0) && ( + {message.role === "assistant" && hasVisibleTextPart && (
@@ -398,14 +421,9 @@ const PurePreviewMessage = ({
p.type === "text" && p.text?.trim() - ), + "gap-2 md:gap-4": hasVisibleTextPart, "w-full": - (message.role === "assistant" && - message.parts?.some( - (p) => p.type === "text" && p.text?.trim() - )) || + (message.role === "assistant" && hasVisibleTextPart) || mode === "edit", "max-w-[calc(100%-2.5rem)] sm:max-w-[min(fit-content,80%)]": message.role === "user" && mode !== "edit", @@ -445,6 +463,13 @@ const PurePreviewMessage = ({ if (type === "text") { if (mode === "view") { + if ( + message.role === "assistant" && + isInternalImageGenerationFailureText(part.text) + ) { + return null; + } + // 检查是否是图片处理的加载消息 if (part.text === "正在变清晰..." || part.text === "正在抠图..." || part.text === "正在图像拓展..." || part.text === "正在去水印...") { let type: "enhance" | "rmbg" | "extend" | "watermark";