生成、校验、渲染并导出 Mermaid 图表(.mmd)——流程图、序列图、类图、ER 图、状态图、甘特图、Git 图、思维导图、C4、饼图、旅行图。
美人鱼制造者是一项面向实际任务的技能,主要用于将意图转换成.mmd文本,然后将其变成SVG、ASCII、PNG或PDF;关键优势:完全自动布局的基于文本的语法——没有x/y坐标。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
将设计意图转化为 .mmd 文本,再渲染为主题化 SVG、ASCII、PNG 或 PDF。
核心优势:基于文本的语法 + 全自动布局 —— 无需指定 x/y 坐标。源码可纳入 Git 版本管理,并可直接嵌入 Markdown 文件中。
请使用该能力的场景:以代码方式构建图表(流程图、序列图、类图、状态图、ER 图、甘特图、思维导图、C4 图等),并从同一份源码生成风格统一、主题明确或适配终端的高质量输出。
请勿使用该能力(应转至其他工具):
.mmd 文件写入磁盘(可参考 assets/templates/ 中的模板快速起步)。.mmd 修改 → 重新验证 + 重新导出,直至获得批准(设 5 轮安全上限)。| 类型 | 关键字 | 适用场景 | 语法文档 |
|---|---|---|---|
| 流程图 | flowchart TD/LR |
业务流程、数据管道、决策逻辑 | FLOWCHART.md |
| 序列图 | sequenceDiagram |
API 调用、消息传递 | SEQUENCE.md |
| 类图 | classDiagram |
面向对象模型、数据结构 | CLASS-ER.md |
| ER 图 | erDiagram |
数据库模式 | CLASS-ER.md |
| 状态图 | stateDiagram-v2 |
状态机、生命周期 | OTHER-TYPES.md |
| 甘特图 | gantt |
项目时间线 | OTHER-TYPES.md |
| Git 图 | gitGraph |
分支策略 | OTHER-TYPES.md |
| 饼图 | pie |
比例分布 | OTHER-TYPES.md |
| 思维导图 | mindmap |
主题分解 | OTHER-TYPES.md |
| C4 上下文图 | C4Context |
高层架构 | OTHER-TYPES.md |
| 用户旅程图 | journey |
UX 流程 | OTHER-TYPES.md |
常用模板位于 assets/templates/ 目录(含 flowchart、sequence、state、class、er、gantt、gitgraph)。
根据交付需求选择后端。完整命令行参数、安装说明与排错指南详见 RENDERING.md。
| 需求 | 后端 | 单行命令示例 |
|---|---|---|
| 主题化 SVG、ASCII 或批量处理 | beautiful-mermaid | node scripts/render.mjs -i d.mmd -o d.svg --theme tokyo-night |
| PNG 或 PDF(离线) | mmdc | mmdc -i d.mmd -o d.png -w 2048 --backgroundColor white |
| 免安装(仅需 curl) | Kroki | curl -X POST -H "Content-Type: text/plain" --data-binary @d.mmd https://kroki.io/mermaid/svg -o d.svg |
node scripts/render.mjs -i d.mmd -f ascii --use-asciinode scripts/batch.mjs -i ./diagrams -o ./out --theme dracula -w 4beautiful-mermaid 内置 15 种主题。常用推荐:
tokyo-night ⭐ · github-dark · draculagithub-light · zinc-light · catppuccin-latte列出全部主题:node scripts/themes.mjs。完整主题目录、自定义调色板及选型决策树详见 THEMES.md。
mmdc 使用自身标准主题(default/dark/neutral/forest),通过 --theme 参数指定。
切勿在未验证前提下导出。请使用你最终选用的后端进行试渲染:
node scripts/render.mjs -i diagram.mmd -o /tmp/test.svg # beautiful-mermaid mmdc -i diagram.mmd -o /tmp/test.png 2>&1 # mmdc curl -s -X POST -H "Content-Type: text/plain" --data-binary @diagram.mmd https://kroki.io/mermaid/svg -o /tmp/test.svg && echo Valid || echo Invalid
mmdc 报错 Could not find Chrome 属于环境配置问题,而非语法错误 —— 不要重写合法的 .mmd 源码;请修复浏览器环境,或改用其他后端完成验证。
验证仅确保语法合法,**不能保证渲染结果具备可读性**。导出后,请人工审阅图像,识别自动布局无法规避的问题(以下均为内容相关问题,非单纯重叠):
| 检查项 | 关注现象 | 修复方式 |
|---|---|---|
| 标签截断 | 节点/边上的文字被裁剪 | 缩短文字,或使用 换行 |
| 密度过高 | 节点过多、连线缠绕 | 切换 TD↔LR 方向,拆分为多个 subgraph,或减少节点数量 |
| 方向错误 | 图像过宽或过高 | 调整 flowchart TD↔LR(类图/状态图中可设置 direction) |
| 边线混乱 | 大量交叉连线 | 调整节点声明顺序,使关联节点相邻;使用 subgraph 分组 |
| 图表类型错误 | 所选类型不匹配内容语义 | 切换类型(如 gantt、sequenceDiagram、stateDiagram-v2 等) |
| 对比度不足 | 文字与填充色融合难辨 | 更换主题 / 使用 classDef 定制样式,或选用更高对比度主题 |
最多执行 2 轮 自查;每次修复后均需重新验证 + 重新导出。若无视觉能力,可跳过此步,直接展示图像。
展示图像 → 收集反馈 → 应用最小化的 .mmd 修改 → 重新验证 + 重新导出:
| 用户请求 | 修改操作 |
|---|---|
| 修改某个标签 | 编辑对应节点/边的文字 |
| 增删节点或边 | 增加/删除对应行 |
| 修改颜色 | 切换 --theme,或添加 classDef + class |
| 修改布局方向 | 切换 TD↔LR,或设置 direction(类图/状态图) |
| 重构 / 分组 | 用 subgraph 包裹相关节点,或重新生成 |
每轮均覆盖同名 diagram.mmd 文件及输出文件 —— 不要创建 v1、v2 等版本。超过 5 轮后,建议前往 mermaid.live 进行精细化调整。
sequenceDiagram
participant C as Client
participant G as API Gateway
participant A as Auth Service
participant D as Database
C->>G: POST /login {email, password}
G->>A: validate(credentials)
A->>D: SELECT user WHERE email=?
D-->>A: user record
A-->>G: 200 OK + JWT token
G-->>C: {token: "eyJhbG..."}
渲染命令:node scripts/render.mjs -i auth-flow.mmd -o auth-flow.svg --theme tokyo-night
flowchart TD
subgraph Clients
M[Mobile App]
W[Web App]
end
GW[API Gateway]
subgraph Services
US[User Service]
OS[Order Service]
PAY[Payment Service]
end
subgraph Data
UDB[(User DB)]
ODB[(Order DB)]
REDIS[(Redis Cache)]
end
M & W --> GW
GW --> US & OS & PAY
US --> UDB
OS --> ODB
PAY --> REDIS
导出 PNG:mmdc -i ecommerce-arch.mmd -o ecommerce-arch.png -w 2048 --backgroundColor white
stateDiagram-v2 [*] --> Pending : order created Pending --> Confirmed : payment success Pending --> Cancelled : timeout/cancel Confirmed --> Shipped : dispatched Shipped --> Delivered : received Delivered --> [*] Cancelled --> [*]
README 中的 ASCII 渲染:node scripts/render.mjs -i order-states.mmd -f ascii --use-ascii
| 错误 | 修复方式 |
|---|---|
mmdc 报错 Could not find Chrome |
npx puppeteer browsers install chrome-headless-shell(或改用 Kroki) |
Cannot find module 'beautiful-mermaid' |
首次运行时自动安装;否则在技能根目录执行 npm install |
| Kroki 导出 PDF 失败(HTTP 400) | Kroki 对 Mermaid 仅支持 PNG/SVG;PDF 请使用 mmdc |
| 序列图中箭头方向错误 | ->> 表示请求,-->> 表示响应 |
| 标签中含特殊字符 | 加引号包裹:A["Label: value"] |
| PNG 空白或尺寸极小 | 添加 -w 2048 参数(mmdc) |
| 参与者顺序错误 | 在顶部显式声明 participant |
| 子图名称含空格 | 加引号包裹:subgraph "My Layer" |
完整后端参数与排错指南详见 RENDERING.md。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章