From 2d0b556ee9cca7141b1c9b897d3a656feb20a8e5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 1 Feb 2026 02:58:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BD=93=20isGeneratingImageFlag=3Dtrue?= =?UTF-8?q?=20=E6=97=B6=E5=BC=BA=E5=88=B6=E6=98=BE=E7=A4=BA=E5=8D=A0?= =?UTF-8?q?=E4=BD=8D=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:hasImageContent 检测到历史消息中的图片导致占位图提前消失 解决:isGeneratingImageFlag 优先级最高,为 true 时忽略 hasImageContent Co-authored-by: Cursor --- components/messages.tsx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/components/messages.tsx b/components/messages.tsx index 11f64b3..46dedcc 100644 --- a/components/messages.tsx +++ b/components/messages.tsx @@ -229,17 +229,21 @@ function PureMessages({ status, }); - if (hasImageContent) { - // 图片已生成,延迟后隐藏占位图 + // 🆕 关键修复:当 isGeneratingImageFlag 为 true 时,优先显示占位图 + // 因为这表示后端正在生成图片,即使检测到旧的图片内容也不应该隐藏占位图 + if (isGeneratingImageFlag) { + console.log("[Messages useEffect] isGeneratingImageFlag=true,强制显示占位图"); + setShowThinkingWithDelay(true); + } else if (hasImageContent && !isGeneratingImage) { + // 只有当 isGeneratingImageFlag 为 false 且有图片内容时,才考虑隐藏占位图 console.log("[Messages useEffect] 图片已生成,延迟后隐藏"); const timer = setTimeout(() => { setShowThinkingWithDelay(false); }, delayTime); return () => clearTimeout(timer); - } else if (isGeneratingImage || isGeneratingImageFlag) { - // 收到 GENERATING_IMAGE 标记(对话消息已发送),继续显示占位图等待图片 - // 使用 isGeneratingImageFlag 来解决消息延迟添加时标记检测不到的问题 - console.log("[Messages useEffect] 检测到生成标记,显示占位图"); + } else if (isGeneratingImage) { + // 消息中检测到 GENERATING_IMAGE 标记 + console.log("[Messages useEffect] 检测到消息中的生成标记,显示占位图"); setShowThinkingWithDelay(true); } else if (status === "streaming" || status === "submitted") { // 正在处理中(分析意图或流式传输),显示占位图