我的AI代理老是说任务完成了。于是我让它证明一下。
摘要
一位开发者描述了如何构建一个 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 能打开它”也算不上什么验证策略。
我想避免的一件事是虚假验证:脚本测量自己的结果,然后断言结果与刚测量的内容相符。这里的期望值来自你给出的设计约束。否则,你只是让模型给自己的作业打分。
相似文章
AI 代理依然拉胯,于是我自己造了一个
作者构建了一款自定义 AI 代理应用,封装了 Claude Code 并即将支持 Codex,侧重于可组合的工作流,并期待社区反馈。
给AI编码智能体一个确定性的“架构检查器”,使其不再假装“完成”
本文描述了给AI编码智能体一个确定性的架构检查器,该检查器检查事件风暴图中的机械性缺口和未决问题,确保智能体不会假装完成。
@sharbel: 有人构建了一个免费的、生产级工程技能合集,教会你的 AI 编码代理如何像高级工程师一样精确工作……
Agent Skills 是一个免费的开源合集,包含生产级工程技能,教会 AI 编码代理遵循高级工程师的工作流程,包括规范优先、原子化构建和质量门,兼容 Claude Code、Codex、Cursor 和 Gemini CLI。
一位CEO用Claude MCP + NetSuite构建了自己的AI代理。它成功了,但后来无法扩展。
一位CEO使用Claude MCP和NetSuite原型化了一个AI代理,但未能扩展。BotsCrew重建了整个技术栈,实现了50%的自动化、24倍的响应速度提升和每年14万美元的节省。
我的智能体不停撒谎,于是我让它们展示工作过程
作者描述构建了一个‘门控’,记录工具调用并验证AI智能体回答中的声明是否对应实际日志条目,迫使智能体展示其工作过程,从而减少幻觉回答。