16c - 系统设计文档 AI 生成
本文是《AI Agent 实战手册》第 16 章第 3 节。 上一节:16b-AI辅助UI-UX设计 | 本章完
概述
系统设计文档的核心是图——组件图、序列图、数据流图、状态机图、ER 图、C4 架构图。传统方式下,画一张准确的架构图需要在 Visio 或 draw.io 中拖拽半天,改一个组件名就要手动调整所有关联箭头。2025-2026 年,“图即代码”(Diagram-as-Code)工具与 AI 的结合彻底改变了这个局面:用自然语言描述系统,AI 生成 Mermaid 或 PlantUML 代码,渲染出专业级架构图,修改只需改几行文本,版本管理与代码同步。
本节深入覆盖 Mermaid 全图表类型、PlantUML UML 建模、C4 模型 AI 生成、数据流图、ER 图、状态机图的 AI 辅助工作流,以及从自然语言到图表的完整提示词模板和实战案例。
1. 系统设计图 AI 生成工具全景
1.1 图即代码(Diagram-as-Code)工具
| 工具 | 用途 | 价格 | 适用场景 |
|---|---|---|---|
| Mermaid | Markdown 内嵌图表(流程图、序列图、C4、ER、状态机、甘特图等) | 免费(开源) | Markdown 文档内嵌图表、GitHub/GitLab 原生渲染 |
| Mermaid Chart | Mermaid 官方在线编辑器 + AI 辅助 | 免费 / $8/月(Pro)/ $16/月(Business) | 团队协作、AI 辅助图表生成、实时预览 |
| PlantUML | 标准 UML 图(类图、序列图、组件图、部署图、活动图、用例图) | 免费(开源) | 标准 UML 建模、企业级架构文档 |
| D2 | 声明式图表语言,专为软件工程师设计 | 免费(开源) | 现代化架构图、自动布局、主题支持 |
| Structurizr | C4 模型专用工具(DSL 定义架构) | 免费(Lite)/ $5/月(Cloud) | 结构化 C4 架构文档、代码即架构 |
| Eraser.io | AI 生成架构图 + 文档协作 | 免费 / $10/月(Pro)/ $15/月(Business) | AI 驱动的架构图生成、团队协作 |
1.2 AI 辅助图表生成工具
| 工具 | 用途 | 价格 | 适用场景 |
|---|---|---|---|
| Excalidraw + AI | 手绘风格图表 + AI 生成 | 免费(开源)/ $7/月(Excalidraw+) | 白板风格架构图、头脑风暴、非正式沟通 |
| tldraw + AI(Make Real) | 手绘草图 AI 转换为正式图表 | 免费(开源) | 草图转正式图、快速原型、创意探索 |
| Diagramming AI | 多格式 AI 图表生成器 | 免费 / $9/月(Pro) | 多格式图表生成、AI 对话式编辑 |
| Visual Paradigm AI C4 Studio | AI 驱动的 C4 模型生成 | $6/月起(Professional) | 企业级 C4 建模、全套架构视图 |
| ChatUML | GPT-4 驱动的 UML 图生成 | 免费 / $5/月(Pro) | 快速 UML 图生成、PlantUML 输出 |
| DocuWriter.ai | 从代码库自动生成 UML 图和文档 | $9/月起 | 代码库逆向工程、自动文档生成 |
1.3 MCP 集成图表工具
| 工具 | 用途 | 价格 | 适用场景 |
|---|---|---|---|
| mcp-mermaid | AI 编码工具中动态生成 Mermaid 图 | 免费(开源) | Claude Code / Kiro 中直接生成图表 |
| Mermaid Studio MCP | MCP 集成的 Mermaid 图生成和验证 | 免费 / $9/月(Pro) | AI 助手生成有效 Mermaid 语法 |
| Eraser MCP Server | AI 编码工具中生成 Eraser 图表 | 免费(开源) | 在 IDE 中直接生成架构图 |
2. Mermaid 深度指南:全图表类型
Mermaid 是目前与 AI 配合最好的图表工具——GitHub、GitLab、Notion、Obsidian 原生支持渲染,LLM 对 Mermaid 语法的掌握度远高于其他图表语言。以下覆盖 Mermaid 支持的所有主要图表类型及其 AI 生成方法。
2.1 流程图(Flowchart)
最常用的图表类型,适合描述业务流程、系统流程、决策逻辑。
AI 生成提示词:
请用 Mermaid flowchart 语法生成以下流程的流程图:
[描述业务流程]
要求:
- 使用 TD(从上到下)布局
- 决策节点使用菱形 {}
- 关键路径用粗线 ==>
- 错误路径用虚线 -.->
- 节点 ID 使用英文,标签使用中文2.2 序列图(Sequence Diagram)
描述组件间的交互时序,是系统设计文档中最重要的图表之一。
AI 生成提示词:
请用 Mermaid sequenceDiagram 语法生成以下交互的序列图:
[描述交互流程]
要求:
- 使用 actor 表示用户
- 使用 participant 表示系统组件
- 同步调用用 ->> ,异步响应用 -->>
- 包含 alt/else 分支处理成功和失败场景
- 使用 Note 标注关键说明
- 使用 activate/deactivate 表示处理时间2.3 类图(Class Diagram)
描述系统的数据模型和类关系,适合面向对象设计。
2.4 状态机图(State Diagram)
描述有状态实体的状态转换逻辑,适合订单、工作流、连接管理等场景。
AI 生成提示词:
请用 Mermaid stateDiagram-v2 语法生成以下实体的状态机图:
实体:[如:订单/任务/连接]
状态列表:[列出所有可能的状态]
转换规则:[描述状态间的转换条件]
要求:
- 包含初始状态 [*] 和终止状态
- 每个转换标注触发条件
- 标注不可逆转换和可回退转换2.5 ER 图(Entity-Relationship Diagram)
描述数据库实体及其关系,适合数据库设计文档。
2.6 C4 模型图
Mermaid 支持 C4 模型的 Context、Container、Component 三层图表(实验性功能)。
2.7 甘特图(Gantt Chart)
适合项目规划和里程碑展示。
2.8 思维导图(Mindmap)
适合知识结构和概念关系展示。
3. PlantUML 深度指南:UML 建模
PlantUML 是 UML 建模的事实标准工具,语法比 Mermaid 更严谨,支持的 UML 图类型更完整,适合需要标准 UML 规范的企业级架构文档。AI(尤其是 Claude 和 GPT)对 PlantUML 语法的掌握度很高,可以从自然语言直接生成复杂的 UML 图。
3.1 类图(Class Diagram)
PlantUML 的类图支持完整的 UML 类关系表示,包括继承、实现、组合、聚合、依赖。
@startuml
skinparam classAttributeIconSize 0
package "领域模型" {
abstract class BaseEntity {
- id: UUID
- createdAt: DateTime
- updatedAt: DateTime
+ getId(): UUID
}
class User extends BaseEntity {
- email: String
- name: String
- passwordHash: String
- role: UserRole
+ login(credentials: Credentials): Token
+ updateProfile(data: ProfileData): User
+ hasPermission(action: String): Boolean
}
enum UserRole {
ADMIN
USER
GUEST
}
class Order extends BaseEntity {
- userId: UUID
- status: OrderStatus
- totalAmount: Decimal
+ addItem(product: Product, qty: Int): OrderItem
+ cancel(): void
+ complete(): void
+ calculateTotal(): Decimal
}
enum OrderStatus {
DRAFT
PENDING
PAID
SHIPPING
COMPLETED
CANCELLED
}
class OrderItem {
- orderId: UUID
- productId: UUID
- quantity: Int
- unitPrice: Decimal
+ subtotal(): Decimal
}
class Product extends BaseEntity {
- name: String
- price: Decimal
- stock: Int
- category: String
+ isAvailable(): Boolean
+ reduceStock(qty: Int): void
}
}
User "1" --> "*" Order : places
Order "1" *-- "*" OrderItem : contains
OrderItem "*" --> "1" Product : references
User --> UserRole
Order --> OrderStatus
@enduml3.2 序列图(Sequence Diagram)
PlantUML 序列图支持更丰富的交互模式,包括分组、循环、并行等。
@startuml
title 订单创建流程
actor "用户" as User
participant "前端" as FE
participant "API Gateway" as GW
participant "订单服务" as OrderSvc
participant "库存服务" as StockSvc
participant "支付服务" as PaySvc
database "数据库" as DB
queue "消息队列" as MQ
User -> FE: 提交订单
activate FE
FE -> GW: POST /api/orders
activate GW
GW -> OrderSvc: createOrder(items)
activate OrderSvc
group 库存检查
OrderSvc -> StockSvc: checkStock(items)
activate StockSvc
StockSvc -> DB: SELECT stock FROM products
DB --> StockSvc: 库存数据
alt 库存充足
StockSvc --> OrderSvc: OK
else 库存不足
StockSvc --> OrderSvc: InsufficientStock
OrderSvc --> GW: 400 库存不足
GW --> FE: 错误提示
FE --> User: 显示库存不足
end
deactivate StockSvc
end
OrderSvc -> DB: INSERT order
DB --> OrderSvc: order_id
OrderSvc -> StockSvc: reserveStock(items)
activate StockSvc
StockSvc -> DB: UPDATE stock SET reserved
StockSvc --> OrderSvc: reserved
deactivate StockSvc
OrderSvc -> MQ: publish(OrderCreated)
OrderSvc --> GW: 201 Created
deactivate OrderSvc
GW --> FE: order_id
deactivate GW
FE -> GW: POST /api/payments
GW -> PaySvc: initiatePayment(order_id)
activate PaySvc
PaySvc --> GW: payment_url
GW --> FE: redirect_url
FE --> User: 跳转支付页面
deactivate PaySvc
deactivate FE
@enduml3.3 组件图(Component Diagram)
描述系统的模块组成和依赖关系。
@startuml
skinparam component {
BackgroundColor LightBlue
BorderColor DarkBlue
}
package "前端层" {
[React SPA] as FE
[状态管理 (Zustand)] as State
[API 客户端] as APIClient
}
package "API 层" {
[API Gateway (Nginx)] as GW
[认证中间件] as Auth
[限流中间件] as RateLimit
}
package "服务层" {
[用户服务] as UserSvc
[订单服务] as OrderSvc
[商品服务] as ProductSvc
[通知服务] as NotifySvc
}
package "数据层" {
database "PostgreSQL" as PG
database "Redis" as Redis
queue "RabbitMQ" as MQ
storage "S3" as S3
}
FE --> State
FE --> APIClient
APIClient --> GW
GW --> Auth
GW --> RateLimit
Auth --> UserSvc
GW --> UserSvc
GW --> OrderSvc
GW --> ProductSvc
UserSvc --> PG
UserSvc --> Redis
OrderSvc --> PG
OrderSvc --> MQ
ProductSvc --> PG
ProductSvc --> S3
NotifySvc --> MQ
@enduml3.4 部署图(Deployment Diagram)
描述系统的物理部署拓扑。
@startuml
node "CDN (CloudFront)" as CDN {
artifact "静态资源" as Static
}
node "负载均衡器 (ALB)" as LB
cloud "Kubernetes 集群" {
node "Pod: API Gateway" as GWPod {
artifact "Nginx" as Nginx
}
node "Pod: 应用服务 x3" as AppPod {
artifact "Node.js App" as App
}
node "Pod: Worker x2" as WorkerPod {
artifact "Background Worker" as Worker
}
}
database "RDS (PostgreSQL)" as RDS {
artifact "主库" as Primary
artifact "只读副本" as Replica
}
node "ElastiCache (Redis)" as Cache
queue "SQS" as Queue
CDN --> LB
LB --> GWPod
GWPod --> AppPod
AppPod --> RDS
AppPod --> Cache
AppPod --> Queue
WorkerPod --> Queue
WorkerPod --> RDS
@enduml3.5 活动图(Activity Diagram)
描述业务流程和工作流,支持并行、分支、合并。
@startuml
title 用户注册流程
start
:用户填写注册表单;
if (邮箱格式有效?) then (是)
:检查邮箱是否已注册;
if (邮箱已存在?) then (是)
:提示邮箱已注册;
stop
else (否)
endif
else (否)
:提示邮箱格式错误;
stop
endif
:密码强度检查;
if (密码强度足够?) then (是)
fork
:创建用户记录;
fork again
:发送验证邮件;
fork again
:初始化用户配置;
end fork
:返回注册成功;
:跳转到邮箱验证页面;
else (否)
:提示密码强度不足;
stop
endif
stop
@enduml3.6 用例图(Use Case Diagram)
描述系统的功能边界和用户角色。
@startuml
left to right direction
actor "顾客" as Customer
actor "管理员" as Admin
actor "支付网关" as Payment
rectangle "电商系统" {
usecase "浏览商品" as UC1
usecase "搜索商品" as UC2
usecase "下单购买" as UC3
usecase "在线支付" as UC4
usecase "查看订单" as UC5
usecase "管理商品" as UC6
usecase "处理退款" as UC7
usecase "查看报表" as UC8
}
Customer --> UC1
Customer --> UC2
Customer --> UC3
Customer --> UC5
UC3 --> UC4 : <<include>>
UC4 --> Payment
Admin --> UC6
Admin --> UC7
Admin --> UC8
@enduml3.7 PlantUML 渲染方式
| 方式 | 说明 | 适用场景 |
|---|---|---|
| PlantUML Server(在线) | 访问 www.plantuml.com/plantuml 粘贴代码渲染 | 快速预览 |
| VS Code 插件 | 安装 PlantUML 插件,实时预览 | 日常开发 |
| CLI 工具 | java -jar plantuml.jar diagram.puml | CI/CD 集成 |
| GitHub Action | 自动渲染 PlantUML 为 SVG/PNG | 文档自动化 |
| Kroki.io | 统一 API 渲染多种图表格式 | 多格式支持 |
4. C4 模型 AI 生成深度指南
C4 模型(Context、Container、Component、Code)是 Simon Brown 提出的软件架构可视化方法,通过四层抽象帮助不同受众理解系统架构。AI 可以从自然语言描述自动生成 C4 全套图表。
4.1 C4 四层模型概览
| 层级 | 英文 | 受众 | 内容 | 推荐工具 |
|---|---|---|---|---|
| 第 1 层 | Context | 所有人(含非技术) | 系统与外部用户/系统的关系 | Mermaid C4 / Structurizr |
| 第 2 层 | Container | 技术团队 | 系统内部的容器(服务、数据库、消息队列) | Mermaid C4 / Structurizr |
| 第 3 层 | Component | 开发团队 | 单个容器内部的组件和模块 | Structurizr / PlantUML |
| 第 4 层 | Code | 开发者个人 | 组件内部的类和接口 | PlantUML 类图 / IDE |
4.2 用 Structurizr DSL + AI 生成 C4 模型
Structurizr DSL 是 C4 模型的”代码即架构”实现,AI 可以从系统描述直接生成 DSL 代码。
workspace "电商系统" "在线购物平台的架构文档" {
model {
customer = person "顾客" "浏览商品、下单、支付的终端用户"
admin = person "管理员" "管理商品、处理订单的后台用户"
ecommerce = softwareSystem "电商系统" "提供在线购物服务" {
webapp = container "Web 应用" "React SPA" "TypeScript, React" "Web Browser"
apiGateway = container "API Gateway" "请求路由和认证" "Nginx"
userService = container "用户服务" "用户注册、登录、权限管理" "Node.js, Express"
orderService = container "订单服务" "订单创建、状态管理" "Node.js, Express"
productService = container "商品服务" "商品 CRUD、库存管理" "Node.js, Express"
database = container "数据库" "存储所有业务数据" "PostgreSQL" "Database"
cache = container "缓存" "热点数据缓存" "Redis" "Database"
messageQueue = container "消息队列" "异步任务处理" "RabbitMQ" "Queue"
}
paymentGateway = softwareSystem "支付网关" "第三方支付处理" "External"
emailService = softwareSystem "邮件服务" "发送通知邮件" "External"
# 关系定义
customer -> webapp "浏览商品、下单"
admin -> webapp "管理后台"
webapp -> apiGateway "API 请求" "HTTPS"
apiGateway -> userService "用户相关请求"
apiGateway -> orderService "订单相关请求"
apiGateway -> productService "商品相关请求"
userService -> database "读写用户数据" "SQL"
orderService -> database "读写订单数据" "SQL"
productService -> database "读写商品数据" "SQL"
orderService -> cache "缓存订单状态" "Redis Protocol"
orderService -> messageQueue "发布订单事件" "AMQP"
orderService -> paymentGateway "发起支付" "HTTPS"
ecommerce -> emailService "发送通知" "SMTP"
}
views {
systemContext ecommerce "Context" {
include *
autoLayout
}
container ecommerce "Containers" {
include *
autoLayout
}
theme default
}
}4.3 AI 生成 C4 模型的提示词模板
模板 1:从零生成 C4 全套图
请为以下系统生成 C4 模型的完整架构文档:
系统名称:[名称]
系统描述:[一句话描述系统功能]
用户角色:
- [角色 1]:[描述]
- [角色 2]:[描述]
核心功能:
- [功能 1]
- [功能 2]
- [功能 3]
外部依赖:
- [外部系统 1]:[用途]
- [外部系统 2]:[用途]
请生成:
1. Structurizr DSL 代码(包含 model 和 views)
2. Mermaid C4Context 图(系统上下文)
3. Mermaid C4Container 图(容器视图)
4. 每个核心容器的 PlantUML 组件图
每个图附带 2-3 句说明,解释图中的关键设计决策。模板 2:从代码库逆向生成 C4 模型
请分析以下代码库结构,逆向生成 C4 模型:
项目结构:
[粘贴目录树]
关键配置文件:
[粘贴 package.json / Cargo.toml / docker-compose.yml]
请生成:
1. 系统上下文图(识别外部依赖和用户角色)
2. 容器图(识别服务、数据库、消息队列等)
3. 核心服务的组件图
4. 关键数据模型的类图
对于每个识别到的架构决策,请说明你的推断依据。4.4 Visual Paradigm AI C4 Studio
Visual Paradigm 在 2025 年推出了 AI C4 Studio,支持从自然语言描述自动生成完整的 C4 模型,包括 Context、Container、Component、Deployment、Dynamic 和 Landscape 六种视图。
操作步骤:
- 输入系统描述(自然语言或结构化文本)
- AI 自动生成 C4 PlantUML 代码
- 实时预览和编辑(侧边栏编辑器)
- 导出为 SVG/PNG/PDF
与通用 AI 聊天机器人相比,专用 C4 工具的优势在于:内置 C4 语法验证、自动布局优化、视图间一致性检查。
5. 数据流图(DFD)AI 生成
数据流图描述数据在系统中的流转路径,是理解系统”数据如何流动”的关键工具。AI 可以从业务描述自动生成多层级的 DFD。
5.1 DFD 层级
| 层级 | 名称 | 内容 | 用途 |
|---|---|---|---|
| Level 0 | 上下文图 | 系统作为单一处理节点,展示外部实体和数据流 | 系统边界定义 |
| Level 1 | 顶层 DFD | 系统分解为主要处理过程 | 核心流程概览 |
| Level 2 | 详细 DFD | 每个处理过程进一步分解 | 详细设计参考 |
5.2 用 Mermaid 生成 DFD
Mermaid 没有原生 DFD 语法,但可以用 flowchart 模拟:
5.3 用 PlantUML 生成 DFD
@startuml
title 数据流图 - Level 1
' 外部实体
actor "用户" as User
actor "支付网关" as Payment
actor "物流系统" as Logistics
' 处理过程
rectangle "1.0\n用户管理" as P1
rectangle "2.0\n商品管理" as P2
rectangle "3.0\n订单处理" as P3
rectangle "4.0\n支付处理" as P4
' 数据存储
database "D1: 用户数据" as D1
database "D2: 商品数据" as D2
database "D3: 订单数据" as D3
' 数据流
User --> P1 : 注册/登录
P1 --> D1 : 存储用户信息
User --> P2 : 浏览商品
D2 --> P2 : 商品列表
User --> P3 : 提交订单
D1 --> P3 : 用户信息
D2 --> P3 : 商品信息
P3 --> D3 : 创建订单
P3 --> P4 : 支付请求
P4 --> Payment : 发起支付
Payment --> P4 : 支付结果
P4 --> D3 : 更新订单状态
P3 --> Logistics : 配送请求
Logistics --> D3 : 配送状态
@enduml5.4 DFD AI 生成提示词模板
请为以下系统生成数据流图(DFD):
系统名称:[名称]
核心业务流程:[描述]
请生成:
1. Level 0 上下文图(Mermaid flowchart):系统作为黑盒,展示外部实体和数据流
2. Level 1 顶层 DFD(Mermaid flowchart):分解为 4-6 个主要处理过程
3. 数据字典:列出每条数据流的名称、内容、格式
要求:
- 外部实体用圆形 (()) 表示
- 处理过程用矩形 [] 表示
- 数据存储用圆柱形 [( )] 表示
- 每条数据流标注数据内容
- 数据流方向必须正确(不能有无源数据流或无目标数据流)6. 状态机图 AI 生成深度指南
状态机图是描述有状态实体行为的最佳工具。AI 可以从业务规则自动生成完整的状态转换图,并帮助发现遗漏的状态和边界情况。
6.1 AI 辅助状态机设计工作流
步骤 1:识别有状态实体
让 AI 分析需求文档,识别需要状态管理的实体:
请分析以下需求文档,识别所有需要状态管理的实体:
[粘贴需求文档]
对于每个实体,请列出:
1. 实体名称
2. 所有可能的状态
3. 状态转换触发条件
4. 是否有并发状态(如订单同时处于"已支付"和"配送中")步骤 2:生成状态机图
请为 [实体名称] 生成完整的状态机图(Mermaid stateDiagram-v2):
状态列表:[列出所有状态]
业务规则:
- [规则 1:如"只有已支付的订单才能发货"]
- [规则 2:如"退款只能在发货后 7 天内申请"]
要求:
- 包含初始状态和所有终止状态
- 标注每个转换的触发条件
- 标注不可逆转换(用注释说明)
- 识别并标注可能的异常状态
- 如果有复合状态,使用 state 嵌套步骤 3:验证状态机完整性
请审查以下状态机图,检查:
[粘贴状态机图代码]
1. 是否有"死胡同"状态(进入后无法离开,也不是终止状态)?
2. 是否有不可达状态(没有任何路径可以到达)?
3. 是否有遗漏的状态转换(业务上应该存在但图中没有)?
4. 是否有冲突的转换(同一状态在同一条件下可以转到多个状态)?
5. 所有终止状态是否都有明确的到达路径?6.2 复合状态示例
7. ER 图 AI 生成深度指南
ER 图是数据库设计的核心文档。AI 可以从业务描述自动生成规范化的 ER 图,并帮助分析范式、索引策略和关系完整性。
7.1 AI 辅助 ER 图设计工作流
步骤 1:从需求提取实体
请分析以下需求文档,提取所有数据实体:
[粘贴需求文档]
对于每个实体,请列出:
1. 实体名称(中英文)
2. 核心属性(名称、类型、约束)
3. 主键和唯一键
4. 与其他实体的关系(1:1 / 1:N / M:N)
5. 是否需要软删除步骤 2:生成 ER 图
请基于以下实体列表生成 Mermaid ER 图:
[粘贴实体列表]
要求:
- 使用 Mermaid erDiagram 语法
- 标注 PK(主键)、FK(外键)、UK(唯一键)
- 关系使用正确的基数表示(||--o{ 等)
- 关系标签使用中文动词
- 包含审计字段(created_at, updated_at)
- M:N 关系使用中间表步骤 3:范式分析
请分析以下 ER 图的范式级别:
[粘贴 ER 图代码]
请检查:
1. 是否满足第一范式(1NF):所有属性是否原子性?
2. 是否满足第二范式(2NF):是否有部分依赖?
3. 是否满足第三范式(3NF):是否有传递依赖?
4. 是否有合理的反范式设计(如冗余字段提升查询性能)?
5. 索引建议:哪些字段需要索引?7.2 完整 ER 图示例
8. 从自然语言到图表:AI 生成工作流
8.1 通用工作流
自然语言描述
↓ AI(Claude / GPT / Gemini)
图表代码(Mermaid / PlantUML / Structurizr DSL)
↓ 渲染引擎
可视化图表(SVG / PNG)
↓ 人工审查
修正后的图表
↓ 嵌入文档
Markdown / Confluence / Notion8.2 AI 编码工具中的图表生成
在 Claude Code 中生成图表
# 使用 mcp-mermaid MCP Server
# 安装
npm install -g @anthropic/mcp-mermaid
# 在 Claude Code 中
> 请分析当前项目的架构,生成 Mermaid 组件图
> 请为 src/services/ 目录下的服务生成序列图,展示用户登录流程
> 请根据 schema.prisma 生成 ER 图在 Kiro 中生成图表
Kiro 的 Spec-Driven 工作流会在生成 design.md 时自动包含架构图。你也可以手动请求:
请为当前项目的 design.md 生成以下补充图表:
1. C4 Container 图
2. 核心 API 的序列图
3. 数据模型的 ER 图
4. 部署架构图
使用 Mermaid 语法,直接嵌入 design.md 中。8.3 批量图表生成提示词
请为以下系统设计文档生成完整的图表集:
[粘贴 design.md 或架构描述]
请生成以下图表(全部使用 Mermaid 语法):
1. **系统上下文图**(C4 Level 1):系统与外部用户/系统的关系
2. **容器图**(C4 Level 2):系统内部的服务、数据库、消息队列
3. **核心流程序列图**:[指定 2-3 个核心流程]
4. **数据模型 ER 图**:所有实体及其关系
5. **状态机图**:[指定有状态实体]
6. **部署架构图**:生产环境的部署拓扑
7. **数据流图**:数据从输入到存储到输出的路径
每个图表附带:
- 2-3 句说明
- 图表中的关键设计决策标注9. 图表与文档集成
9.1 Markdown 内嵌 Mermaid
GitHub、GitLab、Notion、Obsidian 等平台原生支持 Mermaid 渲染:
## 系统架构
```mermaid
graph TD
A[前端] --> B[API Gateway]
B --> C[服务层]
C --> D[(数据库)]
```
上图展示了系统的基本分层架构。前端通过 API Gateway 访问后端服务,
服务层负责业务逻辑处理,数据持久化到数据库。9.2 PlantUML 在文档中的集成
PlantUML 不被 GitHub 原生支持,但有多种集成方案:
| 方案 | 说明 | 适用场景 |
|---|---|---|
| Kroki.io 代理 | 通过 URL 编码渲染 PlantUML | 任何支持图片的平台 |
| GitHub Action | CI 中自动渲染为 SVG 并提交 | GitHub 仓库文档 |
| VS Code 预览 | 本地实时预览 | 开发时使用 |
| Confluence 插件 | Confluence 原生 PlantUML 支持 | 企业文档平台 |
GitHub Action 自动渲染 PlantUML
# .github/workflows/plantuml.yml
name: Render PlantUML
on:
push:
paths:
- 'docs/**/*.puml'
jobs:
render:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Render PlantUML
uses: grassedge/generate-plantuml-action@v1
with:
path: docs
message: "Render PlantUML diagrams"9.3 图表自动更新策略
当代码变更时,架构图可能需要同步更新。推荐以下策略:
| 策略 | 实现方式 | 适用场景 |
|---|---|---|
| 手动更新 | 代码变更后手动让 AI 重新生成图表 | 小团队、变更不频繁 |
| PR 检查 | CI 中检查图表与代码的一致性 | 中型团队 |
| 自动生成 | 从代码/配置自动生成图表(Structurizr / DocuWriter) | 大型团队、频繁变更 |
| AI 审查 | PR 中让 AI 检查架构图是否需要更新 | 所有团队 |
AI 辅助图表更新提示词
以下是当前的架构图和最近的代码变更。请判断架构图是否需要更新:
当前架构图:
[粘贴 Mermaid/PlantUML 代码]
最近的代码变更:
[粘贴 git diff 或变更摘要]
请分析:
1. 变更是否影响了架构图中的组件或关系?
2. 如果需要更新,请输出更新后的图表代码
3. 如果不需要更新,请说明原因10. D2 与 Excalidraw AI:新兴工具
10.1 D2 语言
D2(Declarative Diagramming)是 Terrastruct 开发的现代图表语言,专为软件工程师设计,语法比 Mermaid 更简洁,自动布局更智能。
# D2 架构图示例
direction: right
user: 用户 {
shape: person
}
frontend: 前端 (React) {
shape: rectangle
style.fill: "#e1f5fe"
}
api: API Gateway {
shape: rectangle
style.fill: "#fff3e0"
}
services: 服务层 {
user-svc: 用户服务
order-svc: 订单服务
product-svc: 商品服务
}
db: PostgreSQL {
shape: cylinder
}
cache: Redis {
shape: cylinder
style.fill: "#fce4ec"
}
user -> frontend: HTTPS
frontend -> api: REST API
api -> services.user-svc
api -> services.order-svc
api -> services.product-svc
services.user-svc -> db
services.order-svc -> db
services.order-svc -> cache
services.product-svc -> dbD2 的优势:
- 语法更简洁直观
- 自动布局算法更智能(基于 dagre 和 ELK)
- 支持主题和样式定制
- 支持动画和交互式图表
- 原生支持容器嵌套
10.2 Excalidraw + AI
Excalidraw 是一个开源的手绘风格白板工具,其 AI 功能可以从文字描述生成手绘风格的图表,适合非正式沟通和头脑风暴。
工作流:
- 在 Excalidraw 中输入文字描述
- AI 生成手绘风格的图表(最多 5 个变体)
- 手动调整形状、颜色、连接
- 导出为 SVG/PNG 或嵌入文档
适用场景:
- 架构头脑风暴阶段(非正式、快速迭代)
- 技术分享和演示(手绘风格更亲切)
- 白板协作(团队实时编辑)
10.3 tldraw + Make Real
tldraw 的 Make Real 功能可以将手绘草图转换为正式的图表或 UI 原型。在系统设计场景中,你可以:
- 在 tldraw 白板上手绘架构草图
- 使用 Make Real 将草图转换为结构化图表
- 导出为 SVG 或进一步编辑
这种”草图→正式图”的工作流特别适合从白板讨论快速产出文档级架构图。
实战案例
案例 1:从需求到完整系统设计图表集(项目管理工具)
一个 3 人团队要开发一个项目管理工具(类似简化版 Linear),使用 AI 在 30 分钟内生成完整的系统设计文档图表集。
第一步:输入需求摘要给 AI(2 分钟)
系统:项目管理工具
用户角色:管理员、项目成员、访客
核心功能:工作空间管理、项目管理、任务看板(Todo/In Progress/Done)、
任务分配、评论、通知、报表
技术栈:Next.js + PostgreSQL + Redis
部署:Vercel + Supabase第二步:AI 生成 C4 上下文图(3 分钟)
AI 输出 Mermaid C4Context 图,展示系统与用户、外部服务(邮件、OAuth、文件存储)的关系。人工审查后确认外部依赖列表完整。
第三步:AI 生成容器图(5 分钟)
AI 输出 Mermaid C4Container 图,展示 Next.js 前端、API Routes、Supabase(PostgreSQL + Auth + Storage)、Redis 缓存、Vercel Cron Jobs 的关系。人工补充了 WebSocket 实时通知的容器。
第四步:AI 生成核心序列图(10 分钟)
AI 为三个核心流程生成序列图:
- 用户创建任务并分配
- 任务状态变更触发通知
- 看板拖拽更新任务状态
每个序列图包含成功路径和错误处理分支。
第五步:AI 生成 ER 图(5 分钟)
AI 从需求中提取 6 个实体(User、Workspace、Project、Task、Comment、Notification),生成完整的 Mermaid ER 图,包含所有关系和约束。
第六步:AI 生成状态机图(5 分钟)
AI 为 Task 实体生成状态机图(Todo → In Progress → In Review → Done / Blocked),包含所有转换条件和边界情况。
总结
| 图表 | 工具 | 耗时 | 人工调整 |
|---|---|---|---|
| C4 上下文图 | Mermaid C4Context | 3 分钟 | 补充 1 个外部系统 |
| 容器图 | Mermaid C4Container | 5 分钟 | 补充 WebSocket |
| 序列图 ×3 | Mermaid sequenceDiagram | 10 分钟 | 调整错误处理分支 |
| ER 图 | Mermaid erDiagram | 5 分钟 | 添加索引注释 |
| 状态机图 | Mermaid stateDiagram-v2 | 5 分钟 | 无需调整 |
| 总计 | 约 30 分钟 | 传统方式约 2-3 天 |
案例 2:从代码库逆向生成架构文档
一个遗留项目没有架构文档,新成员入职需要快速理解系统。使用 AI 从代码库逆向生成架构图。
操作流程
1. 将项目目录结构、package.json、docker-compose.yml 提供给 AI
2. AI 分析后生成:
- 系统上下文图(识别出 3 个外部依赖)
- 容器图(识别出 5 个服务 + 2 个数据库 + 1 个消息队列)
- 核心服务的组件图
3. 将 Prisma schema 提供给 AI,生成 ER 图
4. 将核心 API 路由提供给 AI,生成关键流程的序列图
5. 人工审查所有图表,修正 AI 的推断错误
6. 将图表嵌入项目 README 和 docs/ 目录关键发现:AI 在逆向分析中发现了 2 个未文档化的服务间依赖和 1 个循环依赖,帮助团队识别了潜在的架构问题。
案例 3:用 Structurizr DSL 管理活文档
一个中型团队(10 人)使用 Structurizr DSL 管理架构文档,确保图表与代码同步。
工作流
1. 架构师用 AI 生成初始 Structurizr DSL 代码
2. DSL 文件存入 Git 仓库(docs/architecture/workspace.dsl)
3. CI/CD 中自动渲染为 SVG 并部署到内部文档站
4. 每次架构变更时:
a. 开发者修改 DSL 文件
b. AI 审查变更是否与代码一致
c. PR 中自动生成图表预览
d. 架构师审批后合并
5. 每月用 AI 扫描代码库,检查 DSL 是否需要更新这种”代码即架构”的方式确保了架构文档始终是最新的,避免了传统架构图”画完就过时”的问题。
避坑指南
❌ 常见错误
-
AI 生成的图表语法错误不检查就使用
- 问题:AI 有时会生成无效的 Mermaid 或 PlantUML 语法(如错误的箭头方向、未闭合的子图、不支持的关键字),直接粘贴到文档中无法渲染
- 正确做法:生成后先在 Mermaid Live Editor(
mermaid.live)或 PlantUML Server 中验证渲染结果,确认无误后再嵌入文档
-
一张图试图表达所有信息
- 问题:把所有组件、关系、数据流塞进一张图,导致图表过于复杂,反而降低了沟通效率
- 正确做法:遵循 C4 模型的分层原则——不同受众看不同层级的图,每张图聚焦一个抽象层级
-
图表与代码脱节
- 问题:架构图画完后从不更新,3 个月后图表与实际系统完全不一致,成为误导性文档
- 正确做法:使用”图即代码”工具(Mermaid/PlantUML/Structurizr),图表代码与源代码一起版本管理,每次架构变更时同步更新
-
过度依赖 AI 的架构推断
- 问题:AI 从代码逆向生成的架构图可能遗漏隐式依赖(如通过环境变量配置的服务地址)或错误推断组件关系
- 正确做法:AI 生成的图表必须经过了解系统的人审查,特别关注服务间通信、数据流方向和安全边界
-
忽视图表的受众
- 问题:给产品经理看充满技术细节的组件图,给开发者看过于抽象的上下文图
- 正确做法:明确每张图的目标受众,C4 Context 给所有人看,Container 给技术团队看,Component 给开发者看
-
不标注图表的时效性
- 问题:文档中的架构图没有标注创建日期和适用版本,读者不知道图表是否还准确
- 正确做法:每张图表附带”最后更新日期”和”适用版本”标注
✅ 最佳实践
- 用 Mermaid 写在 Markdown 中,与文档一起版本管理——这是 2025-2026 年的主流做法
- 遵循 C4 模型的分层原则,从 Context 到 Code 逐层深入
- 每张图表附带 2-3 句文字说明,解释”为什么这样设计”而非”图中有什么”
- 使用 AI 生成初稿,人工审查修正——AI 擅长快速生成,人擅长判断准确性
- 序列图是最有价值的图表类型——它展示了组件间的实际交互,是调试和理解系统的关键
- 状态机图不要遗漏异常状态——让 AI 帮你检查”死胡同”和”不可达”状态
- ER 图生成后让 AI 做范式分析——发现潜在的数据冗余和一致性问题
- 定期(每月或每个 Sprint)用 AI 扫描代码库,检查架构图是否需要更新
相关资源与延伸阅读
- Mermaid 官方文档 — Mermaid 图表语法完整参考,支持流程图、序列图、C4、ER、状态机、甘特图等 13+ 种图表类型
- PlantUML 官方文档 — PlantUML 语法参考,覆盖所有标准 UML 图类型和扩展图表
- C4 Model 官方网站 — Simon Brown 的 C4 架构建模方法论,从 Context 到 Code 四层架构图的标准方法
- Structurizr DSL — C4 模型的”代码即架构”实现,支持 DSL 定义和多种渲染输出
- D2 语言官方文档 — Terrastruct 开发的现代声明式图表语言,语法简洁、自动布局智能
- Eraser.io AI 图表生成器 — AI 驱动的架构图生成工具,支持从文字、代码、图片生成图表
- Excalidraw — 开源手绘风格白板工具,支持 AI 生成和实时协作
- Mermaid Live Editor — Mermaid 在线编辑器,实时预览和分享图表
- Martin Fowler - Building Custom Tooling with LLMs — Martin Fowler 团队关于用 LLM 生成 PlantUML 图表的实践分享
- Kroki.io — 统一 API 渲染 20+ 种图表格式(Mermaid、PlantUML、D2、Graphviz 等)
参考来源
- Eraser.io - Best AI Diagram Tools in 2025 (2025)
- Martin Fowler - Building Custom Tooling with LLMs (PlantUML Generation) (2025-05)
- Working Software - AI-Assisted Software Architecture: Generating the C4 Model from Code (2025-06)
- Archimetric - Leveraging Visual Paradigm’s AI C4 Studio (2025-06)
- Visual Paradigm - AI-Powered C4 PlantUML Studio (2025-07)
- DocuWriter.ai - The 12 Best Mermaid Diagram Online Tools of 2026 (2026-02)
- Mermaid Chart - AI-Powered Diagram Creation (2025)
- D2 Diagrams Online - Complete Architecture Diagram Guide (2025-06)
- ChatGate.ai - Eraser: Diagram-as-Code AI Co-Pilot (2025-07)
- Geeky Gadgets - How to Use Excalidraw AI for Professional Quality Diagrams (2025-01)
- C4 Model Official Website (2025)
- Structurizr Documentation (2025)
Content was rephrased for compliance with licensing restrictions.
📖 返回 总览与导航 | 上一节:16b-AI辅助UI-UX设计 | 本章完