一、它是啥:一句话让 AI 把想法做成一台会动的「机器」
仓库 wheresryan22/anatomy(MIT / JavaScript / Claude Code skill,也跑 OpenCode / Codex)一句话:它让 AI 先把你要讲的概念发明成一个真实、会动的物体,再用几十个小而实、带阴影的等距零件把它搭出来,装进一张带标题、提示和实时读数的卡片里,让它在鼠标和键盘下平静地动,最后自己把每个关节放大检查一遍。图里的每个数字,都来自同一套驱动零件的小模型。
按数据红线实查(2026-10-15 查):★12,024 / 859 forks / MIT / JavaScript / 10-08 建、10-14 还在推(活跃)/ 6 个 open issue / 官网 skills.wheresryan.sh/anatomy。注意别跟 motiondivision/motion(★3.4 万的 React 动画库)混——它俩毫不相干。
二、机制:object-first——把概念变成物理机器(只有读 SKILL.md 才写得清)
它最不一样的一点不是会画等距图,而是工作流:先让 agent「用一台真能转的物理机器来表达概念」,再把看得见的数字绑到驱动它运动的那个模型上。SKILL.md 里举的原例:
- token bucket 限流器 → 一台弹子锁(pin-tumbler lock):只有所有弹子都对齐才转动(对应「没 token 就拒绝、不排队」);
- 一个 GPU context 服务多个 canvas → 一台龙门雕刻机(gantry plotter):单个打印头依次去 16 个工位(对应「一个上下文轮流服务多块画布」)。
SKILL.md 规定的工作流是固定动作序列:先采集真实数字 → 发明物体 → 写零件清单 → 规划世界 → 用 kit 一次性建几何 → 由后往前上色 → 装卡 → 让它「活」起来 → 像批评家一样验证。这就是为什么它「画机器」不「画图」:概念必须真有个机制可搭,否则出来会弱(官方明说)。
三、三档输出:SVG 打底 · SVG+WebGL 加特效 · beta 3D(读 How it works 才见)
三种图共用一套 kit、一个相机、一套工艺规则,区别只在渲染层:
kind 是什么 例子
SVG 核心。实心等距零件 + 四色调色 + 实时读数 大多数场景的默认
SVG+WebGL 在前后 SVG 层之间夹一层 WebGL canvas raptor 发动机喷射(火焰/尾焰 shader)
3D(beta) 动件每帧重投影+重着色,静件保持平面 turning-dial(约 90 个零件/帧)关键取舍(README 原话):SVG 是「WebGL 不可用时仍可读」的兜底——文档站、受限浏览器、无障碍环境都能退化;WebGL 只用来加「平面矢量画不出的」火焰、水、焦散、辉光、反射;3D 是「最激进但带最重 caveat」的一档。选「能 SVG 就别 WebGL、能 2.5D 就别 3D」。
四、工程化:零依赖 + 几何审计 + 无头 Chrome 自检(读 kit/ scripts/ 才写得出的机制)
这仓最大的工程亮点是「零外部依赖」(README 顶部徽章 dependencies: 0):kit 只用 Node 内建模块(Node 20.10+),React 输出才需要 React 18+。核心组件(读目录才见):
kit/audit.mjs——几何审计:证 nothing passes through anything(无部件穿透)、every end sits on a mount(每个端点都落座)、overlap 按深度顺序绘制。raptor 发动机那条 audit 「证明静止、拆散、中间每一帧都不穿模」。scripts/capture.mjs/drive.mjs——无头 Chrome:截全图、特写、慢放 contact sheet;lines.mjs让任何「断在半空」的线直接 fail;turn-check.mjs专门查 3D 图。- SKILL.md 还要求 AI 读它生成的每一张 PNG——把「看图验收」写进了流程,不是自报「我画好了」。
安装一条命令(Node 22.20+ 给 skills CLI 用):
npx skills add wheresryan22/anatomy -g -a claude-code # -a 可换 opencode / codex
/anatomy explain how a token bucket rate limiter works, interactive五、横向对比:跟站内 archify 不同档 · 跟 Rea 也不同向
| 工具 | 它给什么 | 强 | 何时别用 |
|---|---|---|---|
| anatomy(本文) | 概念 → 会动的 2.5D 等距「机器图」,SVG/WebGL/3D,零依赖 + 几何审计 | object-first 把抽象机制变成可交互实物;审计证不穿模;SVG 兜底可读 | 要画人、画精确地图、画数据图表都不行;3D 还 beta 且 380 零件只有 ~20fps |
| archify(本站 · 代码仓库→可交互架构图) | 读一个代码仓库的结构,渲染成可交互架构图 | 讲「这个仓库模块怎么连」;喂的是真实代码目录 | 它画的是「软件结构」,anatomy 画的是「物理机器来解释概念」——对象不同 |
| REA(本站 10-11 · 逆向任意程序) | 把程序二进制逆向成可读源码(MCP 工具链) | 「黑盒程序 → 白盒代码」;evidence-first | 方向相反:Rea 拆程序,anatomy 搭图——一拆一搭 |
一句话定位:archify 是「仓库的解剖图」,anatomy 是「概念的机械模型」,都叫「把复杂的东西画出来」但喂的东西、画的东西完全不同,别混。
六、官方边界(README「Limits」原话,不当全能工具吹)
- 不是图表库:没有坐标轴、系列、数据 plot。数字只以「实时读数 + 零件真实尺寸/数量」出现。
- 画机器/仪器/工具/家具,不画人、不画精确地图;概念没有机制可搭时,输出会变弱。
- 「故意慢」:一张图要长会话(零件清单 + 几何 + 审计 + 双主题特写);3D 30 零件的全 orbit 审计要 15–20 分钟;380 零件的压力手 1440px 宽 ~20fps、throttled 手机档 13–15fps(均为作者自报,非审计值)。
- shader 依赖 WebGL:没有就退成纯 SVG 仍可读;reduced-motion 下所有图静止。
- 3D 是 beta:只在它自己的示例 + 一张测试图上证过,没在生产图上证过。
我的判断:给技术文档 / 产品页 / 知识讲解做「读者能动手的交互示意」,anatomy 是目前很对路的一个(概念 → 会动实物 + 几何审计 + 零依赖)。但它是「解释类可视」,不是工程图、不认证机械公差/安全合规/解剖精度/制造适用性——生成的管道「看着合理」,底层事实仍要专家把闸。做数据可视化、画人、画地图就绕开它。