Claude 那套机械拆解 Skill 太香了,我拿 Codex 复刻了一只机械蚁

Administrator 0 阅读 技术

先说人家做得有多惊艳。

开源社区里的 elvarofficial/teardown 是一个专为 Claude Code 设计的 Agent Skill:你只要在终端用大白话输入「给我做一台能拆解的某某机器」,它就能自动生成一页纯离线的交互式 3D 单文件 HTML。

机器在画面正中央实时运转,四周的 HUD 面板读取的是同一套真实运动学状态;随手一点就能打开正在运转的内部零件;没人交互时,页面还会自动进入多角度导览镜头。经典的暖米色工程纸基底(#e5ddce),连杆机械本身就是视觉主体,仪表紧紧绑定在机构物理状态上,绝不是浮在表面贴两行装饰字。

这套体系底层依托的是 whaleyxbt/claude-motion 这一套成熟的 motion 工具链。作者 @elvar_official 在 X 上专门写过一篇深度长文把「任意机械 → 交互式 3D 拆解模拟器」的方法论拆得很透:How I Turn Any Machine Into a 3D Simulator…。

官方三台完整示例:建议动手前先对照

仓库自带了三台完整示例。强烈建议装好技能后,先在本地 build 出来对照其「纸面工程气质」:

  • 官方仓库主页:github.com/elvarofficial/teardown
  • V8 四冲程发动机:node sims/build.mjs v8-live → 生成 teardown-out/dist/v8-live.html
  • 赛斯纳 337 起落架:node sims/build.mjs cessna-live
  • Strandbeest SB-10(沙滩步行机构,纸面气质标杆):node sims/build.mjs strandbeest-live
  • 上游核心工具:whaleyxbt/claude-motion

注:README 里的动态预览图也在原仓的 docs/ 目录下(v8.gif、cessna.jpg、strandbeest.jpg),动手前可以先去翻看直观效果。

官方推荐的标准安装方式为:

npx skills add elvarofficial/teardown -g -a claude-code

随后在安装目录中执行:

npm install && npx playwright install chromium

环境依赖要求:Node.js 20+;若需要进一步导出高清录屏成片,系统需配置 ffmpeg;程序化生成配套音轨则需要 Python 3。

看完这套东西,我的第一反应是:整套方法论和工程链条太完整了。从加载 Skill、依据工程图建模、Model-First 状态驱动,再到通过 Critic 机制多轮自我打磨挑刺——整条生产链路一气呵成。

但官方公开说明通篇都是针对 Claude Code 的;我翻过 fork 和关键词检索,没看到现成的「Codex 专用复刻版」仓库。不过,Agent Skills 在规范层面两边都能解析标准的 SKILL.md,格式上完全可以迁移进 Codex。

我想验证的是:在家里这台 Windows 主机上,用 Codex 能不能走出同样一条路,而且不要半成品?

我们做成了什么?

建模对象我选定了一只六足仿生机械蚁。在项目初始阶段,目录中预置了三张核心工程图纸:爆炸图、三向正交投影图与运动学简图。

  • 整体机械包络:140 × 135 × 58 mm
  • 四段腿节尺寸配比:按 9 / 28 / 34 / 12 mm 设定

经过数轮迭代与 Critic 挑刺,交了一页单文件离线 HTML,大约八百多 KB(本机约 810KB;输出于 teardown-out/dist/ant-live.html)。先说清楚:功能清单能对上官方示例那一桌,观感、机构密度和成片能力还差一截——很多地方不如人家,不是小修小补就能齐。 Codex 侧移植与蚂蚁演示已公开在 HuaJuan2023/teardown-codex(可直接打开仓内 examples/ant/ant-live.html):

  • 动力学步态:相位驱动的六足三角步态(Alternating Tripod Gait),下颌可单独拧
  • 交互:爆炸拆解、剖面切片、部件隔离、待机自动导览
  • HUD:步态相位、功率估计、六足负载、组装切换、显示模式、底部步态时间线
  • 真数驱动:数值取自当前帧模型状态,不许写死装饰表
  • 纸面:暖米色工程纸底(#e5ddce 一带);9g 舵机进侧槽,消掉「髋下两块黑垫脚石」

中间踩过的坑与翻车修复

整个复刻过程并非一帆风顺,中间几度翻车:

  1. 图纸输入故障:初期参考图一度读取传输失败,后来确立了「本地缺图先向云盘或本地图库调取」的标准化兜底流程;
  2. 初版模型极度简陋:第一版自动化 QA 虽然通过了,但生成的模型极其抽象——一个椭圆形肉球上插了六根牙签细腿,控制台 Console 脚本体积只有可怜的约 4KB(而官方标杆示例动辄 20KB+);
  3. 多轮 Critic 挽救质感:后续依靠严苛的多轮 Critic 流程——强制补齐满血 HUD 监控面板、严格按工程图纸抠出壳体拓扑与侧槽几何,并将官方的 Strandbeest 示例作为基准,坚决施行「机构几何、空间场域、HUD 遥测」三刀拆解重构,才收到现在这版——能看、能拆,但对着 Strandbeest 仍一眼露怯。

真实的差距:还不足什么,为什么?

先把结论写死:这次复刻在很多地方仍明显不如上游。 把我们的机械蚁和 skill 自带的 Strandbeest 示例(strandbeest-live)并排放在同一块屏幕上,差距一眼能指出来——不是「还差一点」,是机构、数学厚度、成片链路几条线同时短一截。

1. 机构密度依然不足(核心差距)

对方真正做到了「机构即视觉」:每一根连杆、每一个传动节点都在诉说物理逻辑。

我们的机械蚁功能虽然齐全,但整体机械感依然偏向「示意级装配」——工业板件感虽然出来了,但细部连杆的咬合、工业工程标注的密度,以及那种一眼就能辨识的精密实验室仪器感还没完全追上。

原因非常实际:我们的几何体本质上是用代码参数化示意拼装出来的,并不是直接吃进可制造的工业级精细 CAD;时间大多花在了消除舵机黑色垫脚石、拉满 HUD 仪表盘、校准纸面基底色调上,没有把细部零件的物理厚度堆到 Strandbeest 示例那种密度。

2. 没有真机物理遥测

屏幕四周仪表盘展示的实时功率、支腿负载、发热温度,全部是从关节实时旋转角和步态相位公式中反推出来的「理论估计值」,并不是真实物理传感器回传的遥测流。

虽然官方示例也是基于模型状态驱动的,但对方连杆运动学的数学表达更加扎实「咬肉」;我们推导的模型偏单薄,仪表盘铺得再满,看久了也像是同一层皮。

3. 全平台压测与交付链路未跑满

目前尚未在低性能集显(iGPU)和手机移动端浏览器上测帧率;也没有走通 skill 官方那条基于 Playwright 的 Headless 无头录像以及程序化合成音轨直接出片的高阶交付流。

今天的成果停留在「单文件离线可交互页面能看」,还没达到「演示片能发」。

4. 移植不等于开箱即用的官方 Codex 版

必须客观指出:这本质上是在本地 Windows 环境下把 Claude 生态的 Agent Skill 塞进 Codex 跑通的一次个人攻坚复刻,而不是仓库原生支持的官方 Codex 发行版。

在环境配置中,路径分隔符、沙箱隔离权限、全局技能目录习惯与 Claude Code 存在诸多差异,所有兼容性暗坑必须自己逐个踩平。

一句话总结:Claude 那套 Skill 厉害在方法论和示例密度;Codex 这边我只证明了功能链能接通、纸面能靠近一截——整体仍明显不如上游,短的是机构视觉厚度、连杆数学「咬肉」程度,以及录像成片那一层,不是按钮没加够。

你要跟着试,推荐按这个顺序走(6 步复刻 SOP)

如果你也想在本地(无论是用 Claude Code 还是 Codex)复刻这套离线机械仿真流程,建议严格按照以下顺序执行:

[1. 跑通官方三台示例] ───> [2. 配置环境与技能路径] ───> [3. 准备工程参考图 ref/]
                                                                │
[6. 三刀对比 Strandbeest] <─── [5. 真数绑定 HUD 控制台] <─── [4. 先定包络,消除黑块]
  1. 校准审美基线:首先打开 elvarofficial/teardown 原仓,在本地完整构建出三台标杆示例(v8-live、cessna-live、strandbeest-live)。务必仔细阅读作者的原理长文 How I Turn Any Machine Into a 3D Simulator…,把暖米色纸面基底与机构动效的标杆深深印在脑子里。
  2. 环境与技能对齐:按照官方指引安装技能并配置 Playwright / Chromium 环境;若使用 Codex,可参考公开仓 HuaJuan2023/teardown-codex 的安装说明,并确保技能目录被 Codex 正确感知(两边目录与沙箱习惯不同);上游 motion 仍见 claude-motion。
  3. 规范整理工程图纸:新建项目目录,将机器的爆炸图、三向正交投影图、运动学简图规范收纳进 ref/ 目录;如果图纸缺失,提前向本地图库或云盘索取,绝不凭空盲猜建模。
  4. 先定硬指标,消灭视觉黑块:在让模型生成具体几何体前,务必先用代码明确限制硬尺寸包络(如本次的 140×135×58 mm)和关节旋转极值;对于微型舵机、电机等外购件,优先在底盘开侧槽内嵌,彻底消除初期容易出现的「髋关节下方垫着两块黑色垫脚石」的粗劣感。
  5. 拉满 Console 体量并绑定真数:对照官方示例的标准把控制台 Console 脚本做扎实,禁止在界面堆砌写死的虚假数据,所有 HUD 动态折线、负载条与相位盘必须严格绑定在 3D 模型每一帧的矩阵运算上;生成单文件离线 HTML 后,手动逐一检验零件爆炸、剖切切片、独立隔离与镜头导览。
  6. 对标 Strandbeest 实施「三刀重构」:把自己的产出与官方 Strandbeest 示例并排对比,分拆为「机构几何、空间场域、HUD 遥测」三刀逐项迭代,每改一刀做一次验证,切忌试图通过一次笼统的大改去追赶机械密度。

如果我这边接下来继续迭代这只蚂蚁,我会把精力全部砸在提升连杆与机械咬合的工业视觉厚度上,而不是继续无休止地堆砌界面面板。

上游 Strandbeest 示例演示

机械蚁成品演示