💻 编程开发 进阶 📦 社区

Fireworks Tech Graph

描述系统即出图的技术图技能 + 统一 CLI:几何安全 SVG、PNG、语义 GIF 与离线 HTML;11 个生成器风格 + 1 个 AI 风格、14 类 UML 图,渲染前 IR 校验 + 出图后结构校验,本站已实测全链路

📄 相关文章

📊 评分明细

📦 打包完整度
2.1 2.1 / 2.5
🎯 实用性
2.1 2.1 / 2.5
📖 文档清晰度
1.7 1.7 / 2
👥 社区影响力
1.3 1.3 / 1.5
🔗 集成度
1.3 1.3 / 1.5

🎯 适用场景

AI设计架构图SVG文档生成自动化

Fireworks Tech Graph 快速入门:把「描述系统」变成可校验的图

这是什么?适合谁?

Fireworks Tech Graph(yizhiyanhua-ai/fireworks-tech-graph,MIT,Python)是一个以 Agent Skill 形态分发的技术图生成器——它不是 GUI、也不是 SaaS,而是「同一个技能目录」在 Codex 与 Claude Code 里原样安装、原样运行,同时自带一套可以脱离宿主单独调用的统一 CLI。

它的口号是「别再手动画图了」:用中文或英文描述系统,拿到一张几何安全(geometry-safe)的 SVG、一张高清 PNG、可选的语义 GIF 动效,以及一份离线可交互 HTML。真正让它区别于「让模型随便画一张」的是那道验证闸门——渲染前先校验输入 IR(schema v1 归一化;重复 ID、悬空引用、非法 waypoint、非有限几何都会在渲染前失败),渲染后 check 再校验 XML 与 marker 完整性、节点/保留区/标签/画布/边重叠/边交叉,最后才谈导出。

按仓库当前版本(npm 包 1.2.0,main 上还有一个未发版的 quality upgrade)的自我描述:11 个生成器驱动的风格 + 1 个 AI 自作风格(Dark Luxury),覆盖 14 类 UML 图与 AI/Agent 领域模式(RAG、Agentic Search、Mem0、Multi-Agent、Tool Call 等)。其中 9–12 号风格是「工程优先」的,各自绑定一份可执行语义契约:C4 评审画布、云部署归属、事件地铁图、可靠性黄金信号。

这套东西最值得称道的是「拒绝假装」:check 真的算交叉与桥接,doctor 把 svg/html/png/gif 四个能力分开报,text_policy 默认只报告截断而设成 strict 就直接拒绝出图,动效导出要求输入是带契约的语义 SVG 而不是任意图片。用项目自己的话说:Evaluate, don’t assert——完成与否由校验器和渲染证据背书,不是模型嘴上说「画好了」。

横向对比同类工具:

  • Mermaid:手写 DSL,适合塞进 Markdown 的轻量内联图;没有自然语言入口、没有风格体系、没有几何校验与动效。
  • draw.io / diagrams.net:手动精修最灵活,但靠拖拽,出图慢,也没有「生成即生产级」的约束。
  • Structurizr:C4 专用、模型严谨,但通用架构图与 AI 域图不在射程内。
  • Excalidraw 与 Eraser 一类 AI 白板:灵活、协作好,产物是手绘风位图或自由画布,缺少确定性路由与结构校验。

适合谁:架构师与技术负责人(评审用 C4 图、部署拓扑、可靠性视图);需要批量产出统一风格图的技术文档工程师;在编码 Agent 里写完代码顺手出图的团队;以及想把「出图」接进脚本或 CI、要求可复现的工程团队。

不适合谁:需要像素级自由创作的设计师(它的产物是语义化 SVG,不是自由画布);只要一张随手流程图的人(Mermaid 更快);完全不想碰命令行、也不想用编码 Agent 的人。

本站实测(2026-11-01,Windows,真实跑通)

这一节是本站真跑出来的,不是转述。环境:Windows 11 + Hermes 环境自带 Python 3.14.7;技能装在 skills/creative/fireworks-tech-graph,puppeteer-core 25.3.0 在技能目录内,Chrome 与 FFmpeg 系统级可用。

动作命令(省略公共前缀)实测结果
版本fireworks.py version1.2.0(installed-package),列出 12 个风格名
环境fireworks.py doctorsvg / html / gif = true,png = false(本机既无 cairosvg 也无 rsvg-convert)
渲染render architecture fixtures/microservices-style3.json out.svg --report layout.jsonrc=0,790 ms,SVG 27,100 字节
校验check out.svgrc=0,293 ms,ok: true
离线 HTMLexport-html out.svg out.htmlrc=0,278 ms,单文件 35,791 字节
PNG(官方路径)export-png out.svg out.png --width 1920(cairosvg 2.9.1)rc=0,849 ms,1920×1440,139,671 字节,尺寸回读通过
PNG(浏览器路径)node scripts/svg2png.js <dir>(puppeteer-core + Chrome)rc=0,1.76 s,1920×1440,205,543 字节
动效animate out.svg out.gifrc=0,18.7 s,GIF 302,746 字节(约 296 KB)
GIF 复核ffprobe 独立读取960×720、20 fps、115 帧、5.750 s(与报告一致)

渲染时它还顺手给了两组可以直接引用的读数:

  • 对比度(默认不透明画布的文本 token,阈值 4.5):主文本 12.1、次文本 10.46、弱化文本 8.32、区块副标题 8.32——全部过线,且报告明确写了「这不是完整的渲染态无障碍审计」。
  • 文本完整性:complete_text: true、truncated: [];同一份报告也提醒「宽度是启发式估算,实际字体要看渲染结果」。

效果图(本站渲染的原样输出,不是官方宣传图)

下面四张都是本站用仓库自带 fixture 在 Windows 上跑出来的原始产物,没有二次美化:前两张分别验证「通用架构风格」与「带证据契约的评审风格」,第三张验证事件流语义,最后一张是同一张图的语义动效。

风格 3 Blueprint · 微服务架构(fixture microservices-style3.json,export-png --width 1920 → 1920×1440)

风格 3 Blueprint:微服务架构,edge / services / data / events 分层,语义箭头区分读写与异步

风格 9 C4 Review Canvas · 结账容器评审(fixture c4-review-canvas-style9.json → 1920×1222)

风格 9 C4 Review Canvas:单一 C4 层级、职责与技术标注、评审画布风格

风格 11 Event Transit · 结账事件线(fixture event-transit-style11.json,注意这条要 render flow 而不是 render architecture → 1920×1180)

风格 11 Event Transit:topic 为轨、processor 为站,含 DLQ 与状态投影

风格 3 的语义动效 GIF(animate → 960×720 / 20fps / 115 帧 / 5.75 s,占位约 296 KB)

风格 3 语义动效:线路先按语义顺序绘制,随后保持 settled flow

这四张图对应的判定:三张 PNG 的 check 全部 ok: true,文本完整性 complete_text: true、无截断;对比度最低值分别是 8.32(风格 3)、4.92(风格 9)、5.30(风格 11),都在 4.5 阈值以上。换句话说,上面看到的排版不是「挑出来最好看的一张」,而是通过校验的默认输出。

再补一个失败面实测,这才是它值钱的地方:把 fixture 里一个节点标签换成一整句超长英文、并把 text_policy 设为 strict 后重跑——

rc=1  {"ok": false, "error": "TEXT_FIT: text would be truncated; widen the card or split the view"}
输出目录里没有写出任何 SVG

也就是说 strict 是失败闭合的:宁可不给文件,也不给一张字被截掉的图。它给的处置建议也很具体——加宽卡片或拆图,而不是缩字号糊过去。

准备工作

  1. 宿主(可选但推荐):Codex CLI 或 Claude Code。技能以 Agent Skill 标准分发,两个宿主各自一份 SKILL.md;订阅价格以各自官网当期为准,本文不引用固定价格。不用宿主也能跑——统一 CLI 可以独立调用(本站上面那组实测就是在 Hermes 环境里直接跑 Python CLI,没经过任何编码 Agent)。

  2. Python 3.9+ 的解释器:渲染、校验、导出、动效编排全部是 Python 脚本。

  3. PNG 导出需要栅格化器(二选一):cairosvg(pip install cairosvg,默认推荐)或 rsvg-convert(librsvg 的 CLI)。两个都没有时 doctor 的 png 能力为 false,SVG/HTML/GIF 不受影响。没有 Python 栅格化器也有退路:仓库自带浏览器路径 scripts/svg2png.js(走技能目录内的 puppeteer-core + 系统 Chrome),本站两条路径都实测出过 1920×1440 PNG。

  4. GIF 动效需要:FFmpeg(含 ffprobe)、Node.js ≥ 22.12(package.json 的 engines 明确写了这条)、可被自动发现的 Chrome/Chromium,以及装在技能目录内的 puppeteer-core:

    npm install --prefix "$SKILL_ROOT" --ignore-scripts --no-save --package-lock=false puppeteer-core@25.3.0
    
  5. 前置知识:会描述「有哪些组件、它们怎么连」即可;懂一点 C4/UML 能让风格 9–12 的输入更准,但不是必需。全程不写 DSL。

  6. 成本:技能 MIT 免费,渲染依赖全开源;唯一的钱是你要不要用付费的编码 Agent 来生成图。出图质量主要来自几何校验闭环而不是模型档位,用便宜模型也能出可用结果。

安装

推荐用 skills CLI(注意是嵌套路径,不是裸仓库):

npx -y skills add yizhiyanhua-ai/fireworks-tech-graph/skills/fireworks-tech-graph \
  --agent codex claude-code -g -y --copy

手动安装(保持可编辑、可 git pull 更新):

mkdir -p ~/.agents/skills ~/.claude/skills
git clone https://github.com/yizhiyanhua-ai/fireworks-tech-graph.git ~/.agents/skills/fireworks-tech-graph
git clone https://github.com/yizhiyanhua-ai/fireworks-tech-graph.git ~/.claude/skills/fireworks-tech-graph

Windows 上的等价路径是 %USERPROFILE%\.agents\skills 与 %USERPROFILE%\.claude\skills;装到别的宿主(例如 Hermes 的 ${HERMES_HOME}/skills/<category>/)同样可行——CLI 只依赖 $SKILL_ROOT 这个绝对路径,不依赖宿主约定。

装完重启宿主,再用两条命令确认它真的可用:

SKILL_ROOT="$HOME/.agents/skills/fireworks-tech-graph"
python3 "$SKILL_ROOT/scripts/fireworks.py" version
python3 "$SKILL_ROOT/scripts/fireworks.py" doctor

5 步核心流程

第 1 步:把技能装到宿主(嵌套路径)

见上节。判据只有一条:scripts/fireworks.py 必须存在。只拿到根 SKILL.md 就是装错了(见踩坑 1)。

第 2 步:用 doctor 分能力自检

doctor 的输出是按能力分组的,不是一句「装好了没」:

  • capabilities:svg / html / png / gif 四项布尔值;
  • 依赖探测:cairosvg、rsvg-convert、ffmpeg、node、python,以及 Chrome 与 puppeteer-core 的实际解析路径。

所以「gif 能出」不等于「png 能出」。本站实测就是 svg/html/gif=true、png=false,原因是这台机器的 Python 解释器里没有 cairosvg。先看这四项,再决定要不要装东西,比事后对着报错猜快得多。

第 3 步:选风格、准备输入

两种输入形态,按需要选。

A. 自然语言(在宿主里说):

Draw a microservices architecture: Client → API Gateway → [User / Order / Payment Service]
→ PostgreSQL + Redis, with an events lane and an observability strip, style 3
Draw a Multi-Agent diagram: Orchestrator dispatches 3 SubAgents (search / compute / code),
results aggregated and reviewed, style 5 (glassmorphism)
C4 review board for the checkout container: responsibilities, technologies, labeled protocols, style 9

B. JSON(schema v1):需要确定性复现、或要进 CI 时用 JSON。核心字段是 schema_version、mode、style、motion_scene、quality_profile、width/height、title/subtitle、containers[]、nodes[](节点带 id/kind/x/y/width/height/label/sublabel/fill/stroke)。仓库 fixtures/ 里 12 个风格各有一份可直接跑的样例。

风格速查(当前包):

风格名称定位
1Flat Icon默认,通用架构
2Dark Terminal深色底 + 语义描边
3Blueprint工程图纸风,适合正式设计文档
4Notion Clean极简,适合内联文档
5Glassmorphism演示与产品页
6Claude Official暖色、Anthropic 风
7OpenAI Official精确、留白、品牌绿点缀
8Dark LuxuryAI 自作(无 JSON 生成器,按风格规范手写 SVG 后走同一套校验)
9C4 Review Canvas工程契约:一个 C4 层级 + 职责/技术/协议
10Cloud Fabric工程契约:区域/网络/工作负载归属 + 跨边界机制
11Event Transit工程契约:topic 为轨、processor 为站、DLQ 与状态投影
12Ops Pulse工程契约:固定窗口 + 四黄金信号 + 一条关键链路

9–12 不是「换个皮肤」:它们绑定可执行的语义契约,缺对应证据时按设计退回通用风格,而不是编造区域、指标或协议。

第 4 步:渲染 + 结构校验

python3 "$SKILL_ROOT/scripts/fireworks.py" render architecture input.json diagram.svg --report layout.json
python3 "$SKILL_ROOT/scripts/fireworks.py" check diagram.svg
  • render 产出 SVG 与 layout.json(含对比度、文本完整性、排版度量);本站实测 790 ms。
  • check 校验 SVG 身份、marker 引用、通用箭头/节点碰撞、语义几何与构图约束;本站实测 293 ms 且 ok: true。
  • 失败时按报告里的 element id + 几何做定点修改;官方明确「不要为了让 check 过而削弱语义或构图约束」。

若要「文字一字不差可见」,在输入里加:

{ "text_policy": "strict" }

strict 下只要出现可见截断就以 rc=1 拒绝并完全不写 SVG(本站已实测),替代方案是加宽卡片或拆图。

第 5 步:导出 PNG / 离线 HTML / 语义 GIF

python3 "$SKILL_ROOT/scripts/fireworks.py" export-png diagram.svg diagram.png --width 1920
python3 "$SKILL_ROOT/scripts/fireworks.py" export-html diagram.svg diagram.html --title "Agent Runtime Architecture"
python3 "$SKILL_ROOT/scripts/fireworks.py" animate diagram.svg diagram.gif
  • export-png:读根画布尺寸、有界导出、原子写入,并回读 PNG 的实际像素尺寸(本机因缺 cairosvg,这条路径未验证)。
  • export-html:单文件离线交互页,带 pan/zoom、明暗主题、SVG 源码复制、1×–4× 的 SVG/PNG/JPEG/WebP 下载;本站实测 278 ms / 35,791 字节。
  • animate:只接受带已批准动效契约的语义 SVG,输出 GIF 与 .motion.json 报告;默认 960px / 20fps / 5.75s / 115 帧(前 36 帧线路绘制、第 38 帧完整流动、38–109 保持 settled flow、110–114 复位),另支持 3.75s/75 帧与 2.75s/55 帧两档。本站实测 18.7 s,ffprobe 复核 960×720 / 20fps / 115 帧 / 5.750 s,与报告一致。

常见踩坑(10 条)

坑 1:装了但一跑就找不到 fireworks.py

现象:scripts/fireworks.py 不存在,或 references/、fixtures/、schemas/ 全是空。 原因:用裸仓库路径安装(.../fireworks-tech-graph),skills CLI 只挑中了根 SKILL.md。 解决:改用嵌套路径 yizhiyanhua-ai/fireworks-tech-graph/skills/fireworks-tech-graph,或按上节 git clone 整仓。

坑 2:装完宿主里没反应

现象:在 Codex / Claude Code 里说「draw diagram」不触发。 原因:宿主启动时扫描技能目录,新装的需要重启才可见。 解决:重启宿主;之后改 SKILL.md 多数会被热加载,但改 scripts/、references/ 仍建议重启。

坑 3:doctor 说 png: false,但 GIF 明明能出

现象:以为渲染链路全坏,其实只是 PNG 路径缺栅格化器。 原因:doctor 的四项能力相互独立——GIF 走 Chrome + puppeteer,PNG 走 cairosvg / rsvg-convert。 解决:pip install cairosvg(本站做法:装在独立 venv 里,避免污染宿主解释器),或装 librsvg 的 rsvg-convert;两者都没有时用仓库自带的浏览器路径 node scripts/svg2png.js <目录>(本站实测 1.76 s 出 1920×1440),或先导出离线 HTML 再截。

坑 4:animate 报 Node 版本或找不到 Chromium

现象:动效导出直接失败,或输出空 GIF。 原因:package.json 要求 Node ≥ 22.12;Chrome 需可被自动发现;puppeteer-core 必须装在技能目录内(渲染器刻意不从调用方 cwd 解析模块)。 解决:node -v 先过 22.12,再 npm install --prefix "$SKILL_ROOT" ... puppeteer-core@25.3.0,然后 doctor 看 motion_renderer 与 Chrome 路径有没有被解析出来。

坑 5:风格 9–12 写不出「证据」,出图退回通用风格

现象:指定了 style 9,结果还是普通架构图。 原因:这四种风格要求声明式证据(一个 C4 层级 + 职责/技术/协议、区域与网络归属、topic/processor/DLQ、固定窗口与四黄金信号)。证据缺失时按契约退回通用风格,而不是瞎编。 解决:把证据补进描述或 JSON;确实没有证据时别硬上 9–12,用 1–7 更省事。

坑 6:默认 text_policy 下字被截断,却以为没问题

现象:SVG 里某个卡片标题被截,报告里只有一行提示。 原因:默认是 report 策略——保留完整标签在元数据里并报告可见截断,不阻断输出。 解决:要逐字可见就设 "text_policy": "strict"(会以 rc=1 拒写,逼你加宽或拆图);不改 strict 时,至少把报告里的 truncated 读完再交付。

坑 7:长中文/长英文标签硬塞进小卡片

现象:strict 模式直接失败,或默认模式出一张挤在一起的图。 原因:折行是 CJK 感知的,但折行次数与卡片标题都有上界,字号也不是无限可缩。 解决:加宽容器、把内容拆成两张图、或把细节挪到 sublabel——官方给的处置就是「widen or split」,不是缩字号。

坑 8:交叉线/桥接「看起来还行」就放过

现象:图能出,但多条语义边互相压着、箭头指错。 原因:check 默认会算边交叉与桥接、边重叠与保留区,但报告要你读;构图契约还要求节点间距 ≥40px、容器间隙 20px、每条边最多两次弯折、同一业务边不重复画。 解决:按报告里的 element id 改几何,不要靠视觉印象跳过。

坑 9:拿位图或手绘 SVG 去 animate

现象:动效导出报输入不支持。 原因:1.2.0 起动效路径只接受生成的语义 SVG(带语义拓扑、路由角色与风格签名),会拒绝栅格输入与非 SVG。 解决:先 render 出语义 SVG 再 animate;不要拿别的工具导出的 SVG 硬转。

坑 10:render 的第一个参数写错,报 mode 冲突

现象:render architecture fixtures/event-transit-style11.json ... 报 {"ok": false, "error": "mode 'flow' conflicts with template type 'architecture'"},且不产出 SVG。 原因:render 的第一个位置参数是 mode,必须与 fixture 里的 mode 字段一致;事件流这一类(style 11)是 flow,不是 architecture。本站实测就踩了一次:同一批 fixture 里 style 3 / 9 是 architecture,style 11 是 flow。 解决:先看 fixture 的 mode(或 template_type)再决定参数;不确定时用 validate <mode> <json> 先过一遍,它会把冲突直接报出来。

初级用法

  1. 评审用 C4 图:style 9 + 声明一个 C4 层级与各容器的职责/技术/协议,产出可直接贴进 ADR 的评审画布。
  2. 部署拓扑:style 10 + 区域/VPC 归属与跨区复制机制,输出多区域部署图,而不是把 VPC 框当装饰。
  3. 事件流:style 11,topic 当轨、processor 当站,标出 DLQ 与状态投影,适合 Kafka 拓扑评审。
  4. 事故复盘图:style 12 + 固定时间窗与四个黄金信号,出一张「关键链路 + 指标窗口」的排查视图。

高级玩法

  1. 进 CI 做可复现图:把 JSON 输入与 render → check → export-png 写进流水线,图随代码变;check 非零即阻断,等于给架构图加了回归测试。
  2. 一套输入多风格出图:同一份 JSON 换 style 生成 2–3 个版本——评审用 Blueprint(3)、对外用 Glassmorphism(5)、博客用 Dark Terminal(2)。
  3. 离线可交互交付:export-html 给客户或同事一个不联网也能 pan/zoom、切主题、复制 SVG 源码、按 1×–4× 下载的单文件页面。
  4. 动效做讲解材料:animate 出的 GIF 先画线路再流动,适合放进 release note 或文档首页;.motion.json 里带帧数/时长/宽度,可直接核对有没有被人手工改过。

六个小技巧

  1. 先跑 doctor 再谈出图:四项能力一眼看清,省掉「为什么只有 GIF 能用」的排查。
  2. 风格用编号:style N 比「深色/极简」这类词稳;9–12 还要补对应证据指纹(C4 review board / deployment topology / event metro map / reliability pulse)。
  3. 要交付就设 strict:宁可被拒一次,也不要交一张字被截的图给评审。
  4. 失败只看 element id:check 与 TEXT_FIT 的报错都指向具体元素与几何,改那一处,别整图重来。
  5. 复用 fixtures 当模板:12 个风格各有一份能跑通的 JSON,改 label 比从零写 IR 快得多。
  6. GIF 别反复生成:一次渲染多次复用同一个语义 SVG;动效导出本身要十几到二十秒(本站 18.7 s),频繁重跑很浪费时间。

常见问题 FAQ

Q1:它和 Mermaid、draw.io 到底怎么选?

A:三种场景三种工具。要「写进 Markdown、随时改的轻量内联图」用 Mermaid;要「手工精修、自由拖拽」用 draw.io;要「描述系统 → 直接拿到几何校验过的生产级 SVG/PNG,还带动效与离线 HTML」用它。差别不在能不能画,而在出图后有没有结构校验——Mermaid 与 draw.io 都不会告诉你有几条边交叉、字有没有被截。

Q2:必须装 Codex 或 Claude Code 吗?

A:不必须。它的入口是统一 CLI(validate / render / check / export-png / export-html / animate / doctor / version),本站的实测就是在 Hermes 环境里直接调用 Python CLI 完成的,没有任何编码 Agent 参与。装宿主的价值是「一句话触发」与让 Agent 自己判断风格、自己修 check 报错。

Q3:免费吗?钱花在哪?

A:技能 MIT 免费,渲染依赖(cairosvg、FFmpeg、Chrome、puppeteer-core)全部开源或免费。唯一的钱是你要不要用付费的编码 Agent 来生成图;由于质量主要来自几何校验闭环而不是模型档位,用便宜模型也能出可用结果。

Q4:支持中文吗?中文标签会被截断吗?

A:支持中文描述与中文标签,折行是 CJK 感知的,字体栈含 Microsoft YaHei / SimHei 一类系统字体(本站 Windows 实测渲染正常,没有豆腐块)。但折行与卡片标题都有上界:长中文标签仍可能被截,判据是报告里的 truncated 与 complete_text;要强约束就开 strict。

Q5:能画哪些图?

A:14 类 UML 图(类、组件、部署、包、组合结构、对象、用例、活动、状态机、序列、通信、时序、交互概览、ER),加上 AI/Agent 领域模式(RAG、Agentic Search、Mem0、Multi-Agent、Tool Call 等)。它不做照片、位图或统计图表——那些不在射程内。

Q6:Windows 上有什么特别注意的?

A:三件:① 路径用 %USERPROFILE% 而不是 ~;② 解释器别用 WindowsApps 的 python3 存根(会打开商店),换成真实的 Python;③ Node 必须 ≥22.12 才能跑动效,且 puppeteer-core 要装在技能目录内而不是全局。

进阶学习建议

  1. 先读 references/style-diagram-matrix.md:它把「风格 × 图类型」的适配度、9–12 的证据要求与禁止混搭项写成表格,选风格前读一页能省掉大半返工。
  2. 再读 references/composition-quality-contract.md:节点间距 40px、容器间隙 20px、每边最多两次弯折、同一业务边不重复画——这些正是 check 在算的东西。
  3. 读 references/visual-quality.md:讲每个主题的排版与对比度测量边界,并明确「启发式宽度不等于真实字体渲染」,这条能解释「看起来很挤但分数很高」。
  4. 需要 PNG 就翻 references/png-export.md:cairosvg / rsvg-convert / Chromium 三条路径的差异与兜底顺序都在里面。
  5. 要动效就读 references/motion-effects.md:哪些风格与拓扑可动、帧段怎么分配、为什么手绘 SVG 不行。
  6. 把 schemas/ 与 fixtures/ 当 API 文档:IR 的字段与约束以 schema 为准,12 个 fixture 是最短的可运行样例。

免责声明

本文基于官方仓库(中英双语 README、CHANGELOG、references/、SKILL.md)与本站实测整理,AI 辅助生成。

已实测:2026-11-01 在 Windows 环境跑通 version、doctor、render(790 ms)、check(293 ms,ok)、export-html(278 ms)、animate(18.7 s,GIF 经 ffprobe 独立复核 960×720 / 20fps / 115 帧 / 5.750 s)、text_policy: strict 的失败闭合(rc=1,不写 SVG),两条 PNG 导出路径:export-png 经 cairosvg 2.9.1(849 ms,1920×1440,尺寸回读通过)与 scripts/svg2png.js 经 Chromium(1.76 s,1920×1440);以及风格 3 / 9 / 11 三份 fixture 的渲染与 check(全部 ok: true,对比度最低 4.92,高于 4.5 阈值)。文中四张效果图均为上述命令的原样产物。

未实测:AI 端到端「自然语言描述 → 出图」的质量与风格命中率(本次走的是官方 fixture 的确定性路径)、12 个风格的逐风格视觉验收、9–12 号工程风格在真实项目证据下的产出、以及在 Codex / Claude Code 宿主内的自动触发行为(本站只在 CLI 层验证)。另:doctor 默认解释器下仍报 png=false,那是因为 cairosvg 只装在独立 venv 里,不是功能缺失。仓库指标(stars/forks/最近推送)取自 GitHub API,采集于 2026-11-01。

参考链接

Fireworks Tech Graph 多维度简评

来源:yizhiyanhua-ai/fireworks-tech-graph(MIT,Python) 类别:编程开发 / 技术图生成

说明:本文基于仓库当前版本(npm 包 1.2.0 + main 上未发版的质量升级)与本站 2026-11-01 的本机实测整理。安装与逐条命令见同条目的快速入门。


一、它到底在解决什么

「让 AI 画架构图」这件事,难的不是生成,而是生成完之后你敢不敢用。模型给你一张看着还行的图,但你不知道它有没有把两条边画在同一个位置上、有没有把标签压到框外、有没有把「读写」和「异步」画成同一个箭头。

Fireworks Tech Graph 的做法是把这条链路拆成三段,每段都有自己的判据:

  1. 生成:自然语言或 schema v1 的 JSON → 语义 IR(节点、容器、边、路由角色、风格签名)。IR 在渲染前先过一遍归一化,重复 ID、悬空引用、非法 waypoint、非有限几何直接失败。
  2. 校验:check 对产出的 SVG 做结构验证——SVG 身份与 marker 引用、通用箭头/节点碰撞、保留区、标签与画布边界、边重叠与边交叉、构图契约(节点间距 ≥40px、容器间隙 20px、每边最多两次弯折)。
  3. 导出:PNG(有界导出 + 像素尺寸回读)、离线 HTML(单文件、pan/zoom、多格式下载)、语义 GIF(带 .motion.json 报告)。

这个拆分带来的直接后果是:它经常失败,而且失败得有信息量。本站实测里就出现过一次刻意构造的失败——超长标签 + text_policy: "strict",它返回 rc=1、TEXT_FIT: text would be truncated,并且一个 SVG 都不写。对「要交付给评审的图」来说,这比给你一张字被截掉的图有用得多。

二、产物与规模

一个技能目录,两个宿主(Codex、Claude Code)共用,同时暴露 CLI。产物形态是四选一或全出:

  • SVG:规范产物,带语义 metadata(连接器语义、路由角色、风格签名);
  • PNG:官方 export-png(cairosvg / rsvg-convert)或浏览器路径(技能目录内 puppeteer-core + 系统 Chrome);
  • 离线 HTML:单文件,不联网可 pan/zoom、切主题、复制 SVG 源码、1×–4× 下载 SVG/PNG/JPEG/WebP;
  • GIF:960px / 20fps / 5.75s / 115 帧的默认动效(前 36 帧画线路、38–109 保持流动、110–114 复位),附 .motion.json 报告。

规模上:11 个生成器驱动的风格 + 1 个 AI 自作风格(Dark Luxury),14 类 UML 图(类、组件、部署、包、组合结构、对象、用例、活动、状态机、序列、通信、时序、交互概览、ER),外加 RAG、Agentic Search、Mem0、Multi-Agent、Tool Call 这些 AI/Agent 域模式。

风格 9–12 是它真正的差异点:不是皮肤,而是带证据契约的工程视图——

  • 9 C4 Review Canvas:必须声明一个 C4 层级 + 职责/技术/协议;
  • 10 Cloud Fabric:必须给出区域/网络/工作负载归属与跨边界机制;
  • 11 Event Transit:topic 当轨、processor 当站、要标 DLQ 与状态投影;
  • 12 Ops Pulse:固定时间窗 + 四个黄金信号 + 一条关键路径。

缺证据时它按设计退回通用风格,而不是编造 VPC、编造指标。这条设计直接决定了它「不能拿来吹」,也决定了它在评审场景里比通用 AI 画图可信。

下面是本站用 style 9 的官方 fixture 渲染出来的评审画布(1920×1222,check 通过、文本无截断、最低对比度 4.92):

风格 9 C4 Review Canvas:单一 C4 层级 + 职责/技术/协议标注,本站渲染

同一份 JSON 换成风格 3、风格 11 的产物与动效 GIF 见快速入门的效果图一节。

三、本站实测读出的三件事

第一,管线是真的快。 一台普通 Windows 机器上:render 790 ms、check 293 ms、export-html 278 ms、export-png 849 ms(cairosvg 2.9.1,1920×1440)、浏览器 PNG 1.76 s(1920×1440)、GIF 18.7 s(960×720 / 20fps / 115 帧,ffprobe 独立复核)。也就是说,除了 GIF,其余环节都在秒级以内——这让「改一版再出一次」的成本足够低,跟手绘的体验差距主要不在速度,而在约束。

第二,它的自检读数可以用。 一次渲染同时给出:文本完整性(complete_text: true,truncated: [])、对比度(主文本 12.1、次 10.46、弱化 8.32,阈值 4.5,四项全过),并明确标注「这不是完整的渲染态无障碍审计」「宽度是启发式估算,实际字体要看渲染结果」。愿意在报告里写清自己测不出什么的工具,通常比声称全绿的更可信。

第三,能力探测是分项的,这是排障友好的关键。 doctor 把 svg / html / png / gif 四项分开报,还给出 Chrome、puppeteer-core、ffmpeg、node 的实际解析路径。本站第一次跑时 png=false 而 gif=true——原因是这台机器的 Python 解释器里没有 cairosvg,GIF 走的是 Chrome。这种「只有一项坏」的情况,如果不分项报,会被误判成整条渲染链坏掉。

四、和四类替代方案的边界

  • Mermaid:要的是「写进 Markdown、随文档版本走的内联图」,手写 DSL 换确定性与轻量。它没有自然语言入口,也没有结构校验,但它便宜、快、生态广。轻量图别用它。
  • draw.io:要的是「人工精修的最终稿」,自由画布无可替代。代价是无法进 CI、无法复现,也没人替你检查交叉线。
  • Structurizr:C4 模型的正统路线,模型即代码,严谨度更高,但只覆盖 C4,且没有 AI 域图与动效。
  • Excalidraw / Eraser 一类:协作与手绘风格是它们的强项,产物是画布或位图,不追求正交路由与几何校验。

一句话选型:图要不要被机器检查、要不要能重跑——要,就用它;只是给人看个大概,Mermaid 或 Excalidraw 更快。

五、边界与风险

  1. AI 端到端质量未验证:本站跑的是官方 fixture 的确定性路径(JSON → SVG → 导出),没有验证「一句中文描述 → 命中正确风格与拓扑」的稳定性。这是两件不同的事,别混着理解。
  2. 只支持两个宿主:官方明确只列 Codex 与 Claude Code;CLI 可以脱离宿主跑,但「在 Cursor / Hermes 里自动触发」这类能力不在官方承诺内。
  3. 动效只覆盖有契约的拓扑:官方写明「same-style topologies are not promised」——任意同风格拓扑不保证能动。
  4. 依赖面碎:PNG 要 cairosvg 或 rsvg-convert,GIF 要 Node ≥22.12 + Chrome + FFmpeg + 技能目录内的 puppeteer-core。跨机器迁移时最容易坏的就是这一层。
  5. 风格 8 不是生成器:Dark Luxury 需要 AI 按风格规范手写 SVG,所以它的产出质量取决于模型,而其余 11 个风格取决于生成器。
  6. 年轻的单人项目:2026-04 建仓、最新 tag v1.2.0(2026-07-17)、未关闭 issue 仅 1 个、最近推送 2026-10-21。活跃但不要假设长期承诺,关键流程先钉版本。

六、适合的落地方式

  • 架构评审材料:style 9 出 C4 评审画布,评审时对着「职责/技术/协议」逐项问,比看一张漂亮图有效。
  • 部署与事件流:style 10 / style 11,要求自己先写清归属与拓扑——这本身就是一次设计自检。
  • 文档与博客的配图流水线:同一份 JSON 换风格出多版;check 进 CI,图错了就阻断。
  • 离线交付:export-html 给一个不联网也能操作的单文件,适合客户环境。

七、结论

它不是「更聪明的画图 AI」,而是把画图变成一条有闸门的构建流程:能失败、失败信息可读、能重跑、能进 CI。代价是你得接受它的风格体系与证据契约——想随便画张示意图,用 Mermaid 更快;想让图变成可维护的工程产物,它是目前少见的、把校验做到导出后还继续管的选择。

逐维度分数、证据分档与未验证范围,见本站该条目的独立评分文件;安装与逐命令流程见快速入门。

参考资料

📊 评分与标签

核验口径:已按现行口径通过,待按新证据契约复核 · 证据状态:仅公开资料 · 核验日期:

评分说明

总分 8.5/10 · P_优选

核验日期:2026-11-01。口径说明:本条按 skill 类型五维(可安装性 2.5 / 实用性 2.5 / 文档质量 2.0 / 社区活跃 1.5 / 兼容性 1.5)评。证据分档按现行口径:安装了技能并在本机实际运行的部分记 free-tier(开源本地运行编码为 free-tier,非 doc-only、非 paid-tier),只核对了官方文档与仓库元数据的部分记 doc-only;顶层取非 na 档位的最小值,故 evidenceStatus: doc-only,逐维见 evidenceByDimension。锚点表(逐维上限)尚未获批,因此本文件不套用 tool 的锚点数值,逐维给分均逐条给证据。

📊 可观测社区指标(采集日期:2026-11-01)

  • GitHub:yizhiyanhua-ai/fireworks-tech-graph ★11,905 · 🔱935 · 未关闭 issue 1 · 语言 Python · 许可证 MIT。
  • 时间线:创建 2026-04-10,最近推送 2026-10-21;npm 包版本 1.2.0,最新 tag 发布 v1.2.0(2026-07-17),main 上另有未发版的质量升级(文本完整性报告、text_policy、有界 PNG 导出与尺寸回读、能力分层 doctor)。
  • 分发:npm @yizhiyanhua-ai/fireworks-tech-graph(bin 暴露 CLI、engines.node >=22.12)+ 技能目录(Codex / Claude Code)。
  • 数据来源:GitHub API、Releases、package.json。

📦 可安装性 2.1/2.5

  • 有两条正规安装路径:npx skills add <repo>/skills/fireworks-tech-graph(多宿主一次性装)或 git clone 整仓到宿主 skills 目录;npm 包同时提供 CLI,可脱离宿主使用。本站按 git clone 到技能目录完成安装,并用 doctor 确认依赖状态(svg/html/gif=true、png=false)。
  • 扣分点:① 必须用嵌套路径,裸仓库只会装到根 SKILL.md,脚本与 references 全丢(有专门踩坑记录);② 依赖面碎——PNG 需 cairosvg 或 rsvg-convert,GIF 需 Node ≥22.12 + Chrome + FFmpeg + 技能目录内的 puppeteer-core;③ 换解释器/换机器后能力会静默退化(本站就出现过同一台机器 png 从可用变不可用,因为默认解释器换了)。
  • 对比 MarkItDown(本站 8.5):markitdown 是 pip install 即用的单一库,装上就有命令,不依赖外部渲染器;Fireworks 的能力更强,安装面也更宽。
  • 对比 anthropic-pdf(本站 8.4):anthropic-pdf 依赖 Python 库与宿主插件体系,装好即用;Fireworks 少一层插件依赖,多一层渲染器依赖。

🎯 实用性 2.2/2.5

  • 解决的是「技术图要能交付、要能重跑」这个真实痛点:渲染前校验 IR、渲染后 check 结构验证、导出带尺寸回读。本站实测 render 790 ms、check 293 ms(ok)、PNG 849 ms(1920×1440,cairosvg 2.9.1)、浏览器 PNG 1.76 s(1920×1440)、离线 HTML 278 ms、GIF 18.7 s(960×720 / 20fps / 115 帧,ffprobe 独立复核)。
    • 来源:本机实测(2026-11-01,scripts/fireworks.py + scripts/svg2png.js,fixture microservices-style3.json)。
  • 覆盖面在技术图这一垂直域内很足:11 个生成器风格 + 1 个 AI 风格、14 类 UML 图、AI/Agent 域模式、C4/云/事件/可靠性四个带证据契约的工程风格;同一份 JSON 换 style 即换风格,12 个风格都有可跑 fixture。text_policy: "strict" 实测会以 rc=1 拒绝出图且不写文件,属「宁可不给也不给错的」。
  • 扣分点:① 只服务技术图,照片、位图、统计图表不在射程;② 9–12 号工程风格要求真实证据,缺证据时按设计退回通用风格,等于要付「把证据写清」的成本;③ 动效只覆盖已批准契约的拓扑,任意同风格拓扑不保证可动;④ AI 端到端「一句话出图」的质量本次未验证,实用性结论只覆盖「产生成 → 校验 → 导出」这一段。
  • 对比 Mermaid(DSL 路线):Mermaid 覆盖「内联图」这个高频场景、成本更低;Fireworks 胜在结构校验、风格体系与多形态导出,输在轻量与生态。
  • 对比 draw.io(GUI 路线):draw.io 的自由度与模板量是它无法替代的;但 draw.io 没有可机检的几何约束,也没有可进 CI 的确定性重跑。

📖 文档质量 1.8/2.0

  • 文档是分层且在持续维护的:中英双语 README(12 风格 GIF 展示 + 场景说明)、CHANGELOG 逐版记录(1.0.0 → 1.2.0 与未发版升级)、docs/releases/ 发布溯源、12 份按主题拆开的 references/(风格矩阵、构图契约、视觉质量、PNG 导出、动效、布局、图标等),并明确区分「已发布 1.2.0 showcase」与「main 上未发版升级」。
  • 难得的是把限制写进文档:visual-quality.md 明说启发式宽度不等于真实字体渲染、对比度测量不是完整无障碍审计;composition-quality-contract.md 给出 40px / 20px / 两次弯折等硬指标;motion-effects.md 说明哪些拓扑不可动。
  • 扣分点:① 新手端到端路径要自己拼(安装 → 重启宿主 → doctor → 首图);② 中文 README 与英文版存在同步落差风险;③ 环境变化(换解释器、缺栅格化器)导致的能力退化没有专门章节,本站踩坑记录里的 png=false 就是这类。
  • 对比 anthropic-docx(本站同族文档技能):官方 skill 的文档偏代码示例与用法清单;Fireworks 的文档偏「质量契约与失败判据」,对外行更难读、对工程更实用。
  • 对比 Mermaid:Mermaid 有多年官方文档站与在线编辑器,入门曲线更平;Fireworks 文档更深,但需要读者有工程背景。

👥 社区活跃 1.3/1.5

  • 实测数据:★11,905、🔱935、未关闭 issue 1、最近推送 2026-10-21、最新 tag v1.2.0(2026-07-17)。2026-04 建仓,半年多到这个量级。
  • 工程化痕迹明显:CI、release 归档与归档一致性检查、安装 canary、真实 Chromium 的 12 风格回归(75 vs 115 帧共 852 组比较)、动效 canary、SECURITY.md、CONTRIBUTING、npm 发布、GitHub Pages 展示站。
  • 扣分点:单人主导、未关闭 issue 仅 1 个(社区讨论量小)、最新 tag 已三个月前的 7 月(main 有未发版改动),说明节奏是「攒一批再发」而不是持续小步。
  • 对比 trailofbits-skills:trailofbits-skills 有机构与多人维护、审计业务背书;Fireworks 是单人但迭代更密。
  • 对比 SkillsMP:skillsmp 是目录型项目,社区规模体现在收录量而非单仓贡献;两者不可直接比星数。

🔗 兼容性 1.1/1.5

  • 产物遵循 Agent Skills 开放标准(SKILL.md + 目录结构),官方列 Codex 与 Claude Code 两个宿主;同时提供统一 CLI(validate/render/check/inspect/export-png/export-html/animate/doctor/version/examples)、npm 包与 bin 入口、离线 HTML 单文件交付。本站是在 Hermes 环境下用 CLI 直接跑通的,说明 CLI 层不绑定宿主。
  • 扣分点:① 官方宿主只有两个,其他 Agent 需自行映射目录($SKILL_ROOT 绝对路径是硬要求);② 无 MCP server、无 HTTP API,接进非 Agent 系统只能走 CLI 包装;③ 平台依赖明确(Chrome、FFmpeg、Node ≥22.12、Python 栅格化器),跨平台可用但迁移成本不低;④ 9–12 号风格的语义契约要求输入侧配合,跨团队复用时输入格式要先对齐。
  • 对比 MarkItDown:markitdown 的产物是 Markdown,任何模型、任何工具都能读,兼容性最强;Fireworks 的产物是宿主规范文件与渲染依赖,兼容性更强绑环境。
  • 对比 anthropic-pdf:anthropic-pdf 围绕单一文档类型;Fireworks 覆盖图这一垂直域的全部形态(SVG/PNG/GIF/HTML),但每种形态都有自己的依赖。

评分依据可追溯至公开来源,每项分数均有明确理由和数据支撑。

🏷️ 标签说明

  • AI设计: 用自然语言或声明式 JSON 驱动出图,属 AI 辅助设计;但最终形态由确定性生成器与校验器决定,不是自由绘画。来源:README。
  • 架构图: 主战场是架构/部署/C4/事件流/可靠性视图,14 类 UML 与 AI/Agent 域模式是核心覆盖。来源:README「Key features」。
  • SVG: SVG 是规范产物并携带语义 metadata,PNG/GIF/HTML 都是它的导出路由。来源:SKILL.md。
  • 文档生成: 服务技术文档体系——统一风格批量产图、离线 HTML 单文件交付、GIF 用于文档首页与 release note。来源:README。
  • 自动化: CLI 可进脚本与 CI,check 非零即阻断,渲染与导出均可无人值守重跑。来源:package.json、本机 CLI 实测。

局限与声明

已实测(free-tier,2026-11-01,Windows):安装技能到本地目录;version / doctor;render(790 ms);check(293 ms,ok);export-html(278 ms);export-png 经 cairosvg 2.9.1(849 ms,1920×1440,尺寸回读通过);scripts/svg2png.js 经 Chromium(1.76 s,1920×1440);animate(18.7 s,GIF 经 ffprobe 复核 960×720 / 20fps / 115 帧 / 5.750 s);text_policy: "strict" 失败闭合(rc=1、未写 SVG)。

未实测(doc-only 部分由此而来):AI 端到端「自然语言描述 → 出图」的质量与风格命中率;12 个风格的逐风格视觉验收;9–12 号工程风格在真实项目证据下的产出;Codex / Claude Code 宿主内的自动触发;rsvg-convert 渲染路径。

评分变动说明:本条从 workflows 类型迁到 skills 类型,评分口径随之从工作流五维换为技能五维(两者不可比)。同口径下的历史值:工作流五维 8.6(流程 2.6 / 可复用 2.2 / 文档 1.9 / 集成 1.3 / 创新 0.6);技能五维 8.5(2.1 / 2.2 / 1.8 / 1.3 / 1.1)。本次低于上次 0.1 的原因是:技能口径下的「可安装性」与「兼容性」两维对依赖面与宿主数的要求更严,而本次实测又新增了「换解释器后 png 能力静默退化」这条负面证据。

📋 来源核实

  • ✅ GitHub API:stars 11,905、forks 935、open issues 1、pushed_at 2026-10-21、license MIT、created 2026-04-10(2026-11-01 读取)。
  • ✅ Releases API:最新 tag v1.2.0(2026-07-17)。
  • ✅ 已读取 README、README.zh.md、CHANGELOG、SKILL.md、package.json 与 references/ 下风格矩阵、构图契约、视觉质量、PNG 导出、动效说明。
  • ✅ 本机实跑(2026-11-01):version / doctor / render / check / export-html / animate / export-png(cairosvg 2.9.1)/ svg2png.js(Chromium)/ strict 失败面,数字见各维度。
  • ⚠️ 未验证:视觉质量的人工验收、自然语言输入下的风格命中率、宿主内自动触发、rsvg-convert 路径;官方展示站的 12 张 GIF 未逐张比对。
  • ❌ 已剔除旧版依据:旧评分(workflow 口径)称「无独立 CLI」——package.json 的 bin 与 SKILL.md 子命令表已证伪;旧 stars 10,749 与 pushed_at 2026-08-18 已更新为当前值。