我的AI代理老是说任务完成了。于是我让它证明一下。

Reddit r/AI_Agents 工具

摘要

一位开发者描述了如何构建一个 Claude Code 技能,在导出前验证 AI 生成的 CAD 几何体,利用体积、边界框和点分类检查捕获 OpenCASCADE 的静默故障,例如未抽壳的零件和位置错误的切割。

我正在使用 Claude Code 生成零件,并将它们导出为 STEP 文件供 SolidWorks 使用——是真正的 B-rep 实体,而不是 STL 网格。大多数时候,它运行得出奇地好。问题在于那些看起来像成功实则是失败的情况。我当时正在构建一个 94 × 65 × 26 mm 的外壳,壁厚 2.5 mm。脚本顺利运行,打印出 `[OK]`,STL 预览看起来也完全像一个中空外壳。但它并不是中空的。该零件包含约 158,048 mm³ 的材料。根据尺寸,它应该约为 33,370 mm³。`IsValid()` 仍然返回 `True`。OpenCASCADE 在抽壳时静默失败,返回的本质上还是原来的实心块。这让我不再相信“脚本运行了”就能证明 CAD 实际是正确的。所以我构建了一个 Claude Code 技能,在导出前增加验证。它检查以下内容: * **预期体积**,根据设计中的尺寸推导,而不是根据生成的几何体。在外壳案例中,结果偏差约 4.7 倍,所以你不需要很紧的公差就能发现失败。 * **边界框**,与零件应占用的尺寸进行比较。 * **点分类**,在应包含材料或空腔的坐标处检查。这捕获了另一个案例:一个端口被切割到了错误的壁上。有效性、实体数量和总体积看起来仍然合理,因为切割本身尺寸正确——只是位置不对。 * **已知的 OpenCASCADE 故障模式**,其复现用例会根据当前的 CadQuery/OCP 版本进行检查,而不是假设旧行为仍然适用。 工作流程基本是:用纯英语描述零件 → Claude 编写 CadQuery → 在缺少重要尺寸时提问,而不是凭空编造 → 检查生成的几何体 → 只有通过检查后才导出 STEP。 我还测试了一个独立的畸形 STEP 文件,其报告的实体体积在物理上大于其自身边界框所能容纳的范围。SolidWorks 打开它时没有出现错误对话框,也没有导入诊断警告。所以“SolidWorks 能打开它”也算不上什么验证策略。 我想避免的一件事是虚假验证:脚本测量自己的结果,然后断言结果与刚测量的内容相符。这里的期望值来自你给出的设计约束。否则,你只是让模型给自己的作业打分。
查看原文

相似文章