前言¶
用 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 / 幻方无官方从属关系。)