dsh-mermaid-plugin:在 DSH 聊天里把 Mermaid 代码块渲染成图

前言

在 DSH 里和模型对话时,回复里经常出现 ```mermaid 代码块:流程图、时序图、类图等。默认情况下这些块只是源码,需要复制到外部编辑器或在线工具才能看图,打断阅读节奏。

下面介绍维护者 shinelon 发布的客户端插件 shinelon/dsh-mermaid-plugin。它在 DSH Web 的对话界面里自动识别聊天 transcript 中的 Mermaid 块,就地渲染为 SVG,并保留「图形 / 源码」切换、主题跟随和出错时的源码回退。插件当前在 GitHub 上星标为 0,分类为客户端;生态上 DSH 强调「一切皆插件」,SkillHub 目录页 与 DeepSeek / 幻方无官方从属关系,安装前请自行核对源码与 MIT 许可证。

这是什么

dsh-mermaid-plugin(包名 @local/mermaid-chat,manifest 版本 1.0.0)是 DeepSeek Harness(DSH)的 Web 客户端插件:在聊天消息里把 ```mermaid 代码块渲染为图形。服务端侧 index.js 的 apply() 为空,渲染逻辑全部在预构建的 client.js 中完成;无需本地 build,也不依赖 npm 安装依赖——client.js 已内嵌 mermaid 11.17.2 与插件胶水代码。

核心功能

自动识别

插件在对话 DOM 中扫描 Mermaid 代码块:既看代码块 banner,也会用「首条有效行」匹配(跳过 leading 空行、%% 注释和 YAML frontmatter)。

支持的图类型

README 列出的类型包括:flowchart,graph TB/TD/BT/RL/LR,sequenceDiagram,classDiagram,stateDiagram(-v2),erDiagram,journey,gantt,pie,mindmap,timeline,gitGraph,quadrantChart,requirementDiagram,c4Context,sankey-beta,xychart-beta,block-beta,packet-beta,architecture-beta(共 20 类)。

图形与源码切换

渲染后仍可通过切换回到原始代码块;宿主源码在存在已渲染图形时通过 CSS :has() 隐藏,而不是删掉 DOM。

主题跟随

监听 DSH 的 dark-theme 属性变化时,会按 dark / default 重新初始化 mermaid 并重绘。

出错回退

语法或渲染失败时保留源码可见,并展示 mermaid 的错误信息,避免内容被静默吞掉。

安全与增量渲染

mermaid 以 securityLevel: "strict"、透明背景运行。带 debounce 的 MutationObserver 监听 transcript 变化:未改动的代码不会重复渲染;代码块消失时会清理对应的渲染表面。卸载插件时会断开 observer、移除注入样式及所有 surface 元素。

安装与启用

插件 仅适用于 DSH Web。官方 README 给出两种方式:

  1. 在 dsh-market 插件市场一键安装:Settings → Plugin Market。
  2. 或使用 DSH CLI:README 写明可通过 dsh plugin add this repository from GitHub 添加本仓库;完整参数以你本机 dsh plugin add --help 与 DSH 文档为准(资料中未给出带 github:owner/repo 的固定一行示例,此处不臆造)。

安装后需使用 Web 客户端;manifest 中 dsh.client 配置了 platform: web、immediately: true,并向 @deepseek-ai/dsh-client-ui-conversation 注入脚本与 locale。

典型用法

在 DSH 聊天里让模型(或你自己)输出标准 Mermaid fenced 块即可,无需额外配置项——资料中的 package.json 未声明用户可改的插件配置字段。例如流程图:

```mermaid
flowchart LR
  A[开始] --> B{判断}
  B -->|是| C[处理]
  B -->|否| D[结束]
```

发送或收到含上述块的消息后,插件会在对话界面 lazy-load mermaid 并渲染 SVG;你可使用界面上的图形/源码切换查看原文。界面文案通过注入的 locale 服务解析,内置中英文 fallback(locale/zh.json、locale/en.json)。

工作原理(简要)

bundle 侧由 package.json 的 dsh.bundle.patch 指向 cordis.patch.yml,向宿主 bundle 插入模块 mermaid-chat。客户端 client.js 经 window.__ModuleLoader__.load 注册,apply(ctx) 内建立 MutationObserver → 检测块 → 懒加载 mermaid → 输出 SVG。

适用场景与注意

适合:经常在 DSH Web 里阅读含 Mermaid 的架构说明、流程设计、时序交互的开发者或智能体使用者,希望留在同一窗口内看图。

注意:

  • 插件以 当前 DSH 进程权限 在浏览器侧运行;安装前请阅读 GitHub 仓库 源码(尤其预构建的 client.js,约 3.4 MB,勿手改格式化)。
  • 仅 Web 平台;非 Web 环境不会加载 client.js 注入逻辑。
  • 仓库说明不建议手改 client.js(构建产物);静态检查可用:node --check index.js && node --check client.js(仓库无 test/lint 脚本)。

结尾

dsh-mermaid-plugin 把 DSH 聊天里的 Mermaid 从「只能看源码」变成「就地看图、可切回源码、主题与错误行为可预期」,对客户端对话体验是针对性增强。目录与源码:

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

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

Xiaoye