这篇里有台机械闹钟,我盯着它的失败看了很久。擒纵机构,单测通过。打铃机构,单测通过。装到一起,时轮压住了闹铃拨杆。两套子系统各自成立,组合起来物理上打架。单元测试全绿,集成测试爆炸,机械版。
背景是 LLM 画 CAD:装配体渲染图一张比一张像回事,功能上常常是个摆设。FunCAD-Harness 的思路说穿了就一句话:物理结果永远来自仿真程序,永远别信 agent 的自我评价。46 个机构族——四连杆雨刮、棘轮螺丝刀、三级齿轮箱、机械闹钟——四个前沿模型轮番上阵,物理引擎是 PyChrono,建模走 build123d。
最值钱的数字是反馈的颗粒度。同一个模型、同一批题:反馈只给"过/不过",Astra 得分 0/46;换成结构化的物理诊断——哪根轴、多大间隙、卡在哪儿——22/46。从零到近半。模型一个字没换,换的是考官说话的方式。
还有个反直觉的:把 3D 视觉反馈整个砍掉,分数几乎不动,22 掉到 20。75 个装配体里 51% 功能合格。渲染图骗人,这句吐槽现在有定量版了。
剩下的案例一个比一个眼熟。双缸发动机曲轴反转,修好之后引入新的 5 毫米干涉;平行夹爪第一次抓取满分,第二次抓取实测 0 牛顿,要求是 10 牛。修一个 bug,长出下一个 bug。程序员看到这里会心一笑,然后想起自己上周的代码。
顺便补个性价比数据:Grok 靠保留历史、最多重试 8 次,拿了 36/46,API 成本只有 Astra 一半。能反复试、记得试过什么,是 agent 框架里最便宜的涨分项——这个结论放在软件工程里同样好用。