架构图刚画好,服务名称、部署关系又变了,下一次讨论只能先解释“这张图有点旧”。drawio-skill 将文字、代码和基础设施配置转成可编辑的 .drawio 文件,并用一份中间模型维护节点与关系。它适合需要反复更新系统图、又想保留手工布局和注释的团队;核心脚本使用 Python,项目代码采用 MIT 许可。

从什么材料开始,决定图里能说明什么
写一段业务说明,可以得到流程和角色关系;导入仓库或基础设施文件,则能从已有结构提取模型。两种方式可以配合使用,但不能把代码中看见的依赖直接当作完整业务架构。
- 用自然语言描述:明确系统边界、参与者、节点和连接含义,适合讨论尚未落地的方案。需要把假设与已实现部分分开。
- 从代码导入:当前工具提供多种语言的导入关系分析,以及 Python 类图等入口。导入关系能帮助理解代码组织,未必包含运行时调用和实际部署关系。
- 从基础设施导入:Terraform、Kubernetes、Docker Compose 等配置适合解释资源和部署;配置文件与真实运行状态仍可能不同。
- 从接口或数据定义导入:SQL DDL、OpenAPI 等材料可用于数据与接口关系图。文件没有描述的行为,还需要补充业务说明。
例如讨论一个 Terraform 管理的系统,可以先导入基础设施,再补充负责人、外部服务和关键数据流,避免让代理只凭项目名字猜架构。这是基于导入能力的使用思路,具体关系仍要由项目维护者确认。
同一份模型,分别管理含义与外观
Diagram IR 保存节点、关系和来源
Diagram IR 是图表的中间表示。节点代表什么、边表示什么关系、信息来自哪里,可以与几何位置分开记录。这样修改资源关系时,不必把每个节点的坐标也重新解释一遍。导入时留下 IR 文件,后续生成视图、查询和规则检查便可以复用。
布局负责可读性,视图负责讨论范围
同一套系统信息,可以生成面向整体沟通的视图,也可以集中展示部署、数据流或安全边界。视图的区别在于选择和组织哪些信息;换一个视图名,并不会自动补齐模型中缺失的真实关系。
布局也有不同依赖。核心 Python 流程可以离线处理模型与 XML,Graphviz 可用于部分自动布局;Mermaid 转为原生图形、ELK 布局和渲染导出等能力需要相应组件,当前 README 对有关 draw.io CLI 能力列出 30+ 的版本条件。先用 doctor 看本机具备哪些能力,再选择流程。

把“初次生成”和“以后更新”连起来
以下命令在仓库根目录运行,./infra 是假设的 Terraform 目录。第一步检查环境,第二步生成图并保留模型;示例路径应替换成自己项目的目录:
python3 skills/drawio-skill/scripts/diagramctl.py doctor
python3 skills/drawio-skill/scripts/diagramctl.py build ./infra --from terraform --group --ir-output architecture.ir.json -o architecture.drawio
- 打开生成的图,核对节点与连线是否对应真实系统,补充业务名称、负责人或必要注释。
- 调整分组和位置,让读者能看清讨论中的路径;保留可编辑图和相应模型。
- 基础设施改变以后,在原图上同步,输出新文件,便于和旧图比较。
python3 skills/drawio-skill/scripts/diagramctl.py sync architecture.drawio ./infra --from terraform -o architecture.next.drawio
sync 的设计目标是更新模型,同时保留手工位置、样式和注释;默认对删除项保留可审查信息。实际合并后仍要看新增、删除和身份匹配是否符合预期,特别是重命名或手工大幅修改过的节点。先输出到新文件,确认后再替换原图。
生成了 .drawio XML,不等于已经验证了最终显示效果。连线遮挡、文字溢出与导出尺寸属于呈现问题,要在所选渲染环境中判断。模型检查和渲染检查解决的是两类问题。
规则检查与故障推演,都以模型为依据
仓库提供查询、规则测试和 what-if 推演等入口。查询可以追踪路径与归属,规则测试可以检查模型有没有违反团队写出的约束。例如要求某类服务不直接连接某个数据节点,需要先把节点分类和规则写清楚,再运行检查。
python3 skills/drawio-skill/scripts/diagramctl.py test architecture.drawio --rules policy.yml
这里的 policy.yml 是需要自行准备的规则文件。测试通过说明模型满足这些规则,不能推导为部署环境一定没有越权连接。what-if 中移除一个节点后得到的传播结果,也只是模型推演,不是对生产环境做过故障演练。
对外讲解时,可以导出常规图片,也可以使用项目的离线 HTML 演示方式,按章节展示关系。需要继续协作就保留 .drawio 与模型;只发一张 PNG,别人能看,却很难继续维护。项目的 MIT 许可覆盖代码,图里引用的品牌标识、素材和业务资料另按其使用条件处理。
- 项目与能力说明:
https://github.com/Agents365-ai/drawio-skill - 统一命令与使用方式:
https://github.com/Agents365-ai/drawio-skill/blob/main/docs/USAGE_CN.md - MIT 许可:
https://github.com/Agents365-ai/drawio-skill/blob/main/LICENSE














暂无评论内容