Show HN:Markstream – 渲染来自 LLM 流的未完成 Markdown
Markstream 是一个专为解决 AI 聊天界面中 Markdown 渲染问题而构建的库。它处理了 LLM 输出不完整带来的常见难题,包括未闭合的代码块和表格、Mermaid/KaTeX/代码块的闪烁问题、长回复的重新渲染性能,以及 HTML/自定义组件的安全渲染。该项目已支持 Vue/Nuxt、React/Next.js、Svelte、Angular 和 Vue 2 等多个框架。
背景速读
大型语言模型(LLM)在对话时是逐 token 流式输出文本的,而不是一次性给出完整回复。大部分 Markdown 渲染器(比如将 `**粗体**` 转为 HTML 标签的解析库)都假设传入内容是完整的文档,这在 AI 聊天界面中会导致问题:用户会看到未闭合的代码块闪烁、表格错乱、公式渲染失败,或者每次新 token 到来时整个页面重新渲染一遍,造成性能浪费和视觉闪烁。
Markstream 是一个开源的流式 Markdown 渲染器,专门解决上述问题。它支持 Vue/React/Svelte/Angular 等主流前端框架,能让代码块、Mermaid 图表、KaTeX 数学公式在流式输出过程中保持稳定渲染,直到内容完整。
作者 Simon 将其发布在 Hacker News 的 Show HN 栏目(开发者展示自己项目的社区板块)上,希望从同样在构建 AI 聊天界面的开发者那里获得反馈,了解还有哪些流式 Markdown 的边缘情况未被妥善处理。