在AI流式响应场景中,文本是逐块生成的,常出现未闭合的Markdown标记(如只有开头的**却无闭合标记),传统渲染器会显示原始标记破坏体验。Streamdown通过以下方案解决该问题:
- 实时语法树分析:采用增量解析技术,对到达的每个文本片段构建临时AST,即使语法不完整也能预测可能的结构
- 容错渲染机制:当检测到未闭合语法时,会自动补全虚拟闭合标记进行临时渲染,并在收到实际闭合标记时动态修正
- 渐进式样式应用:对于粗体/斜体等行内样式,会先以半透明效果呈现,待标记完整后转为标准样式,实现视觉过渡
实施步骤:
- 安装Streamdown组件(npm install streamdown)
- 将流式文本作为children传递给<Streamdown>组件
- 开启parseIncompleteMarkdown属性(默认已启用)
本答案来源于文章《Streamdown:专为 AI 流式响应设计的 Markdown 渲染组件》