fix: hide internal image failure messages

This commit is contained in:
134 2026-06-15 15:33:58 +08:00
parent fdff0c2865
commit ffed16d802

View File

@ -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 (
<div
className="group/message fade-in w-full animate-in duration-200"
@ -390,7 +413,7 @@ const PurePreviewMessage = ({
"justify-start": message.role === "assistant",
})}
>
{message.role === "assistant" && message.parts.some((part) => part.type === "text" && part.text && part.text.trim().length > 0) && (
{message.role === "assistant" && hasVisibleTextPart && (
<div className="-mt-1 flex size-8 shrink-0 items-center justify-center rounded-full bg-background ring-1 ring-border">
<SparklesIcon size={14} />
</div>
@ -398,14 +421,9 @@ const PurePreviewMessage = ({
<div
className={cn("flex min-w-0 flex-col", {
"gap-2 md:gap-4": message.parts?.some(
(p) => 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";