设计文档是新的源代码
用 AI 智能体打造一个驾驶模拟器,以及为什么「写清楚」比「敲代码」更重要。
我正在做一个模拟器,通过告诉你为什么熄火来教你开手动挡。它以我自己的车为原型,用我手头现有的方向盘和踏板来操控。大部分代码由 AI 智能体编写。我几乎没有亲手写过一行,但这个项目比我敲过的大多数代码都更像是「我的」。
因为真正的工作,在任何代码出现之前就已经完成了。
设计本身就是程序
在智能体第一次运行之前,我写下了四样东西:
- 物理模型。 三个旋转部件(发动机、离合器、车轮),通过摩擦和齿轮相连,每秒计算一千次。熄火必须从这个模型里自然产生,而不是来自一句 if 判断。
- 真实依据。 我的车上没有数据记录仪,所以「真实」就是我开车时它的表现。每一种我熟悉的表现,都变成一个自动化测试:平路上慢慢松离合,车会缓缓前行而不熄火;猛地松开,就会熄火;在坡上停住,车会稳住大约两秒,然后往后溜。
- 规则。 一个简短的文件,智能体每次运行都会读。
- 里程碑。 硬件检查、物理内核、可驾驶原型、第一个正式版本。一次只做一个。
五条规则,完成了大部分工作
- 物理内核零依赖。
- 行为必须从物理中自然产生,不允许特殊处理。
- 永远不要为了让测试通过而削弱测试。
- 不添置新硬件,只用桌上已有的。
- 一次只做一个里程碑。
每一条规则之所以存在,都是因为智能体如果放任不管,会很乐意反着来。让它通过一个熄火测试,最快的办法是写一段专门识别这个测试的特殊逻辑。让它实现力反馈,它可能会建议你买一个更好的方向盘。这些规则在智能体走到那一步之前,就把门关上了。
按「是否需要我亲自动手」来分工
物理内核只需要一台电脑,所以智能体可以自己构建、自己测试。凡是涉及方向盘和踏板的部分,都要等我回到桌前,因为只有人才能判断离合的手感对不对。这样分工,智能体可以在我忙别的事时继续工作,而我的时间,留给只有我能判断的部分。
目前学到的
这篇文章写于开发中途,物理内核仍在进行中。但最初的一课已经很清楚:智能体做出来的东西,质量上限取决于你在它开始之前写下的东西。设计含糊,代码就含糊;测试精确,代码就精确。
等第一个可驾驶的版本摆上我的桌子,我会再更新这篇文章。