dsh-plugin-mermaid-gb-svg:把 Mermaid 流程图转成 GB/T 1526 国标 SVG

前言

在 DeepSeek Harness(DSH)里让模型画流程图,常见做法是输出 Mermaid 源码或通用 SVG。若交付物要符合中国流程图图形符号国家标准 GB/T 1526-1989(与 ISO 5807:1985 等同),还要自己对照符号表改形状、正交走线和分支习惯,工作量大且容易漏细节。

下面介绍社区插件 dsh-plugin-mermaid-gb-svg(维护者 sandyyst):在 Harness 中注册一个工具,把 Mermaid 流程图直接生成为符合 GB/T 1526-1989 的 SVG,并可选按 A4/A3 等幅面自动分页。

这是什么

dsh-plugin-mermaid-gb-svg 是发布在 npm 上的 DSH 插件(当前 package 版本 0.1.4,MIT 许可证)。它向模型暴露工具 mermaid_to_gb_svg,输入 Mermaid 流程图(字符串或文件),输出国标符号、正交箭头连线的 SVG 文件。

插件在 SkillHub 目录中归类为「联网工具」;源码与说明见 GitHub 仓库,目录页:skillhub.cn/plugins/sandyyst/dsh-plugin-mermaid-gb-svg。DSH 社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

符号与 Mermaid 语法映射

插件按 GB/T 1526-1989 绘制起止、处理、判断、数据、准备、预定义处理、直接存取存储、人工输入/操作、文档、连接符、换页连接符等符号。常见 Mermaid 节点写法与国标含义的对应关系如下(节选):

含义 Mermaid 示例
起止(圆角矩形) A([x])、A((x))、A(x)
处理(矩形) A[x]
判断(菱形) A{x}
数据(平行四边形) A[/x/]、A[\x\]
准备(六边形) A{{x}}
预定义处理(双边矩形) A[[x]]
换页连接符(五边形) A@{ shape: off-page, label: "B" }

扩展形状可通过 A@{ shape: ..., label: "..." } 指定;shape 支持 Mermaid v11 英文名,也支持中文名(如 处理、起止、判断、换页连接符等)。仓库 examples/ 目录下有可对照的 .mmd 与生成 SVG。

绘图约定

  • 流向为自左向右或自上而下;流程线为直角折线,箭头为实心。
  • 判断节点:「是」从底边顶点向下,「否」从右侧顶点先向右再转折。
  • 入线从符号顶部中心垂直接入。
  • 每条流程线最多 3 个拐点;路由按 0→1→2→3 拐点依次尝试,优先选用不穿过符号的方案。
  • 生成后会做几何自检(重叠、线穿符号等),结果写入工具返回的 warnings。

分页(可选)

默认 paper: none 输出一整张 SVG。设为 a4、a4l、a3、a3l 或 auto 时,若图幅超出纸张,会在层与层、列与列之间的空隙切分,不切断符号;每页 SVG 使用真实毫米尺寸(如 A4 为 210mm × 297mm),带图框、装订边和 (page n/N) 标注;跨页流程线用换页连接符(五边形)在相邻页同一位置、同一标签衔接。

沙箱与写入

文件写入走 Harness 的 ctx.fs 接口,受会话沙箱策略约束;与内置 write 工具一样,可通过一次性 sandbox_permissions 与 justification 申请提升后重试。

安装与启用

插件要求 Node.js >= 20。安装到某个 profile(README 以 web 为例):

dsh plugin --profile web add dsh-plugin-mermaid-gb-svg

安装后需让 loader 加载插件:在 $DSH_HOME/profiles/web/cordis.patch.yml 中追加类似片段:

- insert:
    - id: mermaid-gb-svg
      name: dsh-plugin-mermaid-gb-svg
      # config:
      #   fontSize: 14
      #   paper: none

本地开发可将包路径改为源码目录,例如:

dsh plugin --profile web add /path/to/dsh-plugin-mermaid-gb-svg

插件级配置项(可在 patch 的 config 中设置):

键 默认值 含义
font SimSun, '宋体', 'Microsoft YaHei', sans-serif 字体族
fontSize 14 正文字号(px)
stroke 1.6 线宽
paper none 默认纸张模式

工具 mermaid_to_gb_svg 用法

模型或脚本通过该工具调用转换逻辑。主要参数如下:

参数 类型 说明
out string,必填 输出路径;以 .svg 结尾时为文件名(多图时加 -1/-2),否则为目录或前缀
source string Mermaid 源码(与 path 二选一)
path string .mmd/.mermaid 文件,或含 ```mermaid 代码块的 .md(会提取全部块;块上方最近标题作图题)
title string 图题
dir td|lr|bt|rl 强制流向
paper none|auto|a4|a4l|a3|a3l 纸张与分页
font_size integer 正文字号(px,14 约等于 10.5pt)
font_tu boolean 使用 GB/T 14691 仿宋等技术制图字体
caption boolean 是否绘制图题(默认 true)

返回字段包括 files、diagrams、pages、summary、warnings,便于核对输出文件与几何告警。

典型调用思路:在对话中让模型根据业务描述写出 Mermaid,再调用 mermaid_to_gb_svg,传入 source 或 path 以及 out;需要打印幅面时设置 paper: a4 或 a3。

适用场景与注意

适合谁: 需要在 DSH 智能体工作流里直接产出国标流程图 SVG 的开发者;文档、设计说明、合规审查要求 GB/T 1526 符号与走线习惯的场景;图面较大、希望自动 A4/A3 分页并带换页连接符的场景。

使用前请注意:

  1. 插件在当前 dsh 进程权限下运行,会向沙箱允许的路径写入 SVG。安装前应阅读源码与 MIT 许可证,确认来源与行为符合你的安全策略。
  2. 国标细节仍可能有偏差;维护者欢迎通过 Issues 提交符号修正(可使用专用模板并引用标准条款/图号),并附上 Mermaid 源码、warnings 与插件版本。
  3. 若工具返回几何类 warnings,输出中通常会带有 issue 跟踪链接,此时反馈对修正最有帮助。

结尾

dsh-plugin-mermaid-gb-svg 把「Mermaid 写图」和「GB/T 1526-1989 SVG 交付」收成 Harness 内一步,并支持正交走线、判断分支约定与可选分页。进一步说明与示例图见 GitHub README,目录入口:SkillHub 插件页。

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

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

小夜