介绍如何让 OpenAI Codex 围绕 Studio 软件格式自主生成、验证并可视化乐高套装文件的完整流程。
AI translation, not an official translation. Refer to the original for technical details.
Adapted from @dkundel# 用 Codex 搭建乐高套装 一旦你意识到 Codex 擅长构建工具并验证自身的工作,整个世界就为你打开了大门。 为了测试这一点,我觉得探索 Codex 能否独立搭建乐高套装会很有趣。这里不是用图像生成、HTML 或 SVG,而是真正的乐高套装。通常人们使用 Bricklink 的 Studio 软件来完成这项工作,它本质上是一款专为乐高设计的 3D 建模软件,支持生成搭建说明以及其他乐高专属功能。(https://www.bricklink.com/v3/studio/download.page) ## 构想 如果我们能让 Codex 自行构建工具和技能,并具备以下必要信息,会怎么样: 1. 通过编写必要的文件来生成新的乐高套装 1. 验证这些文件是否有效 1. 使用 Studio 软件创建渲染图,以视觉方式验证效果是否正确(借助 Codex 的图像输入能力) ## 构建乐高技能 但"必要的文件"到底是什么?它们是 .io 文件,但我完全不知道其内部结构是什么样的。于是我从 Studio 软件中取了一个示例模型,把它交给 Codex 作为参考,让它自行摸索清楚一切。 以下是我的初始提示词: 从这里开始,我先以"计划模式"启动 Codex,回答了它的一些问题,然后让它执行计划。下面让 Codex 来总结一下它所做的事情: > 我首先使用一个 Studio 示例模型来弄清楚 `.io` 文件的实际结构,而不是凭空猜测。我发现它是一个 ZIP 压缩包,以 `model.ldr` 作为核心几何数据,加上元数据和可选资源。在此基础上,我构建了一个专用的 `lego-studio-builder` 技能,包含用于解包/打包模型、执行明确的积木操作以及验证结构(子模型链接、变换、零件数量、边界和元数据一致性)的脚本。因此,输出的不只是一次性的模型,而是一套可重复使用的工具链。 然后我将一切串联进一个严格的循环:进行一小批编辑、验证、重新打包、生成视觉检查点、与参考图像对比,然后重复。它还处理了沙盒截图失败等环境问题,通过支持提升权限的截图方式以及带警告的安全回退来应对。最后,我添加了一套真正的建模规范(比例规则、分阶段搭建策略、子模型约定和质量门控),并将该技能移入 `.agents/skills`,这样我可以在这个项目中直接复用它。 ## 测试技能 技能创建完成后,是时候进行测试了。我习惯在测试技能时尽可能少提供上下文,就像我之后实际使用时那样。所以我让它附上一张图片参考,重新创建 Codex 的 Logo。 可以说,结果还有很大的改进空间。但有一点明确的迹象:Codex 确实生成了图像渲染并输出了结果。这意味着还有改进的余地。 我没有直接迭代技能,而是让 Codex 持续调整,修复一些最明显的问题。效果已经是天壤之别。 这一次 Codex 运行时间更长,中途进行了多次检查,达到了一个好得多的状态。虽然并不完美,但已经更具实用性。 在进一步迭代之后,Codex 学会了使用 Python 代码计算和估算位置、处理对称性等问题。最终我们达到了一个令我满意的状态,尽管坦率地说,这是一个拥有 12,679 个零件的超大模型。 现在Codex已经对整体情况有了很好的掌握,我可以轻松解决这些问题了。我让Codex缩小模型尺寸以适合放在我的桌上,它便去执行了。在这个过程中,它将模型的零件数量从12,679件减少到4,081件,同时保持了模型的整体外观。 ## 改进技能 技能的魅力在于它们并非一成不变,可以随时间轻松改进。在这个案例中,我最终分叉了引导模型达到这一状态的对话,并请Codex回顾整个对话,将从中获得的经验更新到技能中。提示:如果你使用的是Codex应用,也可以通过使用"自动化"功能定期自动完成这一操作。 ## 结论 这是一次非常有趣的实验,作为一名乐高爱好者,我会继续玩下去。但更重要的是,它揭示了一个可以普遍应用于Codex的概念。 Codex在拥有工具来验证自身工作时效果最佳,而且由于它在你的设备上运行,它可以了解你已经在使用的工具并加以改进。在前端开发中,这可能是使用Playwright来控制你的浏览器。对于iOS开发,Codex可以使用iOS模拟器和辅助功能工具。但这不必局限于传统的开发者工具,你只需开口询问即可。如果你想看另一个例子,可以看看 @heccbrent 让Codex在Premiere中控制和编辑视频的使用案例。(https://x.com/heccbrent/status/2026430769464308040?s=20) 你还尝试过让Codex与哪些工具协同工作?