drawio-skill | 把文字和真实系统变成可维护的 .drawio 图表

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

drawio-skill 文本与真实系统到可维护 drawio 图表封面

从什么材料开始,决定图里能说明什么

写一段业务说明,可以得到流程和角色关系;导入仓库或基础设施文件,则能从已有结构提取模型。两种方式可以配合使用,但不能把代码中看见的依赖直接当作完整业务架构。

  • 用自然语言描述:明确系统边界、参与者、节点和连接含义,适合讨论尚未落地的方案。需要把假设与已实现部分分开。
  • 从代码导入:当前工具提供多种语言的导入关系分析,以及 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 看本机具备哪些能力,再选择流程。

drawio-skill 从检查依赖到最终导出的工作流程图
drawio-skill 官方仓库中的工作流程图:检查依赖、规划图表、生成 .drawio XML、导出草稿 PNG、自检与反馈,再完成最终导出。来源:https://github.com/Agents365-ai/drawio-skill/blob/main/assets/workflow-cn.png

把“初次生成”和“以后更新”连起来

以下命令在仓库根目录运行,./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
  1. 打开生成的图,核对节点与连线是否对应真实系统,补充业务名称、负责人或必要注释。
  2. 调整分组和位置,让读者能看清讨论中的路径;保留可编辑图和相应模型。
  3. 基础设施改变以后,在原图上同步,输出新文件,便于和旧图比较。
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
drawio-skill | 把文字和真实系统变成可维护的 .drawio 图表 - 杂货喵
drawio-skill | 把文字和真实系统变成可维护的 .drawio 图表
此内容为免费资源,请登录后查看
M币0
发布平台GitHub
编码语言Python
运行方式Python 3 + draw.io CLI(可选)
项目版本v3.2.0
项目许可MIT
支持系统Windows、macOS、Linux
免费资源
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容