跳至内容

Anatomy:让 AI Agent 先造一台机器,再解释一个概念

GitHub 1.48 万 Star 的 Agent Skill,把抽象系统变成可运行、可检查的交互式机械图
2026年10月17日 由
Anatomy:让 AI Agent 先造一台机器,再解释一个概念
赵博

一句话:Anatomy 不是“又一个画图工具”,而是一套让 AI Agent 先造一台机器、再解释一个概念的技能包。

调研对象:wheresryan22/anatomy · MIT License · 截至 2026-10-17 约 14,851 Star / 1,134 Fork。

过去两年,AI 生成图表已经不难:给一段文字,几秒钟就能得到方框、箭头和渐变色卡片。但大多数结果仍然像“把 PPT 自动排版了一遍”——能看,却很难让人真正记住一个系统是怎么运转的。

GitHub 上的 Anatomy 走了一条不同的路。它不要求模型画流程图,而是要求模型先发明一台真实存在的机器,再让读者通过机器的结构、运动和读数理解抽象概念。仓库创建于 2026 年 10 月 8 日,截至 10 月 17 日已拿到约 1.48 万 Star、1,134 Fork,并保持 MIT 开源。

1. 它到底是什么:一个会“造机器”的 Agent Skill

Anatomy 是一个标准的 Agent Skill:根目录放一份 SKILL.md,Agent 读取后按其中的工作流执行。它明确支持 Claude Code、Antigravity、OpenCode、Codex 和 MiniMax Code,不是某个模型厂商的私有功能。

你给它的不是“画一张架构图”,而是一个技术概念和最终落点:

  • “解释 token bucket 限流,做成可交互的等距图。”
  • “把缓存失效画成一把弹子锁,输出独立 HTML,浅色主题。”
  • “解释 GPU 上下文如何服务多个画布,做成 React 组件。”

它交付的也不是一张不可编辑的位图,而是你自己拥有的源码:一个 Node 构建脚本加上它生成的页面;如果选择 React,则是几何模块、静态图服务端组件和一个客户端交互组件。

输出形态
SVG

核心形态。等距零件、四色明暗、前后遮挡、实时读数与缓动交互。

代表:dial-indicator、desk-computer、arcade-cabinet
输出形态
SVG + WebGL

线条画不出来的东西:火焰、尾焰、水波、焦散、灯光、蒸汽。

代表:raptor-engine、ripple-tank
输出形态
3D(Beta)

需要在深度方向转动或拆下的零件:表盘、转台、手指、脱落部件。

代表:turning-dial

这也是它和“AI 生图”最根本的区别:位图生成的是结果,Anatomy 生成的是可运行、可检查、可继续修改的模型。

Anatomy 示例:百分表与量块
最小的完整示例 dial-indicator:滑动载物台,百分表指针会读出量块高度。Hover 有交互,所有读数来自同一个高度模型。图源:wheresryan22/anatomy(MIT License)

2. 核心方法:给概念发明一台机器

README 里有一句话总结了它的设计哲学:

“Explain an idea by building it as a real, working object.”
通过把想法做成一个真实、可运转的物体来解释它。

比如:

  • 一个“什么都没变就跳过工作”的缓存键,被做成一把弹子锁:只有每一根弹子都对齐,锁芯才能转动。
  • 一个“GPU 上下文服务多个画布”的概念,被做成一台龙门点样机:一个打印头依次访问 16 个孔位。

物理对象的好处是,它天然携带因果结构:锁为什么打不开、点样机为什么一次只能服务一个孔位、阀门打开后压力如何传递——读者不需要先理解一堆抽象名词,就能从机械结构里“看见”因果。

更关键的是,Anatomy 要求图上的每一个数字都来自驱动零件运动的同一个模型。不是先画一张漂亮的图,再在旁边编几个数字;而是先有小模型,模型产生读数,读数再驱动指针、液面或零件的位置。这样,图才不会“看起来专业,但经不起追问”。

3. 它是怎么工作的:一次小型工程

Anatomy 的 SKILL.md 把生成过程拆成了一条相当克制的工作流:先收集真实数字,再发明物理对象、列零件表、规划世界、建几何、上色、装框、做交互,最后像评论家一样验收。可以压缩成下面六步:

Anatomy 工作流:从需求到可交互机械图
Anatomy 的六步工作流:真实数字 → 物理隐喻 → 零件表 → 等距几何 → 交互与着色 → 自动验收。图:本文根据 README 与 SKILL.md 整理
  • 收集真实数字:压力、频率、尺寸、阈值先确定,后面所有几何和读数都围绕它们展开。
  • 发明物理对象:不是给概念套一个好看的壳,而是找到一个“机制本身就能解释概念”的物体。
  • 列零件表:每个零件有形状、尺寸、材料和安装位置;这一步决定了后面能不能画对。
  • 建等距几何:用同一台相机、同一套 kit 画出可复用的零件;圆件走 lathe,管线走 tube。
  • 做交互与着色:悬停、拖拽、键盘、实时读数;需要时再用 WebGL 叠加火焰、水波和光影。
  • 自动验收:几何审计证明零件不互相穿透、端点都有安装面、遮挡顺序正确;截图脚本再检查每一帧的视觉结果。

仓库里的 kit/ 是这套方法的底座:等距相机、实体与零件库、任意轴旋转体、管线与电缆、WebGL 图层、3D 运行时和 React 组件。除了 React 组件需要 React 18+,其余全部只依赖 Node 内置模块,不需要 npm install,也不需要 API Key。

验收部分尤其值得注意。Anatomy 不是“生成完就让用户自己看”,而是内置了 audit.mjs、capture.mjs、drive.mjs、lines.mjs、turn-check.mjs 等检查脚本:审计几何、截取特写、生成接触表、检查悬空线头、验证 3D 遮挡与性能。换句话说,它把“好看”拆成了可以被程序检查的约束。

4. 八个示例:从 300 行到 380 个零件

仓库自带八个完整示例,覆盖了从最小可读到高密度机械的不同难度:

示例
dial-indicator

最小的完整示例,约 300 行;滑动载物台,指针读出量块高度。

构建:node examples/dial-indicator/build.mjs
示例
desk-computer

1984 风格桌面电脑,可打字;约 85 个实体、850 条路径。

构建:node examples/desk-computer/build.mjs
示例
arcade-cabinet

街机柜剖面:投币、走线、CRT 预热,约 240 个实体、15 条电缆。

构建:node examples/arcade-cabinet/build.mjs
示例
raptor-engine

Raptor 2 发动机测试台,可拆成 11 个组件;WebGL 尾焰与蒸汽。

构建:node examples/raptor-engine/build.mjs
示例
ripple-tank

学校水波槽:两层 WebGL 分别渲染灯光/焦散与水面反射。

构建:node examples/ripple-tank/build.mjs
示例
test-rig

React/Next.js 生产示例:玻璃按钮、探针、百分表,53 个实体。

构建:无构建脚本,复制进 React 应用
示例
spot-plate

六对玻璃液滴,距离场控制合并;一把扇形塞尺同时控制六组间隙。

构建:无构建脚本,复制进 React 应用
示例
turning-dial

3D 模式 Beta:表盘真实转动,约 90 个零件逐帧重投影与重着色。

构建:node examples/turning-dial/build.mjs
Anatomy 示例:Raptor 2 发动机拆解图
raptor-engine:悬停即可把发动机拆成 11 个组件。几何审计会检查静止、拆解和每一帧过渡中,管线都不穿过其他零件。图源:wheresryan22/anatomy(MIT License)
Anatomy 示例:水波槽
ripple-tank:SVG 画器材,WebGL 画灯光、焦散和水面反射;频率变化会从振子向外传播。图源:wheresryan22/anatomy(MIT License)
Anatomy 示例:3D 转盘
turning-dial:3D 模式 Beta。拖动表盘时,约 90 个零件逐帧重投影、重着色;周围静态部分仍保持 SVG 的稳定画质。图源:wheresryan22/anatomy(MIT License)

5. 安装与使用:一条命令,五种 Agent

最省事的方式是通过 skills CLI 安装:

npx skills add wheresryan22/anatomy -g

CLI 会询问要装到哪些 Agent;也可以直接指定:

# Claude Code
npx skills add wheresryan22/anatomy -g -a claude-code

# Codex
npx skills add wheresryan22/anatomy -g -a codex

# OpenCode / Antigravity / MiniMax Code
npx skills add wheresryan22/anatomy -g -a opencode
npx skills add wheresryan22/anatomy -g -a antigravity
npx skills add wheresryan22/anatomy -g -a minimax-code

装好后,在 Claude Code 里用 /anatomy,在 Codex 里用 $anatomy:

$anatomy explain how a token bucket rate limiter works, interactive

也可以把需求说得更具体。以下是我建议的提问模板:

$anatomy 把“Odoo 销售订单确认”画成一台点样机:
- 订单校验、库存检查、信用检查、确认、生成交货单各对应一个工位
- 输出独立 HTML,浅色主题
- 鼠标悬停时显示当前工位和真实单据数量
- 最后运行几何审计

需求里最好同时给出三件事:要解释的概念、希望对应的物理对象(如果已经有想法)、最终落点(独立 HTML / 单个 SVG / React 组件,浅色还是深色)。信息越具体,Agent 越不容易把它做成一张普通的流程图。

依赖
Node.js 20.10+

构建、kit、检查

只用内置模块,无需 npm install
依赖
Chrome / Chromium

截图与浏览器检查

可用 CHROME_PATH 指定路径
依赖
React 18+

React 输出

仅 kit/react/ 与 React 示例需要
依赖
Claude Code / Codex / 其他 Agent

执行技能

标准 Agent Skills 格式,不绑定单一厂商

6. 边界:它不适合做什么

Anatomy 的 README 把边界写得很清楚,这一点反而增加了可信度:

限制
不是图表库

没有坐标轴、数据系列和统计图;数字以实时读数和真实零件尺寸出现。

限制
不画人和精确地图

它擅长机器、仪器、工具和家具;没有机械结构可言的抽象概念会显得弱。

限制
慢是设计的一部分

一张图可能需要一次长会话:零件表、几何、审计、双主题特写都要做。Raptor 的构建要几分钟,30 个零件的完整 3D 审计要 15–20 分钟。

限制
着色器需要 WebGL

没有 WebGL 时 SVG 仍然可读;减少动态效果时画面会静止。

限制
3D 仍是 Beta

小图可跑 60fps;380 个零件的压力测试手在 1440px 下约 20fps,节流手机配置约 13–15fps。

所以它不适合“今天下午要 20 张数据图”的场景。更适合那些值得被记住、被反复引用、需要建立长期认知的核心概念。

7. 对技术内容与产品表达的意义

对做企业软件和开源项目的人来说,Anatomy 提供了一种新的内容思路:

  • 把功能清单换成机械隐喻:ERP 的订单流、库存周转、审批链、MES 工单,都可以找到对应的物理对象。读者记住一台机器,比记住十个功能点更容易。
  • 把文档变成可交互的教具:产品手册里的关键流程,不一定要用长文解释;一个可以悬停、拖拽、显示真实数字的图,往往更有效。
  • 把“专业感”落实到可验证的细节:零件不穿模、线头不悬空、读数有模型依据。这些约束让图不只是“看起来高级”,而是真的经得起工程师审视。

当然,物理隐喻不是万能的。强行把每一个概念都做成机器,容易变成过度设计。更合理的做法是:先判断这个概念是否真的存在“机制”——有输入、状态、约束和输出——如果有,Anatomy 会非常合适;如果只是分类、对比或趋势,传统图表仍然是更好的工具。

8. 结论

Anatomy 最值得关注的,不是“AI 会画等距 SVG”这件事本身,而是它把解释变成了一件可以被工程化验收的事:先有真实数字,再有物理对象,再有零件表和几何,最后用审计脚本和截图检查每一帧。

当 AI 的输出从“一张看起来不错的图”,变成“一套可运行、可检查、可交互的模型”,它才真正开始接近“作品”,而不只是“素材”。这或许也是 Agent Skill 接下来最值得探索的方向之一:不是让模型多会一种格式,而是让它多掌握一种把复杂事情讲清楚的方法。

项目地址:github.com/wheresryan22/anatomy
官网:skills.wheresryan.sh/anatomy
许可证:MIT · 作者:Ryan(@wheresryan22)
数据说明:Star / Fork 数据取自 2026-10-17 GitHub API;功能、示例与限制以仓库 README 和 SKILL.md 为准。

OBS 麦克风降噪图文 SOP(macOS 本地版)
从定位麦克风到 RNNoise 降噪、试音与噪音门校准