tt-a1i/archify
GitHub: tt-a1i/archify
一款 AI agent 技能插件,通过自然语言对话自动生成多种技术架构图表并支持多格式高清导出。
Stars: 4655 | Forks: 412

# Archify
**在对话中生成精美的架构图、技术工作流、时序图、数据流图和生命周期图。支持深色/浅色切换。支持复制到剪贴板或导出最高 4× 分辨率的无损 PNG / JPEG / WebP / SVG。**
Archify 是一个专为 Claude、Codex CLI 和 opencode 设计的 agent skill。它能将你对系统或流程的纯英文描述转化为一张精美且独立的技术图表——一个单一的 HTML 文件,你可以打开它、切换主题、复制到剪贴板,并以最高分辨率导出。
- **无需设计技巧** —— 用英文描述你的架构,即可获得图表
- **同时支持工作流、时序图、数据流图和生命周期图** —— 可绘制技术流程、审批流、工具调用、CI/CD、运行手册、请求调用链、数据流水线、PII 边界和状态机
- **内置主题切换** —— 一键切换深浅色模式,并跨会话持久化保存
- **复制 PNG 到剪贴板** —— 一键复制,直接粘贴到 Slack / Notion / GitHub
- **超清图像导出** —— PNG / JPEG / WebP 以最高 4× 源分辨率原生渲染(无上采样模糊),或导出为真正的矢量 SVG 格式
- **SVG 遵循系统深色/浅色模式** —— 导出的 SVG 自带两套变量集 + `@media (prefers-color-scheme)`,将其放入 GitHub README 中即可自动跟随读者的颜色偏好(无需再用 `` 包裹两张 PNG)
- **内置验证循环** —— 基于渲染器的图表会经过 JSON schema 校验、布局检查、HTML/SVG 产物检查以及针对性迭代
- **语义化技术标签** —— 将组件描述为 `aws.lambda`、`postgres`、`redis`、`github-actions`、`openai` 等;Archify 会将它们映射到正确的视觉类别,无需完整的图标库
- **独立完整的 HTML** —— 生成的文件零依赖,直接发送文件即可分享
- **通过对话迭代** —— “add Redis”、“move auth to the left”、“use emerald for the API”



**项目主页:** [tt-a1i.github.io/archify](https://tt-a1i.github.io/archify/)
**60 秒开始:**
```
npx skills add tt-a1i/archify -g
```
然后向你的 agent 提问:`Use archify to map this repository's runtime architecture.`
## 预览
同一张图表,两种主题,一键切换:
| 深色 | 浅色 |
|---|---|
|  |  |
导出菜单 —— 支持复制 PNG 到剪贴板以及 4 种下载格式(所有位图导出均支持最高 4× 源分辨率):

在线示例:[`examples/web-app.html`](examples/web-app.html) —— 在浏览器中打开,按 T 切换主题,按 E 打开导出菜单。在 URL 后追加 `?theme=light` 或 `?openExport=1` 可用于生成确定的截图。
## 图表类型
Archify 目前有五种主要输出形式:
| 类型 | 适用场景 | 如何提问 |
|---|---|---|
| **架构图** | 系统组件、云资源、数据库、缓存、服务、边界、安全组 | 描述系统结构 |
| **工作流** | 请求生命周期、审批流程、工具调用、CI/CD、运行手册、故障响应 | 描述参与者、步骤顺序和关键分支 |
| **时序图** | API 调用链、请求生命周期、缓存回退、身份验证、异步追踪、服务交互 | 描述谁在什么顺序下调用了谁,以及返回了什么 |
| **数据流图** | 数据流水线、ETL/ELT、分析事件、PII 隔离、数仓同步、血缘、下游消费者 | 描述数据源、处理阶段、存储、敏感度边界和消费者 |
| **生命周期图** | 状态机、订单/任务/部署/agent运行生命周期、等待状态、重试、取消、超时、终止状态 | 描述状态、转换事件、重试路径和最终结果 |
架构图用于说明系统结构 —— 组件、边界以及它们之间的连接方式:
```
Use archify to draw an architecture diagram:
React frontend calls a Node.js API backed by PostgreSQL and Redis, deployed on AWS behind CloudFront.
```
SaaS 图表示例:[`examples/web-app.html`](examples/web-app.html)。
真实仓库示例(基于渲染器的 JSON IR):
- [`examples/archify-repo.html`](examples/archify-repo.html) —— 本项目的 skill → JSON IR → 渲染器流水线
- [`examples/archify-repo-grid.html`](examples/archify-repo-grid.html) —— 同样的流水线,使用 `layout.mode: "grid"`(`row`/`col` 布局)
- [`examples/maka-architecture.html`](examples/maka-architecture.html) —— 第三方桌面 agent 工作台 (Maka)
工作流并不是要取代所有通用的流程图。它是一种技术沟通图表:包含泳道、语义化颜色、清晰的主路径,以及辅助的异步 / 审批 / 追踪路径。
```
Use archify to draw a workflow:
User submits a request -> Agent plans -> Approval Gate if needed -> Tool Call -> Trace Log -> Final Reply
```
在此处打开示例:[`examples/workflow-agent-tool-call-rendered.html`](examples/workflow-agent-tool-call-rendered.html)。

时序图用于解释随着时间推移发生的较具体的交互:
```
Use archify to draw a sequence diagram:
User opens a page, the frontend calls the API, the API verifies JWT, reads Redis, falls back to Postgres on cache miss, returns JSON, and emits trace.
```
在此处打开示例:[`examples/sequence-cache-miss-request.html`](examples/sequence-cache-miss-request.html)。

数据流图用于解释数据资产如何移动和变化:
```
Use archify to draw a data flow:
Web and Mobile emit analytics events, Edge API collects them, Consent Gate filters PII, Kafka carries accepted events,
Warehouse stores analytics tables, Feature Store derives daily features, Dashboards and an ML Model consume downstream data.
```
在此处打开示例:[`examples/dataflow-product-analytics.html`](examples/dataflow-product-analytics.html)。

生命周期图用于解释对象如何改变状态:
```
Use archify to draw a lifecycle diagram:
Agent Run starts at Queued, moves through Planning, Executing, and Reviewing. It can pause at Needs Approval,
wait at Blocked, retry after Failed, end at Cancelled or Expired, or finish at Completed.
```
在此处打开示例:[`examples/lifecycle-agent-run.html`](examples/lifecycle-agent-run.html)。

## 最新动态
Archify 基于 [Cocoon-AI/architecture-diagram-generator](https://github.com/Cocoon-AI/architecture-diagram-generator) v1.0(仅深色模式,HTML 输出)分支开发。**2.0** 版本围绕可主题化的 CSS 变量系统重写了模板,并添加了客户端导出流水线。**2.1** 增加了复制到剪贴板和键盘导航功能。**2.2** 增加了打印样式表和本地字体回退。**2.3** 修复了位图上采样错误,使导出在最高 4× 源分辨率下真正清晰。**2.4** 将 SVG 导出升级为双主题独立文件。**2.5** 添加了基于渲染器的工作流 / 时序图 / 数据流图 / 生命周期图模式,Mermaid 输入指引,支持 CJK 的文本测量,基准测试和 CI。**2.6** 使架构渲染器达到了 schema + 布局验证的一致性。**2.7** 通过阶段标题、分组、异常泳道、主路径检查、同泳道正交路由和渲染后 HTML/SVG 检查器强化了工作流图表。**2.8** 增加了可选的追踪动画,并拒绝跨越无关节点的工作流路由。**2.9** 添加了统一的 CLI (`bin/archify.mjs`) 和真实仓库架构示例。**2.10** 添加了可操作的验证器提示、可选的架构网格布局 (`row`/`col`),以及用于计算布局 JSON 的 `archify inspect`。
| 功能 | v1.0 | 2.0 | 2.1 | 2.2 | 2.3 | 2.4 | 2.5 | 2.6 | 2.7 | 2.8 | 2.9 | 2.10 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 深色主题 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 同上 | 同上 | 同上 |
| 浅色主题 | — | 切换 | 切换 | 切换 | 切换 + T 快捷键 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 |
| PNG / JPEG / WebP 下载 | 手动截图 | 2× 位图上采样 | 1× / 2× / 4× 选择器(仍为上采样) | 同上 | **4× 原生栅格化 —— 无模糊** | 同上 | **修复了浅色导出泳道颜色** | 同上 | 同上 | 同上 | 同上 | 同上 |
| SVG 下载 | — | 矢量图,内联样式(单主题) | 同上 | 同上 | 同上 | **双主题独立文件** (`@media prefers-color-scheme`) | 同上(修复了泳道颜色) | 同上 | 同上 | 同上 | 同上 | 同上 |
| 复制 PNG 到剪贴板 | — | — | 是 | 同上 | 是(最高 4×) | 同上 | **修复了 Safari 兼容性** | 同上 | 同上 | 同上 | 同上 | 同上 |
| 键盘快捷键 | — | — | T / E + 菜单导航 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 |
| 无障碍访问 | — | — | ARIA + focus-visible | 同上 | 同上 | 同上 | 同上(+ 菜单 a11y 修复) | 同上 | 同上 | 同上 | 同上 | 同上 |
| 打印样式表 | — | — | — | 是 | 是(+ 横向 + 双列卡片) | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 |
| 导出时使用本地字体回退 | — | — | — | 是 | 是 | 同上 | **+ CJK 字体回退** | 同上 | 同上 | 同上 | 同上 | 同上 |
| 样式模型 | 内联 `fill` / `stroke` | CSS 自定义属性 + 语义化类名 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 | 同上 |
| 类型化渲染器 + schema 验证 | — | — | — | — | — | — | 工作流 / 时序图 / 数据流图 / 生命周期图 | **+ 架构图** | 同上 | 同上 | 同上 | 同上 |
| 工作流结构辅助 | — | — | — | — | — | — | 泳道 + 路由边线 | 同上 | **阶段、分组、异常泳道、mainPath lint** | **路由交叉防护** | 同上 | 同上 |
| 渲染后产物检查器 | — | — | — | — | — | — | — | — | **是** | 同上 | 同上 | 同上 |
| 追踪动画 | — | — | — | — | — | — | — | — | — | **可选开启** | 同上 | 同上 |
| 统一 CLI | — | — | — | — | — | — | — | — | — | — | **是** | 同上 |
| 真实仓库架构示例 | — | — | — | — | — | — | — | — | — | — | **是** | 同上 |
| 架构图网格 + 布局检查 | — | — | — | — | — | — | — | — | — | — | — | **是** |
| 验证器可操作提示 | — | — | — | — | — | — | — | — | — | — | — | **是** |
## 快速开始
### 1. 一行命令安装
全局安装 Archify,然后根据提示选择你的 agent:
```
npx skills add tt-a1i/archify -g
```
想在不永久安装的情况下试一试?这会使用该 skill 的临时副本启动 Codex:
```
npx skills use tt-a1i/archify@archify --agent codex
```
将 `codex` 替换为 `claude-code` 或 `opencode` 即可启动对应的 agent。这些命令使用了开源的 [`skills` CLI](https://github.com/vercel-labs/skills)。
### 2. 复制一个提示词
**映射真实的代码库:**
```
Analyze this repository, then use archify to create an architecture diagram of its runtime components, data flow, external dependencies, and trust boundaries.
```
**解释请求路径:**
**可视化交付过程:**
```
Use archify to create a CI/CD workflow diagram: pull request -> tests -> approval gate -> build image -> staging deploy -> smoke test -> production deploy, with rollback on failure.
```
分发的 skill 包含独立的 Schema 验证器,因此可以直接开箱即用 —— 无需执行 `npm install` 或安装任何运行时依赖。
### 3. 在对话中迭代
提出针对性的修改需求,例如 `add Redis`、`move auth to the left` 或 `highlight the rollback path`。Archify 会返回一个独立的 HTML 文件,你可以在任何浏览器中打开它,并导出为 PNG、JPEG、WebP 或 SVG。
### 其他安装方式
Archify被打包为一个 agent skill 目录 (`archify/SKILL.md`),因此同一个 [`archify.zip`](archify.zip) 即可在 Claude、Codex CLI 和 opencode 中通用。
**Claude.ai:**
1. 下载 [`archify.zip`](archify.zip)
2. 进入 **Settings** -> **Capabilities** -> **Skills**
3. 点击 **+ Add** 并上传该 zip 文件
4. 开启该 skill
**Claude Code CLI:**
```
# Global (所有项目)
unzip archify.zip -d ~/.claude/skills/
# 或项目本地
unzip archify.zip -d ./.claude/skills/
```
**Codex CLI:**
```
# Global (所有项目)
unzip archify.zip -d ~/.agents/skills/
# 或项目本地
unzip archify.zip -d ./.agents/skills/
```
**opencode:**
```
# Global (opencode-native)
unzip archify.zip -d ~/.config/opencode/skills/
# 或项目本地
unzip archify.zip -d ./.opencode/skills/
# 同样适用:上文为 Codex 使用的 shared agent 目录
unzip archify.zip -d ~/.agents/skills/
```
基于渲染器的图表在交付前会经历一个简短的质检循环:
| 步骤 | 处理内容 |
|---|---|
| **生成 JSON IR** | agent 编写类型化的架构 / 工作流 / 时序 / 数据流 / 生命周期描述,而不是直接手动编辑最终的 SVG。 |
| **校验** | 内置的独立验证器检查 JSON Schema,无需安装任何运行时依赖。 |
| **渲染** | 类型化渲染器生成独立的 HTML/SVG 输出。 |
| **检查产物** | 渲染后检查器会捕获格式错误的 SVG、非有限坐标、意外的对角线箭头以及穿过图例的路线。 |
| **迭代** | 基于 JSON IR 或语义类进行修复,因此局部编辑不需要从头重新生成整个图表。 |
你可以直接运行最终的产物检查:
```
node scripts/check-render-output.mjs output.html
```
内置的 CLI 封装了相同的渲染器和检查器命令:
```
node bin/archify.mjs doctor
node bin/archify.mjs demo /tmp/archify-demo
node bin/archify.mjs render workflow examples/agent-tool-call.workflow.json workflow.html
node bin/archify.mjs validate workflow examples/agent-tool-call.workflow.json --json
node bin/archify.mjs check workflow.html
node bin/archify.mjs examples
```
基于渲染器的图表还可以选择为演示启用轻量级的动态效果:
```
{ "meta": { "title": "Release Flow", "animation": "trace" } }
```
追踪动画在生成的 HTML/SVG 内部运行:箭头按顺序流动,节点轻微跳动,并且 `prefers-reduced-motion` 会为有此设置的用户禁用动态效果。省略 `animation` 则为默认的静态图表。
**Claude.ai 项目 (另一种方式):**
将 [`archify.zip`](archify.zip) 上传到你的 Project Knowledge 中。
各安装平台支持的功能:
| 安装平台 | 功能支持 |
|---|---|
| **Claude Code** | 完整 —— 运行类型化渲染器 + schema 验证 |
| **Codex CLI** | 完整 —— 安装至 `~/.agents/skills/` 或 `.agents/skills/` |
| **opencode** | 完整 —— 安装至 `.opencode/skills/`、`.agents/skills/` 或其他受支持的 skills 目录 |
| **Claude.ai (zip 上传)** | 通常完整 —— 取决于沙箱是否允许执行 Node.js |
| **Project Knowledge** | 仅架构图模式 —— 无代码执行,完全由提示词驱动 |
## 使用输出结果
在任何浏览器中打开生成的 HTML。在右上角你会看到两个按钮:
- **主题按钮**(深色 / 浅色)—— 一键切换,跨会话持久化保存。快捷键:T。
- **导出菜单** —— 打开一个包含五个操作的下拉菜单(复制 PNG + 下载 PNG / JPEG / WebP / SVG)。快捷键:E。
### 导出菜单
| 操作 | 功能描述 |
|---|---|
| **复制 PNG** | 直接将当前图表的 PNG 放到你的剪贴板上。可直接粘贴到 Slack、Notion、GitHub、Figma。 |
| **下载 PNG / JPEG / WebP** | 保存位图图像。JPEG/WebP 会覆盖在当前主题的背景上(无 alpha 通道);PNG 保留透明度。 |
| **下载 SVG** | 内联所有样式的矢量导出,**双主题独立文件**。该文件自带深色和浅色 CSS 变量集以及 `@media (prefers-color-scheme)` 规则 —— 将同一个 `.svg` 放入 GitHub README 或博客中,它会自动跟随读者的偏好。仍可在 Figma / Illustrator 中编辑。无损缩放。 |
每一次位图导出(复制 PNG,下载 PNG/JPEG/WebP)都是由浏览器以**最高 4× 图表原始分辨率**原生渲染的(超大的图表会自动降级至 3×/2×,以保持在浏览器 canvas 限制范围内)—— 序列化的 SVG 被赋予了 `4 × viewBox` 的 `width`/`height`,由浏览器以该分辨率进行栅格化,并以原始尺寸绘制到 canvas 上(无上采样)。这能为视网膜屏幕、幻灯片和打印提供真正清晰的输出。没有缩放滑块 —— 系统会始终自动选择最安全且最高清晰度的选项。
### 键盘快捷键
- 任意位置按 T —— 切换主题
- 任意位置按 E —— 打开导出菜单
- 菜单内按 ↑ ↓ —— 导航操作
- Home / End —— 跳至第一个 / 最后一个操作
- Enter / Space —— 激活
- Esc —— 关闭菜单
### URL 参数
- `?theme=light` 或 `?theme=dark` —— 强制指定初始主题(用于生成确定的截图、分享链接和嵌入)
- `?openExport=1` —— 加载时自动打开导出菜单(用于演示 / 文档截图)
### 注意事项
- **WebP 支持** 取决于你浏览器的 canvas 编码器。如果不可用(如旧版 Safari),该菜单项将变暗且被禁用。PNG 和 JPEG 是通用的。
- **剪贴板支持** 处理图像需要 `ClipboardItem` + `navigator.clipboard.write`(Chromium、Firefox 127+、Safari 16+)。如果不可用,复制 PNG 将变暗。
- **导出中的字体**:位图使用系统默认的等宽字体回退(`ui-monospace` / Menlo / Consolas),因为沙箱化的图像渲染环境无法获取 Google Fonts。在本地安装 JetBrains Mono 可实现像素级完美的渲染。
## 示例提示词
**Web 应用:**
```
Create an architecture diagram for a web application with:
- React frontend
- Node.js/Express API
- PostgreSQL database
- Redis cache
- JWT authentication
```
**AWS 无服务器:**
```
Create an architecture diagram showing:
- CloudFront CDN
- API Gateway
- Lambda functions (Node.js)
- DynamoDB
- S3 for static assets
- Cognito for auth
```
**微服务:**
```
Create an architecture diagram for a microservices system with:
- React web app and mobile clients
- Kong API Gateway
- User Service (Go), Order Service (Java), Product Service (Python)
- PostgreSQL, MongoDB, and Elasticsearch databases
- Kafka for event streaming
- Kubernetes orchestration
```
**数据流 / 产品分析:**
```
Use archify to draw a data flow:
- Web App and Mobile SDK produce clickstream events
- Edge API collects events
- Consent Gate filters identity and PII
- Kafka/Event Stream carries accepted events
- Warehouse stores normalized facts
- Feature Store derives daily feature vectors
- Dashboards and ML Model consume downstream data
```
**状态机 / 生命周期:**
```
Use archify to draw a lifecycle diagram:
- A task starts at Queued
- Planning builds the plan
- Executing calls tools
- Reviewing checks quality
- Needs Approval and Blocked are wait states
- Failed can retry, while Cancelled / Expired / Completed are terminal states
```
## 色彩搭配
| 组件类型 | 颜色 | 用途 |
| -------------- | ------- | --------------------------------- |
| 前端 | 青色 | 客户端应用、UI、边缘设备 |
| 后端 | 翠绿色 | 服务器、API、服务 |
| 数据库 | 紫色 | 数据库、存储、AI/ML |
| 云服务 / AWS | 琥珀色 | 云服务、基础设施 |
| 安全 | 玫瑰红 | 身份验证、安全组、加密 |
| 消息总线 | 橙色 | Kafka、RabbitMQ、SNS、事件总线 |
| 外部服务 | 石板灰 | 通用、外部系统 |
每种颜色都有协调的深色模式和浅色模式变体,它们会通过主题切换按钮一起切换。
### 语义化技术标签
Archify 并不打算发布一套完整的 AWS / Azure / GCP 图标运行库。相反,它将技术名称和可选标签视为指导颜色、分组和副本的语义化提示:
| 标签示例 | 视觉类别 |
|---|---|
| `react`, `nextjs`, `ios`, `android`, `browser` | 前端 |
| `node`, `go-service`, `python-worker`, `api-gateway` | 后端 |
| `postgres`, `mysql`, `redis`, `s3`, `bigquery`, `snowflake` | 数据库 / 存储 |
| `aws.lambda`, `aws.cloudfront`, `gcp.pubsub`, `azure.functions`, `kubernetes` | 云服务 / 基础设施 |
| `auth0`, `cognito`, `oauth`, `vault`, `security-group` | 安全 |
| `kafka`, `rabbitmq`, `sns`, `sqs`, `nats` | 消息总线 |
| `stripe`, `github-actions`, `openai`, `anthropic`, `slack` | 外部服务 |
当确切的技术细节很重要时,请在提示词或 JSON IR 中使用这些标签。生成的图表依然保持为独立的 HTML/SVG;这些标签改善了语义化的样式和布局,而不会强迫依赖庞大的图标库。
## 技术细节
- **样式:** `:root` 和 `[data-theme="light"]` 上的 CSS 自定义属性;SVG 元素引用语义类(`c-frontend`、`t-muted`、`a-emphasis` 等)。切换 `` 上的 `data-theme` 即可对整个图表重新应用主题,包括渐变、网格、箭头和遮罩矩形。
- **导出流水线:** 首先克隆 SVG,将宿主的 `