From 96e4c8ebe078c1e8790f9d4ee62b630e3c3ceb66 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 1 Feb 2026 16:48:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=94=BB=E5=B8=83=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E8=BF=87=E6=BB=A4=E7=A9=BA=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- components/canvas/CanvasChatPanel.tsx | 34 ++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/components/canvas/CanvasChatPanel.tsx b/components/canvas/CanvasChatPanel.tsx index f5804d8ae..11256b6d3 100644 --- a/components/canvas/CanvasChatPanel.tsx +++ b/components/canvas/CanvasChatPanel.tsx @@ -675,7 +675,34 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF )} - {messages.map((message) => ( + {messages.map((message) => { + // 🆕 清理消息中的内部标记并检查是否有实际内容 + const cleanedParts = message.parts?.map((part: any) => { + if (part.type === 'text' && part.text) { + return { + ...part, + text: part.text.replace(/\n*\n*/g, '').trim() + }; + } + return part; + }); + + // 检查清理后是否有内容 + const hasContent = cleanedParts?.some((part: any) => { + if (part.type === 'text') return part.text && part.text.trim().length > 0; + if (part.type === 'file' || part.type === 'image') return part.url; + return true; + }); + + // 没有内容则不渲染 + if (!hasContent && cleanedParts?.length > 0) { + return null; + } + + // 使用清理后的消息 + const cleanedMessage = { ...message, parts: cleanedParts }; + + return (
- {message.parts?.map((part: any, i: number) => { + {cleanedMessage.parts?.map((part: any, i: number) => { if (part.type === 'text') { // 提取并显示图片 const imageUrls = extractImageUrls(part.text || ''); @@ -766,7 +793,8 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
- ))} + ); + })} {isLoading && (