纯手写500行高质量代码所需的时间是8小时,而如果提供足够精准的需求信息和约束条件,AI只要大概5分钟就能给出一次成型的代码。这是千曙科技一位研发同学给出的答案。
“古法编程”的效率曲线正被拉成一条平缓的直线。当编码执行力被彻底释放后,问题随之而来:面对自动驾驶这个需要兼顾性能和安全严苛要求的复杂系统,如何才能让AI写出符合工程师品味的算法代码?
千曙的研发同学们发现,随着AI对工作流融入程度的加深,算法工程师的角色、自动驾驶系统的开发范式、乃至项目闭环的内涵,都在被重新定义。
AI写出的代码很大程度上是榨取开源项目的结果。这些项目就像人类的“晶体智力”,凝结着作者的个人思考与编码习惯。AI吐出的一串串代码,在某种程度上是海量项目训练出成的“肌肉记忆”。
正如当下铺天盖地的.skill狂潮所折射的焦虑,人类的知识与经验可以在某种程度被拷贝、镜像化。而在Infra组李斯摩看来,抛开表面的喧嚣,“知识是跟着脑子走的”,在不同的项目环境与约束条件下,首先要有自己的蓝图,才不会在动辄上万行的代码迷墙里走失。
在每一次“施工”开始前,“建筑师”斯摩常用的prompt是“第一性原理”。他会让AI从第一性原理出发给出优化建议,并结合业界最佳实践逐步校准项目改进的空间,接着顺藤摸瓜,搞清关键细节,并形成最终蓝图。
以车机HMI系统的设计为例,作为自动驾驶系统可视化的重要模块,HMI需要实时渲染3D环境感知、地图导航、车辆状态等多源信息,是一项复杂的系统工程。
在AI开始动工前,斯摩会预先思考程序主框架的设计、渲染后端的设计,性能优化以及在车规级安全的前提下,采用何种技术手段。敲定这些方案之后,才会让AI去生成代码。
斯摩通常会把一个工程任务分拆成不同阶段,并且在每个阶段都保持恰到好处的信息密度。“Beauty Doc,Beauty Code”,斯摩总结道,要想达到最佳实践效果,需要先做好概念、架构和工程细节的设计。某种程度上说,好的概念设计就像一颗种子,架构设计则是枝干,最后(细节设计)才是每片叶子的形状,只有这样才能让代码按照工程师的品味,在约束边界范围内自由生长。
在斯摩看来,蓝图设计就是培育的过程,前期或许费时,但真正执行起来往往可以实现3-4位研发并行开发的效率。
Less is more,这句话是斯摩用作办公头像的签名。他认为,只有在做好前置设计之后,才能让AI按部就班地让想法落地。
和斯摩在干活前先讨论的做法一样,千曙的很多同学都发现,AI的知识图谱强过任何一个人类,token不能只拿来购买劳动力,“付费咨询”的过程也同样重要。
大林分享了更为系统化的原则,他称之为“BPIR”方法论。
Brainstorm(脑暴):向AI提供充分的context和外部资料,并通过与AI的多轮交互确定方案框架。这是一个和AI彼此拉扯的过程,AI可能会提出2-3个方案,然后要去权衡其中的利弊,最终才能填补不确定到确定之间的那道鸿沟。
Plan(规划):将头脑风暴确定的方案拆分为不同模块,定义好API和数据流,形成代码框架。这一环节需要让AI反复来确认方案的完备性。
大林举了个例子,“如果我说画个苹果出来,它画出来的苹果可能是黄色,也可能是红色。做项目也是一样,如果你发现AI生成的东西质量不可控,主要原因可能是你施加的约束条件不够。”
这种“串行”变“并行”的工作模式,把每个人的效率都拉到了极致。研发同学打趣道:在词元供给“不限量”的情况下,限制生产力的是屏幕数量——因为根本看不过来。
Implementation(实现):让AI根据规划生成详细计划,这份计划具体到代码的变量定义和算法实现,但他仍然不会让AI把代码直接写到文件里。还是以绘画举例,如果Plan是画人体的骨骼结构,那么Implementation就相当于进一步描绘血管。
有些反直觉的是,在这一步他通常会找个更平价的AI来做实现。“因为这一步是比较具体的执行层面”,大林说,“我希望进一步降低AI的不确定性”。
Review(评审):让AI对方案和算法实现进行自评,再由研发做最后的裁决和评定。
“施加足够的约束是我始终的原则”,他进一步补充道,“但每个环节都有Agent参与,有的负责实现,有的负责规划,有的负责执行,对于不同的Agent,约束条件也会不一样。”
确定与不确定性反复出现在与大林的对话中。“每一个环节在设计的时候,都要做两件事,一件是加约束让它变得确定,另一件就是闭环,这是AI工作流的核心。”
闭环是让AI自我迭代的过程,这个过程同样离不开人的介入。千曙的研发同学在项目中引入测试驱动研发的方法论,通常在执行某个task之前先让AI写测试。
大林解释道,测试就是通过构造不同的输入去测试输出的结果。这种方式会逼迫你尽可能考虑到所有的输入情况,从而确保方案的完备性。按照这个方式,每做完一个小task之后,就去跑一个test,从而形成“task-test”边做边测的小闭环。
随着AI对项目各个环节的介入程度加深,大林也刷新了对闭环的思考。在他看来,以往的闭环都是定制化的,例如路测的某个指标、感知模块、控制模块等,每个模块的闭环都是独立的,并不能泛用至其他环节。
整个项目在某种程度上就是这些闭环的组合,就像发动机的齿轮彼此啮合,当所有的小闭环跑通后,最后产出的算法模块才能真正转起来。而AI的闭环自动化,则是让AI在开发任何一个模块的时候,可以基于通用的平台,根据不同的任务选择不同的工具来进行验证。
从构建蓝图到不同Agent的行为约束,再到通用的任务闭环,AI时代的开发与协作范式正在剧变。新的起点上,重要的是主动拥抱的意识和快速实践。
在千曙,变化正在发生。AI工作流被视为胜过代码的一种资产。工具是海面凸起的一角,海面之下的,才是生产力。