每次让AI画一张架构图,拿回来的东西都差不多。一段Mermaid代码块,粘进Mermaid编辑器里,要么根本渲染不出来,要么渲染成一张箭头互相穿插、标签叠着标签、外面还套个黄框的图。
这不是随便说说。同一个提示词——"设计一个URL短链服务:API、缓存、数据库、点击分析"——问了五次,每次都在结尾加上"画成Mermaid图",然后用真正的Mermaid库渲染每一个回答。五次里有两次连解析都过不了。两次都是模型把 {shortCode} 写进了连线标签里,而Mermaid会把左花括号读成菱形节点的开始。剩下三次渲染成功的,全都长成同一副样子:箭头穿过彼此,标签压在标签上,"Redirect Traf"和"Create Traffic"撞在一起。
![]()
模型被要求同时干两件事
这其实不能全怪模型。它被要求同时做两份工作:搞清楚系统长什么样,以及把这张图排布到页面上。第一件事它做得还行,第二件事它做得很差,而Mermaid根本不给你事后修正的余地——你没法抓起一个方框挪个位置,只能改文本然后祈祷。
于是流程永远卡在同一个地方:先让AI理清系统结构,再打开Excalidraw,用手拖一个小时的方框。而拖方框这件事,本来正是想让AI干的。
想要的东西其实就三条:
- AI只决定系统里有什么,永远不决定东西放在哪。坐标、颜色、字体都不该由模型给。
- 真正的布局引擎负责摆放,真正的路由算法负责让箭头绕开方框,而不是穿过去。
- 结果落在一块能编辑的画布上,不是PNG,也不是代码块。
这就是OpenDiagram的出发点。同一个模型,同一句话,出来的图里核心链路和分析链路各自成组,Postgres、Redis、Kafka用的是真图标,箭头绕着东西走。而且每一个形状都是普通的Excalidraw元素,缓存的位置看不顺眼,直接拖走就行。
模型只输出一份很小的规格说明
关键在于模型永远不输出Mermaid,也永远不输出像素。它输出的是一份带类型的规格说明,每个组件一条,长这样:
{"label": "URL Cache", "sublabel": "Redis", "category": "cache"}
没有x,没有y,没有颜色,没有字体。接下来交给确定性代码:ELK负责摆放节点和分组;一套自定义路由负责画每一条边、把每个标签贴到最终的方框旁边,所以标签不会堆在一起;最后主题渲染器把它变成Excalidraw元素,有手绘风格的主题,也有更干净、适合放进文档的经典主题。
模型决定"有什么",框架决定"长什么样"。这个分工就是全部的诀窍,也是为什么每次输出的质量都稳定,而不是看模型当天心情。
从评测里直接拿出来的几个提示词
下面这些是评测套件的原始输出,没有手工修改。
云架构:一个无服务器图片处理流水线,S3上传、Lambda缩放、SQS、DynamoDB元数据、CloudFront分发。用的是真实的AWS图标,按阶段分组。
时序图:一个Web应用用GitHub做OAuth2授权码登录。消息带编号,回复用虚线,反向通道换取令牌的部分用opt片段包起来,正常路径标成绿色。
ER图:一个电商店的实体关系图,用户、商品、订单、订单项、支付、评价。列有类型,主键外键有标记,用的是鸦爪记号。
偷懒的提示词:只写"画一个类似Uber的打车平台"。它故意保持在高层次,顺便把叫车流程和支付流程各自画成独立的图,放在同一块画布上。
然后试着把它逼疯
一段话,大约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的密钥,用自己的账单。
- 访客模式。不用账号就能试。
- 开源(AGPL-3.0),可自托管。整套栈都在GitHub上。
免费beta:请来把它弄坏
它已经上线在opendiagram.ink,beta期间免费。
我想要那些奇怪的提示词。你公司真实的系统。40个服务的怪物。在一个混乱的monorepo上按"画我的仓库"。一个时序图……
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.