前言¶
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