# Ygent 富内容渲染设计(HTML 制品 / 流程图 / 公式) > 状态:设计提案,待确认 > 背景:`docs/reference/workbuddy/chat-tool-fold.md` 已摸清 WorkBuddy 的实现与安全边界 > 本文只讨论「对话区要支持哪些内容类型、怎么安全地渲染、分几步做」 --- ## 1. 现状盘点 | 内容类型 | WorkBuddy | Ygent 现状 | 差距 | |---|---|---|---| | 段落 / 列表 / 引用 | ✓ | ✓(remark-gfm) | — | | 表格 | ✓ | ✓ | — | | 代码块高亮 | ✓ Prism | ✓ highlight.js | 可接受 | | 代码 diff(改文件时) | ✓ `tool-diff` | ✗ | 见 §7 | | 图片 | ✓ | ✓(react-markdown 默认) | — | | **流程图 / 图表** | ✓ mermaid | **✗** | 需新增 | | **数学公式** | ✓ KaTeX | **✗** | 需新增 | | **HTML 制品** | ✓ sandbox iframe | **✗** | 需新增 | | 内联 SVG(消毒) | ✓ DOMPurify | ✗ | 低优先 | Ygent 当前渲染管线:`remarkGfm` + `rehypeHighlight`,**无 `rehype-raw`**(即不渲染 Markdown 里的裸 HTML)——这一点与 WorkBuddy 一致,是安全基线,**不要为了省事打开它**。 --- ## 2. 两条进入路径(关键决策) 富内容有两种进入对话的方式,**建议两条都做,但优先级不同**: ### 路径 A:Markdown 内联(模型天然会用) 模型输出 ```mermaid 代码块或 `$$…$$` 公式,由渲染管线识别。 - 优点:**零工具改动**。模型不需要被教会调用新工具,它在别处已经习惯了这套写法。 - 证据:WorkBuddy 的 mermaid 就是这条路径——存在 i18n 键 `markdown.mermaid.rendering`(渲染中占位文案),说明是代码块触发而非工具产出。 - 适用:mermaid、KaTeX ### 路径 B:工具产出制品 专用工具(如 `show_html`)返回一段 HTML,以「制品块」形式呈现,带独立查看器 UI。 - 优点:有明确的类型边界,可以配查看器(切代码 / 复制 / 下载 / 导出图片)与独立的安全边界。 - 证据:WorkBuddy 的 `show_widget` 工具 + `SYn = {show_widget, visualize:show_widget, visualizer:show_widget}`,走 `