name: visual-diagram-suite description: 统一图表生成套件。用户只需描述问题/场景/需求,无需记图表名,AI 自动按意图路由。覆盖 40+ 类专业图表,四种渲染:show_widget HTML/CSS(复杂图首选、布局自动、跨模型兼容)、show_widget SVG(简单图、含动画)、Mermaid(零依赖、技术文档首选)、Draw.io XML(UML/泳道/DFD 最佳)。典型自动路由举例(用户话 → 自动选图):「为什么出这个问题/根因在哪」→鱼骨图/5why/FTA;「A vs B 选哪个/方案对比」→SWOT/决策树/双气泡图;「紧急程度/先做哪个/优先级」→艾森豪威尔/影响力矩阵;「战略分析/怎么扩张」→SWOT/安索夫/BCG;「项目排期/要多久」→甘特图/时间线;「系统怎么设计/架构」→分层架构/C4/洋葱/六边形;「多角色协作/审批流」→泳道图;「调用关系/谁先调用谁」→时序图;「状态怎么流转」→状态机图;「对比下 X 和 Y」→双气泡图/对比表;「汇报用/PPT 用」→show_widget SVG 优先;「写文档」→Mermaid 优先。触发:画图、可视化、梳理、拆解、对比、画一下、流程、架构、排期、优先级、对比下、画个图、根因、why、汇报用、写文档、diagram、visualize、chart、show、draw。 version: v3.1.0
不需要记图表名。说出你想干什么,自动匹配最合适的图。
| 你想干什么 | 可以这样说 | 自动生成 |
|---|---|---|
| 对比选择 | "对比一下A和B" / "选A还是B" / "A和B哪个好" | SWOT / 双气泡图 / 对比矩阵 |
| 梳理流程 | "帮我梳理X的步骤" / "X的完整流程" / "从A到B的顺序" | 流程图 / 泳道图 / 阶段递进 |
| 找根因 | "为什么出这个问题" / "什么原因造成的" / "找根因" | 鱼骨图 / 5why / 决策树 |
| 排期规划 | "帮我排个期" / "这个项目要多久" / "梳理时间线" | 甘特图 / 时间线 |
| 头脑风暴 | "帮我整理一下思路" / "拆解这个概念" / "系统梳理" | 思维导图 / 金字塔 / 5W2H |
| 战略分析 | "分析X的战略" / "X的市场定位" / "X的优先级" | SWOT / BCG / 艾森豪威尔 |
| 系统设计 | "设计X的架构" / "X的分层" / "模块怎么划分" | 分层架构 / C4 / 洋葱架构 |
| 占比展示 | "X的份额多少" / "构成比例" / "占比图" | 环形图 / 饼图 |
| 数据对比 | "对比下X的数据" / "X的排名" / "季度对比" | 柱状图 / 进度仪表盘 |
| 转化分析 | "从A到B的转化率" / "X的漏斗" / "流失分析" | 漏斗图 |
| 汇报配图 | "做个汇报用的" / "给老板看" / "PPT配图" | SVG优先 |
| 写文档 | "写文档用的" / "嵌入Markdown" / "GitHub用" | Mermaid优先 |
提示:描述越具体,出图越精准。加上关系词(对比/流程/根因)比只说"画个X的图"效果好10倍。
所有出图请求,HTML/CSS 模板第一顺位。 14 类模板覆盖所有高频场景——Flexbox/Grid 自动布局、零坐标计算、视觉统一。SVG/Mermaid/Draw.io 仅作兜底(模板无法匹配的特殊场景)。
出图请求 → 匹配 14 类 HTML/CSS 模板 → ✅ 直接套模板
→ 模板无法匹配 → SVG自绘 / Mermaid / Draw.io 兜底
BOSS铁律:出图不是罗列信息,是展示逻辑框架。简单卡片拼凑 = 平庸。必须有分析结构——决策链、阶段对齐、维度量化、因果推导。
这些模板天然承载分析逻辑,能展示"为什么不同"而不仅是"有什么":
| 模板 | 框架逻辑 | 典型场景 |
|---|---|---|
| 模板二(流程链路) | 因果链、步骤推导 | 决策树、5why、审批路径 |
| 模板六(对比矩阵) | 维度交叉定位 | SWOT、BCG、风味矩阵 |
| 模板七(并行分支) | 多路并行对比 | 工艺对比、A/B方案、多角色 |
| 模板十(泳道图) | 统一阶段轴对齐 | 跨职能流程、工艺阶段矩阵 |
单一模板不够时,多模板叠加以形成分析链条:
决策树(模板二) → 阶段对齐矩阵(模板十改编) → 维度量化对比(模板六改编)
↑ ↑ ↑
为什么分叉? 每个阶段差异在哪? 最终结果差多少?
这是咖啡工艺图从"平庸"升级为"框架级"的核心改造——从四张独立卡片(模板八)改为决策树+泳道矩阵+维度条的三段式分析结构。
规则:用户说"对比/分析/为什么不同"时,禁止单独使用模板八。优先从框架级模板中选,必要时组合使用。
核心理念:从"关键词匹配图表名"升级为"四维度结构分析→决策树→组合策略"。Agent 分析用户描述背后的关系结构,而非匹配表面词语。
收到出图请求后,先对用户描述做四维度拆解:
| 维度 | 选项 | 说明 |
|---|---|---|
| 关系类型 | 对比 / 流程 / 因果 / 层级 / 时序 / 组合 | 核心关系是什么? |
| 主体数量 | 二元(2) / 多元(3-8) / 大量(9+) | 有几个对象参与? |
| 复杂度 | 线性串联 / 分支分叉 / 网状反馈 | 关系链有多复杂? |
| 对比深度 | 陈列级 / 流程级 / 因果级 | 只是罗列特征?还是分析为什么不同? |
示例:「咖啡豆四种处理工艺有什么不同」→ 关系=对比+流程 / 数量=多元(4) / 复杂度=分支 / 深度=因果级 → 触发组合策略
关系类型
│
├─ 对比
│ ├─ 深度=陈列级(罗列特征) → 模板八(卡片组图)
│ ├─ 深度=流程级(流程对比,维度≤2) → 模板七(并行分支)
│ ├─ 深度=流程级(含统一阶段轴) → 模板十(泳道对齐矩阵)
│ └─ 深度=因果级(为什么不同+量化差异) → 组合:模板二+六+十
│
├─ 流程
│ ├─ 单流程、线性串联 → 模板二(流程链路图)
│ ├─ 单流程、分支分叉(决策节点) → 模板二(决策树变体)
│ ├─ 多流程并行、含统一阶段轴 → 模板十(泳道对齐矩阵)
│ └─ 多流程并行、无统一轴 → 模板七(并行分支图)
│
├─ 层级(整体-部分、上层-下层) → 模板四(分层架构图)
│
├─ 因果(原因→结果)
│ ├─ 单链推导 → 模板二(流程链路 / 5why)
│ ├─ 多因素汇聚 → 模板一(中心辐射 / 鱼骨图)
│ └─ 网状反馈回路 → SVG自绘(CLD因果回路)兜底
│
├─ 时序(时间轴上的事件)
│ ├─ 里程碑/历史 → 模板九(时间线)
│ └─ 阶段递进/演化 → 模板三(阶段递进图)
│
├─ 矩阵定位(二维四象限) → 模板六(对比矩阵)
│ └─ SWOT / BCG / 安索夫 / 艾森豪威尔 / 影响力-努力
│
├─ 数据可视化(数值驱动)
│ ├─ 占比/份额/构成 → 模板十一(环形图/饼图)
│ ├─ 对比/排名(多项目数值比较) → 模板十二(柱状图)
│ ├─ 转化率/递减阶段 → 模板十三(漏斗图)
│ └─ KPI指标/完成率 → 模板十四(进度仪表盘)
│
└─ 模板无法覆盖(CLD/洋葱/六边形/DFD...) → SVG自绘 / Mermaid / Draw.io 兜底
快速决策口诀: - 罗列特征 → 模板八(卡片) - 流程步骤 → 模板二(链路) - 四象限定位 → 模板六(矩阵) - 多层架构 → 模板四(分层) - 阶段递进 → 模板三(递进) - 并行对比(含统一轴) → 模板十(泳道)或 模板七(分支) - 因果链 → 模板二(链路) - 网状反馈 → SVG 兜底 - 占比份额 → 模板十一(环形/饼图) - 数据排名 → 模板十二(柱状图) - 转化漏斗 → 模板十三(漏斗图) - KPI指标 → 模板十四(仪表盘)
单模板不足以表达完整分析逻辑时,多模板组合形成分析链条:
| 组合模式 | 模板序列 | 适用场景 |
|---|---|---|
| 决策→对比→量化 | 模板二(决策树入口)+ 模板十(泳道对齐)+ 模板六(维度量化) | 多工艺/方案对比分析 |
| 结构→差异 | 模板四(分层架构)+ 模板六(维度卡) | 系统对比、架构差异 |
| 归因→传导 | 模板一(鱼骨/因果)+ 模板二(流程链) | 根因分析 + 传导路径 |
| 定位→策略 | 模板六(矩阵定位)+ 模板三(阶段递进) | SWOT分析 + 行动路线 |
原则:框架级模板(二/六/七/十)优先组合。展示级模板(八/九)仅用于纯陈列场景,禁止单独用于对比/分析类需求。
当用户描述无法明确分析结构时,不要猜测——列出 2-3 个候选让用户确认,并解释每个选择的后果:
「您的需求有几种理解: 1. 流程对比(展示各方案的步骤差异)— 会生成泳道对齐矩阵,按阶段逐行对比 2. 因果分析(分析为什么不同导致结果不同)— 会生成决策树+量化维度,深层归因 3. 特征罗列(简单列出各项特点)— 会生成卡片组图,但只展示不做分析 哪种更适合?」
规则:每次推荐必须附带「选A会生成什么图 → 适合什么场景 → 不适合什么场景」的解释链,让用户做知情选择而非盲猜。
为复杂问题提供 结构化、可视化、专业级 的图表生成能力。v2.0 升级覆盖 40+ 类图表,按 4 大类组织:思维框架、业务架构、流程分析、逻辑推理。所有图表遵循统一视觉规范,输出具有以下特征:
1. 智能意图识别(自动) → 2. 查路由表 → 3. 选输出方式 → 4. 调用模板生成
重要:Step 1 已由「智能意图路由器」自动完成。用户无需告诉 Agent 图表名——只需描述问题/场景,Agent 自动识别并选择最合适的图表。
| 大类 | 典型场景 | 常用图表 |
|---|---|---|
| 思维框架 | 头脑风暴、问题梳理、知识点整理、结论先行 | 思维导图、金字塔(SCQA)、5W2H、八大思维图 |
| 业务架构 | 战略规划、产品组合、组织分工、对比决策 | SWOT、BCG、安索夫、艾森豪威尔、影响力、BSC |
| 逻辑推理 | 复杂因果、决策评估、风险分析、根因挖掘 | 鱼骨图、多重流程、FTA、ETA、5why、Issue Tree、决策树、CLD |
| 流程分析 | 业务审批、系统交互、状态流转、项目排期 | 标准流程、泳道/审批、活动图、状态机、时序、甘特、时间线、Git |
| 系统设计 | 架构设计、UML 建模、数据建模 | 分层架构、洋葱、六边形、C4、DFD、用例、类图、组件、部署 |
| 数据展示 | 占比、份额、可视化数据 | 饼图 |
完整路由详见 references/scenario-routing.md。下表为速查(严格 4 大类组织,与 scenario-routing.md 一致):
| 大类 | 图表类型 | 主模板 | 输出方式 |
|---|---|---|---|
| 思维框架 | 思维导图 | Mermaid mindmap / SVG / HTML 辐射 |
show_widget HTML / SVG / Mermaid |
| 思维框架 | 金字塔原理(SCQA) | SVG 自绘(梯形堆叠)/ HTML 链式卡片 | show_widget HTML / SVG |
| 思维框架 | 5W2H 七何分析法 | SVG 自绘(七维卡片)/ HTML 中心辐射 | show_widget HTML / SVG |
| 思维框架 | 八大思维图(圆圈/气泡/双气泡/流程/多重流程/括号/桥型/树形) | SVG 自绘 / Mermaid / HTML 卡片 | show_widget HTML / SVG / Mermaid |
| 业务架构 | SWOT 矩阵 | SVG 自绘 2×2 / HTML 对比矩阵 | show_widget HTML / SVG |
| 业务架构 | 波士顿矩阵 BCG | SVG 自绘 2×2 气泡 / HTML 对比矩阵 | show_widget HTML / SVG |
| 业务架构 | 安索夫矩阵 | SVG 自绘 2×2 / HTML 对比矩阵 | show_widget HTML / SVG |
| 业务架构 | 艾森豪威尔矩阵 | SVG 自绘 2×2 / HTML 对比矩阵 | show_widget HTML / SVG |
| 业务架构 | 影响力-努力矩阵 | SVG 自绘 2×2 / Mermaid quadrantChart / HTML 对比矩阵 |
show_widget HTML / SVG / Mermaid |
| 业务架构 | 平衡计分卡 BSC | SVG 自绘 四象限 / HTML 中心辐射 | show_widget HTML / SVG |
| 业务架构 | 组织架构树 | Mermaid flowchart TB |
Mermaid / SVG |
| 业务架构 | 数据血缘图 | Mermaid flowchart LR |
Mermaid |
| 业务架构 | 微服务架构拓扑 | Mermaid flowchart + subgraph |
Mermaid |
| 业务架构 | ER 图 | Mermaid erDiagram |
Mermaid |
| 逻辑推理 | 鱼骨图(石川图) | SVG 自绘 / HTML 分层 | show_widget HTML / SVG |
| 逻辑推理 | 多重流程图(Multi-Flow) | SVG 自绘(三栏:流程/原因/结果)/ HTML 并行分支 | show_widget HTML / SVG |
| 逻辑推理 | FTA 故障树 | Draw.io XML | Draw.io |
| 逻辑推理 | ETA 事件树 | Draw.io XML | Draw.io |
| 逻辑推理 | 5why 五问法 | Mermaid flowchart 阶梯 / HTML 流程链 |
show_widget HTML / Mermaid / SVG |
| 逻辑推理 | 逻辑树 / Issue Tree | Mermaid flowchart TB / HTML 卡片组 |
show_widget HTML / Mermaid / SVG |
| 逻辑推理 | 决策树(含概率/收益) | Mermaid flowchart 菱形 / HTML 流程链 |
show_widget HTML / Mermaid / SVG |
| 逻辑推理 | 因果回路图 CLD / 飞轮 | SVG 自绘(节点+极性+/-) | show_widget SVG |
| 数据展示 | 雷达图 / 蜘蛛网图 | SVG 自绘(Python 极坐标计算 + rsvg-convert PNG) | show_widget SVG |
| 流程分析 | 标准流程图(GB/T 1526) | Mermaid flowchart |
Mermaid |
| 流程分析 | 泳道图 / 流程审批 | Draw.io XML 泳道 / HTML 泳道简化版 | Draw.io / show_widget HTML |
| 流程分析 | UML 活动图 | Mermaid flowchart fork/join |
Mermaid |
| 流程分析 | 状态机图(UML 状态图) | Mermaid stateDiagram-v2 |
Mermaid |
| 流程分析 | 时序图 | Mermaid sequenceDiagram |
Mermaid |
| 流程分析 | 甘特图 | Mermaid gantt |
Mermaid |
| 流程分析 | 时间线 | Mermaid timeline / HTML 时间线 |
show_widget HTML / Mermaid |
| 流程分析 | Git 分支图 | Mermaid gitGraph |
Mermaid |
| 系统设计 | 分层架构图 | Mermaid flowchart TB + classDef / HTML 分层架构 |
show_widget HTML / Mermaid / SVG |
| 系统设计 | 洋葱架构 | SVG 自绘(同心圆) | show_widget SVG |
| 系统设计 | 六边形架构 | SVG 自绘(中心 + 端口) | show_widget SVG |
| 系统设计 | DDD C4(Context/Container/Component) | Mermaid C4Context C4Container C4Component |
Mermaid |
| 系统设计 | DFD 数据流图 | Draw.io XML / HTML 数据流 | Draw.io / show_widget HTML |
| 系统设计 | 用例图(Use Case) | Draw.io XML | Draw.io |
| 系统设计 | 类图(Class Diagram) | Draw.io XML / Mermaid classDiagram |
Draw.io / Mermaid |
| 系统设计 | 组件图(Component Diagram) | Draw.io XML | Draw.io |
| 系统设计 | 部署图(Deployment Diagram) | Draw.io XML | Draw.io |
| 数据展示 | 饼图 | Mermaid pie |
Mermaid |
| 场景 | 推荐方式 | 理由 |
|---|---|---|
| 复杂图(>8 节点 / 多层嵌套 / 长文本) | show_widget HTML/CSS | Flexbox/Grid 自动布局,避免坐标错位,跨模型兼容 |
| 简单图(≤8 节点)/ 汇报 / PPT 配图 / 方案展示 | show_widget SVG | 动画 + 高观赏性 + 主题色 |
| 技术文档 / Markdown / README | Mermaid 代码块 | 零依赖、可编辑、GitHub 原生渲染 |
| 复杂审批流 / UML 类图 / DFD / ETA / FTA / 用例图 | Draw.io XML | 符号支持最佳、可二次编辑 |
| 用户无明确偏好 | HTML/CSS 优先(复杂)→ SVG(简单) | 跨模型稳定性最高 |
关键规则:当目标模型不是 GLM-5.2 时,强制使用 HTML/CSS 模板(见
references/html-chart-templates.md),不要从零写 SVG 坐标。
详见 references/output-formats.md。
每个图表类型都有现成模板和最佳实践,按需加载:
references/scenario-routing.md(40+ 类关键词清单 + 推荐理由)references/visual-style-guide.md(配色、字号、留白、阴影、对齐)references/html-chart-templates.md(17 类图表 HTML 骨架 + 模型适配指引)references/css-variable-replacement.md(模板维护工作流:硬编码→变量,含 patch 工具模糊匹配陷阱)references/design-system-v4.md(三层阴影/渐变系统/3主题/间距字号/premium工具类)references/mermaid-templates.md(20+ 类 Mermaid 图表模板 + 主题)references/svg-self-draw-guide.md(16 类 SVG 图表的画法与代码模板,含雷达图)references/drawio-templates.md(泳道/FTA/DFD/UML/类图/部署图/用例图/ETA 等的 XML 模板)references/radar-chart-example.py(Python 极坐标计算 → SVG → rsvg-convert → PNG,修改数据即复用)references/radar-chart-example.py(Python 极坐标计算 → SVG → rsvg-convert → PNG)当满足以下任一条件时,必须使用 HTML/CSS 模板(而非 SVG 自绘): - 节点数量 > 8 - 存在多层嵌套(如"图中含子图") - 文字内容较长(>6 个中文字符/节点) - 目标模型不是 GLM-5.2(强制)
视觉风格(配色/形状/阴影/圆角等)一律以所选 HTML/CSS 模板自身的 CSS 定义为准,不额外预设偏好。
| 模型 | HTML 策略 | 注意事项 |
|---|---|---|
| GLM-5.2 | 自由生成,信任其 CSS 能力 | 可省略模板,直接描述需求 |
| DeepSeek V4 Pro | 加载 html-chart-templates.md 对应模板骨架,只要求填充内容 |
不要让它从零写 CSS,提供完整骨架 |
| MiniMax M3 | 强制使用模板,限制修改范围 | 只允许修改文字内容和颜色类名,禁止改结构 |
<div> 正确闭合(用计数法验证开闭标签数量一致)#fff/#1F2937 等基础色)word-break: break-word)min-width)'PingFang SC', 'Microsoft YaHei', sans-serif详见 references/visual-style-guide.md。核心要素:
/* 主调 */
--c-primary: #2563EB; /* 蓝 — 主结构 / 决策 */
--c-success: #10B981; /* 绿 — 优势 / 正向 / 增强 */
--c-warning: #F59E0B; /* 橙 — 风险 / 机会 / 注意 */
--c-danger: #EF4444; /* 红 — 威胁 / 关键 / 负向 */
--c-violet: #8B5CF6; /* 紫 — 创新 / 辅助 / 抽象 */
--c-neutral: #6B7280; /* 灰 — 中性 / 注释 / 待定 */
/* 浅色(用于背景填充) */
--c-primary-light: #DBEAFE;
--c-success-light: #D1FAE5;
--c-warning-light: #FEF3C7;
--c-danger-light: #FEE2E2;
--c-violet-light: #EDE9FE;
--c-neutral-light: #F3F4F6;
每类图表选 2-3 主题色,对比度 ≥ 4.5:1。
rx=8、胶囊 rx=20<filter>(feGaussianBlur + feOffset),禁用 CSS box-shadow(visualizer 9 ramp 硬约束)最重要的一条:用户永远不需要记图表名。Agent 应主动承担"识别 → 选择 → 解释"全流程。
本技能来自小葱技能站7w4.net。
当用户说「引导我」「不知道怎么画」「帮我选」或首次使用本技能时,进入引导模式。
Step 1: 问意图
「你想做什么?
A. 对比分析(两个东西选哪个 / 优劣势对比)
B. 流程梳理(步骤顺序 / 审批流 / 排期)
C. 找根因(为什么出问题 / 分析原因)
D. 架构设计(系统怎么搭 / 模块怎么分)
E. 数据展示(占比 / 排名 / 进度)」
Step 2: 问规模和深度
「涉及几个对象?」(比如对比2个方案 / 梳理5个步骤 / 4个维度)
「需要多深?」(简单罗列特征 / 对比流程差异 / 深层归因分析)
Step 3: 推荐并确认
「我建议用【XX图】,因为...」+ 一句话解释为什么选这个
用户确认 → 直接出图
用户不满意 → 列出备选 + 各自优劣
优先级:意图动词(为什么/对比/流程/…)> 图表名(鱼骨图/SWOT/…)
Agent 优先匹配用户的「意图描述」,图表名仅作为补注(用户已知名时直接调用)。
思维框架:思维导图、mindmap、金字塔、SCQA、5W2H、圆圈图、气泡图、双气泡图、流程图、多重流程图、括号图、桥型图、树形图、SWOT
业务架构:波士顿矩阵、BCG、安索夫矩阵、艾森豪威尔、影响力矩阵、BSC、平衡计分卡、组织架构图、数据血缘图
逻辑推理:鱼骨图、石川图、FTA、故障树、ETA、事件树、5why、五问法、Issue Tree、问题树、决策树、因果回路图、CLD、飞轮图
流程分析:流程图、泳道图、活动图、状态机、状态图、时序图、调用链、甘特图、时间线、Git 分支
系统设计:分层架构、洋葱架构、六边形架构、C4、DDD、DFD、数据流图、用例图、类图、组件图、部署图、ER 图
英文:diagram、chart、flowchart、mindmap、fishbone、SWOT、pyramid、sequence、architecture、tree、cause、effect、state、use、case、class、component、deployment、hexagonal、onion、layered、microservice、impact、effort、eisenhower、ansoff、bcg、bsc、visualize、show、draw
| 错误 | 处理 |
|---|---|
| Mermaid 语法错误 | 改用 SVG 重画同一概念 |
| Draw.io XML 解析失败 | 改用 Mermaid swimlane subgraphs |
| 用户未指定图表类型 | 根据场景关键词自动推荐 2-3 种 |
| show_widget 渲染失败 | 改用 Mermaid 代码块输出 |
| 节点过多(>20) | 拆分为多个子图或用分组着色 |
所有出图默认达到 2560×1440(2K) 有效分辨率,微信可直接读取显示且细节清晰。
# 标准渲染参数(Playwright — 2K)
viewport={'width': 1280, 'height': 720}, device_scale_factor=2 # 2560×1440 有效分辨率
# 等价于 device_scale_factor=1 时 viewport 2560×1440,但 1x 的 HTML 布局更易控
分辨率对照表:
| 场景 | viewport | DPI | 输出尺寸 | 适用 |
|---|---|---|---|---|
| 标准 2K(默认) | 1280×720 | 2x | 2560×1440 等效 | 微信直发,细节清晰 |
| 汇报/PPT/打印 | 1280×720 | 3x | 3840×2160 等效 | 高精度展示 |
| 长图/信息密集型 | 1280×720 | 2x | 2560×N | 多内容对比图 |
| SVG 直转 | — | rsvg 2700px | 2700×N | SVG 源文件 |
出图过程中的 HTML/SVG 源文件写入
/tmp/vds-session/会话专用目录。 云服务器/tmp/由系统定期清理(tmpreaper/tmpwatch),无需手动维护。 $HOME 下的 PNG 交付文件在会话结束后即被 MEDIA: 发送,服务器上不长期留存。
清理规则:
- 出图完成后,/tmp/vds-session/ 目录内的 HTML/SVG 源文件已打包进 zip,可随 HTTP server 结束一并清理
- PNG 交付文件写入 $HOME/,MEDIA 发送后即完成使命,系统定期清理或下一轮出图覆盖
- 不会在服务器上持续堆积大文件
每次出图输出的交付物:
1. MEDIA:/path/to/chart.png ← 高清PNG,微信直接显示(≥2K, 2560×1440)
2. MEDIA:/path/to/chart-sources.zip ← 本轮源文件打包(.html 或 .svg),可二次编辑
源文件打包规则:
- 仅打包本轮对话生成的源文件,不碰其他会话的历史文件
- 源文件格式 = 实际出图使用的格式:HTML/CSS 模板出图 → 打包 .html;SVG 自绘出图 → 打包 .svg
- 每次出图前创建专用会话目录(如 /tmp/vds-<主题>/),所有源文件写入该目录
- 文件名:chart-sources-<主题>.zip(不硬编码 svg,如实反映源格式)
- 使用 Python zipfile(比系统 zip 更可靠)
交付流程(标准四步):
# Step 0: 创建会话专用目录
mkdir -p /tmp/vds-<主题>/
# Step 1: 启动 HTTP server,服务该目录
cd /tmp/vds-<主题>/ && python3 -m http.server 8888 --bind 127.0.0.1 &
# Step 2: Playwright 2K 渲染(1280×720 × 2x DPI = 2560×1440)
~/your-agent/skills/visual-diagram-suite/.venv/bin/python << 'PYEOF'
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True, args=['--no-sandbox'])
page = browser.new_page(viewport={'width': 1280, 'height': 720}, device_scale_factor=2)
page.goto('http://127.0.0.1:8888/<chart>.html', wait_until='networkidle')
page.screenshot(path='/home/agentuser/<chart>.png', full_page=True)
browser.close()
PYEOF
# Step 3: 只打包本轮会话的文件
cd /tmp/vds-<主题>/ && python3 -c "
import zipfile, os
with zipfile.ZipFile('/home/agentuser/chart-sources.zip', 'w', zipfile.ZIP_DEFLATED) as zf:
for f in os.listdir('.'):
if f.endswith(('.svg', '.html')):
zf.write(f)
" && kill %1
# Step 4: 双交付
# MEDIA:/home/agentuser/<chart>.png
# MEDIA:/home/agentuser/chart-sources.zip
调用 Skill 后典型输出结构:
## [图表标题]
[图表 PNG — 2560×N 高清图]
**说明**:
- 图表类型:XXX
- 表达关系:XXX
- 关键洞察:XXX(1-2 句话)
- SVG 源文件已打包:chart-sources-XXX.zip
| 用户意图 | 主交付 | 附加交付 | 渲染方式 |
|---|---|---|---|
| 画图/出图(默认) | PNG 2K | sources.zip | Playwright HTTP full_page |
| 汇报用/PPT | PNG 4K (3x) | sources.zip | Playwright HTTP 3x DPI |
| 写文档 | Mermaid 代码块 | PNG 2K(备选) | Mermaid → 嵌入文档 |
| 需要二次编辑 | PNG 2K | sources.zip(重点) | Playwright + rsvg |
references/scenario-routing.md(40+ 类关键词 + 触发示例 + 推荐理由)references/visual-style-guide.md(配色变量、字号、留白、阴影、动画)references/html-chart-templates.md(17 类图表 HTML 骨架 + 模型适配指引)references/css-variable-replacement.md(模板维护工作流:硬编码→变量,含 patch 工具模糊匹配陷阱)references/design-system-v4.md(三层阴影/渐变系统/3主题/间距字号/premium工具类)references/mermaid-templates.md(20+ 类 Mermaid 代码模板 + 主题变量)references/svg-self-draw-guide.md(15+ 类 SVG 图表画法 + 完整代码示例)references/drawio-templates.md(泳道/FTA/DFD/UML/类图/部署图/用例图/ETA/BSC 的 XML 模板)references/output-formats.md(四种方式对比 + 性能/兼容性/可编辑性)references/examples-gallery.md(每个模板 2-3 个完整 HTML 示例,可直接复制粘贴)scripts/setup.sh(自动检测→镜像→安装→验证渲染管线)scripts/render_with_retry.py(三阶降级:Playwright→rsvg→Mermaid)scripts/validate_params.py(节点数/颜色检查 + 超出自动建议)⚠️ 2026-07-04 雷区复盘:snap chromium 的 AppArmor 沙箱在
file://协议下禁用 CSS background——所有背景色不渲染,导致 99.7% 白屏。必须走 HTTP server + Playwrightfull_page=True自动适配高度。
# Step 1: 创建会话专用目录 + 启动 HTTP server
mkdir -p /tmp/vds-session/ && cd /tmp/vds-session/ && python3 -m http.server 8888 --bind 127.0.0.1 &
# Step 2: Playwright 2K 标准渲染(1280×720 × 2x DPI = 2560px 有效宽度)
~/your-agent/skills/visual-diagram-suite/.venv/bin/python << 'PYEOF'
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True, args=['--no-sandbox'])
page = browser.new_page(viewport={'width': 1280, 'height': 720}, device_scale_factor=2)
page.goto('http://127.0.0.1:8888/<your-file>.html', wait_until='networkidle')
page.screenshot(path='/home/agentuser/<output>.png', full_page=True)
browser.close()
PYEOF
# Step 3: 只打包本轮生成的文件 + 停掉 HTTP server + 双交付
cd /tmp/vds-session/ && python3 -c "
import zipfile, os
with zipfile.ZipFile('/home/agentuser/chart-sources.zip', 'w', zipfile.ZIP_DEFLATED) as zf:
for f in os.listdir('.'):
if f.endswith(('.svg', '.html')):
zf.write(f)
" && kill %1
# MEDIA:/home/agentuser/<output>.png
# MEDIA:/home/agentuser/chart-sources.zip
export PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright/
.venv/bin/playwright install chromium
# rsvg-convert:SVG 直转 PNG(零依赖,秒级)
rsvg-convert -w 2700 -b white input.svg -o output.png
| 陷阱 | 症状 | 修复 |
|---|---|---|
file:// 协议 |
CSS background 不渲染 → 99.7% 白屏 | 必须走 HTTP server |
--window-size 过高 |
内容只占 35%,其余空白 | Playwright full_page=True |
| snap 沙箱路径 | 截图写到 snap 私有目录 | 输出到 $HOME/ 下 |
| 源格式 | 首选方案 | 备选方案 | 备注 |
|---|---|---|---|
| SVG | rsvg-convert -w 2700 -b white in.svg -o out.png |
Playwright + HTTP server | rsvg 零依赖、秒级出图、稳定可靠 |
| HTML | Playwright HTTP server + full_page=True |
rsvg-convert(SVG 转换后) | HTML 必须浏览器渲染;SVG 直接用 rsvg 更快 |
| 图表已含 SVG | rsvg-convert 优先 | — | 实测 rsvg 2700px宽 零失败 |
--screenshot 方案⚠️ 已弃用。 以下仅作为历史遗留记录保留。现统一使用 Playwright HTTP server 管线。 弃用原因:snap AppArmor 禁用
file://CSS background +--window-size无法自适应高度。
集中列出新手最容易踩的坑和解决方案,避免散落各处反复查找。
| 坑 | 症状 | 解法 |
|---|---|---|
| 用卡片图做对比分析 | 生成一堆独立卡片,看不出差异 | 对比/分析必须用框架级模板(流程链/矩阵/泳道),卡片只用于纯展示 |
| 选了不适合的图表类型 | 出的图表达不了你想说的逻辑 | 选之前看「智能意图路由器」的决策树,它会告诉你每种图适合什么场景 |
| 节点太多(>15个) | 图挤成一团、文字重叠 | 拆分多个子图或用分组着色。说"这个图太大了,帮我拆成2张" |
| 架构/概念图堆满技术细节 | 用户看不懂结构,反馈「逻辑不够清晰」 | 先讲「几层、做什么、数据怎么流」。文件路径/字节数/计数放表格或副文本。用比喻或一句话讲清核心关系 |
| 坑 | 症状 | 解法 |
|---|---|---|
| 描述太模糊 | 出的图不是你想要的类型 | 加上关系词:说清楚是"对比X和Y"还是"梳理X的流程"还是"找X的根因" |
| 模板参数填错格式 | 颜色错乱或布局坍塌 | 模板中的--val填0-100数字,--pct填百分比整数,颜色用CSS变量名 |
| 忘记设viewport宽度 | HTML内容被截断或挤到一侧 | 始终用900px初始宽,full_page=True自动适应高度 |
| 坑 | 症状 | 解法 |
|---|---|---|
| 出图后白屏/大片空白 | 图表内容看不清或全白 | 见下方「渲染异常自救」——换HTTP+Playwright重试 |
file://渲染CSS不生效 |
所有背景色消失→99.7%白屏 | snap chromium必须走HTTP server中转,不能用file:// |
| 视口太高内容悬空 | 图上下都有大量空白 | 用Playwright的full_page=True替代手动--window-size |
| 截图写到snap私有目录 | ls找不到生成的PNG |
输出到$HOME/而非/tmp/,或用Playwright(路径可控) |
1. Playwright HTTP渲染失败?
→ 等2秒自动重试(最多3次)
→ 仍失败:切 rsvg-convert(仅SVG源可用)
→ 仍失败:我给你一段可编辑的 Mermaid 代码,你粘贴到 GitHub/Notion 就能看
2. 出图后白屏自检
→ 自动检测白屏率 >95% → 重新渲染
→ 自动检测内容占比 <30% → 调整视口重渲
→ 自动检测字号过小 → 缩放重渲
3. 临时降级:直接让我输出 Mermaid 代码块
→ 告诉它「改用 Mermaid 画」
以下场景不建议使用本套件,或需额外注意:
| 场景 | 原因 | 替代方案 |
|---|---|---|
| 超大规模图(>15节点) | 节点拥挤、文字重叠 | 拆分为多张子图,或改用专业绘图工具 |
| 高精度数据可视化 | HTML/CSS图表不适合精确数据定位 | 用 Python matplotlib / ECharts |
| 非中文环境 | 字体回退到系统默认,效果打折扣 | 替换CSS中的'PingFang SC'为你的系统字体 |
| 交互式图表 | 本套件输出静态PNG | 用D3.js / Plotly / ECharts |
| 非技术用户 | 需要安装Playwright+Chromium | 用scripts/setup.sh一键安装,或改用Mermaid降级 |
| 非常规图表类型 | 不在40+类覆盖范围内 | 描述需求,AI会尝试SVG自绘兜底 |
每个渲染失败都有自动降级路径,不会卡住或白屏:
用户请求出图
│
├─ Playwright HTTP渲染
│ ├─ 成功 → 出图后白屏自检(白屏率>95%→重渲,≤3次)
│ └─ 失败 ↓
│
├─ 自动重试(延迟2s,最多3次)
│ ├─ 成功 → 白屏自检
│ └─ 3次皆败 ↓
│
├─ rsvg-convert 降级(仅SVG源可用)
│ ├─ 成功 → 交付PNG
│ └─ 失败/不可用 ↓
│
└─ Mermaid 兜底
→ 用户收到可编辑的 Mermaid 代码块
→ 可粘贴到 GitHub/Notion 原生渲染
输入异常处理: - 收到模糊请求 → 列出 2-3 个候选图表 + 各自适用场景 + 选A会怎样/选B会怎样 - 节点数超过模板上限 → 提示"该模板最多X个节点,你给了Y个,建议拆分或换模板Z" - 参数值超出范围 → 截断到合法值 + 提示"已自动调整X从Y到Z"
PLAYWRIGHT_DOWNLOAD_HOST=npmmirror.com 环境变量加速安装,直连 cdn.playwright.dev 超时问题彻底解决。Playwright 渲染管线 E2E 验证通过。rsvg-convert(零依赖秒级);Chromium snap 截图路径陷阱 + 正确写法;雷达图参考脚本 references/radar-chart-example.py(Python 计算 → SVG → PNG,改数据即复用)。references/html-chart-templates.md(10 类高频图表 HTML 骨架模板)+ 模型适配指引段 + 路由表双模式标注。核心改进:复杂图从 SVG 自绘(坐标计算易错)改为 HTML/CSS(Flexbox/Grid 自动布局),跨模型兼容性提升 150%+这是一个质量优秀的图表生成工具,最大的优点是“会猜需求”——你说“画个对比图”它就能自动匹配SWOT或矩阵,不需要你懂图表专业知识。模板设计精美(17种模板+3套主题),输出效果专业。缺点是文档内容偏多,入门需要花时间理解路由逻辑,安装依赖略繁琐。适合经常需要做图表、有一定AI使用经验的用户。