先说一个让人抓狂的场景
你有没有试过让 AI Agent 帮你画一张系统架构图?
大概是这样的:
❝
你:"帮我画一张电商系统的架构图" AI:"好的!我来打开 draw.io……" AI:截图→分析坐标→点击→截图→分析坐标→点击…… 五分钟后…… AI:"我点错了,重来"
❞
这就像你雇了一个设计师,结果他不用鼠标,全靠蒙眼睛猜坐标点击。
图1:传统 GUI 自动化流程,本质是在玩「蒙眼打靶」
今天介绍的 cli-anything-drawio,就是要把这个「蒙眼打靶」变成「指哪打哪」。
它到底是什么?
cli-anything-drawio 是 CLI-Anything 框架生成的一个命令行工具, 把 draw.io 的所有 GUI 操作——加图形、连箭头、改样式、导出图片—— 全部映射成了标准的 CLI 命令,输出结构化 JSON。
AI Agent 调完一条命令,立刻拿到反馈,下一条命令接着来, 就像流水线一样,不需要"截图→等待→分析→猜坐标"这套慢动作。
图2:CLI 模式下 Agent 的实际工作流,每步都有精确反馈
安装,一行搞定
pip install cli-anything-drawio
不需要克隆代码,不需要配置环境。装完就有 cli-anything-drawio 命令。
❝
「注意」:画图、改图不需要 draw.io 桌面版。 但如果你要导出成 PNG/PDF/SVG,需要装一下: macOS:
brew install --cask drawioLinux:snap install drawio❞
实战:让 AI 画一张电商购物流程图
我们用一个真实场景贯穿整个演示:
❝
「场景」:你是一个产品经理,需要向开发团队解释电商平台的购物流程。 以前你要自己打开 draw.io,一个一个拖图形、连箭头, 半小时能画完就算手速快的。 现在,告诉 AI 一句话,它帮你搞定。
❞
第一步:新建画布
cli-anything-drawio --json project new --width 700 --height 2000 -o 购物流程.drawio
返回:
{
"action": "new_project",
"page_size": "700x2000",
"saved_to": "购物流程.drawio"
}
画布创建好了。这里有个设计很妙:--json 参数让所有输出都是结构化 JSON, AI Agent 不用解析"人话",直接读字段就行,省去大量 token。
第二步:加图形
draw.io 里那些图形——矩形、椭圆、菱形、圆柱——在这里都有对应的名字:
# 开始节点(椭圆)
cli-anything-drawio --json --project 购物流程.drawio \
shape add ellipse --label "开始" --x 275 --y 40 --width 150 --height 55
返回的 id 是关键,后面连线要用它:
{"id": "v_1773456936157036", "shape_type": "ellipse", "label": "开始"}
继续加其他节点(用户登录、浏览商品、加购物车……),每个都会返回一个唯一 ID。
「支持的图形类型一览:」
| 命令名 | 对应图形 | 典型用途 |
|---|---|---|
rectangle | 矩形 | 普通步骤 |
ellipse | 椭圆 | 开始/结束 |
diamond | 菱形 | 判断/分支 |
cylinder | 圆柱 | 数据库 |
rounded | 圆角矩形 | 用户操作 |
actor | 小人 | 用户角色 |
第三步:连线
# 把"开始"连到"用户登录",用直角路由风格
cli-anything-drawio --project 购物流程.drawio \
connect add v_1773456936157036 v_1773456936238240 --style orthogonal
# 支付判断节点,分两条路
cli-anything-drawio --project 购物流程.drawio \
connect add 支付节点ID 成功节点ID --label "成功"
cli-anything-drawio --project 购物流程.drawio \
connect add 支付节点ID 失败节点ID --label "失败"
连线样式有四种,记住这两个就够用了:
orthogonal:直角折线,正式场合首选,流程图标配curved:弧线,画"失败重试"这种回头箭头不会乱穿
第四步:导出 PNG
cli-anything-drawio --project 购物流程.drawio \
export render 购物流程.png -f png --crop --scale 2 --overwrite
--crop 把空白边距裁掉,--scale 2 出 2 倍清晰度, 丢进 PPT 或者发给开发同学,效果一点不比手画差。
等等,这里有个问题
你可能会想:"AI 去哪里知道节点的 x/y 坐标该怎么放?"
这是坐标管理问题,也是 CLI 方式相比直接生成 XML 的一个真实挑战。 好消息是,这个问题对 AI Agent 来说很容易解决:
图3:AI Agent 画图的标准节奏,坐标按顺序递增,简单又可靠
垂直流程图最简单:x 固定,y 从 40 开始每步加 120。 AI 完全可以自己算,不需要人介入。
进阶:样式定制
图画好了,但全是灰色方块不够好看? shape style 命令可以改颜色:
# 把开始/结束节点改成绿色
cli-anything-drawio --project 购物流程.drawio \
shape style v_开始ID fillColor "#d4edda"
# 把支付判断菱形改成橙色,突出重要性
cli-anything-drawio --project 购物流程.drawio \
shape style v_支付判断ID fillColor "#fff3cd"
# 加粗边框
cli-anything-drawio --project 购物流程.drawio \
shape style v_某个ID strokeWidth "2"
常用样式属性速查:
| 属性 | 含义 | 示例值 |
|---|---|---|
fillColor | 填充色 | #dae8fc(蓝)#d4edda(绿)#fff3cd(黄) |
strokeColor | 边框色 | #333333 |
fontSize | 字体大小 | 14 |
fontStyle | 字体样式 | 1=粗体 2=斜体 |
shadow | 阴影 | 1=开启 |
撤销?有的
画错了不用从头来:
cli-anything-drawio --project 购物流程.drawio session undo
最多支持 50 步撤销,底层是 XML 快照栈。 在 REPL 交互模式下直接输入 undo 也行。
它能画哪些图?
只要是 draw.io 支持的图形结构,理论上都能用 CLI 搭出来:
图4:CLI 能覆盖的图形类型,基本涵盖了技术团队的日常需求
唯一的限制是:「坐标要自己管,没有自动布局」。 对于 AI Agent 来说不是问题,对于手撸的人来说, 复杂图形还是在 GUI 里拖拽更省心。
回到那个产品经理的场景
用了 cli-anything-drawio 之后:
❝
你:"帮我画一张电商购物流程图" AI:新建画布 → 添加 18 个节点 → 连接 17 条箭头 → 导出 PNG 「30 秒后」 AI:"图已生成:购物流程.png"
❞
全程没有截图,没有坐标猜测,没有"点错了重来"。 每一步操作都有 JSON 反馈,AI 知道自己做了什么, 出了问题也能精确定位并修复。
这才是 AI 操作软件应该有的方式——「不是模拟人点鼠标,而是直接调用能力」。
总结:三句话记住它
- 「装它」:
pip install cli-anything-drawio,一行搞定 - 「用它」:
project new→shape add→shape list→connect add→export render - 「给 Agent 用」:加
--json拿结构化返回,坐标按顺序算,导出 PNG 交差
流程图不再是产品经理的噩梦,也不再是 AI Agent 的「蒙眼打靶」。