前言¶
DeepSeek Harness (DSH) 采用“一切皆插件”的架构。在 DSH 的默认环境中,模型只能输出 Mermaid 源码,用户无法直接看到渲染后的图表。sijidoubi/dsh-plugin-mermaid 插件通过内置 mermaid_render 工具,解决了这一问题。它能在进程内直接将 Mermaid 源码渲染为 SVG,无需依赖浏览器或外部联网。
功能¶
该插件提供 mermaid_render 工具,基于 mermaid 11 和 jsdom 在进程内完成渲染。
- 输出格式:支持返回 SVG 文本、DataUri 以及 Web 服务器托管的绝对 URL。
- 图表类型:支持 flowchart、sequenceDiagram、classDiagram、pie、stateDiagram、erDiagram 等多种类型。
- 错误处理:渲染失败时,工具以
isError返回,包含解析错误信息。
安装¶
插件安装后,模型即可调用渲染工具。
dsh plugin --profile web add github:sijidoubi/dsh-plugin-mermaid
dsh web
配置¶
默认启用以下配置,可通过 cordis.patch.yml 覆盖:
- insert:
- id: tool-mermaid
name: dsh-tool-mermaid
config:
theme: default # default | dark | neutral | forest
securityLevel: strict # strict(默认,消毒标签内 HTML) | loose(原样渲染)
使用¶
工具名称为 mermaid_render,参数如下:
code(string, 必填):Mermaid 图源码。title(string, 可选):图的标题。
返回值:
{
"format": "svg",
"title": "可选标题",
"svg": "<svg ...>...</svg>",
"width": 127,
"height": 77,
"url": "http://127.0.0.1:3080/dsh-mermaid/m1.svg",
"dataUri": "data:image/svg+xml;base64,..."
}
url:Web 服务器托管的地址(Web 聊天界面优先显示此地址)。dataUri:无 Web 服务器时的兜底方案。width/height:来自最终 viewBox 的像素值。
限制与注意事项¶
- 不支持部分图表:不支持依赖浏览器交互或 Canvas 的图表类型(如部分 mindmap/gantt)。
- URL 生命周期:
url是基于内存缓存的临时地址。dsh 重启后旧 URL 会 404,需重新渲染。 - 进程副作用:首次渲染时,插件会在宿主 Node 进程安装 jsdom 全局对象(window/document 等)。
- 宽度估算:宽度按逐字符宽度模型估算,极端字体下可能与浏览器真实渲染有轻微出入。
结尾¶
该插件为 DSH 环境提供了原生的 Mermaid 渲染能力,使模型能够直接生成可嵌入回答的 SVG 图片。源码与目录链接见下。
- 仓库:https://github.com/sijidoubi/dsh-plugin-mermaid
- 目录:https://www.skillhub.cn/plugins/sijidoubi/dsh-plugin-mermaid