前言¶
在 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 |
否 | 畫布內邊距,0–200,默認 40 |
node_spacing |
否 | 同層水平間距,8–160,默認 24 |
layer_spacing |
否 | 層間垂直間距,8–240,默認 40 |
支持的主題共 15 個:zinc-light、zinc-dark、tokyo-night、tokyo-night-storm、tokyo-night-light、catppuccin-mocha、catppuccin-latte、nord、nord-light、dracula、github-light、github-dark、solarized-light、solarized-dark、one-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,同時不放寬文件寫入策略。
使用前有幾點需要確認:
- 僅支持流程圖,其他 Mermaid 圖表會被拒絕;僅輸出 SVG,不包含 PNG/PDF 轉換。
- 覆蓋已有文件遵循已安裝
write工具的策略,可能需要 agent 先讀取該文件。 - 移除 web 字體導入後,查看者將使用本地
Inter或系統無襯線字體。 - 插件以當前 dsh 進程的權限運行,安裝前建議檢查源碼與許可證(本項目爲 MIT)。
- 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