图表工具开发者工具mermaidplantuml代码即图表devops

开发者画图工具怎么选:7 种源码、编辑器与 CI 工作流

对比 Mermaid、PlantUML、D2、draw.io、CodePic、Structurizr 和 Graphviz,检查源码归属、编辑器预览、CI 渲染与 PR 审查。

CodePic Team18 min read

直接结论

Markdown 内的小图可先试 Mermaid,UML 可看 PlantUML,精确摆位可用 draw.io。D2、Structurizr 与 Graphviz 分别解决布局、架构模型和生成式图关系问题。选型必须同时检查源文件、渲染器和发布位置。

核验方法: 对照文末项目文档核对格式与渲染边界。文中的 PR 练习是建议读者执行的选型方法,不代表已经对七款工具做过性能实测。

开发者画图工具首先要让团队能维护和审查图中的决定。Markdown 支持范围内的小图可先试 Mermaid,UML 可用 PlantUML,精确摆位可用 draw.io;Structurizr 适合模型驱动的架构视图,Graphviz 适合自动生成的图关系,D2 提供另一种文本制图工作流,CodePic 则适合可编辑白板草图与 AI 辅助创建。

选型时把三件事分开:源文件是什么、谁负责渲染、读者在哪里看到结果。编辑器里能预览,不代表仓库页面或文档站支持同一份语法。

什么让一个图表工具「对开发者友好」

在对比之前,先明确几个对开发者比对普通用户更重要的标准:

代码优先工作流。 图表的源是文本——Markdown、DSL 或结构化格式——你在编辑器里编辑,而不是在画布上点击。这意味着你可以复制粘贴、查找替换、复用模式,不需要鼠标。

版本控制。 源文件在 git 中 diff 清晰。你可以像审查代码一样在 PR 中审查图表变更,合并冲突可以解决。

CI/CD 集成。 在文档构建中渲染源文件,并随代码修改审查。构建可重生成图片,不会自动让人工架构模型与业务代码保持一致。

编辑器集成。 工具在你日常写代码的地方就能用——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 支持: 通过插件或构建步骤 图表类型: 广泛 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 窄,但覆盖了最常见的开发者需求。

最适合: 想要文本工具中最好自动布局、且能接受较新生态的团队。


用一张系统设计图测试工具栈

把下面的系统设计图当作仓库里的真实资产,在候选工具中重建它;然后在分支里修改一个服务,同时检查源码 diff 和渲染结果。

最适合开发者的工具,应该让这次修改在代码评审中容易理解,同时不牺牲发布后图表的可读性。

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 授权码流程的时序图"——它就把可编辑的图形放到画布上。

CodePic 用画布对象保留结构,PNG 用于阅读,JSON 用于后续编辑;它们不是 Mermaid 或 PlantUML 语法。MCP 辅助需要外部客户端、账号连接与相应模型使用。

代价是源不是文本——没有 .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)勉强优秀云架构图
CodePicAI 驱动否(可视化)好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、代码审查——而不是要求你建立新工作流的工具。


相关阅读

用一次 PR 检查图能不能长期维护

拿一个虚构上传服务试画:客户端申请上传地址,存储接收文件,后台任务生成预览。再把后台任务改成“队列 + 两个消费者”。审查者应能从源文件变化看出架构变化,而不是只看到一堆坐标。

源文件和设计说明放在一起。使用平台原生渲染时,实际打开仓库页面,按 GitHub 文档检查 Mermaid 版本;使用 CI 生成 SVG 时,固定渲染器版本并记录命令。另一位同事应能重新生成图片,节点增加以后标签和连线也仍然清楚。

文本图不会自动和业务代码同步。多数 DSL 描述的是人工维护的模型,从代码提取架构需要额外工具。涉及架构的 PR 应包含文档核对。CodePic JSON 也能存进 Git,但它记录画布元素和位置,审查方式与紧凑 DSL 不同;保留 PNG 给读者,保留 JSON 给后续编辑者。

继续比较:Mermaid 与 draw.io。

来源与核验

本文事实与对比所使用的官方参考资料。

常见问题

Markdown 文档适合什么来源?

Mermaid 适合支持的宿主,核对渲染器版本;PlantUML 与 D2 通常需额外渲染流程。

图表能在 Git 审查吗?

可以。DSL 有文本差异,draw.io XML 与 CodePic JSON 也能保存,但结构差异可能更大。

生成图会自动跟代码同步吗?

不会,图源需维护,或建立明确的代码提取过程。

AI 画布编辑放在哪?

通过账号连接的 MCP 客户端可创建可编辑 CodePic 图,外部模型另有要求,PNG 给读者、JSON 留后续编辑。

相关文章