AI学习吧
📍 源码七号站 开源解码 Beautiful-mermaid,让你的Mermaid图表焕然一新的完整指南

Beautiful-mermaid,让你的Mermaid图表焕然一新的完整指南

摘要:本文介绍了如何通过beautiful-mermaid和pretty-mermaid-skills项目,将Mermaid图表的默认“理工直男风”升级为专业美观的可视化图表。文章从Mermaid的痛点分析入手,深入解析了beautiful-mermaid项目的设计理念、技术原理(如color-mix()函数和Mono Mode),并提供了详细的安装、使用指南和多种图表类型的语法示例。此外,还介绍了如何通过AI Skill实现自动美化,并分享了多个实战案例与进阶技巧,帮助开发者轻松制作出适用于技术文档、博客和演示的专业级图表。
字号 100%
行距 2.05
当前可见 60% 的内容
本文由 莫潇羽@源码七号站 原创撰写,首发于 www.fuyuan7.com,转载请注明出处。

作为一名在技术圈摸爬滚打多年的老司机,我深知写技术文档时的那份纠结——逻辑要清晰、表述要准确、图表要专业。尤其是当我们需要把复杂的系统架构、业务流程或者数据流向可视化呈现出来的时候,Mermaid这个工具简直是程序员的福音。几行代码就能生成流程图、时序图、甘特图,效率确实没得说。

但是,说句掏心窝子的话,每次看到Mermaid默认渲染出来的图表,总觉得哪里不太对劲。那种棱角分明的线条、单调的配色、毫无设计感的排版,活脱脱就是一股"理工直男风"——功能是有了,但要放进PPT里做汇报,或者发到技术博客里分享,总觉得有点拿不出手。

最近我在GitHub上发现了一个特别火的开源项目,三天内Star数就暴涨了好几千,仔细研究之后发现确实是解决了我们这些技术人的一大痛点。今天这篇文章,莫潇羽就带着大家从原理到实践,把这套Mermaid美化方案彻底吃透。不管你是刚入行的小白,还是已经在技术圈混迹多年的老鸟,相信看完之后都会有所收获。


一、为什么我们需要美化Mermaid图表

在正式开始讲解之前,我觉得有必要先和大家聊聊,为什么默认的Mermaid图表会让人觉得不够"高级",以及美化这件事到底重不重要。

1.1 Mermaid的优势与局限

Mermaid是由Knut Sveidqvist创建的一款基于JavaScript的图表绘制工具,它最大的特点就是用纯文本的方式来定义图表结构。你不需要学习复杂的设计软件,不需要手动拖拽调整每个节点的位置,只需要按照特定的语法写几行代码,图表就自动生成了。

这种"代码即图表"的理念有几个明显的好处:

  • 版本可控:图表的源代码可以和项目代码一起进行版本管理,修改记录一目了然
  • 协作方便:团队成员可以像review代码一样review图表的变更
  • 维护简单:业务流程变了,改几行代码就行,不用重新画图
  • 嵌入便捷:Markdown编辑器、各种文档平台普遍支持Mermaid的渲染

正因为这些优势,Mermaid已经成为了技术文档领域的事实标准。在GitHub、GitLab、Notion、语雀等主流平台上,你都可以直接使用Mermaid语法来绘制图表。

但问题也随之而来——Mermaid的默认样式真的很一般。

1.2 默认样式的痛点分析

作为源码七号站的站长,我经常需要写各种技术教程和架构分析文章,Mermaid图表用得不少。在长期使用过程中,我总结出默认样式的几个主要问题:

配色单调:默认的配色方案往往就是几种基础颜色的简单组合,缺乏层次感和视觉吸引力。尤其是在暗色主题的文档里,默认配色往往显得格格不入。

线条生硬:节点之间的连接线缺乏美感,箭头样式也比较呆板。对于需要展示复杂交互关系的时序图来说,这个问题尤其明显。

排版僵化:节点的大小、间距、对齐方式都是固定的,很难根据实际内容进行灵活调整。有时候一个节点的文字多了一点,整个图表的布局就会变得很奇怪。

风格不统一:当我们把Mermaid生成的图表放到精心设计的PPT或者产品文档里时,那种风格上的割裂感会特别明显。就好像一群穿西装的人里面突然混进了一个穿格子衬衫的程序员。

1.3 美化的意义与价值

可能有人会说,技术文档嘛,内容正确最重要,形式不重要。这话有一定道理,但也不完全对。

在我多年的技术写作和分享经验中,莫潇羽深刻体会到,一张设计精良的图表,不仅能让读者更愿意去理解你想表达的内容,还能体现出你对待工作的态度。尤其是在以下场景中,图表的视觉呈现尤为重要:

  • 向非技术背景的领导或客户汇报系统架构时
  • 在技术博客或公众号发布教程文章时
  • 制作对外发布的产品技术文档时
  • 准备技术分享会或培训材料时

好的视觉呈现能够降低理解成本,提升专业形象,让你的技术方案更有说服力。这就是为什么我们需要认真对待Mermaid图表的美化问题。


二、beautiful-mermaid项目深度解析

接下来进入正题,让我们来详细了解一下这个能够解决Mermaid美化问题的开源项目——beautiful-mermaid。

2.1 项目背景与设计理念

beautiful-mermaid是由Luki Labs团队开发的一个开源项目,项目地址是 https://github.com/lukilabs/beautiful-mermaid 。从项目的描述来看,这个工具的诞生源于一个很实际的需求:在AI辅助编程时代,越来越多的技术文档是由AI协助生成的,其中包含大量的Mermaid图表。如何让这些图表既正确又美观,成为了一个值得解决的问题。

项目的核心设计理念可以概括为以下几点:

极简主义:只需要两种颜色(背景色和前景色),就能生成一张协调美观的图表。这种设计极大地降低了使用门槛,你不需要是设计师,也能做出好看的图表。

智能推导:基于你指定的两种主色,系统会自动计算出线条颜色、填充色、高亮色等所有其他颜色。这背后用到了CSS的color-mix()函数,后面我会详细讲解其原理。

双输出模式:除了常见的SVG矢量图输出,还支持ASCII字符画输出。这意味着即使在纯文本环境(比如终端、代码注释)中,你也能看到有设计感的图表。

零依赖:整个渲染过程不依赖DOM,纯TypeScript实现,可以在任何JavaScript运行环境中使用。

2.2 技术架构与核心原理

要真正理解beautiful-mermaid的强大之处,我们需要深入了解它的技术实现。作为源码七号站的技术内容创作者,我习惯把复杂的技术拆解成容易理解的部分。

2.2.1 主题系统的设计

beautiful-mermaid的主题系统是整个项目的核心。它采用了一种被称为"Mono Mode"(单色模式)的设计思路——只用两种颜色就能构建出整个图表的视觉体系。

具体来说,你只需要指定:

  • bg(background):图表的背景色
  • fg(foreground):图表的前景色

系统会基于这两种颜色,自动推导出:

  • line:连接线的颜色
  • accent:箭头、高亮部分的颜色
  • muted:次要文字、标签的颜色
  • surface:节点填充的颜色
  • border:节点边框的颜色

这种设计的精妙之处在于,无论你选择什么样的主色调组合,生成的图表在视觉上都是和谐统一的。这是因为所有派生颜色都是从主色调通过数学计算得出的,它们之间存在内在的色彩关系。

2.2.2 color-mix()函数的魔力

beautiful-mermaid的颜色推导机制依赖于CSS的color-mix()函数。这是一个相对较新的CSS特性,它能够在指定的色彩空间中混合两种颜色,生成一种新的颜色。

color-mix()的基本语法是这样的:

color-mix(in <color-space>, <color1> [<percentage>], <color2> [<percentage>])

其中:

  • <color-space> 指定颜色混合所使用的色彩空间,常用的有srgb、lab、lch等
  • <color1><color2> 是要混合的两种颜色
  • <percentage> 可选,指定每种颜色的混合比例,默认各50%

举个例子,如果我们想把红色和蓝色按50:50的比例混合,可以这样写:

background-color: color-mix(in srgb, red, blue);

结果会得到一种紫色。

beautiful-mermaid巧妙地利用了这个特性。当你只提供背景色和前景色时,它会通过不同比例的color-mix()来计算其他颜色:

// 伪代码示意
const surface = colorMix(bg, fg, 0.1);  // 节点填充色:主要是背景色,混入少量前景色
const border = colorMix(bg, fg, 0.3);   // 边框色:背景色和前景色的中间偏浅
const line = colorMix(bg, fg, 0.5);     // 连线色:两者的中间色
const muted = colorMix(bg, fg, 0.6);    // 次要文字色
const accent = fg;                       // 强调色:直接使用前景色

这样的设计确保了所有颜色都在同一个色彩体系内,视觉上自然和谐。

2.2.3 Mono Mode与Enrichment Mode

beautiful-mermaid提供了两种使用模式:

Mono Mode(单色模式):只需要提供bg和fg两种颜色,其他颜色全部由系统推导。这是最简单的使用方式,适合快速生成图表。

Enrichment Mode(增强模式):在Mono Mode的基础上,允许你手动指定部分派生颜色,实现更精细的控制。比如你可能对系统推导出的线条颜色不太满意,可以单独覆盖它。

代码示例:

// Mono Mode - 最简用法
const svg = await renderMermaid(diagram, {
  bg: '#1a1b26',
  fg: '#a9b1d6',
});

// Enrichment Mode - 精细控制
const svg = await renderMermaid(diagram, {
  bg: '#1a1b26',
  fg: '#a9b1d6',
  line: '#3d59a1',     // 自定义线条颜色
  accent: '#7aa2f7',   // 自定义强调色
  muted: '#565f89',    // 自定义次要文字色
  surface: '#292e42',  // 自定义节点填充色
  border: '#3d59a1',   // 自定义边框色
});

2.2.4 ASCII渲染引擎

beautiful-mermaid的另一个亮点是支持ASCII字符画输出。这个功能的实现基于m实现基于mermaid-ascii项目(由Alexander Grooff开发),Luki Labs团队将其从Go语言移植到了TypeScript,并进语言移植到了TypeScript,并进行了扩展。

ASCII渲染的原理是将图表的每个元素(节点、边、箭头等)映射为特定的字符组合。比如:

  • 矩形节点用 ┌─┐│ │└─┘ 这样的字符组合来绘制
  • 连接线用 等字符来表示
  • 箭头用 >< 等字符来表示

ASCII模式的好处是可以在任何纯文本环境中显示,比如:

  • 终端/命令行界面
  • 代码注释
  • 邮件正文
  • 不支持图片的文档格式

对于需要在终端中查看系统架构,或者想在代码注释中添加流程图的开发者来说,这个功能非常实用。

2.3 支持的图表类型

目前beautiful-mermaid支持以下五种图表类型:

Flowchart(流程图):最常用的图表类型,用于展示流程、步骤、决策等。

State Diagram(状态图):展示系统或对象在不同状态之间的转换关系。

Sequence Diagram(时序图):展示多个参与者之间的交互过程和时间顺序。

Class Diagram(类图):面向对象设计中用于展示类的结构和关系。

ER Diagram(实体关系图):数据库设计中用于展示实体和实体之间的关系。

这五种图表覆盖了技术文档中最常见的可视化需求。

2.4 内置主题一览

beautiful-mermaid内置了15种精心设计的主题,涵盖了亮色、暗色、中性等多种风格。这些主题的设计灵感来源于一些知名的设计系统,比如Linear、Vercel等现代科技产品的视觉风格。

使用内置主题非常简单:

import { renderMermaid, themes } from 'beautiful-mermaid';

// 使用内置主题
const svg = await renderMermaid(diagram, themes.tokyoNight);

如果你熟悉VS Code的主题系统,beautiful-mermaid还支持直接使用Shiki(VS Code语法高亮引擎)的主题。这意味着你可以让图表的配色和代码编辑器的主题保持一致。


三、beautiful-mermaid安装与基础使用

理论知识讲得差不多了,接下来莫潇羽带大家进入实操环节。这部分内容会尽可能详细,确保即使是刚接触这些工具的小白也能顺利上手。

3.1 环境准备

在开始之前,你需要确保开发环境中已经安装了Node.js。如果你还没有安装,可以按照以下步骤操作:

Windows用户

访问Node.js官网(https://nodejs.org/),下载LTS(长期支持)版本的安装包,双击运行,一路点击"下一步"即可完成安装。

安装完成后,打开命令提示符(按Win+R,输入cmd,回车),输入以下命令验证安装是否成功:

node --version
npm --version

如果能看到版本号输出,说明安装成功。

macOS用户

推荐使用Homebrew进行安装:

brew install node

如果没有安装Homebrew,可以先执行:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Linux用户

以Ubuntu为例:

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

3.2 安装beautiful-mermaid

beautiful-mermaid以npm包的形式发布,安装非常简单。打开终端,进入你的项目目录,执行:

npm install beautiful-mermaid

如果你使用的是其他包管理器:

# 使用yarn
yarn add beautiful-mermaid

# 使用pnpm
pnpm add beautiful-mermaid

# 使用bun
bun add beautiful-mermaid

安装完成后,你就可以在项目中引入并使用了。

3.3 第一个美化示例

让我们来创建一个简单的示例,感受一下beautiful-mermaid的效果。

首先,创建一个新的JavaScript文件(比如test.mjs):

import { renderMermaid } from 'beautiful-mermaid';
import fs from 'fs';

// 定义一个简单的流程图
const diagram = `
flowchart TD
    A[用户访问网站] --> B{是否登录?}
    B -->|是| C[显示个人中心]
    B -->|否| D[显示登录页面]
    D --> E[输入账号密码]
    E --> F{验证通过?}
    F -->|是| C
    F -->|否| G[显示错误提示]
    G --> D
`;

// 使用自定义配色渲染
const svg = await renderMermaid(diagram, {
  bg: '#0d1117',   // GitHub暗色主题的背景色
  fg: '#c9d1d9',   // 浅灰色前景色
});

// 保存为SVG文件
fs.writeFileSync('output.svg', svg);
console.log('图表已生成:output.svg');

运行这个脚本:

node test.mjs

你会在当前目录下看到生成的output.svg文件,用浏览器打开就能看到美化后的流程图了。

3.4 使用内置主题

如果不想自己调配颜色,直接使用内置主题是最方便的选择:

import { renderMermaid, themes } from 'beautiful-mermaid';
import fs from 'fs';

const diagram = `
sequenceDiagram
    participant 客户端
    participant 网关
    participant 认证服务
    participant 业务服务

    客户端->>网关: 发起请求
    网关->>认证服务: 验证Token
    认证服务-->>网关: 验证结果
    alt Token有效
        网关->>业务服务: 转发请求
        业务服务-->>网关: 返回数据
        网关-->>客户端: 响应结果
    else Token无效
        网关-->>客户端: 返回401错误
    end
`;

// 使用Tokyo Night主题
const svg = await renderMermaid(diagram, themes.tokyoNight);
fs.writeFileSync('sequence.svg', svg);
console.log('时序图已生成:sequence.svg');

3.5 生成ASCII字符画

对于需要在终端显示或嵌入代码注释的场景,可以使用ASCII输出模式:

import { renderMermaidAscii } from 'beautiful-mermaid';

const diagram = `
flowchart LR
    A[开始] --> B[处理]
    B --> C{判断}
    C -->|是| D[结束]
    C -->|否| B
`;

const ascii = await renderMermaidAscii(diagram);
console.log(ascii);

输出的结果会是类似这样的字符画:

┌──────┐     ┌──────┐     ┌──────┐     ┌──────┐
│ 开始 │────▶│ 处理 │────▶│ 判断 │────▶│ 结束 │
└──────┘     └──────┘     └──┬───┘     └──────┘
                             │
                             │ 否
                             │
                             ▼
                          ┌──┴───┐
                          │      │
                          └──────┘

这种输出在代码注释中特别有用,可以让同事在阅读代码时直观地理解流程逻辑。

3.6 在网页中使用

beautiful-mermaid也可以在浏览器环境中使用。下面是一个简单的HTML示例:

<!DOCTYPE html>
<html>
<head>
    <title>beautiful-mermaid 网页示例</title>
</head>
<body>
    <div id="diagram-container"></div>

    <script type="module">
        import { renderMermaid, themes } from 'https://esm.sh/beautiful-mermaid';

        const diagram = `
        graph TD
            A[浏览器] --> B[CDN]
            B --> C[Web服务器]
            C --> D[(数据库)]
            C --> E[缓存服务]
        `;

        const svg = await renderMermaid(diagram, themes.github);
        document.getElementById('diagram-container').innerHTML = svg;
    </script>
</body>
</html>

这个示例使用了esm.sh这个CDN服务来加载beautiful-mermaid模块,无需任何构指南

要充分发挥beautiful-mermaid的威力,首先得熟练掌握Mermaid的语法。这部分莫潇羽@源码七号站会带大家系统地学习Mermaid的核心语法,力求做到即使是零基础的读者也能快速上手。

4.1 流程图(Flowchart)

流程图是最常用的图表类型,用于展示流程、步骤和决策逻辑。

4.1.1 基本语法

流程图以flowchartgraph关键字开头,后面跟着方向指示符:

  • TBTD:从上到下(Top to Bottom / Top Down)
  • BT:从下到上(Bottom to Top)
  • LR:从左到右(Left to Right)
  • RL:从右到左(Right to Left)
flowchart LR
    A --> B

4.1.2 节点形状

Mermaid支持多种节点形状,通过不同的括号来表示:

flowchart TD
    A[方形节点]
    B(圆角节点)
    C([体育场形])
    D[[子程序形]]
    E[(圆柱形)]
    F((圆形))
    G>旗帜形]
    H{菱形}
    I{{六边形}}
    J[/平行四边形/]
    K[\反向平行四边形\]
    L[/梯形\]
    M[\反向梯形/]

每种形状都有其特定的语义,比如:

  • 方形通常表示一般步骤
  • 圆角通常表示开始或结束
  • 菱形通常表示判断/决策
  • 圆柱形通常表示数据库

4.1.3 连接线样式

节点之间的连接也有多种样式:

flowchart LR
    A --> B %% 实线箭头
    C --- D %% 实线无箭头
    E -.-> F %% 虚线箭头
    G -.- H %% 虚线无箭头
    I ==> J %% 粗实线箭头
    K === L %% 粗实线无箭头
    M --文字--> N %% 带文字的连线
    O -->|文字| P %% 另一种带文字的写法

4.1.4 子图

当流程比较复杂时,可以使用子图来组织相关的节点:

flowchart TB
    subgraph 前端
        A[Vue应用] --> B[Nginx]
    end
    subgraph 后端
        C[API网关] --> D[微服务A]
        C --> E[微服务B]
    end
    subgraph 数据层
        F[(MySQL)]
        G[(Redis)]
    end
    B --> C
    D --> F
    E --> G

4.2 时序图(Sequence Diagram)

时序图用于展示多个参与者之间的交互过程,特别适合描述API调用、消息传递等场景。

4.2.1 基本语法

sequenceDiagram
    participant A as 客户端
    participant B as 服务器
    A->>B: 请求
    B-->>A: 响应

参与者可以用participant关键字显式定义,也可以直接使用。as关键字用于设置别名。

4.2.2 消息类型

sequenceDiagram
    A->>B: 实线箭头(同步请求)
    B-->>A: 虚线箭头(异步响应)
    A-)B: 实线开放箭头
    B--)A: 虚线开放箭头
    A-xB: 实线带叉(表示丢失/错误)
    B--xA: 虚线带叉

4.2.3 激示参与者正在处理某个请求:

sequenceDiagram
    客户端->>+服务器: 请求数据
    服务器->>+数据库: 查询
    数据库-->>-服务器: 返回结果
    服务器-->>-客户端: 响应数据

+表示激活,-表示取消激活。

4.2.4 条件与循环

sequenceDiagram
    客户端->>服务器: 登录请求
    alt 验证成功
        服务器-->>客户端: 返回Token
    else 验证失败
        服务器-->>客户端: 返回错误
    end

    loop 每隔5分钟
        客户端->>服务器: 心跳请求
        服务器-->>客户端: 确认
    end

4.2.5 注释

sequenceDiagram
    A->>B: 请求
    Note right of B: 这是一个注释
    Note over A,B: 跨越多个参与者的注释
    B-->>A: 响应

4.3 状态图(State Diagram)

状态图用于描述对象或系统在不同状态之间的转换。

stateDiagram-v2
    [*] --> 待机
    待机 --> 运行中: 启动
    运行中 --> 暂停: 暂停
    暂停 --> 运行中: 继续
    运行中 --> 待机: 停止
    待机 --> [*]: 关闭

    state 运行中 {
        [*] --> 空闲
        空闲 --> 处理中: 收到任务
        处理中 --> 空闲: 任务完成
    }

[*]表示开始状态或结束状态,状态可以嵌套。

4.4 类图(Class Diagram)

类图是面向对象设计的核心工具,用于展示类的结构和关系。

classDiagram
    class Animal {
        +String name
        +int age
        +makeSound() void
    }
    class Dog {
        +String breed
        +bark() void
    }
    class Cat {
        +meow() void
    }

    Animal <|-- Dog
    Animal <|-- Cat

    Dog "1" --> "*" Bone : eats

关系符号说明:

  • <|--:继承
  • *--:组合
  • o--:聚合
  • -->:关联
  • ..>:依赖
  • ..|>:实现

4.5 实体关系图(ER Diagram)

ER图用于数据库设计,展示实体和它们之间的关系。

erDiagram
    CUSTOMER ||--o{ ORDER : places
    ORDER ||--|{ LINE-ITEM : contains
    PRODUCT ||--o{ LINE-ITEM : "is in"
    CUSTOMER {
        string name
        string email
        int age
    }
    ORDER {
        int id
        date created_at
        string status
    }

关系符号说明:

  • ||:恰好一个
  • o|:零或一个
  • }|:一个或多个
  • }o:零或多个

4.6 甘特图(Gantt Chart)

甘特图用于项目管理,展示任务的时间安排。

gantt
    title 项目开发计划
    dateFormat YYYY-MM-DD

    section 需求阶段
    需求调研           :a1, 2024-01-01, 7d
    需求评审           :a2, after a1, 3d

    section 开发阶段
    前端开发           :b1, after a2, 14d
    后端开发           :b2, after a2, 14d

    section 测试阶段
    集成测试           :c1, after b1, 7d
    用户验收           :c2, after c1, 5d

4.7 饼图(Pie Chart)

饼图用于展示数据的比例分布。

pie title 浏览器市场份额
    "Chrome" : 65.8
    "Safari" : 18.7
    "Firefox" : 3.4
    "Edge" : 4.2
    "其他" : 7.9

五、pretty-mermaid-skills:让AI自动美化你的图表

学会了Mermaid语法和beautiful-mermaid的使用方法后,你可能会想:每次画图都要手动配置主题参数,还是有点麻烦啊。有没有更省事的方式?

答案是肯定的。接下来莫潇羽要介绍的pretty-mermaid-skills项目,就是为了解决这个问题而生的。

5.1 什么是AI Skill

在正式介绍pretty-mermaid-skills之前,我们需要先理解一个概念:AI Skill(AI技能)。

随着AI辅助编程工具的普及,越来越多的开发者开始使用Claude、ChatGPT、Cursor等AI助手来提高工作效率。这些AI助手虽然能力强大,但它们毕竟是通用模型,对于一些特定领域的任务,可能不知道最佳实践是什么。

AI Skill就是一种给AI助手"赋能"的机制。它本质上是一份结构化的说明文档,告诉AI在遇到特定类型的任务时应该怎么做、使用什么工具、遵循什么规范。

打个比方,如果把AI助手比作一个聪明但没有专业培训的新人,那AI Skill就是针对特定工作的培训手册。

5.2 pretty-mermaid-skills项目介绍

pretty-mermaid-skills是一个专门用于美化Mermaid图表的AI Skill项目,它把beautiful-mermaid的美化能力封装成了AI可以理解和使用的格式。

项目地址:https://github.com/imxv/pretty-mermaid-skills

这个项目的核心思路非常巧妙:与其让开发者自己去学习beautiful-mermaid的各种配置参数,不如让AI来帮忙。只要给AI配置好这套Skill,以后每次需要画图时,只需要用自然语言描述需求,AI就会自动生成带有美化样式的Mermaid代码。

5.3 安装与配置

pretty-mermaid-skills提供了便捷的一键安装方式。

5.3.1 安装到Claude

如果你使用的是Claude(无论是claude.ai网页版还是Claude Code命令行工具),可以通过以下命令安装:

npx skills add https://github.com/imxv/pretty-mermaid-skills --skill pretty-mermaid

这个命令会自动下载Skill文件并配置到你的Claude环境中。

5.3.2 安装到Cursor

Cursor是一款非常流行的AI编程助手,它同样支持Skill机制。安装方法类似:

npx skills add https://github.com/imxv/pretty-mermaid-skills --skill pretty-mermaid

5.3.3 手动安装

如果自动安装不成功,你也可以选择手动安装:

首先,从GitHub下载Skill文件包。

然后,找到你的AI助手的Skill配置目录:

  • Claude: ~/.claude/skills/
  • Cursor: 打开设置,找到Skills相关配置

最后,将Skill文件放入对应目录,重启AI助手即可。

5.4 使用方法

配置好Skill之后,使用起来就非常简单了。你只需要用自然语言向AI描述你想要的图表,它就会自动调用beautiful-mermaid的能力,生成美化后的代码。

示例对话1:

你:帮我画一个用户登录的流程图,包括验证码验证和密码验证两个分支

AI会自动生成类似这样的响应:

import { renderMermaid, themes } from 'beautiful-mermaid';

const diagram = `
flowchart TD
    A[用户访问登录页] --> B[输入账号]
    B --> C{选择验证方式}
    C -->|验证码| D[发送验证码]
    D --> E[输入验证码]
    E --> F{验证码正确?}
    F -->|是| G[登录成功]
    F -->|否| H[提示错误] --> D
    C -->|密码| I[输入密码]
    I --> J{码错误] --> L{超过3次?}
    L -->|是| M[账号锁定]
    L -->|否| I
`;

const svg = await renderMermaid(diagram, {
  bg: '#1e1e2e',
  fg: '#cdd6f4',
  accent: '#89b4fa'
});

示例对话2:

你:帮我画一个微服务架构的时序图,展示订单创建的完整流程

AI会

🔒
该内容仅对更高等级用户组开放,请升级您的账户等级以查看完整内容
部分文章时效属性较强,请谨慎解锁发布日期比较早的文章
开通年卡时,可用此前单篇解锁订单抵扣,最高立减50元
您当前:游客 · 可见 60% 内容 · 升级至 注册用户 可见 70%
👀
游客
可见 60%
✓ 当前
注册用户
注册用户
可见 70%
社区精英
社区精英
可见 100%
仅解锁本文,永久有效。如需PDF珍藏版,请联系站长获取。 当前单篇价格 ¥8
✏️ 发表评论

请先登录后发表评论

前往登录
📊 站点统计
今日发布1 篇
文章总数1296 篇
昨日发布3 篇
本月发布7 篇
建站时间410 天
🔍 搜索
📅 日历
« 2026 » « 09 »
 123456
78910111213
14151617181920
21222324252627
282930    
站长微语

联系站长

微信:165255185
AIGC 技术社区
致力于解码 AI前沿技术 与经验分享
纯粹的技术交流社区

💡 欢迎您的建议与反馈,让社区变得更好

快速通道
联系站长
站长微信二维码
AI交流群
AI交流群二维码
仍在路上

那些寒夜里追赶过的方向

那些冷眼下没放弃的理想

一篇一篇写到现在

仍在路上

"不羁放纵爱自由"

—— 致敬 Beyond
持续创作中 莫潇羽 · 源码七号站