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 8e2545024..8edc680a9 100644 --- a/apps/ai-game-creator-shell/src/components/ChatMarkdownMessage/index.tsx +++ b/apps/ai-game-creator-shell/src/components/ChatMarkdownMessage/index.tsx @@ -80,7 +80,9 @@ const markdownComponents: Components = { ), code: ({ className, children, node: _node, ...props }) => { - const isBlock = Boolean(className?.includes('language-')); + const isBlock = + Boolean(className?.includes('language-')) || + String(children).includes('\n'); return isBlock ? ( {children} diff --git a/apps/ai-game-creator-shell/tests/ChatMarkdownMessage.test.tsx b/apps/ai-game-creator-shell/tests/ChatMarkdownMessage.test.tsx index 1c293be74..d37929a32 100644 --- a/apps/ai-game-creator-shell/tests/ChatMarkdownMessage.test.tsx +++ b/apps/ai-game-creator-shell/tests/ChatMarkdownMessage.test.tsx @@ -34,6 +34,19 @@ describe('ChatMarkdownMessage', () => { ).toBeNull(); }); + it('无语言标记的多行围栏代码仍使用代码块样式', () => { + const { container } = render( + , + ); + + const code = container.querySelector('pre code'); + expect(code?.className).toContain('whitespace-pre'); + expect(code?.className).not.toContain('rounded'); + }); + it('保留流式 assistant 文本并标记 streaming 状态', () => { const { container } = render(