Install
openclaw skills install @linlannet/drawio-skillsDrawIO图表技能。功能:(1)生成.drawio架构图、流程图、ER图、UML/时序图、网络拓扑、ML模型图等 (2)从已有.drawio文件确定性提取个人绘制风格生成style preset (3)按"linlan"个人风格(黑描边#000000+浅色填充+Tahoma+直角矩形)生成图表 (4)导出PNG/SVG/PDF。当用户需要画架构图、技术架构图、流程图、拓扑图、ER图时使用此技能。
openclaw skills install @linlannet/drawio-skills技能版本:v1.0 训练日期:2026-08-26 依赖:Python 3.8+(脚本零第三方依赖);导出图片可选 draw.io 桌面版 CLI 参考:https://github.com/Agents365-ai/drawio-skill(MIT License)
本技能基于开源工程 Agents365-ai/drawio-skill 微调,核心能力:
.drawio 源文件确定性提取配色/形状/字体/排版习惯,固化为 styles/linlan.json,生成时一键套用extract_style.py 可对新源文件重新学习风格(含压缩格式解码).drawio 可经 draw.io 桌面版 CLI 导出 PNG/SVG/PDF/JPG从 15 张老板源图(架构图 + 流程图两类)提取并人工复核的个人绘制风格:
| 维度 | 特征 |
|---|---|
| 描边 | 黑色 #000000 主导(全量 814 次,远超任何彩色描边) |
| 填充 | 留白/透明为主(903 次);浅色填充 #F5F5F5、#FFFAFA、#FFFFFF |
| 分组描边色 | 红 #EA6B66、绿 #00994D、蓝 #6666FF、深红 #660000(用于架构图分组/分层) |
| 字体 | Tahoma(架构图,个人笔触)/ Helvetica(流程图,drawio 默认),约各半 |
| 字号 | 12 为主,10 次之,14 用于标题 |
| 圆角 | 直角矩形为主(圆角仅约 9%) |
| 形状 | AWS 图标 + 自定义 stencil + 流程图标准件(start_2 / process / direct_data / multi-document) |
| 页面 | 1169×827(A4 横向),grid=1,gridSize=10 |
| 笔宽 | 默认 1(图标内部的 strokeWidth=2 是导入图标自带,非手绘) |
Tahoma、字号 10-12、黑描边 + 红绿蓝分组色、填充多留白、AWS 图标 + stencilHelvetica、字号 14、流程图标准形状、浅色填充 + 彩色描边styles/linlan.json — 个人风格预设(浅色语义填充 + 黑描边签名 + Tahoma + 直角 + 笔宽1)styles/schema.json — preset 结构定义(7 色槽 + 角色映射 + 形状词表 + 字体 + 边 + extras)为什么 preset 用浅色填充而非留白:preset schema 要求
fillColor为#RRGGBB(无法表达"透明")。故将老板的"黑描边+留白"签名近似为"黑描边+浅色语义填充",既保留黑描边辨识度,又保留语义颜色可读性。真正的"透明填充+分组彩描边"用法见下方「分组描边色」约定,需按需手写 XML。
preset schema 无法表达"多组彩色描边",这部分按需手写。老板架构图的分层习惯:
| 分组 | 描边色 | 填充 |
|---|---|---|
| 默认/主体 | #000000 | 无/白 |
| 红色分组 | #EA6B66 | 无 |
| 绿色分组 | #00994D | 无 |
| 蓝色分组 | #6666FF | 无 |
| 深红/告警 | #660000 | 无 |
# 从目录批量提取(生成 styles/linlan.json)
python scripts/extract_style.py <源文件目录> --name linlan
# 指定输出路径
python scripts/extract_style.py <目录或单文件> --name my-style --out styles/my-style.json
算法(参照参考工程 XML 提取路径,本地化微调):
(fillColor, strokeColor) 对 → 取 top 7 填 7 色槽cylinder3 > ellipse > rhombus > swimlane > rounded=1 > rounded=0dashed+灰底=external,再标签词表(已补中文词表:队列/网关/认证/错误/数据库 等)dashedFor注意:确定性算法对"每个角色固定 fill+stroke 对"的预设模型有效,但老板的"黑描边+留白"风格会令角色→色槽映射失真(如把 diff 图的
#C925D1误判为数据库色)。故最终 preset 以人工复核为准,脚本用于快速得到数据底稿 + 后续新文件再学习。
# 逐文件打印填充色/描边色/字体/字号/形状 TOP5 + 全局汇总,并落盘 style_report.json
python scripts/analyze_style.py <源文件目录>
preset 是命名 JSON,palette 含 7 个语义色槽:
| 色槽 | 语义角色 | 老板配色(fill / stroke) |
|---|---|---|
| primary | service 服务 | #DAE8FC / #000000 |
| success | database 数据库 | #D5E8D4 / #000000 |
| warning | queue 队列 | #FFF2CC / #000000 |
| accent | gateway 网关 | #FFE6CC / #000000 |
| danger | error 错误 | #F8CECC / #000000 |
| neutral | external 外部 | #F5F5F5 / #000000 |
| secondary | security 安全 | #E1D5E7 / #000000 |
生成时:角色 → roles[role] 得色槽 → palette[slot] 得 (fillColor, strokeColor);形状用 shapes[role] 前缀;字体统一 font.fontFamily + font.fontSize;边用 edges.style + edges.arrow。
styles/linlan.json(黑描边 + 浅色填充 + Tahoma + 直角 + 笔宽1)当用户说"参考 X.drawio 生成 Y 架构图"时,按此流程:
分析参考图:跑 ref_analyze.py 产出「参考报告」(风格 + 结构双模板)
python scripts/ref_analyze.py <参考图.drawio> -o ref_report.md
报告含:配色/字体/形状、页面尺寸、分组泳道层级、节点类型分布、边方向、布局模式(纵向分层/横向分层/网格)
读报告:理解参考图的风格 + 结构骨架(分层、节点类型、边组织方式)
生成新图:按新需求手写 XML,复用参考图的:配色/字体/形状(风格一致)、分组泳道骨架(层级命名按新需求替换)、布局模式(纵向/横向分层,节点数按需增减)、边样式(正交箭头,层间单向流)
自检 + 导出:结构 lint + 视觉自检,draw.io CLI 导出
风格默认套 linlan.json:单图重提取 palette 会失真("黑描边+留白"风格使角色→色槽映射不稳),故
ref_analyze.py默认用人工复核的linlan.json作为风格;--style <preset>指定其他预设,--self才从参考图单图重提取。
drawio-skills/
├── SKILL.md # 技能说明(本文件)
├── README.md # 用户文档
├── scripts/
│ ├── extract_style.py # 风格提取(确定性,生成 preset)
│ ├── analyze_style.py # 逐文件风格统计(复核)
│ └── ref_analyze.py # 参考图分析(风格+结构,供 AI 参考生成新图)
├── styles/
│ ├── schema.json # preset 结构定义
│ └── linlan.json # 个人风格预设
└── style_report.json # 风格分析报告(analyze_style.py 落盘)
linlan preset,并文档化"黑描边+分组彩描边"签名;(4) 新增 ref_analyze.py 参考图结构分析(页面/分组泳道/节点类型/边方向/布局模式)| 问题 | 原因 | 状态 |
|---|---|---|
| 角色→色槽映射在"黑描边+留白"风格下失真 | 预设模型假设每角色固定 fill+stroke 对 | 人工复核为准 |
| "透明填充"无法进 preset | schema 要求 fillColor 为 #RRGGBB | 近似为浅色填充,真透明按需手写 XML |
| 自定义 stencil 形状无法保留 | 非标准 shape= 关键词 | 颜色/标签/边仍可捕获,图标丢失 |
| 布局分析对图标密集架构图有限 | 坐标聚类无法识别用图标背景表达的"层" | 节点类型/边/泳道仍可靠,布局作参考 |
| 导出需 draw.io 桌面版 CLI | 浏览器自动化不可靠 | 可选依赖,未装则只产出 .drawio |