AI 画图新姿势:用自然语言一键生成架构图、ER 图——draw.io/Mermaid/Excalidraw 智能生成方案深度解析
引言:当"画图"变成"说话"
作为程序员,你一定经历过这样的痛苦时刻:
- 产品经理说:"给我画个系统架构图"
- 你打开 draw.io,拖拽半小时,还要调整连线和样式
- 最后产品经理说:"能不能加个缓存层?"
- 你被迫推倒重来,又是一阵鼠标狂舞
如果画图能像写代码一样简单就好了——说出需求,图就出来了。
好消息是,AI 正在让这个梦想成真。无论是 draw.io、Mermaid 还是 Excalidraw,现在都能通过自然语言一键生成各类图表。本文将带你了解这些"AI 画图"工具的工作原理、使用方法和最佳实践。
一、为什么需要 AI 画图?
1.1 传统画图的痛点
时间成本高
一张复杂的系统架构图,从新建画布到完成渲染:
- 选择元素:10 分钟
- 连接线调整:15 分钟
- 样式美化:10 分钟
- 反复修改:30 分钟+
技能门槛
很多人并非"不会画",而是:
- 不清楚标准图例
- 不知道 UML 规范
- 布局毫无美感
协作困难
团队协作时:
- A 画的图,B 改起来很费劲
- 版本迭代后,图和代码不同步
- 文档更新不及时,图就过时了
1.2 AI 画图的核心理念
代码即图表
Mermaid 是这一理念的先行者:
flowchart TD
A[开始] --> B{判断}
B -->|是| C[执行]
B -->|否| D[结束]
几行文本就能渲染出流程图。但问题在于:你还得学语法。
自然语言更进一步
现在,你只需要说:
"画一个前后端分离架构,前端 React + TypeScript,后端 Node.js + Express,数据库用 PostgreSQL"
AI 就能自动生成对应的架构图,甚至还帮你调好布局。
二、三大主流工具对比
2.1 Mermaid:程序员的老朋友
优势
- 完全开源,支持 Markdown 嵌入
- GitHub、Notion、Obsidian 原生支持
- 语法简单,类 Markdown 风格
AI 增强方案
借助 AI(如 Claude、ChatGPT),你可以:
用户: 帮我生成一个订单系统的时序图,包含:用户下单 -> 库存检查 -> 支付处理 -> 订单创建 -> 通知发送
AI 返回:
sequenceDiagram
participant U as 用户
participant A as API网关
participant I as 库存服务
participant P as 支付服务
participant O as 订单服务
participant N as 通知服务
U->>A: 提交订单
A->>I: 检查库存
I-->>A: 库存充足
A->>P: 发起支付
P-->>A: 支付成功
A->>O: 创建订单
O->>N: 发送通知
N-->>U: 订单确认短信
把这段代码粘贴到 Mermaid Live Editor 或任何支持 Mermaid 的文档中,图表即刻呈现。
2.2 Excalidraw:手绘风格的艺术
独特魅力
Excalidraw 以"手绘风格"闻名,生成的图表看起来就像你在白板上画的草图,特别适合:
- 技术方案讨论
- 架构评审
- 头脑风暴记录
AI 集成原理
Excalidraw 的数据模型非常清晰:
// 每个图形元素的数据结构
{
type: "rectangle",
id: "node-1",
x: 100,
y: 50,
width: 200,
height: 100,
text: "前端服务",
strokeColor: "#1e1e1e",
backgroundColor: "#fff"
}
AI 的作用就是根据自然语言输入,输出一组符合该 schema 的元素列表。
实际使用
Excalidraw 官方已集成 AI 功能:
- 打开 https://excalidraw.com
- 点击 AI 助手图标
- 输入:"画一个微服务架构图,包含网关、4个服务、消息队列、数据库"
- AI 自动生成图表,你可以继续编辑调整
2.3 draw.io:企业级画图神器
强大之处
- 支持 100+ 种图表类型
- 丰富的模板库
- 支持本地部署,数据安全
- 导出格式多样(PNG、SVG、PDF、XML)
AI 生成方案
虽然 draw.io 官方 AI 功能有限,但你可以:
- 用 AI 生成 Mermaid 代码
- 打开 draw.io,选择 Arrange > Insert > Advanced > Mermaid
- 粘贴代码,一键渲染
或者直接借助 MCP(Model Context Protocol)工具,让 AI 直接操作 draw.io。
三、AI 画图技术原理
3.1 从自然语言到图表数据
完整的技术链路如下:
用户输入
│
▼
┌─────────────────┐
│ 自然语言理解 │ 解析意图、提取实体、理解关系
│ (LLM) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 结构化表示 │ 生成节点、边、布局
│ (DSL/JSON) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 渲染引擎 │ Mermaid/Excalidraw/draw.io
│ │
└─────────────────┘
│
▼
图表输出
3.2 Prompt 工程技巧
想要生成高质量的图表,Prompt 的写法很关键:
明确图表类型
❌ 画一个电商系统
✅ 画一个电商系统的微服务架构图,使用 Mermaid flowchart 语法
指定技术栈
❌ 前端和后端
✅ 前端:React + TypeScript,后端:Spring Boot + MySQL
描述节点关系
❌ 他们之间有连接
✅ 用户通过 API 网关访问服务,服务间通过 Kafka 消息队列异步通信
3.3 自动布局算法
AI 生成图表后,还需要合理的布局。常见的布局算法:
| 算法 | 适用场景 | 特点 |
|---|---|---|
| Dagre | 有向无环图 | 层级清晰,适合流程图 |
| ELK | 大型架构图 | 紧凑美观,边缘交叉少 |
| D3-force | 力导向图 | 动态交互,适合网络图 |
| ELK-hierarchical | 层级图 | 从左到右或从上到下 |
Excalidraw 和 draw.io 内部都集成了自动布局引擎。
四、实战:从需求到图表
4.1 案例1:生成 ER 图
需求
设计一个博客系统的数据库 ER 图,包含用户、文章、评论、标签
AI 生成(Mermaid 语法)
erDiagram
USER ||--o{ ARTICLE : writes
USER ||--o{ COMMENT : writes
ARTICLE ||--o{ COMMENT : has
ARTICLE }o--o{ TAG : has
USER {
bigint id PK
string username
string email
string password_hash
datetime created_at
}
ARTICLE {
bigint id PK
bigint user_id FK
string title
text content
enum status
datetime published_at
}
COMMENT {
bigint id PK
bigint user_id FK
bigint article_id FK
text content
datetime created_at
}
TAG {
bigint id PK
string name
}
ARTICLE_TAG {
bigint article_id FK
bigint tag_id FK
}
4.2 案例2:生成时序图
需求
用户登录流程:前端发送请求 -> 网关验证 -> 认证服务核验 -> 返回 Token
AI 生成
sequenceDiagram
actor U as 用户
participant F as 前端
participant G as API网关
participant A as 认证服务
participant D as 数据库
participant R as Redis
U->>F: 输入账号密码
F->>F: 前端校验格式
F->>G: POST /auth/login
G->>G: 限流检查
G->>A: 转发登录请求
A->>D: 查询用户信息
D-->>A: 返回用户数据
A->>A: 验证密码(bcrypt)
A->>R: 缓存Session
A-->>G: 返回JWT Token
G-->>F: 响应Token
F->>F: 存储Token(localStorage)
F-->>U: 跳转首页
4.3 案例3:生成微服务架构图
需求
电商微服务架构:用户服务、商品服务、订单服务、支付服务、通知服务,全部通过网关访问,服务间用 Kafka 通信
AI 生成(Excalidraw JSON)
{
"type": "excalidraw",
"elements": [
{"type": "rectangle", "text": "用户服务", "x": 0, "y": 0},
{"type": "rectangle", "text": "商品服务", "x": 200, "y": 0},
{"type": "rectangle", "text": "订单服务", "x": 400, "y": 0},
{"type": "rectangle", "text": "支付服务", "x": 0, "y": 150},
{"type": "rectangle", "text": "通知服务", "x": 200, "y": 150},
{"type": "rectangle", "text": "API网关", "x": 100, "y": -100},
{"type": "rectangle", "text": "Kafka", "x": 100, "y": 300},
{"type": "arrow", "start": "网关", "end": "用户服务"},
{"type": "arrow", "start": "网关", "end": "商品服务"},
{"type": "arrow", "start": "用户服务", "end": "Kafka"}
]
}
五、顶级工具推荐
5.1 Excalidraw + AI(推荐指数:★★★★★)
- 网址:https://excalidraw.com
- 特点:内置 AI 助手、手绘风格、免费开源
- 最佳场景:技术方案讨论、架构评审、快速原型
5.2 Mermaid Live Editor(推荐指数:★★★★☆)
- 网址:https://mermaid.live
- 特点:实时预览、语法高亮、一键导出
- 最佳场景:Markdown 文档、GitHub 仓库、API 文档
5.3 draw.io(推荐指数:★★★★☆)
- 网址:https://draw.io
- 特点:企业级、模板丰富、支持 Mermaid 导入
- 最佳场景:正式文档、企业架构图、网络拓扑图
5.4 PlantUML(推荐指数:★★★☆☆)
- 特点:UML 专用、Java 生态集成好
- 缺点:需要安装环境、语法较复杂
- 最佳场景:Java 开发、详细设计文档
六、进阶技巧
6.1 让 AI 记住你的画图风格
创建一个 Prompt 模板:
你是一个架构图生成专家。当我描述系统时,请按以下规则生成 Mermaid 代码:
1. 使用 flowchart TB 语法(从上到下)
2. 节点命名用驼峰式英文
3. 数据库用 [(database)] 样式
4. 服务间通信用虚线箭头 -.->
5. HTTP 请求用实线箭头 -->
6. 每个节点添加简要注释
示例输出:
flowchart TB
Client[客户端] --> Gateway[API网关<br/>限流+鉴权]
Gateway -.-> Auth[认证服务]
Gateway --> Service[业务服务]
Service --> DB[(MySQL)]
6.2 图表版本管理
将 Mermaid 代码存入 Git:
/docs
/diagrams
architecture.mmd # 系统架构图
database.mmd # ER图
sequence-login.mmd # 登录时序图
配合 GitHub Actions 自动渲染成 SVG。
6.3 从代码反向生成图表
使用工具自动分析代码结构:
# 分析 Spring Boot 项目生成依赖图
npx @mermaid-js/mermaid-cli -i architecture.mmd -o architecture.svg
七、总结
AI 画图不是要取代设计师,而是让每个开发者都能快速把想法可视化。
核心价值
- 效率提升:从 30 分钟缩短到 30 秒
- 降低门槛:不会画图也能产出专业图表
- 版本管理:文本即图表,便于 Git 管理
- 团队协作:统一风格,快速迭代
最佳实践
- 用 AI 辅助生成,人工精细调整
- 建立团队统一的 Prompt 模板
- 图表源码纳入版本控制
- 定期同步图表与代码
当你下次需要画图时,不妨先让 AI 生成一个初稿,再根据需求调整。你会发现,画图这件事,其实可以很轻松。
参考资源
- Excalidraw 官网:https://excalidraw.com
- Mermaid 文档:https://mermaid.js.org
- draw.io 官网:https://draw.io
- Mermaid Live Editor:https://mermaid.live
本文最后更新于 2026 年 4 月,工具功能可能随版本更新而变化。