前言¶
用 DSH web 和模型討論設計時,PlantUML 是個順手的表達方式:時序圖、類圖、流程圖用幾行文本就能描述清楚,模型也容易生成。但默認情況下,模型輸出的 ```plantuml 圍欄代碼塊只會以源碼形式展示——想看到圖,得把源碼複製出去、到別的工具裏渲染、再對照結果繼續討論,來回打斷節奏。
dsh-plantuml 解決的就是這一步:識別助手消息裏的 PlantUML 代碼塊,自動渲染成 SVG,直接顯示在會話裏。DSH 的理念是「一切皆插件」,這類展示層需求正好交給插件來做。下面介紹它的功能、安裝和配置。
這是什麼¶
dsh-plantuml 是 qschen86 維護的 DSH web 插件,當前版本 0.1.0,採用 MIT 許可證。一句話定位:把會話消息中的 plantuml / puml 圍欄代碼塊渲染爲 SVG 圖表。
實現上分兩端:
- 宿主端
lib/index.js提供POST /plugin/plantuml渲染接口,按 PlantUML 官方編碼(deflate + 自定義 base64)請求遠程服務,也可以調用本機plantuml命令; - 瀏覽器端
lib/client.js註冊conversation.chat.node的assistant-step低優先級渲染器,在保留原有 Markdown / 推理 / 圖片 / JSON 展示的同時,解析 PlantUML 圍欄並異步加載圖片。
核心功能¶
- 識別助手消息裏的
plantuml/puml圍欄代碼塊,自動通過 PlantUML 服務渲染爲 SVG(默認公共服務器,可配置); - 支持架構圖、流程圖、時序圖、用例圖、類圖等 PlantUML 支持的圖形;
- 渲染失敗時顯示錯誤信息,不阻塞消息中的其他 Markdown 內容;
- 服務地址、本機 plantuml 命令、超時、源碼大小上限都可通過環境變量配置。
安裝與啓用¶
安裝命令:
dsh plugin --profile web add dsh-plantuml
也可以改用 GitHub Release tarball:
dsh plugin --profile web add https://github.com/qschen86/dsh-plantuml/releases/download/v0.1.0/dsh-plantuml-0.1.0.tgz
安裝後先驗證配置:
dsh --profile web --dump-config
確認插件條目已加入 bundles 後,重啓 dsh web(host 半生效),再刷新頁面(client 半生效)。卸載用對應命令:
dsh plugin --profile web remove dsh-plantuml
典型用法¶
讓模型在回覆中輸出 PlantUML 源碼,例如:
```plantuml
@startuml
Alice -> Bob: 你好
@enduml
```
插件會自動把這段代碼替換成渲染後的 SVG 圖片,消息裏直接看到圖,不需要手動中轉。
配置¶
插件通過環境變量配置,默認值如下:
| 變量 | 默認值 | 說明 |
|---|---|---|
DSH_PLANTUML_SERVER |
https://www.plantuml.com/plantuml |
PlantUML 服務地址,例如自建 http://127.0.0.1:8080/plantuml |
DSH_PLANTUML_COMMAND |
空 | 設爲本機 plantuml 命令(或可執行文件路徑)後,優先用本機命令渲染,不訪問網絡 |
DSH_PLANTUML_TIMEOUT_MS |
15000 |
遠程渲染超時(毫秒) |
DSH_PLANTUML_MAX_SOURCE |
1048576 |
單個 PlantUML 源碼最大字節數 |
一個容易踩的坑:環境變量要對 dsh web 進程可見。如果服務由 launchd 監督進程託管(如 com.dsh.web-supervisor),需要把變量寫進其 plist 的 EnvironmentVariables(或用 DSH_START_CMD 前綴);只寫進 ~/.zshrc 不會生效。
適用場景與注意¶
適合的場景:
- 經常讓模型畫時序圖、類圖、架構圖,希望圖直接出現在會話裏;
- 希望渲染可自託管或走本機命令,不依賴第三方在線編輯器中轉。
使用前注意幾點:
- 本插件的渲染器優先級是
assistant-step的-5。若同時安裝了dsh-llm-codex-app-server的瀏覽器渲染器(優先級-10),後者會優先接管助手消息;此時如需 PlantUML 渲染,建議將兩套渲染合併或二選一。 - 默認走 PlantUML 公共服務器,圖表源碼會被髮送到外部服務。對內容敏感的場景,可自建服務(修改
DSH_PLANTUML_SERVER)或設置DSH_PLANTUML_COMMAND走本機命令。 - 插件以當前 dsh 進程的權限運行,安裝前建議先檢查源碼與許可證。
結尾¶
dsh-plantuml 只做一件事:把會話裏的 PlantUML 代碼塊變成圖。對經常用文本畫圖的 DSH 用戶,它省掉了複製粘貼中轉的一步。
- 項目地址:https://github.com/qschen86/dsh-plantuml
- 社區目錄頁:https://www.skillhub.cn/plugins/qschen86/dsh-plantuml
(skillhub.cn 爲社區維護的獨立目錄站點,與 DeepSeek / 幻方無官方從屬關係。)