Web UI 对话 mermaid 渲染插件:将消息中的 mermaid 代码块渲染为可交互图表卡片(缩放 / 适应宽度 / 全屏查看 / 预览代码切换),复用官方组件原语,渲染失败时保留原代码块并内联展示错误。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:genius-alray/dsh-mermaid-render
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DSH Web 对话 mermaid 渲染插件:把 agent 消息中的 mermaid 代码块自动渲染为可交互图表卡片——缩放、适应宽度、全屏查看、预览/代码切换,全部基于官方组件原语与 DSW 设计 token。渲染失败时保留原代码块并在其下方内联展示错误。
功能特性
- 自动渲染 mermaid 代码块:对话消息中
mermaid/mmd围栏自动变为图表卡片(助手消息与用户消息均支持)。 - 缩放 / 适应宽度:视口内缩放——卡片外壳尺寸恒定,只有内部图表缩放与滚动;Ctrl/⌘+滚轮缩放,「适应宽度」一键复位。
- 全屏查看器:固定覆盖层(portal 到 body,产品同款遮罩层级),支持缩放、适应、Esc / 遮罩点击 / 按钮关闭。
- 预览 / 代码切换:卡片右上角分段选择器,一键在图表的渲染结果与原始 mermaid 源码之间切换。
- 失败降级:渲染或加载失败时原代码块保持可见,下方出现紧凑的内联错误横幅;页面不残留任何游离元素。
- 主题联动:应用切换亮/暗主题时,图表以 mermaid
dark/default主题自动重渲染。 - 双语 UI:中 / 英文案随应用 locale 切换。
- 原生观感:primitives 的
Pill/Tooltip、composer 同款图标按钮、lucide 风格 SVG 图标、仅使用--dsw-*token。
安装
通过官方 dsh plugin 命令安装:会自动把声明了 dsh.bundle 的包加入 profile 的 dsh.profile.bundles(无需手改 profile)。
dsh plugin --profile web add genius-alray/dsh-mermaid-render
装完重启 dsh web(bundle 层在启动时组合)。
Git 源首次安装若被 pnpm 拦截构建脚本,按提示把 key 加入 profile
pnpm-workspace.yaml的allowBuilds后重跑即可。仓库已提交预构建产物lib/,Git 源安装无需本地构建。
使用
发送包含 mermaid 代码块的消息即可:
```mermaid
flowchart TD
A[开始] --> B{有 mermaid 代码块吗?}
B -- 是 --> C[加载 mermaid 渲染器]
B -- 否 --> D[保持普通代码块]
C --> E[渲染为交互图表]
E --> F[工具条: 缩放 / 适应 / 全屏]
```
代码块渲染为卡片:右下角工具条(放大 / 缩小 / 适应宽度 / 全屏),右上角预览 / 代码切换。语法错误时卡片不渲染:原代码块保留,下方内联显示 "Mermaid 渲染失败" 与解析错误信息。
技术要点
- Bundle 插件(官方形态):
package.json声明dsh.bundle.patch: ./cordis.patch.yml;纯 client(dsh.client.platform: web),产物由dsh-client-modules服务/plugins/dsh-mermaid-render/client.js。 - mermaid 不打包:约 3.3MB 的 mermaid 库在首次使用时通过运行时动态
import()加载 jsDelivr 固定版本mermaid@10.9.3的+esm构建,插件包本身仅 ~34KB,页面启动零成本。 - 渲染管线:
MutationObserver监听会话滚动容器内的.md-code-block(infostring 为 mermaid/mmd),在私有隐藏容器中渲染(mermaid 失败路径会在 body 残留巨型 "Syntax error" SVG,私有容器保证页面干净),再把 SVG 挂载为 React 交互卡片。 - 文字保真:SVG 通过自身 width/height 原生矢量缩放(而非 CSS transform),并在卡片内隔离继承排版(
font: 13px/1.5+ CJK 字体栈),中文节点标签在foreignObject中不溢出、不被裁切。 - 布局稳定:stage 高度在适配时固定,
scrollbar-gutter: stable预留滚动条槽位,clientWidth恒定,页面无抖动。 - UI 原语:
Pill(预览/代码切换)、Tooltip、composer 同款图标按钮、手绘 lucide 风格图标;仅用--dsw-*token,无硬编码颜色。
许可证
MIT
链接
同类插件
tt-a1i/archify#integrations/deepseek-harness★ 74360
从仓库或系统描述生成经过校验的自包含交互式架构图、流程图、时序图、数据流图和生命周期图。
dream-num/dsh-univer-office★ 442
为 DeepSeek Harness 打造一个真正的办公环境。Univer Office 插件将电子表格、文档、幻灯片、画布、多维表格等汇聚到同一个运行时——数据互联、修改经过校验、变更按版本管理,并以隔离工作树支持多 Agent 协作。
PerryLink/dsh-industry-research★ 186
面向 DeepSeek Harness 的确定性行业研究报告:公司与行业研究流程基于分阶段证据产出结构化、可核验的报告。
HuanLinOTO/dsh-plugin-mineru★ 47
向模型暴露 MineRU 文档解析工具。
kw78/dsh-office-tools★ 26
面向 agent 的工作区安全 Office 工具集:创建/读取 Word、创建/读取/更新 Excel、创建/读取 PowerPoint,并支持 PNG/JPG/GIF 图片排版。
PolinniZhong/dsh-knit★ 18
把会话工作区里已有的 Markdown 文档、图片与视频列进 DSH 侧边栏,按与当前对话的相关性排序:用最近几条消息在本地与文档标题、摘要、正文做带 IDF 权重的匹配,不调用模型,也没有网络出口。列表来自工作区扫描,而不是「最近打开记录」,所以重启 DSH 或新开会话都不会变空。图片与视频可就地预览,相对路径图片真实渲染,视频走 HTTP Range 流式播放。预览头下方的引用条显示当前这篇被哪些文档引用、又引用了哪些,点一项即可跳过去。同一份排序也作为 knit_docs 工具交给 agent:它返回最相关的若干篇,并附上每篇里命中的那段原文(有命中时才附)。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。