开发者对图表的需求和其他人不太一样。一个活在幻灯片里的图表,从创建那一刻就死了。一个活在仓库里、在 README 中渲染、在 PR 中清晰 diff、从源码自动生成的图表——那才是值得维护的图表。
真正服务好开发者的工具通常有几个共性:纯文本格式适配 git、CLI 或 CI/CD 集成、以及足够的图表深度覆盖工程师实际需要文档化的架构和流程。下面是面向开发者的工具对比。
什么让一个图表工具「对开发者友好」
在对比之前,先明确几个对开发者比对普通用户更重要的标准:
代码优先工作流。 图表的源是文本——Markdown、DSL 或结构化格式——你在编辑器里编辑,而不是在画布上点击。这意味着你可以复制粘贴、查找替换、复用模式,不需要鼠标。
版本控制。 源文件在 git 中 diff 清晰。你可以像审查代码一样在 PR 中审查图表变更,合并冲突可以解决。
CI/CD 集成。 你可以把图表源文件作为构建流水线的一部分生成图片或 SVG,这样文档自动和代码库保持同步。
编辑器集成。 工具在你日常写代码的地方就能用——VS Code、JetBrains、Neovim——不需要切到浏览器标签页。
按团队成熟度来选工具栈
“开发者最佳图表工具”听起来像要选一个冠军,但开发团队通常真正需要的是一套组合。
个人项目或早期创业团队,可以从 Mermaid 加 CodePic 或 Excalidraw 开始。Mermaid 负责 README 和 ADR 里的小图,CodePic 或 Excalidraw 负责早期架构讨论和草图。这样既有可版本化的文本格式,也有一块能承载混乱思考的画布。
工程团队变大后,可以加入 draw.io,用来画需要云厂商图标、网络形状或正式交付感的技术图。小图继续放在 Mermaid 里,但不要把所有图都强行塞进语法;当视觉摆放本身很重要时,可视化编辑器更省时间。
到平台团队或企业团队阶段,Structurizr 的 C4 视图和 PlantUML 的正式 UML 会更有价值。这个阶段的重点不只是画图,而是治理:谁维护、怎么审查、图表放进哪条文档流水线。最好的工具栈,是发布会结束后团队还愿意继续更新的那套。
1. Mermaid
类型: 文本转图表(JavaScript) GitHub/GitLab 支持: 原生 Markdown 渲染 图表类型: 流程图、时序图、ER 图、甘特图、类图、状态图、饼图、git 图、思维导图、时间线
Mermaid 是想要在 Markdown 中嵌入图表的开发者的默认选择。GitHub、GitLab、Notion 和 Obsidian 都原生渲染 Mermaid——在 README 里写一个 ````mermaid` 代码块,它就变成了图。不需要渲染步骤、不需要导出图片、不需要外部服务。
语法接近 JavaScript,常见图表类型相当直观。流程图写作 A[开始] --> B{判断} --> C[结束]。时序图写作 Alice->>Bob: 你好。即使不渲染也能大致读懂。
局限性:Mermaid 的布局引擎在复杂图表上可能产生别扭的结果,特别是节点较多时。图表类型覆盖不错但不全面——没有网络拓扑、没有部署图、没有 C4 模型支持。对于基础到中级的开发者文档,它非常出色。对于布局要求严格的正式架构文档,可能会让人抓狂。
最适合: README 图表、架构决策记录(ADR)、任何需要在 GitHub 或 GitLab Markdown 中直接渲染的图。
2. PlantUML
类型: 文本转图表(Java) GitHub/GitLab 支持: 通过插件或构建步骤 图表类型: 全部 14 种 UML 类型,外加线框图、思维导图、甘特图、JSON/YAML 数据可视化
PlantUML 是文本制图的重型工具。它覆盖每一种 UML 图类型——类图、时序图、组件图、部署图、用例图、活动图、状态图、时序图等——以及非 UML 类型如线框图、思维导图和甘特图。如果有一种正式的图表标记法,PlantUML 大概率支持。
语法比 Mermaid 更冗长但表达力更强。你可以精细控制颜色、样式、布局和构造型。渲染通常通过服务端完成(plantuml.com 的公共服务或自托管实例),或者本地用 Java 和 Graphviz。
摩擦在于搭建。PlantUML 需要渲染器——要么本地安装 Java,要么 Docker 容器,要么服务器端点。VS Code 和 JetBrains 插件会自动处理,但 CI/CD 集成需要显式的渲染步骤。对于技术栈里已经有 Java 的团队,这不是问题。对于纯 Node.js 或 Python 团队,多了一个依赖。
最适合: 需要全面 UML 覆盖、文本化、可版本控制的团队,尤其是在 Java/企业级环境中。
3. D2
类型: 文本转图表(Go) GitHub/GitLab 支持: 通过图片导出 图表类型: 流程图、时序图、ER 图、类图、网格图、网络图等
D2 是最新的主流文本转图表工具,它解决了 Mermaid 和 PlantUML 最大的痛点:自动布局。D2 的布局引擎(由自己的约束算法驱动)产生的图表在视觉效果上持续优于 Mermaid 或 PlantUML,且几乎不需要手动调整位置。
语法干净、Go 风格——即使不看文档也能读懂。D2 的时序图看起来像声明式配置而非代码,这让非技术团队成员也更容易上手。
D2 较新,生态较小。编辑器插件较少、CI/CD 集成较少、没有原生 GitHub Markdown 渲染。你通过 D2 CLI 渲染为 SVG 或 PNG,然后把输出图片提交到仓库。图表类型覆盖比 PlantUML 窄,但覆盖了最常见的开发者需求。
最适合: 想要文本工具中最好自动布局、且能接受较新生态的团队。
4. draw.io
类型: 可视化编辑 + 文本导出 GitHub/GitLab 支持: 通过 VS Code 扩展或文件导出 图表类型: 全面——UML、网络、BPMN、ER 图、云架构等
draw.io(域名也是 diagrams.net)不是代码优先的,但它在这份列表里有位置,原因有两个。第一,它的文件格式是可编辑的 XML——你可以在 git 中 diff .drawio 文件(虽然不够干净)而 VS Code 扩展让你无需离开编辑器就能编辑。第二,图形库深度在技术文档方面无出其右——AWS、GCP、Azure、Kubernetes、Cisco 网络图标,以及深度的 UML 覆盖,没有任何文本工具能在视觉精度上匹敌。
很多开发团队用 draw.io 做需要精确图标放置的正式架构图,用 Mermaid 做 README 和 ADR 中的快速内联图。这种组合覆盖了大多数文档需求。
最适合: 需要图标精准的正式云架构图和技术文档,尤其是配合 Mermaid 做内联文档时。
5. CodePic
类型: 可视化编辑 + AI(MCP) GitHub/GitLab 支持: 通过 MCP 集成 Claude/Cursor 图表类型: 流程图、时序图、ER 图、组织架构图、思维导图、线框图、泳道图、系统架构图
CodePic 和上面文本工具的路径不同。它是一个手绘风格的无限画布白板,但面向开发者的特性是 MCP(模型上下文协议)集成。如果你已经在用 Claude 或 Cursor,你可以用自然语言描述图表——"画一张 OAuth 2.0 授权码流程的时序图"——它就把可编辑的图形放到画布上。
这不是 Mermaid 意义上的"代码即图表",但对一些团队来说这是一种更自然的开发者工作流:思考系统、用文字描述、在视觉结果上迭代而非在语法上迭代。图表导出为 PNG 和 SVG。
代价是源不是文本——没有 .mmd 或 .puml 文件可以版本控制。如果图表即代码且存在 git 中是硬性要求,还是用 Mermaid 或 PlantUML。如果从自然语言快速迭代更有价值,CodePic 填补了文本工具无法解决的空白。
最适合: 已经在用 Claude 或 Cursor 的开发者,想要 AI 辅助制图但不想学图表语法,特别是在早期架构草图阶段。
6. Structurizr DSL
类型: 架构即代码(Java/DSL) GitHub/GitLab 支持: 原生(文本格式) 图表类型: C4 模型(上下文、容器、组件、代码)
Structurizr 专为 C4 模型打造——Simon Brown 创建的软件架构图分层方法。你用基于 Java 的 DSL 描述系统:用户、软件系统、容器、组件及其关系。Structurizr 自动渲染图表,并保持同一模型的多个视图一致。
这是对开发者来说最有原则的架构图方法。单一模型生成多张视图,在一处更改关系就更新了所有图表。DSL 可版本控制,工具支持 CI/CD 集成的自动渲染。
范围刻意收窄——仅限 C4 模型,没有流程图、没有时序图、没有 ER 图。它是做 C4 架构文档最好的工具,但不是通用图表工具。
最适合: 已经采用 C4 模型做架构文档、想要模型驱动、始终一致的图表的团队。
7. Graphviz
类型: 文本转图表(C) GitHub/GitLab 支持: 通过构建步骤 图表类型: 有向和无向图、网络图、依赖图
Graphviz 是这份列表中最老的工具,但在自动布局大型图方面仍然是最好的之一。你用 DOT 语言描述节点和边,Graphviz 用经过验证的算法(分层、力导向、径向、环形)计算布局。
它不是用来手绘精美图表的。它适用于那些节点超过 50 个、边有几百条、手动布局不现实的情况。依赖图、网络拓扑、调用图和有很多转换的状态机是 Graphviz 最擅长的。
输出为 SVG 或 PNG。通过 CLI 集成到构建步骤。编辑器插件存在但基础。Graphviz 是 Unix 哲学的工具:它把一件事(图布局)做到极致,期待你把输出管道接入文档流水线。
最适合: 手动布局不可行的大型自动生成图——依赖图、调用图、复杂状态机。
快速对比
| 工具 | 代码优先 | Git Diff | 图表深度 | 最适合 |
|---|---|---|---|---|
| Mermaid | ✓ | ✓(清晰) | 好 | README、ADR、内联文档 |
| PlantUML | ✓ | ✓(清晰) | 优秀(UML) | Git 中的完整 UML |
| D2 | ✓ | ✓(清晰) | 好 | 最佳自动布局 |
| draw.io | 部分(XML) | 勉强 | 优秀 | 云架构图 |
| CodePic | AI 驱动 | 否(可视化) | 好 | AI 辅助草图 |
| Structurizr | ✓(DSL) | ✓(清晰) | 窄(C4) | C4 模型文档 |
| Graphviz | ✓(DOT) | ✓(清晰) | 窄(图) | 大型自动布局图 |
怎么选
开发者图表工具分三类,大多数团队至少每类用一款:
仓库文本图表(Mermaid、PlantUML、D2): 需要和代码共存、在 README 中渲染、经受 PR 审查的图。从 Mermaid 开始——支持最广。如果需要 UML 深度升级到 PlantUML,如果布局质量成为瓶颈试试 D2。
精确视觉图表(draw.io): 正式架构文档、云基础设施图、任何需要图标精准度的图。导出 SVG 并和 .drawio 源文件一起提交到仓库。
AI 辅助和快速草图(CodePic、Excalidraw): 早期架构思考、变成文档的白板讨论、在 AI 工作流中用自然语言生成的图。
实话说:会被更新的工具,比完美但不会被更新的工具好得多。选择融入现有工作流的工具——编辑器、CI/CD、代码审查——而不是要求你建立新工作流的工具。


