让 AI 在开发交流中默认用 Mermaid 图表达——系统提示引导、mermaid_validate 真解析语法校验工具,以及自动修复或摘除坏图的输出闸。渲染交给 dsh-mermaid。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-mermaid-comm
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:kp-z/dsh-mermaid-comm
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。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
让 AI 在开发交流中默认、优先用 Mermaid 图表达。渲染由 dsh-mermaid 负责,本插件专注于提示词、校验和输出安全闸。
功能
| 能力 | 作用 |
|---|---|
| A. 行为引导 | 注入 systemPrompt.section:架构、数据流、时序、状态、依赖等开发话题优先用 Mermaid,先图后简短解释。 |
| B. 语法校验 | 注册 mermaid_validate 工具,先做危险字符扫描,再调用 dsh-mermaid 同版本 mermaid-runtime 真解析。 |
| C. 输出闸 | 监听 assistant 消息落盘事件;对 Mermaid 围栏自动修复 Unicode 箭头/危险标签,无法确认通过时从可见 surface 摘除坏图。 |
| D. 图库(Mermaid Vault) | 把验证通过的图持久化到 <workspace>/.dsh/mermaid/,形成同主题多版本资产:<name>.mmd(当前版)+ <name>.history.md(演进历史)+ INDEX.md。索引注入系统提示,后续对话基于旧图演进而非从零重画。 |
图库(Mermaid Vault)——图的持久化与演进
0.2.0 新增。值得长期保留的图——架构、数据模型、核心流程——会保存到图库,形成同主题版本化系列:
<workspace>/.dsh/mermaid/
├── INDEX.md # 图库索引(主题/类型/版本/更新时间)
├── payment-flow.mmd # 当前活跃版(始终可渲染)
└── payment-flow.history.md # v1/v2/... 各版本变更说明
4 个模型可见工具:
mermaid_vault_list— 列出图库索引(可选按类型过滤)mermaid_vault_read— 读某主题:当前源码 + 演进历史mermaid_vault_save— 保存/更新一张图(强制真解析校验,语法错拒绝保存,图库里永远是能渲染的图)mermaid_vault_delete— 删除某主题(主文件 + 历史 + 索引项)
图库索引会注入系统提示(只注入轻量表格,图内容按需用 mermaid_vault_read 读取)。当某主题已在库中时,模型被引导先读历史再 save 演进(生成 v2/v3/...),而不是从零重画——这样后续对话能看到图的持续变化,并与之前的工作保持一致。
安全边界:主题名 sanitize 为 [a-zA-Z0-9-_](杜绝路径穿越)、写入锁定在 vault 目录内、原子写、大小与版本上限防止无限膨胀。
安装
dsh plugin --profile web add dsh-mermaid-comm
# 同时安装 dsh-mermaid(负责聊天渲染)
dsh plugin --profile web add dsh-mermaid
重启 dsh web。如果 dsh-mermaid 未安装或运行时不可用,mermaid_validate 会明确返回失败,不会把未校验的图误报为通过;输出闸也不会把坏图静默放行。
使用
涉及以下内容时,模型会默认优先输出 Mermaid:
- 架构 / 模块关系 →
flowchart或classDiagram - 调用链 / 请求时序 →
sequenceDiagram - 状态 / 生命周期 →
stateDiagram-v2 - 数据模型 / 表关系 →
erDiagram - 分支策略 / Git 历史 →
gitGraph - 计划 / 排期 →
gantt
校验规则
mermaid_validate 返回:
ok:当前代码是否通过;built:规则修复后的代码;fixes:执行过的修复;errors:危险字符、运行时缺失或解析错误;mode: "true-runtime":兼容旧调用方的模式标记。
输出闸支持 ```mermaid 与 ```mermaidd 围栏。每个坏块会被独立复评;能通过同款运行时解析的修正版会替换原块,仍失败的块会替换为安全提示,不会交给渲染器。
安全边界
- Unicode 箭头、未配对引号、subgraph 特殊字符会先被扫描/修复;
- 真解析直接使用 dsh-mermaid 的
lib/mermaid-runtime.js,不再依赖容易误判的.hash错误字段; - 原始事件仍保留在 transcript,修正版通过 surface
replace覆盖可见消息; - 输出闸只处理
assistant/message的 append 事件,并通过gateFixed标记防止重复处理。
开发
pnpm install
pnpm --filter dsh-mermaid-comm build
pnpm --filter dsh-mermaid-comm typecheck
从 checkout 安装:
dsh plugin --profile web add file:/path/to/packages/dsh-mermaid-comm
许可证
MIT
链接
同类插件
tt-a1i/archify#integrations/deepseek-harness★ 89901
从仓库或系统描述生成经过校验的自包含交互式架构图、流程图、时序图、数据流图和生命周期图。
dream-num/dsh-univer-office★ 614
为 DeepSeek Harness 打造一个真正的办公环境。Univer Office 插件将电子表格、文档、幻灯片、画布、多维表格等汇聚到同一个运行时——数据互联、修改经过校验、变更按版本管理,并以隔离工作树支持多 Agent 协作。
ECNU/EduWork#dsh-knowledge-studio★ 246
基于工作区资料的 Studio,复用 DSH 模型与共享成果服务,制作报告、演示文稿、表格、思维导图、测验、闪卡及音视频。Office 生成需 Python 3.12+ 及相关依赖,并配置 DSH_OFFICE_PYTHON;媒体渲染需 Chromium;本地语音转写另需 whisper.cpp 和模型。
PerryLink/dsh-industry-research★ 214
面向 DeepSeek Harness 的确定性行业研究报告:公司与行业研究流程基于分阶段证据产出结构化、可核验的报告。
HuanLinOTO/dsh-plugin-mineru★ 48
向模型暴露 MineRU 文档解析工具。
PolinniZhong/dsh-knit★ 47
把会话工作区里已有的 Markdown 文档、源码、图片与视频列进 DSH 侧边栏,按与当前对话的相关性排序。默认的词法模式用最近几条消息在本地与标题、摘要、正文做带 IDF 加权的匹配(BM25)—— 不调用模型、没有网络出口,内容不出本机。列表来自工作区扫描,而不是「最近打开记录」,所以重启 DSH 或新开会话都不会变空。排序结果组织成主要 / 辅助 / 相关三层的阅读顺序,每一条都写明可核验的理由(命中了哪个字段、被哪一篇引用),点一行即可就地预览:Markdown 按渲染后的样子显示、相对路径图片真实渲染、源码走宿主自带的语法高亮、视频走 HTTP Range 流式播放。同一份 Context Pack 也作为 knit_docs 工具交给 agent。后续版本陆续补上读取证据与生命周期(归因在读那一刻冻结)、固定 / 排除(排除先于检索生效,且可恢复)、关系证据(引用 / 导入 / 测试,带行号)与增量索引(重启后复用)。v0.23 起还多一条可选的混合检索:默认关闭,只有你自己配好 Ollama 或 OpenAI 兼容的 embedding 服务才会生效。它生效时,发出去的是你这句查询原话加上每篇候选文件的标题与摘要 —— Markdown 的摘要取自正文首段(不超过 60 字),代码的摘要是它所在的工作区相对目录,图片 / 视频贡献的是文件名;完整正文与绝对路径都不发送,指向本机服务(loopback)时内容不出这台机器。v0.24 起还能做变更关联:用一条只读的 git status(固定 argv、不走 shell、子进程环境白名单),配合同一套引用 / 导入 / 测试 / 提及证据,指出这次改动大概率该一起看哪些文件 —— 默认关闭。语义检索的收益仍待真 provider 实测,因此不承诺召回提升。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。