Markdown 格式化过滤器 (Markdown Normalizer)¶
这是一个用于 Open WebUI 的内容格式化过滤器,旨在修复 LLM 输出中常见的 Markdown 格式问题。它能确保代码块、LaTeX 公式、Mermaid 图表和其他 Markdown 元素被正确渲染。
功能特性¶
- Details 标签规范化: 确保
<details>标签(常用于思维链)有正确的间距。在</details>后添加空行,并在自闭合<details />标签后添加换行,防止渲染问题。 - 强调空格修复: 修复强调标记内部的多余空格(例如
** 文本 **->**文本**),这会导致 Markdown 渲染失败。包含保护机制,防止误修改数学表达式(如2 * 3 * 4)或列表变量。 - Mermaid 语法修复: 自动修复常见的 Mermaid 语法错误,如未加引号的节点标签(支持多行标签和引用标记)和未闭合的子图 (Subgraph)。v1.1.2 新增: 全面保护各种类型的连线标签(实线、虚线、粗线),防止被误修改。
- 前端控制台调试: 支持将结构化的调试日志直接打印到浏览器控制台 (F12),方便排查问题。
- 代码块格式化: 修复破损的代码块前缀、后缀和缩进问题。
- LaTeX 规范化: 标准化 LaTeX 公式定界符 (
\[->$$,\(->$)。 - 思维标签规范化: 统一思维链标签 (
<think>,<thinking>-><thought>)。 - 转义字符修复: 清理过度的转义字符 (
\\n,\\t)。 - 列表格式化: 确保列表项有正确的换行。
- 标题修复: 修复标题中缺失的空格 (
#标题-># 标题)。 - 表格修复: 修复表格中缺失的闭合管道符。
- XML 清理: 移除残留的 XML 标签。
使用方法¶
- 在 Open WebUI 中安装此插件。
- 全局启用或为特定模型启用此过滤器。
- 在 Valves 设置中配置需要启用的修复项。
- (可选) 显示调试日志 (Show Debug Log) 在 Valves 中默认开启。这会将结构化的日志打印到浏览器控制台 (F12)。 > [!WARNING] > 由于这是初版,可能会出现“负向修复”的情况(例如破坏了原本正确的格式)。如果您遇到问题,请务必查看控制台日志,复制“原始 (Original)”与“规范化 (Normalized)”的内容对比,并提交 Issue 反馈。
配置项 (Valves)¶
priority: 过滤器优先级 (默认: 50)。enable_escape_fix: 修复过度的转义字符。enable_thought_tag_fix: 规范化思维标签。enable_details_tag_fix: 规范化 Details 标签 (默认: True)。enable_code_block_fix: 修复代码块格式。enable_latex_fix: 规范化 LaTeX 公式。enable_list_fix: 修复列表项换行 (实验性)。enable_unclosed_block_fix: 自动闭合未闭合的代码块。enable_fullwidth_symbol_fix: 修复代码块中的全角符号。enable_mermaid_fix: 修复 Mermaid 语法错误。enable_heading_fix: 修复标题中缺失的空格。enable_table_fix: 修复表格中缺失的闭合管道符。enable_xml_tag_cleanup: 清理残留的 XML 标签。enable_emphasis_spacing_fix: 修复强调语法中的多余空格 (默认: True)。show_status: 应用修复时显示状态通知。show_debug_log: 在浏览器控制台打印调试日志。
故障排除 (Troubleshooting) ❓¶
- 提交 Issue: 如果遇到任何问题,请在 GitHub 上提交 Issue:Awesome OpenWebUI Issues
更新日志¶
v1.2.4¶
- 文档更新: 同步了所有文档和代码文件的版本号。
v1.2.3¶
- 列表标记保护增强: 修复了列表标记 (
*) 后跟普通文本和强调标记时,空格被错误剥离的问题(例如* U16 前锋变成*U16 前锋)。 - 占位符支持: 确认 4 个或更多下划线(如
____)会被正确视为占位符,不会被强调修复逻辑修改。
v1.2.2¶
- 代码块缩进修复: 修复了列表中嵌套代码块的缩进被错误剥离的问题。现在会正确保留嵌套代码块的缩进。
- 下划线强调语法支持: 扩展强调空格修复以支持
__(双下划线加粗) 和___(三下划线加粗斜体) 语法。 - 列表标记保护: 修复了列表标记 (
*) 后跟强调标记 (**) 被错误合并的 Bug(例如* **是**变成***是**)。添加了保护逻辑防止此问题。 - 测试套件: 新增完整的 pytest 测试套件,包含 56 个测试用例,覆盖所有主要功能。
v1.2.1¶
- 强调空格修复: 新增了对强调标记内部多余空格的修复(例如
** 文本 **->**文本**)。 - 采用递归方法处理嵌套强调(例如
**加粗 _斜体 _**)。 - 包含保护机制,防止误修改数学表达式(如
2 * 3 * 4)或列表变量。 - 通过
enable_emphasis_spacing_fix开关控制(默认:开启)。
v1.2.0¶
- Details 标签支持: 新增了对
<details>标签的规范化支持。 - 确保在
</details>闭合标签后添加空行,将思维内容与正文分隔开。 - 确保在自闭合
<details ... />标签后添加换行,防止其干扰后续的 Markdown 标题(例如修复<details/>#标题)。 - 包含保护机制,防止修改代码块内部的
<details>标签。
v1.1.2¶
- Mermaid 连线标签保护: 实现了全面的连线标签保护机制,防止连接线上的文字被误修改。现在支持所有 Mermaid 连线类型,包括实线 (
--)、虚线 (-.) 和粗线 (==),无论是否带有箭头。 - Bug 修复: 修复了无箭头连线(如
A -- text --- B)未被正确保护的问题。
v1.1.0¶
- Mermaid 修复优化: 改进了正则表达式以处理节点标签中的嵌套括号(如
ID("标签 (文本)")),并避免误匹配连接线上的文字。 - HTML 保护机制优化: 优化了
_contains_html检测,允许<br/>,<b>,<i>等常见标签,确保包含这些标签的 Mermaid 图表能被正常规范化。 - 全角符号清理: 修复了
FULLWIDTH_MAP中的重复键名和错误的引号映射。 - Bug 修复: 修复了 Python 文件中缺失的
Dict类型导入。
许可证¶
MIT