Archify 怎么用:让 AI 读一遍项目,交出一张能点、能查、能被机器验过的系统图
Archify 是一个装在 AI 编程工具里的技能(技能=一份写给 AI 看的操作手册,遇到相关的事它才会读进来):你对 AI 说一句「把这个项目画成架构图」,它去读代码,写出一份结构化的说明文件,再由一个写死的程序画成一张独立网页图——画之前要过 9 项机器检查,不过就打回去重画。这篇不教你画图,教你用它把「我看不懂这个项目」变成「我能指着图问问题了」:怎么装、说什么话、图出来之后怎么用,以及最要紧的一件事——它那张「校验通过」的单子,到底能替你担保什么、不能替你担保什么。
📅 更新于 2026-09-30 · 本文校对于 Archify @ v3.0.1(2026-09-28 发布)· 官方源:github.com/tt-a1i/archify
0030 秒速览:三句话,和你的第一个动作
读完这一篇,你能做到三件事:① 判断 Archify 值不值得装进你自己的 AI 工具里;② 知道该说什么话,才不会得到一张「密密麻麻没法看」的图;③ 拿到 AI 交回来的那张图时,知道要问哪几句话才算真的验收过。
如果只记三句话
① Archify 是「给 AI 用的一套画图流程」,不是给你用的画图软件。你不对着它拖框、连线。你只说一句话,AI 去读代码或听你描述,写出一份结构化的说明(源文件=图上的每句话写成的一份清单),然后由一个固定程序把它渲染(把一份数据变成看得见的图形)成一张网页图。全程你只做两件事:说清楚要回答什么问题,以及看结果对不对(§01)。
② 它和「让 AI 直接画一张图」最大的区别,是中间那道机器校验。图不是模型一笔笔涂出来的,是从源文件渲染出来的;渲染完还要过 9 项机器检查(箭头有没有拐直角、标签有没有压住线、连线交叉了几次……)。不通过就打回去改,改完再验。这就是它敢说自己「可验证」的全部底气(§08 会把这份底气拆开给你看)。
③ 但「9 项全过」不等于「这张图是对的」。9 项全是几何与结构检查,没有一项在检查「你画的这两个服务之间是不是真的有这条调用」。图上的事实是否成立,仍然取决于 AI 代码读得准不准、你问得清不清楚。把「校验通过」听成「内容无误」,是这篇里最贵的一个误解。项目自己的 issue 列表里就挂着三个反例(§08)。
接下来 60 秒:你的第一个动作
先确认你手上有没有跑得起来的运行环境。打开终端(就是那个能粘命令的窗口;macOS 叫「终端」,Windows 叫 PowerShell),粘这一条:
node --version
# 看到 v18.x / v20.x / v22.x / v24.x 之类都算合格。
# 本文作者本机是 v24.19.0,npm 12.0.2。
# 如果提示 command not found:去 nodejs.org 下 LTS 版
# (LTS 是「长期维护版」,选它就不会踩到试验版本),一路下一步装完,再回来重敲这一条。
合格之后,就是装它——一条命令,装到你的 AI 编程工具里:
npx skills add tt-a1i/archify -g
# npx 是 Node 自带的一个「临时取来就跑」的命令,装 Node 的时候就有了。
# 敲下去之后它会问:装到哪个 Agent、要不要软链接。
# 软链接(symlink)的意思是「装一份、多个工具共用」,建议选它,方便以后更新。
装完,回到你平时跟 AI 说话的那个窗口(不是终端),把下面这句发给它,就是你今天的第一张图:
用 Archify 画出这个项目的运行时架构。只保留 8–12 个核心部分、一条主路径、
外部依赖和信任边界;支持性细节放进卡片,不要继续增加连线。
① 一台装了 Node.js 18 或更高版本的电脑。Node.js 你不用懂,它只是一个「让命令行程序跑得起来」的运行环境——Archify 的渲染器是一段 Node 程序。检查命令就是上面那条 node --version。本文作者实测 v24.19.0 下 20 项自检全绿。没有 Node,这篇的 §04 整节都用不上。没装的话去 nodejs.org 下 LTS 版(LTS 是「长期维护版」,选它就不会踩到试验版本的坑),一路下一步。
② 一个能敲命令的窗口(终端)。你只需要往里粘两条命令,其余全在聊天窗口里完成。
③ 一个你正在用的 AI 编程工具:Claude Code、Codex CLI、Cursor、OpenCode、GitHub Copilot,或者 DeepSeek Harness。它们才有「技能」这套机制。如果你只用网页版聊天 AI(claude.ai 网页、ChatGPT 网页),§04 里有一条替代路径,但那是降级模式——能不能用还取决于它背后的沙箱(一个受限的运行环境,只允许程序做被批准的事)给不给 Node。
④ 不需要你有代码。没有代码也能用,纯描述就行;有代码时它能去读,而且能给出「这句话来自哪个文件的第几行」的依据。这一点对你格外重要——你的项目多半是有代码、但你自己读不动。
关键数字(先有个量级感)
如果你只有半小时:按你的处境直接跳
| 你现在的状态 | 直接看这里 | 为什么先看这个 |
|---|---|---|
| 第一次听说,想知道它和「让 AI 画图」差在哪 | 01 它是什么 | 不先把「三层分工」弄明白,后面每个判断都会偏 |
| AI 给你的建议你判断不了,想找个抓手 | 02 它解决什么 | 这一节专门对着「缺依据、只能照做」写的 |
| 已经决定要装 | 04 装好 → 05 说什么话 | 十分钟装完,然后知道该说什么 |
| 装好了,但不知道让它干什么 | 03 该不该用 → 05 说什么话 | 十二个现成配方,照抄即可 |
| 图已经出来了,不会用 | 06 图怎么用 | 快捷键、改图说法、怎么发给别人 |
| AI 交回来一张图,我要验收 | 08 校验的边界 | 这一节给你三句能直接问的话 |
| 装不上 / 报错 / 太慢太贵 | 09 踩坑排错 | 六个真实故障,对号入座 |
网上的 Archify 文章基本是三类:README 的中文转述、安装截图教程、以及「一句话生成架构图」的惊艳展示。这篇的起点不一样,它写给懂行业、不写代码的人,所以力气花在三样别处不容易凑齐的东西上:一是本文作者自己在这台机器上把它跑了一遍(doctor 20 项全绿、一次生成 2.4 秒、源文件 3.8 KB 对成品 762 KB、9 项检查的逐项名字、成品里 6 个字体是内嵌的),这些数字没有一个能从 README 抄到;二是四处口径对不上的地方(README 说 Mermaid 自动解析不在范围内、但技能契约又接受粘贴 Mermaid;DeepSeek Harness 插件里捆的是 2.14.0 而仓库是 3.0.1;Hermes 目录页标 2.17.0;量子位一个月前的 star 数和今天差了一倍多),四处都标了出处和判断;三是「校验通过 ≠ 内容正确」这条线——我从项目自己还开着的 issue 里挑出了三个「9 项全过但图是错的」实例。
01它是什么:AI 画的图,凭什么可信
先破一个几乎每个人都会有的错想,不破掉它,后面所有事都会被理解歪。
它不是「让 AI 直接画一张图」
你大概见过那种用法:对 AI 说「给我画一张架构图」,它思考两秒,吐出一张看着挺像回事的图。Archify 的用法不一样——中间多了一道东西。
模型一边「想象」这个系统长什么样,一边直接产出图形。问题不在于它画得丑,而在于它会编:图上多一个不存在的服务、两条线的箭头指得没道理、一个模块被放进了它并不属于的边界框里——而你看不出来,因为你本来就不懂这个系统。[9]
AI 只负责理解和组织——它读你的代码或听你描述,写出一份结构化的说明文件(哪几块、谁连谁、哪条是主路径)。这份说明交给一个写死的程序去渲染和检查;检查不过,程序返回一张「哪里不对、可以怎么改」的清单,AI 照着改,再验一次。AI 编的东西在几何上过不了;程序不会替 AI 圆谎。[1][9]
这个分工看着只是工程上的讲究,但它决定了你能拿这张图做什么。「模型涂的图」你只能看个大概;「程序从源文件渲染出来的图」你可以指着某个框问「这一块对应代码里的哪个文件」——因为有源文件可以对。
一次生成里到底发生了什么
README 里把这条链写成了五个词:生成 → 校验 → 预览(可选)→ 交付 → 迭代。[1] 里面有一步值得你特别留意:交付是「原子替换」——新图先在同目录生成候选文件,只有全部门禁通过,才替换掉原来那份。也就是说,你手上永远不会出现一张「改到一半、坏的」图;要么是上一张好的,要么是新的这张。
它不是这三样东西
Mermaid 是把一段文本渲染成图的工具,图出来基本就是静态的。Archify 的图有交互层:能搜节点、能追上下游、能点亮两点之间的路径、能生成带视角的分享链接。项目 README 自己写了一句划界的话:「Archify 不是通用绘图编辑器,也不是 Mermaid 主题。」不过它能读你现有的 Mermaid——读懂了之后重新写成自己的源文件,不是机械地换个皮。[1][2]
那类工具的核心是编辑器:你自己拖框、自己拉线、自己对齐。Archify 没有编辑器。改图的方式是对 AI 说话:「把鉴权移到左侧」「突出缓存未命中的路径」。手画过图的人知道这省掉了什么——以前挪一个框,后面的连线全得重新捋。
它图上的每个节点和连线,都是写进源文件里的一句话,不是从你的线上环境实时抓回来的。它自己反复强调这一点:交互里的「上下游可达」复用的是作者写下的关系,不把它当成真实的运行时影响分析。量子位那篇报道里也专门写了一句:「它不是一个实时监控系统,也不能自动证明图与线上运行状态完全一致。」[1][8]
那它是什么:一句话定义
Archify 是一个「Agent 技能」:它让 AI 编程工具能把一段描述或一个代码仓库,变成一张独立的网页系统图。图由一份结构化说明文件(源文件)渲染而来,交付前必须通过 9 项机器检查,成品是单个 HTML 文件(HTML 就是网页文件,双击用浏览器打开)——能离线打开、能搜节点、能追踪路径、能导出成图片和视频。
这句话里有四个词值得当场拆开,拆完就没有生词了。
「Agent 技能」是什么
「Agent」在这里就是指会自己动手的 AI 助手——不光跟你聊天,还能读你的文件、敲命令、改代码的那种(Claude Code、Codex CLI、Cursor 都属于这一族)。
「技能」(Skill)是一份写给 AI 看的操作手册 + 一箱配套工具,放在一个约定好的目录里。AI 平时不知道它存在;一旦你说的话跟手册封面上的描述对上了(比如提到「画架构图」),它就把这份手册读进来,照着里面的步骤干活。你可以把它理解成给 AI 装的一本岗位说明书——它不改变 AI 的智力,只改变 AI 在这个特定任务上的做法。[7]
所以装 Archify 不是「装一个软件」,是往你的 AI 工具里放了一份说明书加一套渲染器。
「源文件」和「成品」是什么,为什么你必须知道有这个区分
这是全篇最该记住的一处机制。每次生成,AI 会先产出一份 JSON 文件——JSON 是一种给人看也给程序看的纯文本数据格式,长这样(这是项目自带的一个真实示例的片段):
{
"schema_version": 1,
"diagram_type": "sequence",
"participants": [
{ "id": "user", "label": "User", "sublabel": "browser session" },
{ "id": "api", "label": "API", "sublabel": "request handler" },
{ "id": "redis", "label": "Redis", "sublabel": "cache" }
],
"messages": [
{ "from": "api", "to": "redis", "label": "read cache" },
{ "from": "redis", "to": "api", "label": "miss" }
]
}
看不懂语法没关系,你只需要看出来一件事:它是能读的。「API 向 Redis 读缓存,Redis 回了 miss」——这句话在文件里就是一行,谁都念得出来。
这份文件才是「图的真相」。成品 HTML 只是它的一次渲染结果。这个区分带来三个实际好处:
你说「把 Redis 挪到左边」,AI 改的是源文件里的一条位置信息,别的框不会跟着动。手画过图的人最懂这有多难得。
项目自带一条 compare 命令:拿改动前和改动后两份源文件,生成一张「之前 / 变化 / 之后」的对比图。这就能进代码评审。
同一份源文件可以重新渲染成浅色、静态、或带动态的版本,不必重画——因为几何是从源文件算出来的,不是手工摆的。
五种图,其实就是五种问题
Archify 只做五种图。别把它当成「五种样式」——它是五种不同的问题,选错类型,图再漂亮也答不了你的问题。
| 类型 | 它回答的问题 | 你什么时候会需要它 |
|---|---|---|
架构图architecture | 系统里有什么、归谁负责、彼此怎么连? | 最常见的一种。拿不准选哪个,先选它。[3] |
工作流图workflow | 一件事按什么步骤推进,哪一步会卡住、哪一步要审批? | 发布流程、审批流程、事故处置手册、AI 调工具的过程 |
时序图sequence | 谁先叫谁、顺序如何、最后返回什么? | 接口调用链、登录鉴权、缓存没命中时的回源 |
数据流图dataflow | 数据从哪来到哪去、中间被怎么处理、最后谁消费? | 数据管线、埋点上报、涉及用户隐私字段的流转 |
生命周期图lifecycle | 一个东西有哪几种状态、什么事件让它从一个状态跳到另一个、最后怎么结束? | 订单状态、工单状态、任务重试与超时、一次部署的晋级 |
还是不确定?它自带一条「问它选哪种」的命令,把你想画的场景描述给它,它返回推荐的类型和一份可以直接用的提示词:
node bin/archify.mjs guide "展示带 Redis 缓存未命中的 API 请求" --lang zh
# 本文作者本机实测的输出(节选):
# recommendation.type = "sequence"
# 问题:"谁调用谁、顺序如何、最终返回什么?"
# 适合:"API 文档、请求耗时排查、鉴权评审和缓存回退说明。"
# 别用:"如果顺序不重要,受众只需要稳定的服务拓扑,请用架构图。"
02它替你解决的三个麻烦
这一节是对着一种具体的处境写的:你在互联网行业做事、但不写代码;手上有几个半途停下的项目;AI 给的建议你判断不了,因为它说得头头是道,而你只被专业名词挡在外面,最后只能照做。Archify 不会让你一夜之间看懂代码,但它能在这三处给你一个能抓的东西。
麻烦一:AI 说得头头是道,你没有依据判断
真实场景长这样——AI 看完你的项目,说:
「你这个模块耦合太紧了,建议拆成三层:数据层、业务层、接口层。另外鉴权逻辑散落在三个文件里,应该收敛到一个中间件。」
这几句话对不对?你没有能力判断。你只能点点头,然后看着它动手——这正是你在别处反复遇到的处境。
Archify 在这里的作用不是「替你做判断」,而是把一段你没法反驳的话,变成一张你能指着问的图:
「你说耦合太紧——耦合是什么?紧在哪?我该问什么?」你连追问的入口都没有,因为对方说的是一段没有指涉对象的话。
让它先把当前架构画出来,然后你问:「你说的这三层,对应图上哪几个框?现在它们之间的线是怎么连的?」 问题一旦落到图上,就变成了「图上有没有这几个框」「线是不是这么连的」——这是你能核对的。答不上来,说明那个建议本身还没想清楚。
要诚实地说清楚:这不等于你获得了技术判断力。它只是把你从「没有抓手」变成「有一个抓手」。但对你现在的处境,这一档差别很实在——它把「只能照做」换成了「至少能问」。
麻烦二:半成品项目,连你自己都说不清里面有什么
这是 Archify 最贴合你的一处。项目 README 的第一句卖点是「不需要绑定代码库」,而你的情况恰好相反:你有代码库,但你读不动它。
停下来的项目最难受的地方不是「没做完」,是回去的时候不认识它了。隔了六周再打开,满屏文件,你忘了当初为什么这么分、哪两块是连在一起的、哪个是你当时正在纠结的地方。
这时候让 AI 读一遍仓库、出一张总览图,你面对的就不再是「一整个看不懂的项目」,而是:
图上有 12 个框。你能认得出来的大概有五六个;剩下那六七个名字陌生,但它们在图上是有位置的——你能看出谁挨着谁、谁只跟一个东西说话、谁连着一堆东西。于是你的问题从「这项目怎么回事」缩成了「这个框是什么,为什么它连着这么多东西」。
这是能用一句话问出去的问题。而「这项目怎么回事」不是。
麻烦三:要讲给别人听
给同事对齐、给老板汇报、给外包交代——你现在大概是用一段话,或者一堆截图。Archify 的成品是一个 HTML 文件:发过去,对方双击就能开,不需要装任何东西,也不需要联网。
更好用的是带视角的链接。它的地址栏支持这样一串参数:
图.html#focus=api # 打开就聚焦在 api 这个节点上
图.html#focus=api&reach=downstream # 聚焦 api,并点亮它下游的所有东西
图.html#route=web~db # 点亮从 web 到 db 的这条路径
# 把这样的链接发给别人,他点开看到的就是你想让他看的那个视角,
# 不用再附一段解释。这是它 README 里列的「稳定链接」。
它解决不了什么(三条硬边界)
不写清楚这一节,你迟早会把期待放错地方。
| 它做不到 | 为什么,以及这个边界是谁说的 | 你该换成什么 |
|---|---|---|
| 证明图和线上真实情况一致 | 图上的内容全部来自写进源文件的事实,不是从你的服务器采集的。量子位报道原话:「它不是一个实时监控系统、也不能自动证明图与线上运行状态完全一致。」[8] | 要真实状态,用监控系统(Grafana、云厂商控制台)。Archify 只能陪你做「设计意图」这一层。 |
| 替你判断一次改动安不安全 | 它的对比功能(Before / Delta / After,也就是「改动前 / 变化 / 改动后」)明确写着只读:不推断影响、不推断风险、不推断能不能合并。图只列出「作者写了什么变化」。[1][5] | 把它当「变化清单」,不当「体检报告」。结论仍要人下。 |
| 又快又便宜 | 这一点它有真实用户记录的代价:项目 issue #22「画个架构图消耗 minimax m3 几十兆 token」(token 是 AI 处理文字和计费的计量单位)、#66「整个过程很慢,而且 token 消耗很大」——两条都已被关闭,但量子位 9 月的报道里仍提到用户反馈「消耗额度有点大」。[8][11] | 把范围压小(见 §09 第 4 条)。它是一种「值得花一次的投入」,不是随手一点的按钮。 |
03什么时候该用它、用哪一种
它的每一次生成都要花掉模型不少力气,所以「该不该用」比「怎么用」更值钱。这一节给一张对照表:你想问的问题长什么样 → 该用哪种图 → 该说哪句话。
十二个现成配方:照抄就行
Archify 内部带 12 个「配方」——针对 12 种常见场景,各自给出「适合什么、别用在什么上、提示词里必须出现什么」。下表是从它本机的配方文件里导出的中文原文,「说什么话」那一列可以直接复制给 AI。[1]
| 你的问题 | 用什么 | 说什么话(可直接复制) |
|---|---|---|
| 系统里有什么、归谁负责、彼此怎么连 | 架构图 | 分析这个仓库,然后用 Archify 生成高层系统架构图。展示 8–12 个核心运行时组件、一条主要请求或数据路径、外部依赖、归属或信任边界;支持性细节放进卡片,不要继续堆连线。 |
| 每个东西跑在哪里、哪些连接跨了边界 | 架构图 (部署与归属) |
用 Archify 绘制生产部署拓扑。按区域、网络、集群和负责人分组,展示工作负载与有状态服务,并标注每一种跨边界机制。不要编造部署事实,不确定的区域要明确标出。 |
| AI 怎么规划、获批、执行、重试、汇报 | 工作流图 | 用 Archify 工作流模式解释这段智能体工具调用。把用户界面、Agent Runtime、策略边界、异常处理、工具执行和可观测性分成泳道;突出成功主路径,并明确展示审批、重试、阻塞和证据路径。 |
| 一次改动怎么安全地从提交走到上线 | 工作流图 | 用 Archify 工作流模式绘制从代码提交到生产发布的流程。拆分开发者、CI、审批、环境和异常泳道;标出阻断检查、冒烟测试、负责人和回滚路径,并保留一条一眼可见的成功主路径。 |
| 出故障时按什么步骤发现、分诊、恢复 | 工作流图 | 用 Archify 工作流模式把事故处置预案画成响应者泳道。展示发现、分诊、缓解、升级、沟通、回滚和恢复验证;把决策门与操作分开,并让缺失的负责人清晰可见。 |
| 谁调用谁、顺序如何、最后返回什么 | 时序图 | 用 Archify 时序模式展示从调用方到最终响应的完整请求。包含鉴权、缓存命中或未命中、持久化回退、返回消息,以及异步 Trace 或事件上报;消息标签保持简短,顺序必须明确。 |
| 请求返回之后,后台还在发生什么 | 时序图 | 用 Archify 时序模式解释这段异步往返链路。展示初始确认、入队或调度、后台处理、回调或轮询、重试与超时,以及调用方何时能观察到最终一致结果。 |
| 数据从哪来、怎么变、最后被谁消费 | 数据流图 | 用 Archify 数据流模式梳理这段数据血缘。为每个数据资产和转换命名,展示用户同意或数据分类边界,区分流式与批处理路径,并标明存储和下游消费者;所有数据流都必须有标签。 |
| 哪些事件经过哪些队列、谁在消费、失败了去哪 | 数据流图 | 用 Archify 数据流模式绘制这段事件流拓扑。命名生产者、事件、Topic、有序处理器、消费者组、状态存储、重放路径和死信队列;只有在证据充分时才标注归属和投递语义。 |
| 一个东西有哪几种状态、怎么结束 | 生命周期图 | 用 Archify 生命周期模式建模这个对象。分开主进度、等待或中断状态和终态;用事件标注转换,并在真实存在时展示重试、取消、超时、成功和失败,不能隐藏任何结束方式。 |
| 一次发布现在处于什么状态、下一步可能发生什么 | 生命周期图 | 用 Archify 生命周期模式建模部署对象。展示排队、构建、验证、等待审批、晋级、回滚以及所有终态,并标注允许每次状态转换的事件和守卫条件。 |
| 已经有一张图,但它溢出、重叠、线穿过框 | 沿用原类型 (布局修复) |
用 Archify 修复这张现有图,保留图表类型、拓扑、有意义的标签和表现设置。按顺序修:schema 错误 → 节点重叠或越界 → 线穿过节点、端点方向错 → 交叉与绕行 → 标签间距。每次修改后运行 validate,依据诊断里的 code 和 subject,每次只改一项有依据的几何问题。 |
这些词只出现在要你复制的那段话里,照抄不影响使用;但知道它们指什么,你才能判断哪个配方适合你。
主路径 / 信任边界:主路径=这个系统最常走的那条路,其他都是岔路;信任边界=「哪些算系统内部、哪些算外部」,跨过这条线的地方要特别标出来。
泳道:流程图里按角色分成的横条或竖条,每条道只放这个角色的动作(开发者一条、CI 一条、审批一条)。
CI:持续集成——每次有人提交改动,机器就自动跑一遍检查的流水线。
冒烟测试:部署完之后先跑几条最关键的用例,确认「没冒烟」再继续。这个词来自电路板通电先看冒不冒烟。
回滚 / 晋级:回滚=退回到上一个能用的版本;晋级=从测试环境推进到正式环境这一步。
异步 / 最终一致:异步=发出去就先返回、结果稍后再来;最终一致=中间一小段时间两边数据可能对不上,但最后会一致。
Trace(轨迹):一次请求经过好几个系统时留下的同一条记录,用来事后追它走了哪条路。
Topic / 消费者组 / 死信队列:消息系统里的三个词。Topic 是按主题给消息分的通道;消费者组是一组一起读同一个通道的程序;死信队列是处理失败的消息最后被丢进去的地方。
数据资产 / 数据分类边界:前者指「一份具体的数据」,后者指「哪些数据算敏感、用之前要先拿到用户同意」。
分诊:先判断严重程度,再决定谁去处理——医院急诊台那件事。
有状态服务 / 部署拓扑:前者是「自己存着数据、不能随便复制一份就完事」的服务(数据库就是);后者是「每个东西跑在哪台机器、哪个机房」的全局布局。
Agent Runtime:真正在跑这个 AI 助手的那段程序——你说话之后,是它在决定先干什么、调用哪个工具。
可观测性:让你能从外面看出一个系统内部正在发生什么的那些手段,最典型的是日志、指标、轨迹。
schema / validate / subject:schema 是源文件的格式规定,schema 错误=源文件的写法不合规定;validate 就是它自带的那条校验命令;诊断里的 code 是问题类型的编号、subject 是出问题的那一个对象。
把上表所有提示词抽象出来,骨架只有一句话:
「用 Archify 画 <什么东西>。只保留 <N> 个核心部分,突出 <一条主路径>,标出 <边界 / 外部依赖>,其余放进卡片。」
本机导出的 12 条推荐提示词,几乎每一条都是这个形状。真正起作用的是后半截——「只保留 N 个」和「其余放进卡片」。博客园上一位真实用户的实测总结是:「第一次让它扫仓库,一口气让它画了所有组件,出来的图密密麻麻没法看。后来在提示词里写清楚『8 到 12 个核心组件、一条主路径、细节放卡片里』,效果立刻不一样。」[9]
什么时候别用它
| 你的情况 | 为什么别用 | 换什么 |
|---|---|---|
| 只想要一张一次性的示意图,画完不改 | 它的价值有一大半在「源文件可改、可对比、可重渲染」上。一次性用完,你为这套机制付的成本收不回来 | Excalidraw、ProcessOn、甚至纸上手绘 |
| 你想要的是「把 Mermaid 变漂亮」 | 这是它明确划到范围外的事——README 的「参考与边界」一节写着:自动 Mermaid 解析、通用自动布局、托管分享服务、可视化编辑器都不在产品范围内[1] | Mermaid 主题库 |
| 你要看系统现在的真实状态 | 它图上的内容是「作者写下的」,不是采集来的。它自己也不声称能证明与线上一致 | 监控系统 / 云控制台 |
| 你还没想清楚「这张图给谁看、看完他该得出什么结论」 | 这是最容易白花钱的一条。范围不清,AI 就会把知道的都画上,然后你得到一张密密麻麻的图,重来一次又花一遍钱 | 先在纸上写一句话:这张图要给谁看,看完他要能回答哪个问题 |
| 你只有网页版聊天 AI,没有编程工具 | 网页版走的是「上传压缩包 + 提示词驱动」的降级路径,而且取决于沙箱给不给 Node 环境[1] | 先装一个 AI 编程工具(Claude Code / Codex CLI 都是命令行里能跑的),或接受降级能力 |
04装好它:一条命令,三个前置
前置一:Node.js 是什么,为什么它必须先在
Archify 的渲染器是一段用 JavaScript(一种编程语言)写的程序,要靠 Node.js 才能在终端里跑起来。Node.js 你不用懂——它就是一个让这类程序离开浏览器也能运行的环境,装一次,以后很多工具都靠它。
node --version
npm --version
# 本文作者本机:v24.19.0 / 12.0.2,doctor 自检 20 项全绿。
# 要求是 Node.js >= 18(项目 doctor 命令会明写这一条)。
# 没装:去 nodejs.org 下 LTS 版(长期维护版);
# macOS 上也可以用 brew 装(brew 是 macOS 上的软件安装命令行工具):brew install node。
前置二:一个 AI 编程工具
Archify 是技能,技能要有地方挂。你可以先看一眼自己电脑上有没有现成的技能目录(有目录说明工具已经装好了):
ls ~/.claude/skills # Claude Code 的全局技能目录
ls ~/.agents/skills # Codex CLI 的全局技能目录
ls ~/.config/opencode/skills # OpenCode 的全局技能目录
# 任何一个存在(哪怕里面是空的),对应的工具就能装 Archify。
# 本文作者本机:前两个都在,里面各有几十个技能;OpenCode 目录不存在。
前置三:一个终端
就是那个能粘命令的窗口。整件事里你只需要往它里面粘两条命令,其余全在聊天窗口里完成。
装:一条命令
# 推荐:交互式安装,会让你选装到哪个 Agent、要不要软链接
npx skills add tt-a1i/archify -g
# 想省掉所有问答、一条命令装到指定工具(这里以 Claude Code 为例):
npx -y skills add tt-a1i/archify --skill archify --agent claude-code --global --copy --yes
# 只想临时试一次、不落到硬盘上:
npx skills use tt-a1i/archify@archify --agent codex
这里的 npx 是 Node 自带的一个「临时取来就跑」的命令;skills 是一个开放的技能生态命令行工具(npm 上的包名就叫 skills,本文校对时最新版是 1.7.0,来自 vercel-labs)。-g 是「装到全局」——意思是这个技能对你所有项目都生效,而不只是当前这个文件夹。[12]
Archify 项目自己的开发说明里要求:装之前先做一次「先看清楚源里有什么」的检查——
npx -y skills add tt-a1i/archify --list --full-depth
它应该列出恰好一个名叫 archify 的技能。多于一个或一个都没有,就停下来别装——这是项目自己给出的安全前置。[10]
装到哪儿:按你的工具选
| 你用的工具 | 装在哪 / 走哪条路 | 能力 |
|---|---|---|
| Claude Code | ~/.claude/skills/(全局)或项目里的 .claude/skills/ | 完整:渲染 + 校验 + 交付 |
| Codex CLI | ~/.agents/skills/ 或项目里的 .agents/skills/ | 完整 |
| OpenCode | ~/.config/opencode/skills/、.opencode/skills/ 或 .agents/skills/ | 完整 |
| Cursor / GitHub Copilot | 仍用 skills add,只是把 --agent 换成 cursor 或 github-copilot | 完整 |
| DeepSeek Harness | dsh plugin --profile web add @tt-a1i/archify-dsh@0.1.0 | 完整,但捆的是旧版技能,见下方第 2 条坑 |
| Hermes Agent | hermes skills install skills-sh/tt-a1i/archify/archify -y | 社区集成,不是 Hermes 官方产品 |
| claude.ai 网页版 | 设置 → Capabilities → Skills 里上传它自带的 archify.zip | 降级:能不能跑取决于沙箱给不给 Node |
| Claude 项目知识(Project Knowledge) | 把 archify.zip 上传到项目里 | 降级:走「提示词驱动的架构图」回退路径 |
装完怎么确认:两条自检命令
装好之后,进到 Archify 那套文件所在的目录(就是技能装进去的那个文件夹),跑这两条:
node bin/archify.mjs doctor # 检查环境与文件是否齐全
node bin/archify.mjs demo /tmp/archify-demo # 生成一套示例图
本文作者本机实测输出:doctor 打印 20 行 [ok],从 [ok] Node.js v24.19.0 (requires >=18) 一路到五种渲染器全部就绪,最后一行是 Archify is ready.。看到这一行,就说明装好了。
因为这两条命令把「装错了」和「AI 用错了」两种故障分开了。如果 doctor 全绿,那么后面图出不来一定是提示词或环境的问题,不是安装的问题——这一句能替你在 §09 省掉一半排查时间。
装的时候会踩的三个坑
npm install -g archify 装不上——这不是你的错它没有发布到 npm 仓库。项目里有一条还开着的功能请求(issue #408),标题就叫「Publish archify to the npm registry」。所以你必须走 skills 命令行、或者 DSH 插件、或者手动放压缩包。[11]
@tt-a1i/archify-dsh@0.1.0 的说明里写得很直白:它捆的是 Archify 技能 2.14.0,而仓库的稳定版是 3.0.1(2026-09-28)。用它能跑,但你拿不到 3.0 那一版重做的阅读布局、以及 3.0.1 的交付提醒等改动。插件说明同时提到,一个面向新版 DSH 的 0.2.0 还在准备中、尚未发布。这不是程序缺陷,是打包版本滞后;知道这一点,你才不会拿旧版的行为去对照别人的新版教程。[6]
装完之后,它带一个低频的「有新版本了」检查:检查成功之后,下一次通常约 24 小时后才再问一次;失败的话按 6 小时、然后 24 小时退避重试。它只显示提醒,绝不自动下载或安装,而且不发送你的本地版本、用的哪个 Agent、项目数据或输入内容——只访问一个固定的版本说明文件。不想让它查,就在环境变量里设 ARCHIFY_UPDATE_CHECK_DISABLED=1。[1]
05说什么话让它开工
装好之后最现实的问题是:我到底该说什么?这一节给四种起手方式、一个句式骨架,和一次生成会在硬盘上留下什么。
四种起手方式
| 方式 | 你手上需要有什么 | 适合什么时候 |
|---|---|---|
| 纯描述 | 什么都不用。会打字就行 | 系统还没写、只有想法;或者你只想先看看某条链路长什么样。README 原话:「不需要绑定代码库」 |
| 粘一段 Mermaid | 手上有现成的 Mermaid 文本 | 别人发给你一张 Mermaid 图,你想让它变成能点、能搜的版本 |
| 让它读仓库 | 电脑上有一份代码(哪怕没写完) | 你最可能用到的这一种:想知道这个项目里到底有什么 |
| 修一张已有的图 | 之前生成过,或别人给过你源文件 | 图太挤、线穿过框、标签压住了内容——用第 12 号配方(布局修复) |
四条可以直接复制的开场白
【1】有代码,要看系统总览(最常用)
分析这个仓库,然后用 Archify 生成高层系统架构图。展示 8–12 个核心运行时组件、
一条主要请求或数据路径、外部依赖、归属或信任边界;支持性细节放进卡片,
不要继续堆连线。生成后告诉我源文件和 HTML 的完整路径。
【2】没有代码,只有一段想法
用 Archify 画出一个网站的请求流程:浏览器请求 API,API 优先读取 Redis,
缓存未命中时查询 PostgreSQL 并回填缓存。
【3】要讲给别人听(一张有顺序的流程图)
用 Archify 工作流模式绘制从代码提交到生产发布的流程。拆分开发者、CI、审批、
环境和异常泳道;标出阻断检查、冒烟测试、负责人和回滚路径,
并保留一条一眼可见的成功主路径。
【4】图已经有了,但太挤/线穿过框
用 Archify 修复这张现有图,保留图表类型、拓扑、有意义的标签和表现设置。
按顺序修:schema 错误 → 节点重叠或越界 → 线穿过节点、端点方向错 →
交叉与绕行 → 标签间距。每次修改后运行 validate,依据诊断里的 code 和 subject,
每次只改一项有依据的几何问题。
① 报数字,别报形容词。「8–12 个核心组件」有效,「简洁一点」无效。数字是它做取舍的依据。
② 明确说「其余放进卡片」。卡片是图旁边的说明区。你不说这句,AI 倾向于把每个细节都变成一条连线——这是新手最常得到的坏结果。
③ 要一句「哪些是你推断的」。读代码时它难免要推断。让它把推断的部分标出来,你才知道该核哪里。这一句在 §08 还会再出现,是验收的核心。
一次生成会在硬盘上留下什么
技能手册里规定了一个固定做法:每个新请求单独开一个文件夹,名字里带类型和时间戳。[2]
.archify/
└── architecture-my-project-20260930-171500/
├── candidate.json ← 源文件:图上的每句话都在这里
├── my-project.html ← 成品:双击就能开的那张图
├── my-project.delivery.json ← 交付回执(记录这次交付结果的清单)
└── my-project.finalize-summary.json ← 校验摘要
为什么你要在意这个目录结构:它决定了「改图」这件事的性质。因为每个版本有自己的文件夹,你上次生成的那张图不会被覆盖掉。改错了,上一个版本还在原地。这也解释了为什么迭代很便宜——AI 改的是同一份 candidate.json,不是从头重画。
它的集成说明里写着:由命令生成的文件不会自动出现在网页版的「产物文件」栏里。所以你要让 AI 在收尾时明确回报两个完整的工作区路径——源文件 JSON 和 HTML 成品的路径,然后你自己从工作区里打开它们。[6]
06图出来之后:看、改、交出去
它不是一个静态图片,而是能点的
双击打开那个 HTML,你会看到一个带工具栏的页面。下面这些键是项目文档里列的正式快捷方式,都值得试一遍。[1]
| 按什么 | 发生什么 | 什么时候用它 |
|---|---|---|
| / | 搜索并聚焦到某个节点 | 最常用的一个。你记得某个模块名,直接搜它 |
点节点 → Upstream / Downstream(上游 / 下游) | 点亮它上游或下游的全部关系 | 想知道「改了它,谁会被牵扯到」 |
| R | 探查两点之间的有向路径,逐站检查 | 「从浏览器到数据库,中间到底过了几道」 |
| L | 对比一到两种角色(透镜) | 「所有数据库分别被谁连着」 |
| M | 打开全局雷达图 | 图太大、先看整体形状 |
| F | 进入演示模式 | 要投屏讲给别人听 |
| S / T | 循环切换视觉风格 / 深浅主题 | 截图要放进白底文档时切浅色 |
| E | 打开导出菜单 | 见下一节 |
| + - 0 | 放大 / 缩小 / 复位 | 节点详情看不太清时(这正是量子位报道里读者提的一条意见) |
| ? | 打开内置的图解指南 | 忘了某个键干什么 |
改图:继续说人话就行
增加 Redis
把鉴权移到左侧
突出回滚路径
切换浅色主题
把「用户中心」这个名字改成「账号服务」
技能手册对外的说法是:它保留源文件,只修改相关部分。所以这些改动是局部的——挪一个框不会牵动其他框。这是它和个人画图工具最不一样的地方。[1][2]
交出去:四种东西,四种场合
| 你要什么 | 怎么拿 | 适合 |
|---|---|---|
| 那个 HTML 文件 | 直接发文件。对方双击就开,不需要装任何东西、不需要联网 | 给同事、给外包、放进项目文档 |
| 一张图(PNG / JPEG / WebP) | E 打开导出菜单,选图片格式 | 贴进 PPT、聊天窗口、周报 |
| 矢量图(SVG) | 导出菜单里选双主题 SVG | 要印刷、要放进设计稿、要无损放大 |
| 一段动态视频(WebM) | 导出菜单录制带动态的版本 | 演示「一次请求是怎么走的」 |
| 一张分享卡 | 先用 R 解析出一条路径,再 E → Route Share Card;分辨率固定 1200×630 | 公众号封面、PPT 插图——尺寸刚好是社交平台的卡片尺寸 |
关于「离线可用」这件事,本文作者做了一次实测,结论比 README 的说法更具体:
把成品 HTML 拆开看:里面有 6 个字体,是以 base64 直接焊进文件的(base64 是一种把二进制文件转成纯文本的编码方式,这样字体就不用单独发出去)。文件里出现的全部外部网址只有三类:一条是图形格式规范里写死的固定标识、两条是字体许可证说明的链接。没有一个资源是要联网去取的。
所以「发给别人、他自己打开就能用」是真的,不是近似说法。代价也在这里:3.8 KB 的源文件渲染出 762 KB 的成品——多出来的体积主要就是字体和交互代码。这是它「便携」的账单。
你不写代码,怎么判断这一次生成成功了
项目自己的技能手册规定,AI 收尾时必须回报五样东西:成品文件的绝对路径、图类型、校验摘要、规格与成品的回执、浏览器证据状态和真实的视觉复核状态。手册里还有一句硬话:不许把非零的退出码说成成功。[2]
所以你可以直接用下面这句话验收——它把一句含糊的「好了」变成一个有明确答案的问题:
这次校验是 9 项全过、还是只过了前 4 项?把 composition 里的
errors 和 warnings 各是多少报给我。另外,源文件和 HTML 的完整路径分别是什么?
# composition 是回执里「构图检查」那一段的字段名,
# errors / warnings 是它数出来的错误条数和警告条数。
07最小例子:拿一个停了六周的项目走一遍
下面这一次完整的走查,用的场景就是你的处境:一个六周没碰的副业项目,代码还在,但你已经说不出它里面有什么了。
第 0 步:先认一件事
第一次不要问「帮我把我的项目画出来」。问题太大,AI 只能把知道的全画上,你会得到一张密密麻麻、什么都看不清的图,然后还得重来一次——重来一次就是再花一次钱。这是博客园那位实测者踩过的坑,也是 §02 里那条「投入不小」的代价最容易被浪费的地方。
先花两分钟回答一句话:
这张图给谁看?他看完之后要能回答哪一个问题?
这次我们的答案:「给我自己看。看完我要能回答——这个项目当初主要分成哪几块,它们是怎么连起来的。」
第 1 步:把范围钉死,然后把话说给 AI
在项目目录里打开你的 AI 工具(或者是让它进到这个目录),把这句发过去:
分析这个仓库,然后用 Archify 生成一张高层运行时架构图。
只保留 8–12 个核心组件,突出一条主要路径,标出外部依赖与信任边界。
支持性细节放进卡片,不要继续增加连线。
哪些部分是你从代码里读出来的、哪些是你推断的,生成后分别告诉我。
最后回报源文件(JSON)和 HTML 成品的完整路径。
这段话里每一句都有用:「8–12 个」给了它取舍的依据;「一条主要路径」逼它分主次;「细节放进卡片」防止它用连线淹没你;「哪些是推断的」给了你验收的抓手;「回报完整路径」解决你找不到文件的问题。
第 2 步:等它干完,然后核这三样
一个源文件(candidate.json 之类,放在 .archify/ 下的时间戳文件夹里),一个 HTML 成品。两个都有,说明它走完了正常流程。只给了一个 HTML、没有源文件,说明它可能绕过了那套「先写说明再渲染」的路子——这值得追问一句。
问它:「9 项检查过了几项?构图检查(回执里叫 composition)的 errors 和 warnings 各是多少?」合格线在项目自己的交付契约里写得很死:9 项全过、0 错误、0 警告。只有 4 项过了,那是「基本校验」,不是「正式验收」——这句话是交付契约的原话。[5]
如果它说「这几条关系是我推断的」,记下来——这就是你唯一需要花时间去核的地方。剩下的部分有代码依据,你可以先信。如果它说「全都是代码里读出来的」,那就追一句:「给我看其中三条关系分别对应哪个文件的哪一行。」它能给出来,说明它确实读过;给不出来,你该降低对这张图的信任——这正是 §08 要讲的事。
第 3 步:打开图,做三件小事
# ① 按 / 搜一个你记得的模块名,看它是不是在图上
# 在 → 图至少没漏掉你知道的东西;不在 → 直接问 AI「为什么没有 X」
# ② 点中它,看 Upstream / Downstream
# 这里是你最容易发现问题的地方:图上说它连着某样东西,
# 但你记得不是这样 —— 记下来,这就是你的第一个「可核对的问题」
# ③ 按 R,试着点出一条从入口到数据库的路径
# 走不通的地方,往往就是当初没做完的地方
第三步最有价值的地方在于:你不再需要「读懂代码」才能发现问题,你只需要「记得当初大概是怎么回事」。记得起来的部分和图上对不上,那就是问题。
第 4 步:本文作者实测的那一次,以及它失败的地方
本文作者在自己的机器上把这条链路真跑了一遍。结果里有一条,比所有「一切顺利」的教程都有用:
本文作者对项目自带的一份示例源文件(3.8 KB)跑完整交付命令,耗时 2.4 秒,产出 762 KB 的成品 HTML。四道闸里,前三道(基础校验、交付、严格成品检查)全部通过;第四道「浏览器检查」失败了,退出码是 1。
失败原因跟图毫无关系:它要启动一个真实浏览器去量尺寸,而本文作者当时的环境不允许浏览器启动自己的沙箱——诊断里写的是 Failed to initialize sandbox、Operation not permitted。
关键的事实是:成品 HTML 已经好好地躺在输出目录里了。因为四道闸是按顺序走的,交付这道闸在浏览器闸之前就过了,候选文件已经被替换成正式成品。所以当时的情况是「图是好的、退出码是 1」。
这条经验的意义:如果哪天你也遇到它最后报错、但图已经生成,先别慌着骂它——看一眼那条诊断指向的是「环境问题」还是「图的问题」。区分的方法很简单:诊断里如果出现 Chrome、sandbox、browser 这类词,那是环境;如果出现 node、route、label、crossing 这类词,那是图本身。项目文档里也把这种情况单独列了一档:环境问题可以稍后针对同一份文件重试,不必重画。[5][13]
第 5 步:验收完成的样子
走完这一遍,你手上应该有两样东西:一张能点开的图,和一句话——「这个项目主要分成这几块,中间那条主路径是从哪到哪」。
如果你现在能对着一个没读过这个项目的人,用三五句话说清楚「它大概是怎么回事」,那这一步就完成了。说得出来 = 这篇讲的东西真的落地了。
08机器校验挡得住什么、挡不住什么
这一节是整篇里最该慢慢读的一节。因为「可验证」是 Archify 最大的卖点,而卖点被理解过头的时候最危险。
那 9 项检查,一项一项是什么
本文作者把 9 项检查的名字直接从它本机的检查命令里导了出来。它们全部是几何与结构层面的:[13]
| 检查项 | 它在管什么(大白话) |
|---|---|
single_svg | 整张图只有一个画布。多个画布会出各种错位 |
finite_svg | 画布尺寸是个正常的有限值,不是异常大或算不出来 |
orthogonal_arrows | 箭头走直角,不是斜着乱飞(这是「好看」的基础) |
label_route_clearance | 文字标签和连线之间留出了空隙,没压在一起 |
relationship_crossings | 连线互相交叉的次数在允许范围内 |
relationship_corridors | 多条线并排走的时候,没有挤成看不清的一团 |
container_border_runs | 线穿过分组边框(比如「区域」「安全组」那种大框)的次数 |
route_rhythm | 一条线的转弯节奏是否合理——不要一路小碎步,也不要绕远路 |
legend_clearance | 图例没有挡住图的内容 |
看完这份清单,你自己就能得出那个结论了:
它们全部在回答「这张图画得别扭不别扭」。没有一项在回答「你画的这个服务和那个服务之间,是不是真的有这条调用」。
这不是 Archify 偷懒——「事实对不对」本来就不是几何检查能判的。你给它一份源文件说「A 调用 B」,它只能检查 A 和 B 的框有没有叠在一起、那条线有没有穿过 C。它没法知道 A 到底调没调 B。而这正是这篇里最需要你明白的一件事。
三个真实的反例:9 项全过,图却是错的
这个说法不是我推的。Archify 项目自己的 issue 列表里就挂着这样的例子——下面三条在本文校对时都还是开着的:[11]
两条方向相反、共用同一条走道的连线,渲染出来叠成了一条线。你看到的是「A 和 B 之间有一条线」,实际上源文件里写的是两条。而交付回执照样 9/9 通过。
连线上的文字标签跑到了画布外面,看不全。回执依然干净——因为「标签净空」检查的是标签与线的间距,不是标签与画布边界的关系。
一个并不属于某个分组框的组件,被渲染进了那个框里。这在视觉上会直接误导你——你会以为它属于那块地盘。而在开启「部署与归属」工程画像时,这类问题本该被拦住。
还有一条不同性质的,也值得知道:#590——大工作流会让校验报告本身超出缓冲区,导致校验直接失败。这不是图画错了,是工具在规模变大时自己绊倒。本文校对时它同样开着。也就是说:如果某天你对一个很大的系统跑校验、得到一条看起来莫名其妙的失败,先怀疑规模,别怀疑自己。[11]
项目自己怎么说这件事
它没有藏着。交付契约里有两句话,本文直接翻译过来:[5]
① 「一份只有 4 项成品检查的回执,是基础校验,不是正式验收:要正式验收,必须 9 项全过、零构图错误、零警告。」
② 「确定性的诊断仍然不等于视觉复核。」——在同一节里还有一句更直白的:「通过一道闸,永远不蕴含通过了另一道闸。」
翻译成人话:机器能替你排除的是「图坏掉了」;机器不能替你排除的是「图讲错了」。前者它做得比人可靠得多;后者从头到尾都是你的活。
所以验收该问什么:三句可以照抄的话
【问机器那部分】
这次校验是 9 项全过还是 4 项?构图检查(回执里叫 composition)
里 errors 和 warnings 各是多少?
【问事实那部分】
图上这几条线,分别对应代码里的哪个文件、哪一行?请你逐条列出来。
(有源码依据时,节点上会出现 SRC 标记——SRC 是 source(源码)的缩写——
并且能点开到固定版本的文件与行号。)
【问责任那部分】
这张图里哪些是你从代码里直接读出来的、哪些是你推断的?把推断的标出来,
或者直接在图上把它们区分开。
第三句是这三句里最值钱的。因为它把「我信不信这张图」这个没法回答的问题,换成了「哪几处需要我另行确认」这个能执行的清单。[2]
09上手之后才知道的坑
下面六个问题,前三个你一定会遇到,后三个是该提前知道的。都来自真实记录,不是假设。
坑 1:装不上 / 敲了命令提示找不到
| 症状 | 原因 | 怎么办 |
|---|---|---|
npm install -g archify 报 404 | 它没发布到 npm 仓库(issue #408 仍开着) | 改用 npx skills add tt-a1i/archify -g |
npx 这个命令本身找不到 | Node.js 没装,或装了但没进系统路径 | 重装 nodejs.org 的 LTS 版,装完重开终端再试 |
| 命令卡在下载不动 | 公司网络或代理挡了 npm | 换网络;或让 IT 放行 npm(npm registry 就是下载这些包的官方仓库) |
doctor 报一堆红 | 多半是在错误的目录里跑的——它找的是同目录下的 bin/ | cd 进技能安装目录再跑;用 pwd 确认自己站在哪 |
坑 2:AI 交回来的图密密麻麻,什么也看不清
这是最高频的一条,而且原因百分之百在提示词上。真实用户的总结原话:「画真实项目的时候别贪多。第一次让它扫仓库,一口气让它画了所有组件,出来的图密密麻麻没法看。」[9]
对策就是那句句式:「只保留 8–12 个核心组件、一条主路径,其余放进卡片。」数字 + 主次 + 出口,三个都要给。不要用「简洁一点」这种形容词——那不是取舍依据。
坑 3:最后一步报错,但不知道是环境还是图的问题
本文作者实测就遇到了(§07 第 4 步)。区分方法只有一个:看诊断里的词。
Chrome、Chromium、sandbox、browser-check、Operation not permitted、provenance(来源核验)。
这类失败不影响成品——成品在前一道闸就已经写好了。项目文档对此的说法是:环境性的失败可以稍后针对同一份文件重试,不必重画。
node、route、label、crossing、overlap、clearance、schema。
这类才需要改图。而且别让它整图重画——让 AI 只改诊断指名的那一处,然后再验。
坑 4:很慢、很费 token
这是有记录的真实代价。项目 issue #22「太费 token 了,画个架构图消耗 minimax m3 几十兆 token」(token 是 AI 处理文字和计费的计量单位,你在账单上看到的就是它)、#66「整个过程很慢,而且 token 消耗很大」。量子位报道里也提到读者反馈「消耗额度有点大」,作者当时的回应是正在攻这个问题。[8][11]
三条能立刻减少消耗的做法:① 缩小范围——一次只画一部分,别整个仓库一次画完(这也让图更好看);② 用纯描述起手——让它读一整个仓库是最贵的方式,如果只是想验证一个想法,描述就够了;③ 一次说清要求——「只保留 8–12 个、一条主路径、其余放卡片」提前给,比出图之后再改四五轮的代价低得多。
坑 5:图出来了,但内容不对
先别怪工具。按这个顺序排查:
「把这个项目画出来」和「画一次下单请求走过的路径」是两个难度的问题。后者它几乎不会出错;前者它只能猜重点。
读代码时它会把「看见的」都算进来,包括已经废弃的代码路径。加一句「忽略测试代码和已废弃的目录」,能省掉一轮返工。
加一句「每条关系标出对应的文件与行号」。带源码依据时,节点上会出现 SRC 标记,点开能到固定版本的具体文件与行号。有依据的部分你能核,没依据的它也该自己标出来。这是把「信不信」换成「核哪里」的那一步。
坑 6:用网页版 AI,能力对不上
如果你用的是 claude.ai 网页版或「项目知识」,走的是降级路径:把自带的 archify.zip 上传,然后靠提示词驱动。这条路能不能跑通,取决于它背后的沙箱给不给 Node 环境——给不了就只能出「提示词驱动的架构图」,不是完整的渲染加校验流程。想要完整能力,你手上必须有一个能在终端里跑的 AI 编程工具。[1]
10一页纸:命令、参数、验收话术
命令速查
| 我想干什么 | 敲什么 |
|---|---|
| 先看环境够不够 | node --version(要 ≥ 18) |
| 看清楚要装的是什么 | npx -y skills add tt-a1i/archify --list --full-depth |
| 装(交互式) | npx skills add tt-a1i/archify -g |
| 装(一条命令到指定工具) | npx -y skills add tt-a1i/archify --skill archify --agent claude-code --global --copy --yes |
| 临时试一次不落盘 | npx skills use tt-a1i/archify@archify --agent codex |
| 装完自检 | node bin/archify.mjs doctor |
| 生成一套示例看看 | node bin/archify.mjs demo /tmp/archify-demo |
| 不知道用哪种图,问它 | node bin/archify.mjs guide "你的场景描述" --lang zh |
| 检查一张成品图 | node bin/archify.mjs check 成品.html --json |
| 交付(写文件 + 全部校验) | node bin/archify.mjs finalize <类型> 源文件.json 成品.html --quality showcase --json |
| 比较改动前后两张图 | node bin/archify.mjs compare architecture 旧.json 新.json 对比.html --json |
两个参数要知道
| 参数 | 区别 | 什么时候用哪个 |
|---|---|---|
--quality standard | 较松的成品标准,探索阶段用 | 边想边画、反复改的时候 |
--quality showcase | 严格标准,本文里说的「9 项全过」指的是这一档 | 要给别人看、要写进文档时一定用这个。AI 默认也该用它 |
--json | 让命令输出机器可读的回执,而不是一段人话 | 你要 AI 照着诊断自己改的时候——诊断里有准确的出错位置和建议改法 |
--repo-root <仓库路径> | 让它去核对源码依据(远端、提交、文件、行号) | 图必须反映真实代码时必须加;只画概念图时不用 |
验收三句话(直接复制)
1. 问机器
这次校验是 9 项全过还是 4 项?composition 里 errors 和 warnings 各是多少?
2. 问事实
图上这几条线,分别对应代码里的哪个文件、哪一行?逐条列出来。
3. 问责任
哪些是你从代码里直接读出来的、哪些是你推断的?把推断的标出来。
「什么时候别用它」四问
① 这张图给谁看?——答不出「给谁」,就别开工。
② 看完他该能回答哪一个问题?——答不出,说明你还没想清楚,AI 只会把知道的全画上。
③ 我要的是「现在的真实状态」还是「设计上应该是什么样」?——前者它做不到(它不是监控系统),后者它刚好。
④ 这张图会被改第二次吗?——不会改、只用一次,用画图工具更快;会改、会比较版本、要重出样式,它的价值才兑现。
11名词速查
这篇里出现过的、不属于日常用语的词。第三列是「什么时候用得上它 / 别把它当成什么」——只给中英对照的翻译表对读文章没有帮助。
| 词 | 人话解释 | 为什么重要 / 何时用 · 别当什么用 |
|---|---|---|
| Agent(智能体) | 会自己动手的 AI 助手:不光聊天,还能读你的文件、敲命令、改代码 | Archify 是给 Agent 用的,不是给浏览器网页用的。别把它当成一个网站或 App |
| Skill(技能) | 一份写给 AI 看的操作手册加一箱配套工具,放在约定目录里,说到相关话题时才被读进来 | 装 Archify 装的是这个。别当成「装了一个软件」——它不改变 AI 的智力,只改变它在这个任务上的做法 |
| 终端(Terminal) | 能粘命令的那个窗口。macOS 叫「终端」,Windows 叫 PowerShell | 整篇里你只需要往里粘两条命令。别把它当成编程——粘和敲是两回事 |
| Node.js | 让 JavaScript 程序离开浏览器也能在电脑上跑的环境 | Archify 的渲染器靠它跑。检查方式只有一条:node --version 要 ≥ 18 |
| npx / npm | Node 自带的两个命令:npm 管「装包」,npx 管「临时取来就跑」 | 装 Archify 用的是 npx。别把 npx 当成安装——它默认不留下长期安装记录 |
| JSON | 一种「给人看也给程序看」的纯文本数据格式,用大括号和引号组织 | Archify 的源文件就是 JSON。别把它当成代码——它是能直接读出意思的清单 |
| 源文件 / 成品 | 源文件是「图上的每句话写成一份清单」;成品是渲染出来的那个 HTML | 这一对区分是全篇最重要的一处机制。改图改的是源文件,所以改动是局部的;两个源文件能对比出「改了什么」 |
| 渲染 | 把一份数据变成看得见的图形 | 渲染是程序干的,不是模型画的——这正是「它不会编」的原因 |
| 校验 / 门禁 | 成品在交给你之前必须通过的机器检查 | 它保证的是「图不别扭」,不保证「图是真的」(§08) |
| 回执(receipt) | 命令跑完之后留下的一份结构化结果,写明哪几关过了、成品文件有多大、内容指纹是多少 | 验收时你要看的就是它。别把「退出码是 0」当成「图是对的」——回执只说机器检查的事 |
| 仓库 / 提交(repo / commit) | 仓库是装代码的那个文件夹(带版本记录);提交是其中一次的存档点 | 源码依据会绑定到具体的提交,所以「同一张图」永远对应同一个版本,不会因为代码后来变了而失准 |
| Mermaid | 一种「用文字描述图形」的语法,很多文档工具都支持 | Archify 能读它然后重画。别指望它做「Mermaid 换皮」——项目明确把自动 Mermaid 解析划在范围外 |
| 泳道(swimlane) | 流程图里按角色分成的横行或竖列,每条道只放这个角色的动作 | 工作流图用它保持主路径清楚。提示词里说「分成泳道」是个有效指令,不是行话装饰 |
| 血缘(lineage) | 数据从哪来、中间被谁改过、最后流到哪去的那条链 | 数据流图回答的就是它。涉及用户隐私字段时这一张最该先画 |
| 状态机 / 生命周期 | 一个东西有哪几种状态、什么事件让它换状态、最后怎么结束 | 「生命周期图」就是它。订单、工单、任务重试、一次部署的晋级都用这个 |
| 分享卡(Share Card) | 把图里的一条路径或一段上下游关系单独导出成一张 1200×630 的图片 | 尺寸刚好是社交平台卡片的尺寸,可以直接当封面。别把它当成完整图——它是「带范围的切片」 |
| Token | AI 处理文字时的计量单位,也是你付钱和等时间的单位 | Archify 属于 token 消耗偏大的一类用法(§09 坑 4)。别把它当成免费按钮 |
98来源与证据边界
一手来源
| # | 来源 | 本文用它支撑什么 |
|---|---|---|
| [1] | github.com/tt-a1i/archify —— 中文 README(本文校对时仓库 main 分支,最后提交 2026-09-30,commit d5a1333) | 它是什么、五种图、安装方式表、更新检查的行为与隐私说明、范围外边界的原话、分享卡与稳定链接 |
| [2] | 仓库内 archify/SKILL.md(技能契约,元数据 version 3.0) | 三层分工、.archify/ 目录约定、交付时必须回报的五样东西、「不许把非零退出说成成功」、接受粘贴 Mermaid |
| [3] | 仓库内 docs/authoring-cookbook.zh-CN.md(编图实践手册) | Node.js 18 要求、五种图的适用说明、standard 与 showcase 的区别 |
| [4] | 仓库内 CHANGELOG.md | v3.0.1 与 v3.0.0 的发布日期与改动内容 |
| [5] | 仓库内 archify/references/delivery-contract.md(交付契约) | 「4 项是基础校验、9 项才是正式验收」的原话、两轮修复上限、浏览器检查失败的分类、环境性失败可针对同一份文件重试 |
| [6] | 仓库内 integrations/deepseek-harness/README.md | DSH 插件捆的是 Skill 2.14.0、待发布的 0.2.0 目标版本、Produced Files 限制、无遥测 |
| [7] | 仓库内 AGENTS.md 与 PRODUCT.md | 安装前应先做 --list --full-depth 检查、目标用户定位 |
| [8] | 量子位报道(2026-09-01) | 2026-09-01 的 3.14 万 star / 1.9k fork、GitHub 热榜第一、「不是实时监控系统」的原话、用户反馈「节点详情展示太小」「没有视觉的模型不顺畅」「消耗额度有点大」 |
| [9] | 博客园实测记录(2026-09-20) | 真实使用体验:「画真实项目的时候别贪多」、8–12 组件提示词的实测效果、导出格式的实际用法 |
| [10] | Hermes Agent 技能目录页 | 安装约 200 个文件 / 约 8 MB、Node 18+、「9-check validate/deliver 回执」的说法 |
| [11] | GitHub issue:#22、#66(慢与 token)、#248、#235、#395(9/9 通过但图有错)、#408(未发布到 npm)、#590(大工作流校验失败)、#616 | §08 的三个反例、§09 的坑 1 与坑 4。本文校对时共 214 个 issue(含已关闭),上述除 #22 / #66 已关闭外,其余在本文校对日仍开着 |
| [12] | npm 上的 skills 包(vercel-labs/skills,本文校对时最新版 1.7.0) | 安装命令用的那个命令行工具是什么 |
| [13] | 本文作者在本机跑的那一次(2026-09-30) | doctor 20 项全绿、Node v24.19.0、9 项检查的逐项名字、2.4 秒与 762 KB / 3.8 KB、6 个内嵌字体、浏览器闸失败的完整诊断 |
时效:这篇属于「演进型」(元数据里标作 shelf-life: evolving,意思是机制稳定、但版本号与数字会变)。机制与判断部分不容易过时,但版本号、star 数、issue 状态、安装命令都在变。本文校对日期是 2026-09-30。用之前请以当期页面为准,尤其是 §04 的安装命令、§09 的 issue 编号与状态。
四处口径不一致,都摆在这里,我不替你选:
① Mermaid 算不算支持。README 的「参考与边界」写「自动 Mermaid 解析器(Parser,把 Mermaid 文本翻译成图形的程序)不在产品范围内」,但技能契约的封面描述写它「接受粘贴 Mermaid flowchart / sequenceDiagram / stateDiagram 输入」(flowchart=流程图、sequenceDiagram=时序图、stateDiagram=状态图)。两句话都对:我在仓库里搜过,除了技能契约文本和一条测试,没有任何 Mermaid 解析器的代码。所以真相是——产品里没有 Mermaid 解析引擎,是 AI 读懂你粘的 Mermaid 之后重新写成 Archify 源文件,不是机械转换。
② DeepSeek Harness 插件捆的版本落后。插件 0.1.0 里装的是 Archify 技能 2.14.0,而仓库稳定版是 3.0.1。你按这篇的 3.0.1 行为去对照 DSH 里的表现,会对不上——不是谁错了,是打包滞后。
③ Hermes 目录页标的是 2.17.0。而那个页面自己写着它只是「目录存根」、安装时从上游仓库拉当前版本。所以那个数字是标注滞后,装到的应该是上游当时的版本。这跟 ② 不是一回事。
④ star 数差一倍多。量子位 2026-09-01 报的是 3.14 万,本文从官方 API 读到的是 7.47 万(2026-09-30)。两个数都对,只是差了一个月。引用时请连日期一起引,否则会显得像在夸大数据。
一处我没有核实、因此没有作为依据的:量子位那篇里提到「在 X 上收获了多条 10 万赞正向测评反馈」。我没有去核实这些帖子的具体数据,所以正文里没有引用它。
一处我实测到、但可能与你的机器不同的:本文作者的浏览器检查那一关失败了(环境不允许无头浏览器启动沙箱)。这是我这台机器的环境限制,不代表你也会遇到;项目文档把它归类为可重试的环境性失败。你如果在自己的机器上跑通了这一关,那说明你的环境更完整。
99一句话总结
Archify 是一个装在 AI 编程工具里的技能:你说一句「把这个项目画成架构图」,AI 去读代码写出一份结构化源文件,由一个写死的程序渲染成一张独立网页图,交付前必须过 9 项机器检查。它的位置是「让 AI 画的图变成可以指着问的东西」——不是画图软件的替代品,也不是监控系统。
它值得装的情况是三件事里有两件成立:① 你有一个读不动的项目;② 你需要向别人解释一个系统;③ 你要在 AI 的建议上找抓手。反过来,只要一次性的示意图、或者只想看系统现在的真实状态,它都不是好选择。
对你这种不写代码、靠 AI 推进项目的角色,它最实在的价值不是「图好看」——是「把一段你没法反驳的话,变成一张你能指着问的图」。§10 那三句验收话术就是为这件事准备的。
最后一条也是最容易搞反的:那 9 项检查保证的是「图画得不别扭」,不保证「图上写的是真的」。项目自己的 issue 里就挂着三个「9/9 通过但图是错的」例子(§08)。把校验通过听成内容无误,是这篇里最贵的一个误解。
留给你自己验的那一条
前面所有内容你都能在文章里找到答案,只有这一条不行——它需要你自己的场景。请做一次:
挑一个你手上半途停下的项目,先写下那句话:「这张图给谁看、他看完要能回答哪个问题。」然后按 §05 的句式【1】把提示词改写成适合你这个项目的版本——把「8–12 个核心组件」换成你项目的说法,把「一条主要路径」换成你真正想知道的那条路径。
例如:「我要看清楚用户从注册到第一次成功下单这条路上到底经过了哪些东西」——那就把提示词写成「只保留这条路上的组件,其他的一律放进卡片,连一条线都不要加」。
如果你写完发现自己答不出「给谁看、回答什么问题」,那正是一个有用的结果:说明你现在的第一步不是让它画图,而是先想清楚要拿这张图干什么。按 §03 最后一条「别用它」的对策处理——这张图的一次生成不便宜,先花两分钟想清楚,比画完再重来划算得多。