deepseek-harness-flowchart:爲 DeepSeek Harness 增加主題化 Mermaid 流程圖渲染工具

前言

在 DeepSeek Harness(DSH)裏讓智能體「畫一張流程圖」,常見做法有兩種:一是讓模型輸出一段 Mermaid 源碼,再由人粘貼到渲染器裏出圖;二是寫一個直接操作文件系統的腳本工具,讓模型生成文件後自行落盤。前者流程斷在對話之外,後者繞開了 Harness 對文件寫入的審批與沙箱策略。

deepseek-harness-flowchart 走的是另一條路:它給 DSH 掛載一個 render_flowchart 工具,在本地把 Mermaid flowchart 渲染成主題化、自包含的 SVG,文件寫入則嵌套委託給 Harness 已註冊的 write 工具。DSH 的理念是「一切皆插件」,這個倉庫就是一個可直接安裝的 profile bundle。

這是什麼

lizhecome/deepseek-harness-flowchart 是由 lizhecome 維護的 DeepSeek Harness 插件,npm 包名 @lizhecome/dsh-flowchart,版本 0.1.0,MIT 許可證。安裝後它會添加 render_flowchart 工具,將 Mermaid flowchart 源碼渲染爲精美、主題化、自包含的 SVG。社區目錄頁將它歸在「趣味換裝」分類下。

渲染完全本地且確定性,不發起 LLM 或網絡請求,基於 beautiful-mermaid 1.1.3 實現 Mermaid 解析、佈局、主題與 SVG 生成。

核心功能

render_flowchart 工具

工具參數如下:

參數 必填 說明
source 完整的 Mermaid flowchart 源碼
file_path SVG 目標路徑,由已安裝的 write 工具解析,必須以 .svg 結尾
theme 15 個主題之一,省略時使用部署配置的默認主題
transparent 去除主題背景,默認 false
padding 畫布內邊距,0200,默認 40
node_spacing 同層水平間距,8160,默認 24
layer_spacing 層間垂直間距,8240,默認 40

支持的主題共 15 個:zinc-lightzinc-darktokyo-nighttokyo-night-stormtokyo-night-lightcatppuccin-mochacatppuccin-lattenordnord-lightdraculagithub-lightgithub-darksolarized-lightsolarized-darkone-dark

輸入限制

僅接受帶顯式方向(TD/TB/BT/LR/RL)的 Mermaid flowchart/graph 文檔。時序圖、類圖、狀態圖、ER 圖、XY 圖等其他 Mermaid 圖表會被拒絕。

渲染安全

在分發 SVG 之前,插件會做一輪清理:移除渲染器自帶的外部字體導入,拒絕腳本、事件處理器、內嵌瀏覽器文檔、JavaScript URL 和外部 href,並對完整的自包含結果應用 maxSvgBytes 限制。

複用 write 工具

插件從不通過 Node 的環境文件系統直接寫文件。生成的 SVG 內容以嵌套調用分發給 Harness 已註冊的 write 工具,因此工具限制、審批、沙箱策略、先讀後覆蓋規則、取消和最終結果歸一化都保持原有效力。若 write 不可用或被拒絕,render_flowchart 會失敗,而不會聲稱成功。

安裝與啓用

需要 DeepSeek Harness 0.1.0-rc.6 或更高版本,並且 GitHub CLI 需有該倉庫的訪問權限(README 標註其爲私有倉庫)。安裝分三步:

gh repo clone lizhecome/deepseek-harness-flowchart
cd deepseek-harness-flowchart
dsh plugin --profile web add --ignore-workspace-root-check .

先用 GitHub CLI 克隆倉庫,再在倉庫目錄內把它添加到 web profile。README 說明,add . 會在 pnpm 切換到 profile 目錄之前錨定到發起調用的檢出目錄。包清單聲明瞭 dsh.bundle patch,安裝時會自動掛載工具及其 invariant 伴生包。

一次性任務可以用 headless profile 代替 web。卸載命令如下:

dsh plugin --profile web remove --ignore-workspace-root-check @lizhecome/dsh-flowchart

典型用法

向智能體描述需要的流程圖並指定 SVG 輸出位置,例如:

Create a left-to-right flowchart of the checkout process and save it as docs/checkout.svg. Use the catppuccin-mocha theme.

模型會調用 render_flowchart,傳入的 Mermaid 源碼類似:

flowchart LR
  cart([Cart]) --> payment{Payment valid?}
  payment -->|Yes| success([Order placed])
  payment -->|No| retry[Retry payment]
  retry --> payment

成功調用只返回輸出路徑、主題和字節數;SVG 正文通過嵌套的 write 工具傳遞,不會複製進父級模型結果。模型只看到一個工具 schema,配置或工具可用性的變化體現在請求的 tool-schema 前綴裏。

配置

後續的 profile patch 會整行替換 config,所以需要重新聲明所有想保留的字段:

- id: flowchart
  config:
    defaultTheme: github-light
    maxSourceChars: 50000
    maxSvgBytes: 2000000
字段 默認值 說明
defaultTheme tokyo-night 工具調用省略 theme 時使用的主題
maxSourceChars 50000 完整 Mermaid 輸入的正整數上限
maxSvgBytes 2000000 完整 UTF-8 SVG 的正整數上限

無效的邊界值或配置了不可用的主題,會在插件加載時直接失敗。

適用場景與注意

適合在 DSH 裏經常需要產出流程圖文檔的團隊:架構說明、checkout 之類業務流程,希望結果直接是可入庫的主題化 SVG,同時不放寬文件寫入策略。

使用前有幾點需要確認:

  1. 僅支持流程圖,其他 Mermaid 圖表會被拒絕;僅輸出 SVG,不包含 PNG/PDF 轉換。
  2. 覆蓋已有文件遵循已安裝 write 工具的策略,可能需要 agent 先讀取該文件。
  3. 移除 web 字體導入後,查看者將使用本地 Inter 或系統無襯線字體。
  4. 插件以當前 dsh 進程的權限運行,安裝前建議檢查源碼與許可證(本項目爲 MIT)。
  5. README 標註倉庫爲私有,克隆需要 GitHub CLI 有對應訪問權限。

結尾

這個插件的價值在於把「Mermaid 源碼」到「可交付的 SVG 文件」這一步收進了智能體的工具鏈:渲染本地、確定、無網絡請求,文件寫入仍然走 Harness 已有的 write 工具及其策略,15 個主題讓產出可以直接放進文檔。

  • 目錄頁:https://www.skillhub.cn/plugins/lizhecome/deepseek-harness-flowchart
  • GitHub:https://github.com/lizhecome/deepseek-harness-flowchart
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜