Skip to content
dsh.fish
Bundle

dsh-plantuml

DSH web plugin: render PlantUML fenced code blocks in conversation messages as SVG diagrams.

Source
qschen86
stars
1 stars
License
MIT
Updated
Updated 3 days ago

Readme

# dsh-plantuml

DeepSeek Harness Web 插件:在会话消息中直接渲染 PlantUML 图表。

## 功能

- 识别助手消息里的 ```` ```plantuml ```` / ```` ```puml ```` 围栏代码块
- 自动通过 PlantUML 服务(默认公共服务器,可配置)渲染为 SVG
- 支持架构图、流程图、时序图、用例图、类图等 PlantUML 支持的图形
- 渲染失败时显示错误信息,不阻塞消息中的其他 Markdown 内容

## 安装

```bash
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 半生效)
```

## 卸载

```bash
dsh plugin --profile web remove dsh-plantuml
```

> 注意:本插件使用 `assistant-step` 的 `-5` 优先级。若同时安装了 `dsh-llm-codex-app-server` 的浏览器渲染器(优先级 `-10`),后者会优先接管助手消息;此时如需 PlantUML 渲染,建议将两套渲染合并或二选一。

## 配置

通过环境变量配置:

| 变量 | 默认值 | 说明 |
| --- | --- | --- |
| `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` 不会生效。

## 使用

模型在回复中输出:

````markdown
```plantuml
@startuml
Alice -> Bob: 你好
@enduml
```
````

插件会自动把它替换成渲染后的 SVG 图片。

## 实现说明

- 宿主端 `lib/index.js` 提供 `POST /plugin/plantuml` 渲染接口;默认使用 PlantUML 官方编码(deflate + 自定义 base64)请求远程服务,也可调用本机 `plantuml` 命令。
- 浏览器端 `lib/client.js` 注册 `conversation.chat.node` 的 `assistant-step` 低优先级渲染器,在保留原有 Markdown / 推理 / 图片 / JSON 展示的同时,解析 PlantUML 围栏并异步加载图片。

Install

dsh plugin --profile web add github:qschen86/dsh-plantuml#1003d8303896f9ab35c4be4092b9175e0f746f4c

Profile: web

Source