From 31c37534b46e991bc51e0e51b309a17502a06bb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Fri, 4 Sep 2026 12:05:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=81=8A=E5=A4=A9=20Markdown?= =?UTF-8?q?=20=E5=AE=89=E5=85=A8=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为 Direct Codex 流式正文恢复可访问标签 将 HTML 标签转义为可见纯文本 保留 Markdown 内容安全渲染边界 --- .../src/components/ChatMarkdownMessage/index.tsx | 12 +++++++++--- .../project-workspace/ProjectSupervisorView.tsx | 12 +++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/ai-game-creator-shell/src/components/ChatMarkdownMessage/index.tsx b/apps/ai-game-creator-shell/src/components/ChatMarkdownMessage/index.tsx index a08779ac3..50f8845d8 100644 --- a/apps/ai-game-creator-shell/src/components/ChatMarkdownMessage/index.tsx +++ b/apps/ai-game-creator-shell/src/components/ChatMarkdownMessage/index.tsx @@ -59,12 +59,12 @@ const markdownComponents: Components = { ), p: ({ children }) =>

{children}

, ul: ({ children }) => ( - + ), ol: ({ children }) => (
    {children}
), - li: ({ children }) =>
  • {children}
  • , + li: ({ children }) =>
  • - {children}
  • , blockquote: ({ children }) => (
    {children} @@ -112,6 +112,12 @@ const markdownComponents: Components = { ), }; +function escapeHtmlTagsForDisplay(text: string) { + return text.replace(/<\/?[A-Za-z][^>]*>/gu, (tag) => + tag.replaceAll('<', '<').replaceAll('>', '>'), + ); +} + export function ChatMarkdownMessage({ text, role, @@ -134,7 +140,7 @@ export function ChatMarkdownMessage({ remarkPlugins={[remarkGfm]} components={markdownComponents} > - {text} + {escapeHtmlTagsForDisplay(text)} diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx b/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx index 5c2ef58e9..de45d73d9 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx +++ b/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx @@ -175,11 +175,13 @@ export function ProjectSupervisorView({ {directActivity || '陶泥儿正在处理'} {transientReply ? ( - +
    + +
    ) : null} ) : transientReply ? (