Skip to content

统一网页前端的 Markdown 与 Mermaid 渲染能力 #159

Description

@Postroggy

背景

Quickstart 已通过共享 MarkdownContent 支持安全的 Markdown/GFM、代码高亮和 Mermaid,但项目中的其他模型输出仍存在两种不一致实现:

  • Managed Agents Session transcript 使用一套手写 Markdown parser,只覆盖部分标题、列表、表格、加粗、链接和代码。
  • Workbench Response Preview 与 Evaluate 模型输出仍按普通文本展示。

这会导致同一段模型输出在不同页面呈现不同,也让安全策略、代码高亮和 Mermaid 行为出现重复实现。

目标

复用共享 MarkdownContent,统一所有明确属于“模型生成内容”的展示边界:

  • Managed Agents Session transcript 的普通文本事件。
  • Workbench 单次运行的 Response Preview。
  • Workbench Evaluate 表格中的模型输出与对比输出。

非目标

以下内容继续按纯文本、编辑器或结构化组件展示:

  • 用户消息、可编辑 prompt、system prompt 和 agent 配置。
  • 错误消息、状态文案、日志、命令、指标。
  • Debug JSON、tool input/result、API payload。
  • Memory/resource 正文以及其他没有声明 Markdown 合同的普通 description 字段。

设计约束

  • 所有消费者复用同一个共享渲染器和 URL/HTML/图片安全策略,不新增 feature 专属 Markdown parser。
  • 保持现有流式状态、API 合同、错误状态和数据持久化格式不变。
  • Session transcript 删除被共享渲染器替代的手写解析器和死类型。
  • 紧凑的 Evaluate 单元格需要限制布局影响;长代码和 Mermaid 不得撑破表格。
  • Mermaid 保持动态加载、流式围栏闭合检测、主题适配和源码回退。

验收

  • Session transcript、Workbench Response Preview、Evaluate 模型输出中的标题、强调、列表、代码和表格均生成语义化 DOM。
  • 上述三个表面中的 Mermaid 围栏可以渲染;非法或未闭合围栏保留源码。
  • 用户输入、日志、错误和 JSON payload 不会被解释为 Markdown。
  • 危险链接、原始 HTML 和远程图片继续被阻止。
  • 删除 Session transcript 的手写 Markdown parser 后,原有 transcript 行为测试及完整前端测试通过。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions