夜雨聆风学习资料网

ARTICLE · 1155069

AI 配图老是方框加箭头? 这个 4.5 万 star 的神器给 Agent 装了 44 种图

AI 配图老是方框加箭头? 这个 4.5 万 star 的神器给 Agent 装了 44 种图

AG 雷达 · 雷达扫描

AI 配图老是方框加箭头?😎 这个 4.5 万 star 的神器给 Agent 装了 44 种图

给 AI Agent 装上编辑部图表规范:44 种图类型、单文件 HTML+SVG、无阴影、不许有 Mermaid 味,把审美写成可机检的门禁。

45298 star / 44 种图 / v2.6.68 当前版本 / MIT 许可

它不是画图工具,而是给 AI Agent 补上的一套编辑部图表规范:44 种图类型、单个自包含 HTML 文件、不许有阴影、不许有 Mermaid 味,最关键的是——它把“好看”写成了可以被机器检查的硬约束。

— AG雷达

大多数人被 AI 配图折磨的瞬间都一样:你让它画一张架构图,它回你几个圆角方框加箭头,配色和字体跟你整篇文档不是一套东西。你不会觉得它错,但你会一眼看出它不是人画的。这个项目就是冲这一件事来的。

01它把审美变成了可机检的规则:4px 栅格、1px 细线、无阴影、强调色只给 1–2 个元素,全部写死,不靠模型自觉。

02它反的不是 Mermaid 用户,是 Mermaid 的自动布局:只取内容和方向,坐标与主题全部丢掉重画。

0344 种图类型不是堆数量:类型只在出现真正新的布局语法时才增加,计数被硬编码进测试当门禁。

04真正的成本在门禁:29 个校验脚本、27 个对抗测试、78 条本地门禁命令,连“标签被后画的节点盖住”都是可验证缺陷。

QUICK LOOK

如果你的痛点是“AI 给的图一眼假”,它值得试:装上之后,Agent 画图前会先问你的品牌,再从 44 种类型里选最合适的一种画,出来的是一个自包含 HTML 文件,能直接塞进文档、网页或 PPT。它的价值不在“能画图”,而在“把审美变成了可验证的规则”——这也是它和九成“AI 画图”项目的分野。代价是你要接受它的规矩:4px 栅格、复杂度预算、超限拆图,一条都不打折。

笔记 · NOTE

快速阅读到此结束。

下面是逐项展开:它凭什么不土(审美怎么变成门禁)、“反 Mermaid”到底反的是什么、44 种图的清单与准入门槛、它真正的工程成本花在哪,最后是上手路径、会踩的坑与事实边界。

01 / ONE

问题不在画得丑,在于没有规则

作者在 README 里写了自己最初的处境,几乎是你我共同的经历:每次需要一张图——一张架构草图、一张流程图、一个“什么最重要”的金字塔——问 Claude 要,得到的都是 a generic rounded-box thing,跟站点其它部分完全不是一套东西;然后要么花 30 分钟跟 Figma 缠斗,要么干脆不放图。

这段话点出了真正的病灶:AI 出图不是不会画,而是没有一套它可以遵守的规则。它不知道你的品牌色、你的字族、你的间距习惯,更没有“这张图里读者该先看哪一处”的判断力。于是它只能退回到训练数据里最常见的那种图形语言:圆角方框、均分布局、深色底上加一点辉光。

作者的解法是先做一个 Claude Code skill,让 Agent 读你的网站,60 秒内匹配品牌;后面才长成今天这个支持多宿主的插件。而这个项目最反直觉的地方在于,它的设计哲学第一条不是“多画”,而是删:

笔记 · NOTE

The highest-quality move is usually deletion.

目标密度被写成 4/10;强调色的用法被限定为每张图 1–2 个焦点元素;连“完成”的判据都不是加法而是减法——图不是什么时候画完的,而是删到不能再删的时候才算完。

02 / TWO

它凭什么不土:审美是可检查的

绝大多数 AI 画图项目的质量承诺是一堆形容词:优雅、专业、现代。这个项目的承诺是一串可以拿去核对、甚至直接交给 CI 的数字。

它把颜色、排版和 token 收进唯一的事实源 style-guide.md,并且要求所有类型文件用语义角色名引用(写 accent,不写 #f7591f)——因为一旦散落的十六进制值满天飞,规则就没法被检查。默认皮肤是一套冷暖适中的编辑配色:烟白纸色、墨黑、橘子色强调、蓝灰弱化,只映射五个品牌色,其余角色色全部从这五个派生。

真正决定“AI 感”的,是下面这些写死的约束:

强调色

规则: 全局 1 个,每图只给 1–2 个焦点元素

说明: Two accents erases the focal signal

字体

规则: 三款:衬线管标题与批注、无衬线管节点名、等宽只管技术内容

说明: 明确禁止拿等宽字体当通用“开发感”

线条

规则: 1px 细线,无阴影,圆角最大 10px

说明: Shadows are out. Borders are in.

栅格

规则: 坐标、宽高、间距必须能被 4 整除

说明: 作者原话:这正是它不像 AI 生成的原因

对比度

规则: 墨色必须在纸色上过 WCAG AA

说明: 品牌色不合规会提出调整值并解释理由

密度

规则: 每图 ≤9 个节点、≤12 条箭头、≤2 个标注

说明: 超限就拆成 overview + detail 两张

其中 4px 栅格和密度预算是这套系统里最不像“审美”的两条,也最能解释它为什么不土:网格让每张图都落在一个统一的节奏上,而密度上限逼着作者做取舍——你没法把十件事塞进一张图里,因为门禁不让你超。每个图类型还有自己的预算行:时序图最多五条生命线,实体关系图最多八个实体,数据库模式图最多五张表,桑基图最多三个阶段。

边界也说得很清楚:你可以换成自己的品牌(onboarding 会读你的网站,采样颜色角色、字体族与字重,并给出取材回执),但换的是 token,不是结构规则——4px 栅格和复杂度预算不会因为你品牌特殊而放松。文档里唯一被允许的豁免是 import 的 faithful 细节档,而且写明连接器那六条规则“永不放松”(The connector rules never relax)。

03 / THREE

反的不是 Mermaid,是自动布局

仓库口号里有一句很冲的话,逐字是 No shadows. No Mermaid slop. 也正因为这句,它最容易被误读成“Mermaid 黑”。但把这个项目读完你会发现,它反的是 Mermaid 的输出,不是 Mermaid 的用户——它甚至专门提供了一个 import-mermaid 命令,把 Mermaid 当输入来用。

区别在于“重绘”和“渲染”这四个字。它的原则原文写得很直白:

笔记 · NOTE

This is a redraw, not a render or conversion.

也就是说:Mermaid 只提供内容和声明的方向,坐标、主题、类名、形状样式全部丢弃,由本项目的设计系统重新布局。项目在反模式表里把“复现 Mermaid 的渲染器布局”与“深色底加霓虹光”“拿 JetBrains Mono 当通用开发字体”并列,理由只有一句:那等于把自动间距和自动走线搬进来,而不是做一次编辑级的排版。

这条边界被守得很硬:

·提取器只解析四种文法:flowchart、sequenceDiagram、stateDiagram-v2、erDiagram。饼图、思维导图这类直接进拒绝名单。

·提取器“从不求值、从不渲染、从不抓取、从不执行”源文本里的任何东西,也不发网络请求;标签与指令值一律按不可信数据对待。

·把 Mermaid 先渲染成 SVG 再处理,被列为反模式,理由是这样会把源样式变成虚假约束,并且 crossing an unnecessary execution boundary。

·保真边界是一张清单:永远不继承源坐标、调色板、字体、draw.io 的对角线连接、Mermaid 的自动布局、Excalidraw 的手绘几何;永远继承组件、关系、分组与方向。

·每次导入必须交一份 fidelity ledger,写明哪些东西被合并、折叠或丢掉了。

draw.io 与 Excalidraw 走的是同一套逻辑:Excalidraw 只接受场景文件,导出的 png、svg 会被提取器直接拒绝,因为它要的从来不是你的画布,而是你的结构。

04 / FOUR

44 种图不是堆出来的

先说个有意思的细节。仓库描述字段至今写着 42 diagram types,但它已经滞后了:类型参考文件实际有 44 个,SKILL.md 写的是 Forty-four visual types,宿主清单里也写着 44 diagram types。按 ADR 0002 的计数修订记录,这个数字从 27 一路走到 44,最近一次是 2026-10-04 加入的斜投影平面图——第 44 个类型。一个能把 78 条门禁命令写进策略文件的项目,偏偏忘了改描述字段,这本身就是它迭代速度的注脚。

更值得注意的是它的分类制度:语义模式和视觉类型是两个轴。语义模式回答“这个系统在做什么”,共 9 个(比如扇入排队与瓶颈、安全铺装路、可追溯的模块拆解);视觉类型回答“信息怎么排布”,共 44 个。加一个语义模式只需要一个参考文件,因为它必须路由到“最近的既有类型”,绝不新增布局文法。

而类型数不是随便动的。44 和 9 都被硬编码成校验脚本里的常量,ADR 0002 里有句很狠的话:改了这两个计数却不改测试文件,等于悄悄把自己变成了权威。新增类型的唯一门槛是“出现真正新的布局语法”——瀑布图之所以必须是新类型而不是柱状图的变体,是因为它锚定的是一个守恒的累计值,而不是几根互相独立的柱子。

44 种类型大致可以这样分:

结构

代表类型: Architecture、Architecture delta、Deployment

它回答的问题: 系统由什么组成、改了什么、跑在哪

流程

代表类型: Flowchart、Sequence、State machine、Swimlane

它回答的问题: 谁先谁后、在哪分支、状态怎么迁移

数据

代表类型: ER、Database schema、Data flow、Medallion、DP integration

它回答的问题: 数据存在哪、字段怎么约束、谁在用

量与趋势

代表类型: Bar、Line、Waterfall、Scatter、Heatmap、Treemap

它回答的问题: 多少、怎么变、彼此相关吗

判断与定位

代表类型: Quadrant、Radar、Pyramid、Wardley map、Venn

它回答的问题: 优先级、能力评分、演进阶段

人与时间

代表类型: Timeline、Gantt、Kanban、User journey、Story map

它回答的问题: 什么时候发生、谁在做什么

系统行为

代表类型: Loop、Fishbone、Sankey、Dependency graph、UML class

它回答的问题: 为什么出事、量怎么分流、依赖在哪

空间与拆解

代表类型: Exploded axonometric、Axonometric plan、Layer stack、Nested

它回答的问题: 装配顺序、位置、抽象层级

这 44 种并不是每个都同等常用,深度也不一致:折线图底下还挂着斜率图、脊线图、流图、名次图四个子变体,象限图有一个咨询顾问专用的 2×2 版,柱状图有哑铃图变体,树状图有马里梅科变体,而这些变体各自都有独立的校验脚本。

05 / FIVE

真正的成本在门禁

一个 45k star 的开源项目,最容易被忽略的部分是它把力气花在了哪里。这个项目的答案很明确:门禁。

先看规模。仓库里有 80 个 Python 脚本,其中 29 个是校验器、27 个是给校验器写的对抗测试;14 份架构决策记录;策略文件里逐条列出 78 条本地门禁命令。CI 主矩阵跑 3 个系统 × 2 个 Python 版本,另有插件打包与 Python 3.9 兼容两个独立作业。

再看门禁的刁钻程度:

lint-skin.py

它检查什么: 新增或改动的示例是否合规

关键细节: 六类失败码:颜色、字族、无障碍、远程资源、纯黑、脚本

lint-render.py

它检查什么: 渲染后有没有内容被裁掉

关键细节: 用无头 Chromium 双截图差分,多出来的墨水就是被裁掉的内容

verify-geometry.py

它检查什么: 标签会不会被后画的节点盖住

关键细节: 判据是文档序,不是单纯重叠

verify-waterfall.py

它检查什么: 累计值是否守恒

关键细节: 每根柱与连线都必须声明自己承载的数值

verify-docs-sync.py

它检查什么: 文档与路由是否漂移

关键细节: 16 类漂移,每一类都对应过一次真实事故

self_check.py

它检查什么: 随包分发的输出自检

关键细节: 无障碍契约、单文件安全、动效契约的蒸馏子集

里面最值得单独讲的是标签几何。这个项目曾经有两个类型的九个示例带着缺陷发布,而当时所有既有门禁全部通过——因为没有任何一道门禁去读坐标:皮肤检查器看颜色、字体和无障碍,自检脚本看 DOM 结构与动效契约,两边都不碰坐标。于是他们把这件“只能靠眼睛”的事改成了几何规则:因为绘制顺序被固定为背景、区带、箭头、标签、节点,一个标签遮罩如果落在文档中更晚声明的节点上,就会被那个节点的填充盖住,读者看到的是一段断在边框上的文字碎片。校验器因此按文档序判定,完全没有落在节点内部的徽章则依然合法。

这道检查的阈值也被写得明明白白:节点判定为不小于 60×40 的矩形,标签遮罩判定为宽 20–200、高 8–14 的矩形。宽度上限最初是 120,后来发现长等宽标签牌(以及中日韩文字产生的更宽带)整个落在窗口之外、根本没被检查过,才放宽到 200——而放宽的代价被写进了决策记录正文,因为它会让约八十个已发布矩形有被误判的风险。

还有一层纪律是“门禁失败时怎么办”。文档里的原则是:去修事实源,不要为了让失败消失而放宽测试。同一个思路贯穿到发布流程:PR 不允许改动版本号,合并之后由主分支上的流水线补版本号;动效默认静态且无脚本,需要动效时整个文件只允许存在一个控制器脚本,而且它必须与仓库里审核过的控制器逐字节一致——哈希校验一次、字符串相等再查一次、随包自检第三次查。

06 / SIX

普通人怎么用:三条路径

安装面铺得很宽。五个原生 marketplace 各有一条命令:Claude Code 用 /plugin marketplace add cathrynlavery/diagram-design 加 /plugin install diagram-design@diagram-design,Codex 用 codex plugin marketplace add,GitHub Copilot 用 copilot plugin marketplace add 加 copilot skill list 验证,Factory Droid 用 droid plugin marketplace add 加 --scope user 安装,Pi 用 pi install。没有 marketplace 的宿主(Cursor、Cline、Amp、Gemini CLI 这一类)统一走 npx skills add cathrynlavery/diagram-design;不过要留意,独立安装既不跟随 marketplace 更新,也不带命令面。

有一处容易卡住的细节:Claude Code 对第三方 marketplace 默认关闭自动更新,要手动在插件面板里开一次,之后它才会在启动后自动刷新。

第一次在新项目里出图时,它会拦住你问品牌,给六个选项:给网站 URL、用已安装的 skill、指一个本地设计系统目录、直接粘 token、先用默认、或载入已存档案。匹配完成后会给你一张取材回执,列明采样了哪些 URL、每个颜色的角色、字体族与字重、字体来源地址,以及任何回退。它还会顺手做一次对比度校验:如果品牌色在小字号下过不了 WCAG AA,会提出一个调整值并解释原因。

出图之后的自检很简单,随包分发的脚本跑一下,打印 OK 就算过:python3 skills/diagram-design/scripts/self_check.py my-diagram.html。

日常最实用的三件事:

·把你已有的图重绘一遍。Mermaid、draw.io、Excalidraw 三种输入都支持,用 --detail 控制繁简(faithful 最多 24 个节点、balanced 12 个、simplified 7 个),用 --audience 控制措辞(工程师、混合、管理层——它只改措辞,不改数量)。这一步的价值是:你不用重新想图,只需要让它重新画。

·导出 SVG 塞进 PPT。有个特别实在的工程细节:导出脚本会把 rgba() 和 transparent 全部归一化,因为 PowerPoint 的 SVG 导入器不认这些值,会直接把它们涂成不透明黑。

·固定你的品牌。档案存在 ~/.diagram-design/profiles/,项目级则用根目录一个 .diagram-design 标记文件指向某个档案,文件里只接受一行 profile: 名字,多一个注释就整体忽略。唯一要记住的是:别把档案放进插件目录,插件更新会替换那个目录。

07 / SEVEN

边界与行动

它明确不适用的情况,项目自己写死在文档里:想要快速画个字符草图,去用纯文本工具;一串并列的东西,用表格或列表;只有属性级的改动前后对比,用表格;只想表达单个方框的“图”,请直接写一句话。它还给了个判断门槛:画之前先问自己——读者从这张图里学到的,会不会比读一段写好的文字更多?答案是不会,就别画。

几个会踩到的坑:

·4px 栅格是硬规则,不是风格偏好。随手写个 15px 的间距,在门禁眼里就是错的。

·预算超了就拆图,不是缩字号。中文标签有 12px 的下限,文档的原话是:12px 放不下这个名字,就砍掉名字,不要缩字号。

·动效只有一个合法控制器,不能按图定制交互;需要定制交互的图,明确不在这个项目的范围内。

·导出的是“只有图形节点”的文件,完整版里的编辑卡片和页头会被有意丢掉;要整页版式请自己走浏览器打印。

·导出 PNG 需要 Playwright 加 Chromium,缺失时诊断命令只会给一个警告,而且它从不自动安装依赖。

·Windows 上 PATH 里的 python3 可能是应用商店的存根而不是解释器,这是文档里专门写出来的坑。

·仓库自己承认,示例库里预置的 HTML 是按更早的皮肤生成的,对齐当前规范重新生成被列为下一个小版本的任务。

你可以这样验证它值不值:

01先不装。打开示例库(仓库里的 assets/index.html 或线上画廊),用浅色、深色、完整版三个标签页翻一遍——看它画出来的东西是不是你想要的那种气质,这一步零成本。

02决定装了,先跑一次 doctor。它只读、不装依赖、不改文件,会告诉你 Python 版本够不够、导出用的浏览器在不在。

03拿你工作里真实用过的一张 Mermaid 图去 import,然后认真读它给你的那份 fidelity ledger——看它丢掉了什么。这比任何评测都更能告诉你它适不适合你。

事实边界:本文所有数字与引文取自 2026-10-08 的仓库快照(版本 2.6.68,约 4.5 万 star,MIT 许可,作者 Cathryn Lavery),仓库迭代很快,类型数、门禁数与命令参数都可能已经变化,安装前请以仓库当前文档为准。需要说清楚的是:我没有在真实宿主上完成安装实测——安装命令、命令面与门禁行为都来自仓库文档与代码,不是我的运行结果;我核实到的确定事实是 44 个类型参考文件与测试脚本里的计数常量一致,而仓库描述字段仍停留在 42。

08 / EIGHT

资料来源

·主源:GitHub 仓库 cathrynlavery/diagram-design 的 README、SKILL.md、references/、docs/adr/ 与 .maintainer-policy.json,读取于 2026-10-08(版本 2.6.68)

·文中英文原句均为该仓库原文;star 数、类型数、门禁数等数字为 2026-10-08 的快照,仓库迭代很快,你读到这篇时可能已经变化

·事实边界:本轮未在真实宿主上完成安装实测,安装命令、命令面与门禁行为都来自仓库文档与代码,不是我的运行结果

·仓库地址:https://github.com/cathrynlavery/diagram-design(微信内不可跳转,可自行复制到浏览器)

END

我是 AG雷达。每天被AI消息轰炸?AG-雷达帮你过滤噪音

如果这篇对你有用,点赞、在看、转发 三连,我们下篇见。

相关学习资料