每次让AI画架构图,拿回来的东西都差不多:一段Mermaid代码。粘进Mermaid编辑器里,要么根本渲染不出来,要么渲染成一团乱麻。

我用同一个提示词试了五次——"设计一个URL短链服务:API、缓存、数据库、点击分析",末尾照例加上"画成Mermaid图"。五次回答用真正的Mermaid库渲染,两次连解析都过不了。两次都是模型把{shortCode}写进了连线标签里,而Mermaid把{读成了菱形节点的开头。

打开网易新闻 查看精彩图片

剩下三次渲染出来了,但长得都一样:箭头互相穿过,标签叠在标签上,"Redirect Traf"和"Create Traffic"撞在一起,外面还套着一个黄框。

问题不在模型,在分工

这其实怪不到模型头上。它被要求同时干两件事:想清楚系统长什么样,以及把它摆到页面上。第一件事它做得不错,第二件事它做得很差,而Mermaid根本不给你事后补救的余地——你没法抓起一个方框挪个位置,只能改文字然后祈祷。

于是流程永远卡在同一个地方:先让AI想清楚系统,再打开Excalidraw,手动拖一个小时的方框。而这恰恰是我一开始就想让AI代劳的部分。

我想要的东西有三条:

  • AI只决定系统里有什么,永远不决定东西摆在哪。坐标、颜色、字体都不许模型碰。
  • 真正的布局引擎负责摆放,真正的路由算法负责绕开方框画箭头,而不是从方框中间穿过去。
  • 结果落在一块能编辑的画布上,不是PNG,也不是代码块。用Excalidraw,因为我本来就住在里面,而且手绘风格读起来像白板讨论,而不是公司幻灯片。

这就是OpenDiagram的由来。同一个提示词、同一个模型(Gemini 3.8 Flash)、同一句话,出来的图有了核心链路和分析链路的分组,Postgres、Redis、Kafka用的是真图标,箭头绕着东西走。而且每一个形状都是普通的Excalidraw元素——嫌缓存位置不对,拖一下就行。

模型只输出一份小规格

关键在于模型既不输出Mermaid,也不输出像素。它输出的是一份很小的带类型规格,每个组件一条,长这样:

{"label": "URL Cache", "sublabel": "Redis", "category": "cache"}

没有x,没有y,没有颜色,没有字体。接下来交给确定性代码:ELK(Eclipse Layout Kernel)负责摆放节点和分组;一套自研路由负责画每一条边、把每个标签贴在最终方框旁边,所以标签不会堆在一起;最后主题渲染器把它变成Excalidraw元素,有手绘风格的Sketch主题,也有更适合文档的Classic主题。

模型决定"有什么",工具链决定"长什么样"。这个切分就是全部的诀窍,也是为什么每次输出质量都稳定,而不是看模型当天心情。

从评测里直接捞出来的几个例子

下面这些是评测套件的原始输出,没有手工修过。

云架构:一个无服务器图像处理流水线,S3上传、Lambda缩放、SQS、DynamoDB元数据、CloudFront分发。用的是真的AWS图标,按阶段分组。

时序图:一个Web应用用GitHub做OAuth2授权码登录。带编号的消息、虚线回复、后通道令牌交换的opt片段,主路径标绿。

ER图:电商店铺的实体关系,用户、商品、订单、订单项、支付、评价。带类型列、PK/FK标记、鸦爪记号。

还有一个偷懒的提示词:"画一个像Uber那样的网约车平台。"它故意保持在高层次,顺手把叫车流程和支付流程各自画成了同一块画布上的独立图。

一段话塞30个组件会怎样

然后我试着把它搞崩。一整段话,大约30个组件,完全没提示该怎么拆:全球多租户AI电商,自然语言商品搜索、推荐、图片上传、AI购物助手、购物车、订单、支付、物流追踪、通知、闪购、库存预留、风控、卖家后台、实时分析、向量搜索、目录RAG、LLM推理、图像处理、Kafka、Redis、PostgreSQL、Elasticsearch、向量库、对象存储、CDN、WebSocket、worker、多区域。钱要强一致,其余最终一致。API网关、认证授权、限流、可观测性、熔断、重试、幂等、容灾、跨区域故障转移。控制面与数据面、同步与异步、存储、缓存、队列、外部依赖,所有主要流程。

把这一坨塞进一张图,得到的就是本文开头那张Mermaid毛线团。所以agent没有硬塞。它自己规划了四张图:一张总览,然后结账、搜索、履约各一张。

它把钱放在强一致路径上(Redis锁、PostgreSQL账本、幂等支付处理器),把分析留在异步的Kafka一侧,这正是提示词要求的切分。它没有把提示词里的东西全画出来:容灾、跨区域故障转移和熔断不在任何一张图上。不过每张图都还能读,四张图都在同一块画布上可编辑,所以缺的那些可以下一轮再让agent补。

里面还有什么

  • 它是个agent,不是表单。你跟它聊天。"在网关和服务之间加一个Redis缓存"就会更新图。
  • 导入一个GitHub仓库,得到它的架构图。
  • 可以自带OpenAI、Anthropic、Google或OpenRouter的key,用自己的账单。
  • 访客模式。不用账号就能试。
  • 开源(AGPL-3.0),可自托管。整套栈都在GitHub上。

免费beta:请来把它搞崩

它已经上线在opendiagram.ink,beta期间免费。

我想要那些奇怪的提示词。你公司真实的系统。40个服务的怪物。"画我的仓库"按钮点在一个乱七八糟的monorepo上。一个时序图……