codex感觉稳准狠,也许也是逐渐掌握了和 AI 博弈的技巧了吧。
要在 App 里面做一个3D地球(地图)的渲染,以及坐标定位的功能。本身没有任何空间地理(坐标转换,3D贴图等等)的任何知识,在做之前也不知道是什么结果,一直以来感觉跟 AI 配置做 UI 以及 debug 都是一个难项,没什么太成功的实践。
前期调研,先找 Gemini 做一下对话,在对话中了解到一些专业术语,获取一点领域知识,之后就能比较准确的对需求/问题进行描述。对于实现效果脑子仅有想象,这一点是很难跟 AI 去描述的。目前想到一个觉得比较好的办法就是让 AI 通过 HTML+CSS 做一个简单的 UI 实现,包括布局,包括贴图渲染。因为 HTML/CSS AI 是能理解的。
调研完成后,去找 Claude,通过 Claude 的 plan mode 进行项目规划和布局,然后开始编码,其实一开始的工作都完成的很好。甚至有一个需求,是地球日区和夜区希望使用不同的贴图,夜晚使用的地球的夜间灯光图,AI 的方案是自定义一个渲染引擎进行渲染,代码也就 50 来行,轻松完成。但这也是各种问题的开始,叠加了各种需求之后,各种问题接踵而至,出了不少乱子,也花了很多token。
先是光照位置和 Shader 变化方向不一致。随时间变化,光源固定,但是 Shader 日夜区变化是正常。就导致视觉上太阳可能会照在地球的夜区上。一通「交流」之后呢,调整坐标计算,会变成贴图出现水平翻转。又或者能让 AI 更新光源位置,就出现地球自东向西转,但是光源是自西向东变化。接着还需要在球面做位置标记,几个坐标系之间的转换就很容易出乱子。
你很难用自然语言去描述 UI 效果,没有数理标定,文字的描述是很容易让 AI 反复转圈,或是走歪路,而且还是一个3D场景。
跟 Claude 拉扯了很久,就换到 codex 去整活。让 codex 浏览了一下项目历史(整了个skill定期总结任务到文档),并描述了当前问题和目标。codex 上来就 review 代码发现了架构上的问题,多套坐标系混用(应该是 claude 上下文太长,反复修改出现),先降低复杂度,然后固定变量去做 AB 测试缩小范围。
到这里我就想到了个办法,让 AI 在 UI 上增加一个 debug panel,去控制 UI 的渲染,并且在 UI 上增加一些边界标线,在日志里也输出这些边界定位的日志。这样就能快速调试,并且和 AI 统一语言,"看到" UI 的变化趋势。最终把问题解决了。
这应该是后续类似问题的一个处理思路了,想办法生成一些 AI 能理解的内容,统一空间定位,就尽量减少歧义和无效拉扯了。