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.nodeassistant-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 / 幻方无官方从属关系。)

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

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

小夜