Archify 时序图实战指南:缓存缺失时,API 调用链到底慢在哪一跳
【免费下载链接】archifyAgent skill for beautiful, verifiable architecture, workflow, sequence,>项目地址: https://gitcode.com/GitHub_Trending/arch/archify
线上接口偶发慢请求,监控面板只会告诉你"P95 抖动"。要定位问题,你得把请求路径拆成"谁调用了谁、按什么顺序、卡在哪一步"——这正是Archify 时序图针对的场景。Archify 是一个面向 AI Agent 的图表 Skill,输入一段自然语言或 Mermaid 描述,就能产出自带交互与动画的独立 HTML;其中 sequence 类型专门覆盖API 调用链、请求生命周期与异步追踪。下面以最典型的缓存缺失请求为例,把一张时序图读明白,再把整个流程跑通一遍。
先拿到的东西:Archify 五种图表能力一览
时序图只是其中一种类型。Archify 当前可交付的能力如下:
| 维度 | 内容 |
|---|---|
| 图表类型 | architecture架构、workflow工作流、sequence时序、dataflow数据流、lifecycle生命周期 |
| 输出物 | 自包含单文件 HTML,无外部依赖,可直接发给同事或提交进仓库 |
| 动画 | 可选trace模式,按调用顺序逐条点亮箭头 |
| 导出 | PNG / JPEG / WebP / SVG / WebM 与 1200×630 社交分享卡 |
| 交互 | 分章播放、路由追踪、深浅色切换、平移缩放与搜索 |
技能入口 里有一张类型路由表:sequence的适用面写得很明确——API call chains、request lifecycles、async traces、returns。也就是说,当你想回答"这次请求为什么慢"而不是"系统里有哪些组件"时,应该选它。
读图:缓存缺失请求里发生了什么
缓存缺失示例 是仓库内置的官方样例,共 7 个参与者沿顶部排开,时间轴向下推进:User → Web App → API → Auth → Redis → Postgres → Trace。整条时间线被切分为三幕:
| 分段 | 时间轴上发生的事 | 关键消息 |
|---|---|---|
| Request | 用户打开页面,Web App 向 API 发起请求并完成 JWT 校验 | open page、GET /dashboard、verify JWT、claims ok |
| Fallback | API 读 Redis 返回 miss,被迫回源查询 Postgres | read cache、miss、query profile + metrics、rows |
| Response + trace | 回写缓存、异步上报 trace,响应回到前端 | set cache、emit trace、200 JSON、render |
两个细节值得单独说:
- 两条异步旁路:
set cache与emit trace都标为dashed(虚线)。它们发生在响应主路径之外,不阻塞用户,但在图上依然可见——排查"这次请求到底多花了多少时间"时,这类旁路开销不会被主链淹没。 - 五类消息图例:
emphasis(主请求路径,强调色)、return(低调的返回消息)、security(鉴权类调用,单独着色)、dashed(异步/非阻塞)、default(常规消息)。效果是把"用户体感耗时"和"埋点、回写这类可观测性开销"在视觉上拆开,一眼能分清哪段延迟与用户相关。
激活条则回答"谁在忙":Postgres 的激活条只覆盖回源查询那一小段,直观说明数据库窗口很短;而 Web App 与 API 的激活条几乎贯穿全程,说明它们才是整条链的"在途主体"。
这张图是怎么来的:从一句话到可验证的 HTML
时序图不是手摆出来的。一条描述("画一个带 Redis 缓存未命中的 API 请求")会经历四步确定性编译:
- JSON IR:描述先落成带类型的中间表示。缓存缺失示例的核心就四块——
participants(参与者及其语义类型,如{ "id": "redis", "type": "database", "label": "Redis" })、messages(消息箭头,含from/to、纵坐标y与variant风格)、segments(y 像素区间划出的三幕背景)、activations(参与者忙碌时段)。 - Schema 校验:文件按 sequence.schema.json 严格校验,字段类型、取值范围不符即报错并指出具体元素。
- 类型化渲染 + 布局检查:sequence 渲染器 按固定布局预算画图——参与者放不下、消息垂直间距不足 28px、箭头越出可读时间线,都会被判定为失败而不是画出一张坏图。
- 独立 HTML + 多倍率导出:最终产物不依赖任何 CDN,深浅色与导出全部内建。
交付环节还有一个设计值得留意:deliver会把规格文件的字节冻结为快照再渲染,并附 SHA-256 回执。你转发出去的 HTML 与背后的 JSON 是可以互相核对的,不存在"图已经更新但文档没跟上"的歧义。
一条命令安装 Archify 技能,两条命令校验与交付
# 安装(Cursor / Claude Code / Codex CLI / OpenCode 均可用) npx skills add tt-a1i/archify -g渲染与验收只需要两条命令(渲染器内置独立校验器,无需再装依赖):
# 探索期:随时校验,失败回执里会点名问题对象与建议修复 node bin/archify.mjs validate sequence cache-miss-request.sequence.json --quality showcase --json # 交付期:冻结规格 → 渲染 → 附哈希回执输出最终 HTML node bin/archify.mjs deliver sequence cache-miss-request.sequence.json examples/sequence-cache-miss-request.htmlvalidate 与 deliver 的差别
validate服务于修复循环:每次改动后跑一遍,只看回执里的诊断项,改被点名的部分即可;--quality showcase会把交叉线等构图问题从"警告"升级为"必须修"。deliver只在终检使用,它额外完成字节冻结与哈希回执,退出码非零就不算成功。
打开 HTML 之后:分章播放与路由追踪
渲染出的 成品 HTML 不只是静态图。缓存缺失示例在meta.views里配了三个章节(Request and identity、Cache fallback、Return and trace),并开启meta.animation: "trace":
- 分章播放:顶部章节按钮逐章聚焦相关参与者,无关的变暗;
Play story可自动走完整条调用链,箭头按调用顺序逐段点亮。
- 路由追踪(Route probe):框选 Web App 到 Postgres 的路径,面板给出 "3 nodes · 2 directed hops · shortest authored route",可一键复制深链或导出 1200×630 的路由分享卡——适合贴进事故复盘文档。
- 主题与导出:右上角 Dark/Light 一键切换;Export 菜单提供复制 PNG 到剪贴板、下载静态图、WebM 动图与社交分享卡。
套用清单:三步把这套时序图画到你自己的系统上
- 列清"谁参与、什么顺序":把请求链上的网关、鉴权、缓存、主库各归其语义
type,按时间顺序写下每条消息——主路径用emphasis,返回用return,鉴权用security,旁路埋点用dashed。 - 标出"节奏与代价":用 2–3 个 segment 把时间线切成可读的分幕,给关键服务加激活条,让"谁在忙、忙了多久"直接可读。
- 走完交付闭环:
validate修到 0 错误 0 警告,deliver出终版,再用node bin/archify.mjs visual-check output.html --json在 1440×900 至 2048×1320 多档桌面分辨率下确认不溢出。
字段取值与排版细节可查 authoring-contract.md 和中文编图手册。
资源导航
| 资源 | 路径 |
|---|---|
| 缓存缺失示例源文件 | cache-miss-request.sequence.json |
| 渲染成品 HTML | sequence-cache-miss-request.html |
| 时序图 Schema | sequence.schema.json |
| sequence 渲染器与布局规则 | renderers/sequence/ |
| 技能总入口 | SKILL.md |
| 编图契约 | authoring-contract.md |
| 中文编图手册 | authoring-cookbook.zh-CN.md |
一条 7 参与者、12 条消息的调用链,用不到 100 行 JSON 就能固定下来;剩下的校验、布局与一致性,都会在到达读者之前被管线拦住——你只需要把业务讲清楚。
【免费下载链接】archifyAgent skill for beautiful, verifiable architecture, workflow, sequence,>项目地址: https://gitcode.com/GitHub_Trending/arch/archify
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考