Archify 复测:70.2k Star 的 AI 架构图生成器,23 天翻倍、一个稳定版没发,我复现出一条栽赃环境的假报错

让 AI 画系统架构图,最常见的结局是拿到一张漂亮的废纸:框没错、线乱飞,和仓库里的代码对不上。Archify 的解法是让 Agent 先写结构化 JSON,再用渲染器和三道闸门把图逼成真的。上次我在它 34k Star 时写过一篇实测,23 天后它涨到 70,210 Star、翻了一倍,却连一个稳定版都没发。这次我把仓库整个 clone 下来重跑:1,397 个测试、14 个内置样例、5 类图形各交付一张,还亲手造了一张 40 节点 90 连线的密集图,把一个「报错信息栽赃环境」的假报错完整复现出来。

一、星数翻倍,版本号停在原地

同一篇文的两次观测之间,只隔 23 天:

指标 2026-08-31(前作) 2026-09-23(本次) 变化
Star 34,400 70,210 +104%,日均约 1,556
Fork 2,185 4,718 +116%
open issue+PR 72 153 翻倍
稳定版 v2.16.0(08-30 发布) 仍是 v2.16.0 23 天零发版
合并 PR(累计) 206 贡献者 34 人

同期仓库并不冷清:23 天 63 个提交、252 个文件被改动,网站整体迁到 Astro 6.4,多了一个 star-history 工作流,中文 README_ZH 单独维护 benchmark 说明。真正停着的是发布节奏——最新预发布版本 v2.17.0-dev.1 停在 09-17,CHANGELOG 里压着 compare 回滚修复、diff 箭头修复、UTF-8 SVG 声明(中文导出用)、CLI 失败结果机器可读化、DSH 插件刷新等 7 项没上正式版;README 的营销点清单写着「截至 08-30」再没动过。

我的判断:增长已经跑在发布流程前面。星数来自口碑扩散(教程站、Trendshift 徽章、社区 showcase 截图),工程侧在攒一次大版本。

二、它怎么做到的:五段流水线,三道闸门

把它当架构看,是一条严格的单向流水线,AI 和渲染器各管一半:

  1. Agent 写 JSON:12 种中间表示(architecture / sequence / workflow / dataflow / lifecycle 等),schema 严格到连多余字段都拒(additionalProperties 报错会精确指到路径)。guide 命令自带 11 个场景脚本(绿场/加密审计/并行任务/单服务追因…),中文写成可执行的写作契约。
  1. validate 三道闸:schema 校验 → 布局校验(按字符宽度估算像素,超宽必拦)→ 工程 profile 校验。deployment-ownership profile 要求每个部署组件在 tag 里写明 owner,validation profile 要求 low/medium/high 必须有端口对象、组件必须挂 service/risk 数据。
  1. 渲染子进程:按类型分发到独立渲染器,输出单文件自包含 HTML(SVG + 内联 CSS/JS,不依赖任何 CDN)。
  1. check 五项几何自检:single_svgfinite_svgorthogonal_arrowslabel_route_clearancerelationship_crossings,产出带 builder/checker 标识的机器可读回执。
  1. 交付后的证据链:visual-check 在四个视口截图比对(1440×900 / 1440×1100 / 1920×1080 / 390×844,每档取 120–480 行);compare 把两个版本的架构 IR 对齐成 delta(组件/边界/连接三类增删改 + 节点与连接的语义 sha),四档身份分(excluded / partially represented / represented / changed);连排错都用它自己——「debug by archify」要求把系统状态也画成图。

三条工程决策值得抄:零运行时依赖(devDependency 只有 ajv、parse5、saxes、simple-icons 四个包);SKILL.md 只有 137 行、16,396 字节,只管编排,绝不把 schema、渲染器或成片样式内嵌进技能文档;渲染与检查都走子进程 + 管道,拿到纯净 JSON 才做判断。

三、一手实测:跑真不跑真

装机零摩擦:clone 后 npm install 装 4 个 dev 包(node_modules 30.3 MB),doctor 0.219 秒五项全绿。

命令 结果 耗时
validate 14 个内置样例 12 个直接 OK(另 2 个是 compare 专用 base/head)
deliver 五类 showcase architecture / sequence / workflow / dataflow / lifecycle 各一张,checkok:true 单张 1.05–1.13 s
单张产物 810–821 KB 自包含 HTML,回执仅 710 B
compare architecture 双版本 delta HTML 2.2 MB,回执带 builder/checker 语义哈希 2.19 s
全量测试套件 1,397 tests / 1,330 pass / 49 skip / 17 fail 758 s

17 个失败我逐条对了归因:12 个是更新检查器(1 秒窗口内拉不到清单就按设计静默)、3 个是打包测试调 unzip -Z 而 BusyBox 没这个子命令、1 个是沙盒 git pack 校验、1 个要真实 HTTPS 证据仓库——没有一个是渲染或校验逻辑的缺陷,但它们证明这套套件对网络和系统工具敏感,换台干净机器复跑先备好依赖。对照前作引用的 README 口径(1,026 测试 / 988 通过 / 38 跳过),测试规模已经涨到 1,397。

布局闸门是真的拦人。我故意造了一张 40 节点、90 连线的密集架构图,一次性吃下 1,352 条问题:标签按字符宽度估像素(100px 组件里塞 26 个字必超)、连线短于 24px、边界跑出 viewBox、连线穿过节点、50 处交叉——每条都带 Fix: 提示,指到具体坐标。渲染器端的 deployment-ownership profile 连每个组件的 owner tag 都逐个点名。这不是形式主义,它逼着 Agent 一直迭代到图能交付为止。

然后撞上一个栽赃环境的假报错。同一张密集图跑 validate,CLI 只给我一句 Renderer process could not start.——听起来像我沙盒的问题。翻代码找到根因:子进程输出走管道、spawnSync 全文没有一处 maxBuffer(Node 默认 1 MiB),诊断 JSON 刚到 1,057,920 字节就被 ENOBUFS 截断,那 1,352 条真实问题一条都看不见。我直接复刻子进程确认:errno: ENOBUFSstatus: 1、stderr 正好 1,057,920 字节,连中文都被截在半个字符上。同一根因的另一面是 issue #525(deliver 的 check 输出超 1 MiB 就报 artifact/check-failed,v2.16.0 和 main 都能复现):维护者 tt-a1i 在 09-23 确认并公开邀请修 PR,gold-beyond 已认领。它和 #448 的「grep -c 0 被判 false」属于同一类病——退出码是 1,但原因读不出来。

四、坐标系:同类工具里它站在哪

这个赛道我验过三件事,结果摆在一起才看得清位置。前作那篇实测 记录的是 34k Star 时的它,当时结论偏向文档复述;这次的证据全在手上:装机、跑测试、画图、复现 bug,可信度换了一层。Skill Seekers 那篇 走的是反方向——把文档转成技能,卡在模式识别(@property 被当成装饰器模式);Archify 恰恰相反,不让模型自由发挥,用 schema、像素估宽、工程 profile 三道闸门把发挥空间掐死,代价是写 JSON 的约束感,收益是图能对上代码。第三件是 i-have-adhd 那篇:一个项目的文档自带评测,结果被自己的质量闸门拦下——「自证」是这个赛道的通病,Archify 用机器可读回执(builder/checker、视口行数、语义 sha)给出了目前我见过最像证据链的解法。

五、结论:谁该用,以及别信什么

该用:有真实系统要画、并且要求「图和代码对得上」的人——工程文档、安全审计、服务拆分评审、交接。它的五段流水线天然适合塞进 Agent 工作流:Agent 只负责写 JSON,画得对不对交给闸门,人只看回执。中文支持是真的(README_ZH、guide --lang zh 的 11 个场景、CHANGELOG 里还有中文提交),零依赖意味着离线也能跑。

别信:星数。70,210 Star 对应的是 23 天零稳定版发布、153 个 open issue/PR、61 个 PR 排队合并(累计已合并 206)。口碑扩散和工程发布是两条速差曲线,v2.17.0-dev.1 停在 09-17 之后没有新预发布。另外别信「报错说环境坏就是环境坏」——本次那句 Renderer process could not start. 就是缓冲区截断伪装的,同样一个 1 MiB 的默认值,还在 deliver 上伪装成 artifact/check-failed

本次的局限:visual-check 在我这台沙盒里起不来 Chrome(DevTools 管道 ECONNRESET,PRoot 环境限制),四个视口的截图证据我拿不到,只能依赖它自己的几何自检回执;10 个子命令没有一个支持 --help(传了就回 Unknown X option),只能裸跑看 usage;--json 只在 validate / deliver / brands / guide 上有,rendercheck 吃不下——对一个把「机器可读回执」当卖点的工具,这个不统一有点讽刺。本次实测数据取自 2026-09-23 的仓库快照,截图、回执与 17 个失败的完整归因见文末证据包;相关断言已登记到断言守望,字段一变会复核。

发表评论