故意放慢智能体的脚步
更快的智能体不会带来更好的软件——有纪律的智能体才会。让 RakuAI 保持连贯的这套节流机制,正是我们认为每一个认真做智能体驱动开发的团队都需要的纪律。
这个周六和过去几个周末的计划不一样。过去几周都是吞吐量周末。八十次提交,七十次提交,再往前是两百八十二次。趋势一直在上升。我把智能体队列开到最大,看着代码行数堆积如山。
这个周末我故意把节奏收回到三十七次提交。这张图上的趋势现在是向下的,而且是故意向下的,我想写一写为什么,因为我认为这不是大多数用 AI 智能体做开发的人会预期的趋势。
关于这套工作流,有什么是真的
智能体不会累。实现层的吞吐量受限于 token 成本,以及队列里挂了多少个 issue。如果我在早上六点提交一百个 issue,队列就会整天清空又填满,我会拿到一百个 PR 作为回报。这就是这套工作流在被允许全速运转时会做的事。
它在全速运转时做不到的,是产出一个连贯的代码库。每个 PR 单独看都很干净。但当一天之内四十个 PR 落地的交集叠加起来,就开始出现漂移。命名规范开始分叉。子系统边界变得模糊。处理某个 issue 的智能体对运行时层做了某种假设,而并行处理另一个 issue 的智能体却没有做同样的假设。到了周六晚上,这两个假设就会在第三个 PR 里相撞,那个 PR 不得不去调和它们,而这种调和就是敷衍了事。
这套工作流里的瓶颈不是智能体,而是那个要阅读智能体产出、并维持架构连贯性的人。
我改变了什么
两件事,都能在这个周末的提交模式里看出来。
我削减了队列深度。 不再是随时保持十五个开放的智能体队列 issue,我把它降到了六个。智能体不再全速运转,而是以一个能让我在下一批落地之前真正读完它们输出的节奏在运行。
我把评审提前了。 不再是让智能体的 PR 堆着,等我攒够一批再去处理,而是改成每个 PR 一打开就评审。这听起来更慢,事实也确实更慢。但它能在漂移扩散之前就把它拦住。周六一早及时纠正的一个错误假设,就不需要到周六晚上再去在六个 PR 里返工。
这两个改变加在一起,就是三十七次提交的周末,而不是八十次提交的周末。这两个改变加在一起的另一个结果,是一个比上周六状态更好的代码库,而这才是重点。
哪些工作依然落地了
这个周末,多仓库的纪律变得更牢固了。运行时、SDK 和文档仓库都是一起推进的。运行时在 README 里获得了文档目录概览。SDK 得到了相应的交叉引用。文档增长了。三个仓库中没有一个跑到了别的仓库前面。
这一点很重要,因为在一个智能体驱动的工作流里,文档不只是文档。文档是智能体接手下一个 issue 时读取的输入。如果文档对运行时实际支持的内容撒了谎,智能体就会忠实地为那个撒谎版本的运行时编写代码,而那些代码不会通过针对现实的编译。补救办法是让这三个仓库始终保持诚实,即便其中一个恰好是你自然而然会去动手的那个。
这个周末另一件不太显眼但很重要的事,是 API 表面的清理。九月赶工时加入的几个 API,结果发现根本不该出现在公共表面上。它们被降级为内部使用。智能体在一个 PR 里就完成了整个 SDK 范围内的降级。这种重构,如果由单个人来做,得花一整天。用这套工作流做,只需要一个 issue、一个 PR 和一次认真的评审。
在这套工作流里,”最佳实践”意味着什么
一份简短的清单,是这个周末放慢节奏的经历打磨出来的。
文档是开发的输入,不是开发的输出。 如果文档不好,产出就不会好。像维护代码一样维护文档,像评审代码一样评审文档。拒绝合并任何文档缺失的功能。
子系统之间的边界是神圣的。 智能体不会凭空发明代码库原本没有的边界。如果你想要一个边界,你就得亲自画出来、标注出来,并拒绝任何违反它的 PR。
跨仓库同步是一等任务。 当运行时和 SDK 必须一起推进时,PR 描述必须写明这一点,而且一个仓库的合并要以另一个仓库的合并为门槛。双仓库状态分叉,是较容易避免、却又相当痛苦才能恢复的失败模式之一。
故意放慢节奏。 智能体不会自己放慢,你必须替它做这件事。智能体交付一百个 PR 的那个周末,并不等同于代码库因此改善了一百个 PR 价值的那个周末。智能体交付三十七个经过认真评审的 PR 的那个周末,或许才是。
对合作伙伴可能有用的地方
如果你正在用自主编码智能体构建任何东西,并且遇到了”智能体干得很快,代码库却一团糟”这种版本的工作流问题,答案不是更好的智能体。答案是更小的队列、更早的评审环节,以及智能体会当作输入去读取的文档。
如果你是一家 AI 实验室,正在为这种自主 PR 工作流调优编码智能体,我在实践中发现最有用的指标不是”每天交付的代码行数”。而是一周早期落地的 PR,有多少次会在同一个周末的晚些时候因为代码库在它下面发生了变化而不得不重写。这个数字越低,说明这个智能体在真正的这份工作上做得越好。
三十七次提交。一个比上周六更好的代码库。周六下午,我要去散个步了。
用智能体构建,而不是制造一团乱麻
RakuAI 由自主编码智能体在严格的架构纪律下构建。如果你正在一个严肃的代码库上运行智能体驱动的工作流,来看看我们是如何保持运行时连贯的。