readable-diagrams:一份 JSON 规范生成可读的独立 HTML 图页

前言

在 DeepSeek Harness(DSH)里让智能体画图,常见结果是 SVG 或 HTML 能渲染,但读者第一眼不知道「该先看哪、结论是什么」。Archify 一类工具把 JSON 规范接到确定性渲染和门禁上;diagram-design 提供版式与无障碍 SVG。二者都不保证页面具备完整的「阅读家具」——结论标题、要点、编号阅读路径、图例与说明,并在发布前被机器校验。

readable-diagrams 把这一层补全:一份 JSON 规范 → 单文件 HTML,且必须通过结构/无障碍门禁与可读性门禁,页面才允许交付。下面介绍它作为 DSH 工作流插件能做什么、如何安装,以及如何按仓库示例复现渲染与检查。

这是什么

  • 定位:Diagrams a reader understands on first look — one JSON spec to a self-contained HTML page, with a machine-checked comprehension gate。同时可作为 Claude Code / Codex 的 skill 使用。
  • 维护者:仓库归属 bingomu/readable-diagrams;npm 包名为 dsh-readable-diagrams,当前插件包版本 1.1.0(以 release 标签安装为准)。
  • 许可证:MIT;DSH 要求 >=0.2.0,插件 wrapper 需 Node 20+,渲染与门禁脚本需 Python 3.9+,无 npm 运行时依赖、无构建步骤。

社区目录页:skillhub.cn 插件条目。该目录为独立社区站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」的扩展方式。

核心功能

规范驱动的图类型与扩展

仓库说明中列出的能力包括:

  • 九种 spec 驱动类型:architecture、flow、state、sequence、timeline、tree、layer stack、bar、quadrant。
  • 手绘式图表族:line、scatter、sankey、radar、heatmap、Gantt、Venn、funnel、journey 等,共用同一套版式与门禁。
  • 导入 / 导出:Mermaid、draw.io、Excalidraw 导入;SVG、PNG 导出。

完整字段见仓库内 skills/readable-diagrams/references/spec-schema.md。

两道门禁(均需通过)

生成 HTML 后不得手改页面;失败则改 spec、重新渲染、再跑检查。非零退出即失败。

comprehension_check.py   title ≤60 · takeaway · caption · numbered reading path ·
                         legend coverage · ≤2 focal accents · node budget ·
                         edge-label coverage · type floors · contrast ·
                         orthogonal connectors · accessible SVG exists
self_check.py            role=img · title first · desc · prefixed ids ·
                         single-file safety · painted content inside viewBox

交互与版式

  • 悬停高亮、无 JavaScript:悬停节点时其余变暗、关联边高亮;悬停阅读步骤可对应节点;支持错峰入场;prefers-reduced-motion 与打印回退为静态帧。
  • 编辑皮肤:明/暗主题,CJK 排版(12px 下限、中文标签 register 切换),4px 网格,无阴影。
  • 示例:skills/readable-diagrams/examples/ 下八个示例页,均通过两道门禁。

项目在 Archify(Apache-2.0)与 diagram-design(MIT)之上,额外定义「可读性契约」并由 checker 强制执行;设计 token 与连接器语法自 diagram-design 改编并注明出处,见 THIRD_PARTY_NOTICES.md。

安装与启用

插件以当前 DSH 进程权限运行;安装前请自行查看仓库源码与 MIT 许可证,确认可接受后再添加。

DeepSeek Harness 官方安装方式(README Install 表):

dsh plugin --profile desktop add https://github.com/bingomu/readable-diagrams/archive/refs/tags/v1.1.0.tar.gz

也可在 DSH 的 Plugins → Add 页面填入同一 URL。重启应用后,skill 会出现在会话目录中。

其他宿主(非 DSH 正文重点,供对照):Claude Code 可用 marketplace 或复制 skills/readable-diagrams/;Codex 可复制到 ~/.codex/skills/ 或使用 .codex-plugin/;通用 agent 可读 SKILL.md 并执行 bash install.sh。

典型用法

安装或取得仓库内容后,skill 目录为 skills/readable-diagrams。下面步骤与 README Quick start 一致:先渲染示例 spec,再跑两道门禁,最后在浏览器打开输出。

SKILL=skills/readable-diagrams

python3 "$SKILL/scripts/render.py" "$SKILL/examples/architecture.spec.json" -o /tmp/page.html --json
python3 "$SKILL/scripts/self_check.py" /tmp/page.html
python3 "$SKILL/scripts/comprehension_check.py" /tmp/page.html

在本地用浏览器打开 /tmp/page.html 即可查看悬停层效果。

最小 spec 示例(architecture 类型,含 meta 与 reading_path):

{
  "type": "architecture",
  "meta": {
    "title": "一次下单请求如何穿过网关到达数据库",
    "takeaway": "写路径只有一条;风控与通知是旁路。",
    "caption": "从左往右是请求方向,实线同步、虚线异步。",
    "reading_path": ["client", "gateway", "orders", "pg"]
  },
  "nodes": [
    {"id": "client", "label": "客户端", "kind": "input"},
    {"id": "gateway", "label": "API 网关", "kind": "backend"},
    {"id": "orders", "label": "订单服务", "kind": "focal"},
    {"id": "pg", "label": "订单库", "kind": "store"}
  ],
  "edges": [
    {"from": "client", "to": "gateway", "label": "HTTPS", "variant": "accent"},
    {"from": "gateway", "to": "orders", "label": "POST /orders", "variant": "accent"},
    {"from": "orders", "to": "pg", "label": "写入", "variant": "accent"}
  ]
}

智能体侧操作说明见 skill 内 SKILL.md;贡献者在 push 前可运行 python3 scripts/check.py(CI 同款:渲染全部 example、跑门禁、解析插件入口)。

适用场景与注意

适合:需要在文档、设计评审或 agent 交付物里输出「读者能按路径读完」的架构/流程类图;希望用脚本门禁约束标题、对比度、正交连接器与 accent 预算,而不是事后人工改 HTML。

注意:

  • 门禁失败是正常反馈,应改 JSON spec 后重新 render.py,不要 patch 生成页。
  • 对比度、节点预算、图例覆盖等规则由 comprehension_check.py 与 self_check.py 具体实现;扩展 spec 前先读 references/ 下说明。
  • DSH 插件仅注册 skill 与 bundle(lib/index.js、cordis.patch.yml);实际渲染依赖本机 Python 3.9+ 环境。

结尾

readable-diagrams 把「人能读懂」写成可检查的契约:一份 JSON、单文件 HTML、两道 Python 门禁。作为 DSH 工作流插件,它让会话里的制图步骤有明确交付标准。

  • 目录页:https://www.skillhub.cn/plugins/bingomu/readable-diagrams
  • 源码与文档:https://github.com/bingomu/readable-diagrams
羽毛球分组比赛记分
小程序二维码

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

小夜