dsh-plantuml:在 DSH 會話裏直接渲染 PlantUML 圖表

前言

用 DSH web 和模型討論設計時,PlantUML 是個順手的表達方式:時序圖、類圖、流程圖用幾行文本就能描述清楚,模型也容易生成。但默認情況下,模型輸出的 ```plantuml 圍欄代碼塊只會以源碼形式展示——想看到圖,得把源碼複製出去、到別的工具裏渲染、再對照結果繼續討論,來回打斷節奏。

dsh-plantuml 解決的就是這一步:識別助手消息裏的 PlantUML 代碼塊,自動渲染成 SVG,直接顯示在會話裏。DSH 的理念是「一切皆插件」,這類展示層需求正好交給插件來做。下面介紹它的功能、安裝和配置。

這是什麼

dsh-plantuml 是 qschen86 維護的 DSH web 插件,當前版本 0.1.0,採用 MIT 許可證。一句話定位:把會話消息中的 plantuml / puml 圍欄代碼塊渲染爲 SVG 圖表。

實現上分兩端:

  1. 宿主端 lib/index.js 提供 POST /plugin/plantuml 渲染接口,按 PlantUML 官方編碼(deflate + 自定義 base64)請求遠程服務,也可以調用本機 plantuml 命令;
  2. 瀏覽器端 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 不會生效。

適用場景與注意

適合的場景:

  • 經常讓模型畫時序圖、類圖、架構圖,希望圖直接出現在會話裏;
  • 希望渲染可自託管或走本機命令,不依賴第三方在線編輯器中轉。

使用前注意幾點:

  1. 本插件的渲染器優先級是 assistant-step 的 -5。若同時安裝了 dsh-llm-codex-app-server 的瀏覽器渲染器(優先級 -10),後者會優先接管助手消息;此時如需 PlantUML 渲染,建議將兩套渲染合併或二選一。
  2. 默認走 PlantUML 公共服務器,圖表源碼會被髮送到外部服務。對內容敏感的場景,可自建服務(修改 DSH_PLANTUML_SERVER)或設置 DSH_PLANTUML_COMMAND 走本機命令。
  3. 插件以當前 dsh 進程的權限運行,安裝前建議先檢查源碼與許可證。

結尾

dsh-plantuml 只做一件事:把會話裏的 PlantUML 代碼塊變成圖。對經常用文本畫圖的 DSH 用戶,它省掉了複製粘貼中轉的一步。

  • 項目地址:https://github.com/qschen86/dsh-plantuml
  • 社區目錄頁:https://www.skillhub.cn/plugins/qschen86/dsh-plantuml

(skillhub.cn 爲社區維護的獨立目錄站點,與 DeepSeek / 幻方無官方從屬關係。)

羽毛球分组比赛记分
小程序二维码

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

小夜