Archify 研究报告:对话式、可验证技术图生成器
/research/archify-research-guide.md
Archify 不是“把 Mermaid 换个主题”的美化器,也不是 Excalidraw/Figma 那类自由画布。它的定位更窄:让编码 Agent 先理解一个系统或仓库,再产出一份类型化 JSON IR;Archify 用本地 Node.js CLI 对这份 IR 做 schema、布局、连线、导出物校验,最后生成一个可交互、可分享的独立 HTML/SVG 技术图。
我的判断:值得试用,但要把它当成“Agent 交付图的验证/渲染层”,不要当成自动代码理解器或通用画图工具。 它最有价值的地方不是视觉风格,而是把 Agent 画图这件事加上了可复现源文件、机器可读错误、原子交付和 viewer 交互边界。风险也在同一个地方:拓扑和取舍仍由 Agent 生成,Archify 能验证“图合法、路线清楚、来源可绑定”,但不能自动证明 Agent 真的理解了系统。
项目基本信息
截至本机抓取时间 2026-09-07 10:35 CST,GitHub API 显示:
- 仓库:
tt-a1i/archify - 主页:<https://github.com/tt-a1i/archify>
- 项目页:<https://tt-a1i.github.io/archify/>
- 许可证:MIT
- 创建时间:2026-04-15;最近 push:2026-09-06
- 默认分支:
main - 主语言:JavaScript;GitHub language API 显示 JavaScript 约 2.36 MB、HTML 约 1.50 MB、Mermaid 3.8 KB、Shell 3.0 KB
- 可见热度:约 50,967 stars、3,324 forks;这是注意力信号,不等于长期成熟度
- issue / PR:open issues 57、open PRs 69、closed issues 65、closed PRs 131
- 稳定版:
v2.16.0,稳定 manifest 指向archify.zip的 SHA-2564c59fa6557a2385beaaef8c7219cc414573acc9f0c30a932d5053b0b20689a46 - 当前 main:
v2.17.0-dev.1,我克隆到的 HEAD 是c6519401f7b91b9d43011657880893b0a8955548
它解决什么问题
普通 Agent 很擅长“写一段架构说明”,但把说明变成可读图时经常有几个问题:
- 图形不可复现:同一个提示词多跑一次,布局、节点、标签可能大变。
- 错误难修:图坏了以后,Agent 看到的往往只是渲染失败或一堆浏览器/Node 栈,不知道该改哪个节点、哪条边。
- 好看和可信混在一起:一张漂亮图可能有错误连线、线穿节点、标签挡路径,也可能在交互里“暗示”不存在的关系。
- 分享成本高:图能在本地看,但很难作为一个单文件成品发给别人、嵌进文档或导出社交分享图。
Archify 的答案是:让 Agent 输出一个受 schema 约束的 JSON IR,再由 CLI 做 deterministic compile。README 里明确把它描述成“Agent 生成 Typed JSON IR,Archify 确定性编译成 HTML/SVG”;archify/SKILL.md 则把工作流写得更硬:先选择图类型,读对应 schema 和例子,写候选 JSON,每次候选都跑 validate,最终用 deliver 做原子交付。
最实用的能力
1. 五类技术图,而不是单一架构图
Archify 现在支持五种类型:
architecture:组件、服务、存储、边界、外部依赖。workflow:CI/CD、审批、工具调用、runbook、异常泳道。sequence:API 调用、缓存未命中、鉴权、异步链路。dataflow:ETL/ELT、数据血缘、PII、治理边界、下游消费者。lifecycle:状态机、重试、等待、取消、超时和终态。
这比“只会画系统组件框图”有用得多。现实里的架构沟通经常不是问“系统有哪些服务”,而是问“一次请求怎么走”“一次发布怎么失败回滚”“一份数据从哪来到哪去”。Archify 把这些问题拆成了不同 schema 和 renderer,方向是对的。
2. Typed JSON IR + 严格 schema
archify/schemas/README.md 说明每种图都有独立 JSON schema,要求 schema_version、diagram_type、meta.title 和对应结构数组,并且大量位置 additionalProperties: false:未知字段不会被静默忽略。
这对 Agent 画图很关键。没有 schema 时,Agent 很容易写出“看起来合理但工具不认”的字段;有 schema 后,错误可以回到具体路径和字段。workflow 还引入了 v2 readable compiler,同时保留 v1 固定布局兼容:这说明项目已经开始认真处理“老图继续可用”和“新图更可读”的版本边界。
3. 原子交付和机器回执
archify/references/delivery-contract.md 把 validate、deliver、visual-check 分得很清楚:
validate证明候选 JSON 和生成 SVG/HTML 的确定性检查通过。deliver读取被冻结的规格,生成候选 HTML,检查通过后才原子替换目标文件,并返回规格和成品的 SHA-256 / bytes。visual-check只是自动浏览器证据,不等于人工视觉审查。
这个边界做得不错。尤其是“失败保留 previous trusted artifact”“不要在失败 deliver 后对旧文件跑 visual-check”这类规则,说明维护者真正遇到过 Agent 交付中的坑,而不是只做一个漂亮 demo。
4. Viewer 交互是“读图工具”,不是随便编造关系
README 和 changelog 反复强调:focus、上游/下游 reach、route probe、semantic lens、story、relationship preview 都复用作者写入的节点和关系,不推断运行时影响,也不冒充 blast radius。
这点很重要。很多交互式图表一旦加动画和高亮,就很容易让读者以为“这里真的有实时流量/依赖影响”。Archify 的设计原则是“交互可以帮助阅读,但不能凭空增加事实”。这也是它比单纯 HTML 动画图更可信的地方。
5. Architecture Delta:合并前看架构变化
CHANGELOG.md 里 v2.13.0 引入了 archify compare architecture base.json head.json:它对两份 architecture 快照做 Before / Delta / After,对新增、删除、语义变化、移动和重路由做精确 ID 匹配,并生成 HTML 和机器 receipt。
这个能力比普通“画当前架构图”更接近工程价值:设计评审、PR 评审、文档更新时,真正关心的是“这次变更改了什么”,而不是每次重新看一整张静态图。不过它也明确不声称风险、blast radius、merge safety;它只是对作者写入的快照做差异证明。
6. Repository Evidence Passport:源码证据可绑定,但范围克制
Archify 支持 architecture 图声明公开 GitHub repo、完整 commit SHA,以及每个组件 1–3 个相对源码路径;配合 --repo-root 可以验证 origin、commit、blob 和行号范围。验证通过后,Viewer 里可以打开源码证据。
这是一个很聪明的边界:它不是自动代码索引器,也不是 RAG;它只是让“这张图上的某个节点为什么存在”可以指回一个固定公开提交。对文档、PR 说明、开源项目讲解有价值;对私有仓库或需要深层语义分析的场景,仍然要靠外部代码理解工具。
7. 导出和分享形态完整
README 里列的输出形态包括独立 HTML、PNG、SVG、WebM、1200×630 Share Card、Route Share Card、Reach Share Card。Proof Lab 也收录了 11 个 checked-in 场景、JSON source、named views 和 validation receipts。
如果只是内部临时看图,未必需要这么多导出。但如果要写 README、发 release note、给评审会、做社交预览图,这套导出形态能省很多二次处理。
核心工作流 / 架构
Archify 的工作流可以概括成一条链:
用户描述 / 仓库上下文
→ Agent 选择图类型并生成 Typed JSON IR
→ Archify schema + renderer/layout/composition validation
→ deliver 冻结规格、生成候选 HTML、做 artifact checks
→ 原子替换输出 HTML,并返回 SHA-256/bytes receipt
→ Reader 在单文件 Viewer 中搜索、聚焦、追踪路径、播放故事、导出
注意这里最关键的设计选择:Archify 没有把自动布局当作核心竞争力。 ROADMAP.md 明确说过,Mermaid parser + dagre/auto-layout 的方向被实验证明不够好,已经被杀掉;项目认为“布局判断”本身就是产品的一部分,Agent/Claude 需要在回路里决定层级、留白、主路径和强调关系。
这也解释了它为什么采用 JSON IR 而不是 Mermaid/DOT/GraphML:Archify 的 IR 不只是节点和边,还包含布局、卡片、视图、语言、视觉 preset、边界、证据、导出和 viewer 语义。传统图 DSL 更适合自动排版和长期文本维护;Archify 更像“Agent 生成的交付物规格”。
仓库结构上,核心代码集中在:
archify/bin/:CLI,包括archify.mjs、preview、visual-check、open-artifact。archify/renderers/:五类 renderer、共享模板、校验、几何、证据、品牌标识等。archify/schemas/:五类 JSON schema 与 common defs。archify/examples/:打包 Skill 内的例子和生成 HTML。archify/test/:大量 renderer、viewer、CLI、包装、兼容性测试。docs/与examples/:GitHub Pages、Proof Lab、示例成品、研究记录和图像资产。
我统计到 archify/ 核心 runtime 约 51 个文件、约 22.9k 行文本;测试目录 114 个文件、约 30.4k 行;仓库里还包含大量生成 HTML、截图、GIF、benchmark 和 docs 资产,所以整体体积比核心代码大很多。
安装与使用形态
README 给出的主路径是:
npx skills add tt-a1i/archify -g
临时体验:
npx skills use tt-a1i/archify@archify --agent codex
显式安装到 Cursor:
npx -y skills add tt-a1i/archify --skill archify --agent cursor --global --copy --yes
支持面包括 Cursor、Claude Code、Codex CLI、OpenCode、Raven 手动 ZIP、Claude.ai Skill 上传、Project Knowledge fallback,以及实验性的 DeepSeek Harness 插件。
需要注意两点:
archify/package.json是private: true,核心运行时不是一个普通 npm library 包;README 里的npx skills ...是通过skillsCLI 安装 GitHub Skill。npm 上我验证到skills包当前 latest 为1.5.24。- DeepSeek Harness 插件
@tt-a1i/archify-dsh@0.1.0确实在 npm 可见,描述为 experimental / community integration,要求 Node^22.19.0 || >=24.0.0,不是官方 DeepSeek 产品,也不提供原生 render/validate/deliver tool,只是把 Archify Skill 暴露给 DSH。
本机实测结果
我没有只看 README,做了一轮隔离 smoke test。环境:/tmp/archify 浅克隆,HEAD c6519401f7b91b9d43011657880893b0a8955548;Node v22.19.0,npm 9.2.0。
已通过
node bin/archify.mjs doctor:通过,报告 Node、核心模板、示例 renderer、preview runtime、visual-check runtime、output path safety、guide、compare runtime、standalone validators、五类 renderer/schema/example 全部[ok]。node bin/archify.mjs guide "Show CI/CD checks, approval, deploy, and rollback" --json --lang zh:返回ok: true,高置信推荐workflow/delivery-workflow,并给出中文 prompt。node bin/archify.mjs validate workflow examples/agent-tool-call.workflow.json --quality showcase --json:通过 9/9 artifact checks,compositionshowcase pass,0 errors,0 warnings。node bin/archify.mjs deliver workflow examples/agent-tool-call.workflow.json /tmp/archify-smoke-workflow.html --quality showcase --json:通过,生成 HTML723,038bytes;规格 SHA-2564d3f6c23de2ca7d306e05d0041a9506833bb5a164a2bddc2d1984cf4da3ee90c,artifact SHA-256e083cfe2d35701472374910e922ebdf8b30fdd3d5547d0e2cabd05094d033c66。node bin/archify.mjs check /tmp/archify-smoke-workflow.html:通过,9/9 checks,compositionshowcase pass。node bin/archify.mjs demo /tmp/archify-demo:通过,生成/tmp/archify-demo/archify-demo.html,大小715,216bytes。npm ci:成功安装 10 个 package。npm test:整套测试跑完,1050 tests,1023 pass,0 fail,27 skipped,总时长约 61.8 秒。跳过项主要是需要显式ARCHIFY_CHROME的真实浏览器回归、需要匹配mco-org/mcoclone 的复现项、或需要非 Node 22 环境的特定测试。
未完全通过 / 风险信号
- 我单独对 smoke HTML 运行
node bin/archify.mjs visual-check /tmp/archify-smoke-workflow.html --json,命令失败。回执显示 Chrome 可用(/home/geekinney/.local/bin/google-chrome),但Page.loadEventFired: event timed out after 15000ms,因此 containment/readability/viewerChrome/captures 都没有收集到。这不否定deliver/check的确定性通过,但说明在这台机器上自动浏览器证据链没有跑通,需要后续单独排查 Chrome/visual-check 环境。 npm audit --json报告 2 个 high vulnerability 项:ajv通过fast-uri受影响,fast-uriinstalled version 为3.1.5,相关 advisory 范围包括<3.1.6。这些是 dev dependency / build-time 依赖;Archify 的 runtime validators 是 committed standalone ESM,普通已打包 Skill 不一定暴露同样运行时风险。但对贡献者和 release 构建流程来说,依赖应升级并复查。
成熟度判断
这个项目不像一个周末 demo。几个信号比较强:
- 有明确产品文档:
PRODUCT.md写清用户、目的、反例、设计原则。 - 有长期路线和非目标:
ROADMAP.md不只列功能,还记录了被明确拒绝的方向,例如自动布局、YAML IR、Mermaid parser、WYSIWYG editor、hosted share link、专用移动端。 - 有大量测试:本机完整
npm test0 fail,测试覆盖 schema、renderer、viewer、导出、release identity、package gates、workflow compiler、i18n、source evidence、route/reach/story 等。 - 有真实样例和 Proof Lab:不是只放静态截图,而是链接 JSON source、interactive HTML、composition pass receipt。
- 有贡献和安全流程:
CONTRIBUTING.md对 PR 证据、生成物、视觉证据、包发布、敏感信息都有明确要求;SECURITY.md要求私下报告漏洞。
但它也处在高速变化期。main 是 v2.17.0-dev.1,稳定版是 v2.16.0,open PR 多于 open issue,说明项目还在密集迭代。对生产文档链路来说,应固定 release 或 commit,不要追 main。
和同类工具的区别
Archify 最容易被误解成 “Mermaid alternative”。这个说法只对一半。
- Mermaid / PlantUML / D2 更像“文本 DSL → 自动布局图”:优势是语法稳定、文本 diff 友好、CI 集成容易,适合长期维护的规范图。缺点是复杂系统图容易变成自动排版的毛线团,交互、证据、原子 delivery 不是核心。
- Excalidraw / Figma / draw.io 更像“人手工画图”:优势是视觉自由度和编辑体验,缺点是结构不可验证,关系很难被机器检查。
- Graphviz / ELK / dagre 更像“布局引擎”:适合从图数据自动排版,但不会替你决定讲故事的层级、主路径和工程语义。
- Archify 更像“Agent-authored diagram artifact compiler”:Agent 决定讲什么、怎么摆;Archify 检查这份规格是否合法、可读、可交付,并给读者一个交互式单文件 viewer。
所以它的优势不是替代所有图表工具,而是在下面这种缝隙里特别有用:你已经让 Agent 分析系统,但不信任它随手画出的图;你需要一个可验证、可复现、能交付给人的最终图。
风险、不足和避坑
1. 它不是代码理解引擎
Archify 可以验证 repository evidence 的 commit、路径、blob、行号,但不会自动完成深层代码语义理解。README 里“从真实仓库读出来”的 MCO 案例是一个 checked map,不代表随便给一个仓库就能自动得到正确架构。真正的系统理解仍取决于前置 Agent 的代码阅读能力。
2. 首次出图质量不是必然稳定
benchmarks/ordinary-model-floor/README.md 的措辞很克制:它测的是普通 coding agent 能否第一次就产出可用 Archify 图,并强调 reference fixtures 不是模型证据。保留的 2026-07-26 三模型样本在当前 verifier 下是 8/15 first-pass usable。也就是说,Archify 提供了门禁,但不承诺 Agent 一次就画对。
3. Visual-check 和人眼审查要分开
项目文档在这点上很诚实:deliver 不等于视觉审查,visual-check 也只是自动浏览器证据。本机 smoke 中 visual-check 还因为 Chrome load event timeout 失败。真正要把图放进重要文档或评审,至少要看一遍最终 HTML / PNG,尤其检查中文、长标签、路径遮挡和深浅主题。
4. 全局安装前先试 project-local 或临时路径
npx skills add ... -g 会改全局 Agent Skill 配置。研究或试用阶段更建议先用 skills use 临时体验,或者把 release ZIP 解到隔离目录,用本地 CLI 直接跑 doctor / guide / validate / deliver。
5. 自动更新提醒虽克制,但仍有网络请求
README 说明安装后的 Skill 可能低频 GET https://tt-a1i.github.io/archify/skill-updates/archify/stable.json,只做可选更新提醒,不下载、不安装、不上传版本/项目/提示词/账户信息。需要完全离线或严格无网络时设置:
ARCHIFY_UPDATE_CHECK_DISABLED=1
6. Brand capture 和源码证据会碰到外部资源边界
内置品牌库是本地的;未知站点的 brand capture 才需要显式命令和 digest pin。源码证据目前面向公开 GitHub revision。涉及私有仓库、内部域名、敏感路径时,不要让 Agent 直接生成可分享 HTML 前就把证据链写进去。
7. 生成 HTML 较大
我本地生成的两个 HTML 分别约 715 KB 和 723 KB;仓库里的 showcase HTML 也多在 700 KB 级别。单文件分享很方便,但如果大量嵌入文档或博客,要考虑加载体积和资产管理。
8. 当前 dev dependency audit 有高危提示
npm audit 对 fast-uri / ajv 的 high severity 提示需要关注。它未必影响零依赖打包 Skill 的普通运行时,但会影响贡献者开发环境和 release 构建可信度。建议等维护者升级到不受影响的 fast-uri >=3.1.6 后再把它纳入长期自动化链路。
适用边界与试用条件
适合试:
- 要把代码仓库、系统设计、发布流程、数据管线或状态机变成可交互交付物。
- 你已经有 Agent/Codex/Cursor/OpenCode 在读项目,希望最后输出不是一段说明,而是一张可验证图。
- 需要 README、设计评审、PR 说明、release note 或技术演示的图。
- 愿意接受“Agent 先生成 JSON,工具再验证”的工作方式。
- 能在交付前做人眼复核,尤其是复杂图和中文图。
不适合:
- 只想在 Markdown 里写几行 DSL 自动出图,长期由 CI 维护;这时 Mermaid/D2/PlantUML 更直接。
- 需要 WYSIWYG 拖拽编辑、多人在线协作、hosted diagram service。
- 希望工具自动从任意仓库完整逆向架构;Archify 不是代码索引器。
- 图特别大、需要全自动布局几十上百节点;Archify 强调 6–12 个核心节点和一条主路径。
- 当前环境无法稳定运行 Node 或无法做最终 HTML/PNG 视觉检查。
对老大的价值判断
如果只选一个切入点,我建议把 Archify 当成 Codex/OpenCode 研究某个 repo 后的“最终交付图生成器”,而不是日常所有图表的默认工具。
推荐试用路线:
- 不全局安装,先在
/tmp或单个试验 repo 用本地 clone 跑 CLI。 - 选一个中等复杂度项目,让 Codex 先读代码,再要求它用 Archify 生成 8–12 个核心组件的 architecture 图。
- 强制返回 JSON source、HTML artifact、
validate/deliverreceipt。 - 手工打开 HTML 看可读性,不接受只说“validation passed”。
- 如果第一张图有明显价值,再考虑安装成 Codex/OpenCode project-local Skill;等
fast-uriaudit 和本机 visual-check timeout 问题确认后,再纳入更长期的文档自动化。
它不应该替代 BuJo research 里的 inline SVG 图文报告规则。BuJo 的长文图表更强调“图文交织、Markdown 可读、长期引用”;Archify 更适合生成一个独立互动 HTML,用在项目评审、演示和外部分享。
一句话结论
Archify 是一个很认真、工程边界清楚的 Agent Skill:它把“Agent 画技术图”从随手出图推进到可验证交付物。现在可以试,但应从 project-local / release 固定版本 / 人眼复核开始,不要盲目全局接入。
参考资料
- GitHub 仓库:<https://github.com/tt-a1i/archify>
- README:<https://github.com/tt-a1i/archify/blob/main/README.md>
- 中文 README:<https://github.com/tt-a1i/archify/blob/main/README_ZH.md>
- Skill contract:<https://github.com/tt-a1i/archify/blob/main/archify/SKILL.md>
- Schema reference:<https://github.com/tt-a1i/archify/blob/main/archify/schemas/README.md>
- Delivery contract:<https://github.com/tt-a1i/archify/blob/main/archify/references/delivery-contract.md>
- Product principles:<https://github.com/tt-a1i/archify/blob/main/PRODUCT.md>
- Roadmap:<https://github.com/tt-a1i/archify/blob/main/ROADMAP.md>
- Changelog:<https://github.com/tt-a1i/archify/blob/main/CHANGELOG.md>
- Proof Lab:<https://tt-a1i.github.io/archify/gallery.html>
- Scenario Guide:<https://tt-a1i.github.io/archify/guide.html>
- Stable update manifest:<https://tt-a1i.github.io/archify/skill-updates/archify/stable.json>
- DeepSeek Harness integration:<https://github.com/tt-a1i/archify/tree/main/integrations/deepseek-harness>
- 本机实测:
/tmp/archifyclone atc6519401f7b91b9d43011657880893b0a8955548;doctor、guide、validate、deliver、check、demo、npm ci、npm test、npm audit输出已在本次会话中保存。