Skip to content

富文本渲染测试

概述

富文本渲染测试是一个专为 LLM(大语言模型)流式输出场景设计的富文本渲染引擎测试工具。它让你能够在可视化的环境中测试、调试和对比不同渲染器版本对 Markdown、HTML、数学公式、Mermaid 图表等内容的渲染效果,是开发智能体应用时的"渲染实验室"。

核心功能

  • 四引擎对比测试:支持 V1(Markdown-it)、V2(自研 AST 解析器)、Pure Markdown-it、Hybrid V3 四种渲染器,一键切换对比
  • 流式输出模拟:模拟 LLM 打字机效果,支持自定义速度、延迟和波动模式,测试流式渲染的实时表现
  • 动态样式编辑:所见即所得地调整 Markdown 元素(标题、粗体、引用块等)的颜色、阴影、边框等 CSS 样式
  • 复杂内容覆盖:预设 24+ 个测试用例,覆盖代码块、表格、Mermaid 图表、KaTeX 公式、LLM 思考块、HTML 沙箱、VCP 工具调用等场景
  • 可视化 AST 调试:实时展示渲染引擎的抽象语法树(AST)结构,支持稳定区/待定区染色,辅助排查渲染问题

一句话总结

如果你需要确认一段 LLM 输出的 Markdown 内容在各种渲染模式下看起来什么样——这就是你要找的工具。

快速上手

首次测试 5 步走

第一步:打开工具

在左侧工具列表中找到 富文本渲染测试,点击进入。页面默认采用"上输入 + 下预览"的双栏布局。

TODO: 截图 - 工具整体界面,标注输入区、预览区、配置面板、预设列表

第二步:选择一个预设内容

点击工具栏的 预设 下拉菜单,选择一个测试用例。建议从 基本测试 (basic) 开始——它包含了最常用的 Markdown 语法元素,适合快速验证基础渲染效果。

TODO: 截图 - 预设下拉菜单展开,展示预设列表

第三步:查看渲染效果

预设内容会自动填入输入区,右侧预览区会立即展示渲染后的效果。你可以看到:

  • Markdown 语法被正确解析(标题、粗体、列表等)
  • 代码块带有语法高亮
  • 表格以规范的表格形式展示
  • 链接可点击、图片可预览

TODO: 截图 - 基本测试的输入内容与渲染结果对比

第四步:切换渲染器版本

在右侧的 渲染配置 区域,找到 渲染器版本 下拉菜单。试试从默认的 V2 - Custom Parser 切换到 V1 - Markdown-it,观察同一个内容在不同引擎下的渲染差异。

TODO: 截图 - 渲染器版本切换下拉菜单

第五步:尝试流式模式

在工具栏关闭 流式模式 开关(默认开启),然后点击 重新渲染 按钮。内容会以打字机效果逐字输出,模拟 LLM 的实时响应体验。

TODO: 截图 - 流式模式开关位置标注

功能详解

输入区

输入区位于页面顶部,用于输入或编辑待测试的 Markdown/HTML 内容。

基本操作

  • 直接输入:在编辑器中直接输入 Markdown 文本,预览区会实时更新
  • 清空内容:点击工具栏的 清空 按钮重置输入
  • 从预设加载:从预设下拉菜单选择一个预设,内容自动填入

输入格式支持

输入区支持标准的 Markdown 语法,以及以下扩展格式:

格式语法示例说明
标准 Markdown# 标题**粗体**标题、粗体、斜体、列表、链接、图片等
GFM 扩展- [ ] 任务| 表格 |任务列表、表格、删除线
KaTeX 公式$E=mc^2$$$\sum_{i=1}^n$$行内和块级数学公式
Mermaid 图表```mermaid ...流程图、时序图、甘特图等
HTML 混合<div style="...">...</div>HTML 与 Markdown 深度嵌套
LLM 思考块<think>...</think>可折叠的思考过程块
VCP 工具调用<<<[TOOL_REQUEST]>>>VCP 协议工具调用格式

TODO: 截图 - 输入区编辑器,标注代码编辑器顶部工具栏

预览区

预览区位于页面底部,实时展示输入内容的渲染结果。这是你在测试中主要关注的区域。

渲染模式

预览区支持四种渲染器版本,通过右侧配置面板的 渲染器版本 下拉菜单切换:

版本标识特点推荐场景
V1 - Markdown-itv1-markdown-it基于 markdown-it 的增量解析器兼容性测试、性能对比
V2 - Custom Parserv2-custom-parser推荐自研 AST 解析器,支持复杂 HTML 和 LLM 思考块日常测试、新功能验证
Pure Markdown-itpure-markdown-it纯 markdown-it 无增量优化基准测试
Hybrid V3hybrid-v3混合策略 V3 版本(规划中)预留

TODO: 截图 - 同一内容在 V1 和 V2 下的渲染对比

可视化块状态

在右侧 渲染配置 中开启 可视化块状态 开关后,预览区中的每个 AST 节点都会显示其状态标签:

  • 🟢 stable:语法完整的稳定节点,不会再次变化
  • 🟡 pending:待定区的节点,可能随着新内容到达而改变

这在调试流式渲染问题时特别有用,可以直观地看到哪些内容还在变化中。

TODO: 截图 - 开启可视化块状态后的预览区,标注 stable 和 pending 标签

配置面板

配置面板位于预览区右侧,是工具的核心控制区域,分为多个功能区块。

渲染配置

配置项说明默认值
渲染器版本选择渲染引擎V2 - Custom Parser
节流时间 (ms)AST 更新节流间隔,控制打字机更新频率80ms
启用节流是否启用 AST 更新节流✅ 开启
启用流式平滑化平滑 Token 发射节奏,避免视觉卡顿✅ 开启
可视化块状态显示稳定区/待定区状态标签❌ 关闭
启用调试日志输出详细渲染日志到控制台(会刷屏)❌ 关闭

TODO: 截图 - 渲染配置区块

样式编辑器

样式编辑器让你可以所见即所得地调整 Markdown 元素的 CSS 样式:

  • 全局开关:控制是否应用任何自定义样式
  • 元素列表:段落、粗体、斜体、删除线、引用、块引用、警告块、行内代码、链接、H1-H6 标题
  • 每个元素可调整
    • 颜色
    • 背景色
    • 字体粗细 / 斜体 / 装饰线
    • 文字发光(text-shadow)
    • 边框发光(box-shadow)
    • 边框圆角

TODO: 截图 - 样式编辑器面板,展示某个元素的编辑状态

LLM 思考规则

用于配置哪些 XML 标签应被识别为"思考节点"。默认已包含两个规则:

规则标签名显示名称默认折叠
standard-think<think>思考过程✅ 折叠
gugu-think<guguthink>咕咕的思考❌ 展开

你可以:

  • 添加新规则:指定标签名、显示名称和是否默认折叠
  • 编辑规则:修改现有规则的参数
  • 删除规则:移除不需要的规则
  • 重置为默认:一键恢复默认配置

TODO: 截图 - LLM 思考规则编辑器

安全配置

配置项说明默认值
默认渲染 HTML是否默认渲染 HTML 代码块
HTML 无边框模式HTML 预览无边框渲染
CDN 本地化自动替换 CDN 链接为本地资源
允许危险 HTML允许渲染 script/iframe 等标签
启用进入动画新增节点是否带淡入动画
允许外部脚本是否允许加载外部 CDN 脚本
默认展开代码块代码块默认展开
默认折叠工具调用工具调用默认折叠

TODO: 截图 - 安全配置区块

流式配置

当开启流式模式时,以下配置控制流式模拟的行为:

配置项说明默认值
流式速度输出速度(字符/秒)100
初始延迟开始输出前的等待时间(ms)500
启用波动模拟真实网络环境下的发包抖动
延迟波动延迟的随机波动范围(min~max ms)50~200
字符波动单次输出字符数的随机波动范围1~10

TODO: 截图 - 流式配置区块

测试报告

测试报告功能让你可以将测试结果导出为结构化报告,用于问题复现和团队协作。

点击工具栏的 复制报告 按钮,会弹出一个配置对话框,让你选择报告包含的内容:

报告内容说明
测试配置包含渲染器版本、流式参数等配置信息
原文输入的原始 Markdown 内容
渲染 HTML渲染后的 HTML 代码
规范化原文经过规范化处理后的原文
规范化渲染规范化处理后的渲染结果
对比结果原文与渲染结果的逐行对比
样式配置当前的样式编辑器设置

选择完成后点击复制,报告会以 JSON 格式复制到剪贴板。

TODO: 截图 - 复制报告配置对话框

实时 AST 查看器

AST 查看器以树状结构实时展示当前内容的抽象语法树。每个节点显示:

  • 节点类型(如 paragraphheadingcode_block
  • 节点属性(如 heading 的 level、code_block 的 language)
  • 子节点层级展开/折叠

这是深入理解渲染引擎内部结构的最佳工具——你可以清楚地看到一段 Markdown 文本是如何被拆解成层级化的 AST 节点的。

TODO: 截图 - AST 查看器的树状结构展示

高级用法

复杂场景组合测试

通过不同的预设组合和配置调整,你可以测试各种复杂的渲染场景:

场景一:HTML 沙箱渲染测试

  1. 选择一个包含复杂 HTML 的预设,如 复杂渲染测试 (complex-rendering-test)
  2. 确保渲染器版本为 V2 - Custom Parser
  3. 开启 默认渲染 HTML 开关
  4. 观察 HTML 内容如何在沙箱中渲染,包括内部的 SVG、交互元素等

场景二:流式状态下思考块行为

  1. 选择 LLM 思考节点 (llm-think-nodes) 预设
  2. 开启流式模式并设置较慢的流式速度(如 50 chars/s)
  3. 观察思考块在流式过程中如何从"思考中"状态过渡到"已完成"状态
  4. 尝试修改思考规则,添加自定义标签名来测试新的思考块类型

场景三:样式效果对比

  1. 选择 基本测试 (basic) 预设
  2. 打开样式编辑器,为标题设置不同的颜色和文字发光效果
  3. 在 V1 和 V2 渲染器之间切换,观察样式是否在两种引擎下表现一致
  4. 调整 --card-opacity 相关的透明度值,验证动态主题的通透效果

正则规则预处理

如果你需要在渲染前对内容进行预处理转换,可以在 正则配置(Regex Config) 中设置自定义正则规则。规则会在内容进入渲染器之前执行,实现自动替换和格式转换。

TODO: 截图 - 正则配置面板

测试对比与回归

当你修改了渲染引擎的代码后,可以使用这个工具进行回归测试:

  1. 逐个运行所有预设用例
  2. 使用 复制报告 功能保存当前版本的渲染结果作为基线
  3. 修改代码后重新测试,对比报告差异
  4. 确认所有预设的渲染效果均符合预期

常见问题

Q:V1 和 V2 渲染器有什么区别?我应该用哪个?

V1(Markdown-it)是行业标准的 Markdown 解析器,兼容性好但功能有限——不支持 LLM 思考块、VCP 工具调用和复杂 HTML 嵌套。V2(Custom Parser)是自研的 AST 解析器,在这些 LLM 特定场景下有更好的表现。日常测试推荐使用 V2,在遇到兼容性问题时可以切换到 V1 做对比验证。

Q:为什么我的 HTML 内容没有渲染?

请检查以下配置:

  1. 是否开启了 默认渲染 HTML 开关(默认关闭)
  2. 如果使用了 scriptiframe 等标签,需要开启 允许危险 HTML
  3. 如果引用了外部 CDN 资源,确保 允许外部脚本 已开启
  4. 如果是裸 HTML 页面(以 <!DOCTYPE html> 开头),引擎会自动包裹在代码块中,防止 UI 爆破

Q:流式模拟时页面卡顿怎么办?

可以尝试以下优化:

  1. 降低 流式速度(减少字符/秒)
  2. 增加 节流时间(如从 80ms 调整到 150ms)
  3. 关闭 启用流式平滑化(减少缓冲层开销)
  4. 关闭 启用进入动画(减少动画渲染压力)
  5. 如果仍然卡顿,可以切换到 Pure Markdown-it 模式做基准对比

Q:如何测试一个自定义的 LLM 思考块标签?

在右侧配置面板的 LLM 思考规则 区域,点击 添加规则

  1. 规则 ID:输入唯一标识(如 my-custom-think
  2. 标签名:输入自定义 XML 标签名(如 mythink——不要包含尖括号
  3. 显示名称:输入 UI 显示名称(如 "我的思考")
  4. 默认折叠:选择是否默认折叠
  5. 保存后在输入区使用 <mythink>...内容...</mythink> 即可看到效果

Q:样式编辑器中调整后没有变化?

可能的原因:

  1. 检查 全局开关 是否已开启(在样式编辑器顶部)
  2. 检查对应元素的 启用 开关是否已开启
  3. 尝试切换一次渲染器版本,强制刷新样式绑定
  4. 自定义样式只在 V1V2 渲染器中生效,Pure Markdown-it 模式下不会应用

Q:如何将测试结果分享给团队?

使用 复制报告 功能:

  1. 点击工具栏的 复制报告 按钮
  2. 在配置对话框中选择需要包含的内容
  3. 点击复制,报告以 JSON 格式存入剪贴板
  4. 将 JSON 内容粘贴到文档、Issue 或聊天中
  5. 报告包含完整的测试配置、原文、渲染结果和对比信息,团队成员可以据此复现问题

Released under the Apache-2.0 License.