开源实验:同一代码库,编码代理单干时五次全坏;共享目录后十次全过
我是该开源实验的作者,所以请将此视作一份已声明个人偏见的实地报告。
当前许多AI工具会同时运行多个编码代理,我想知道它们共享一个代码库时究竟会发生什么。我搭建了一个小型实验环境:在一个小型预订API上设置六个任务,附37个验收测试,其中两对任务在语义上而非文件上发生冲突。一个代理为登录增加了第二因素,而另一个代理构建的导出功能仍在调用旧的登录。
当每个代理在各自分支上独立工作时,每个代理都完成了自己的测试,而合并结果在5次运行中全部损坏。Git合并了文本,却没人注意到语义已经改变。当代理们改为共享一个工作目录后,10次运行全部通过,因为每个代理都能看到其他代理的改动并相应调整。
我还尝试了一种更新的方法:名为Jev的“决策模型”。它完全不生成文本,而是在约0.3秒内返回一个带概率的是/否决策。我的内核在每次写入前询问它:此更改是否与其他代理的工作冲突。它在不阻断无害工作的前提下抓住了每一次真实冲突,成本与简单文件锁相当。但对于61%的真实写入,它也感到不确定,因此这些写入必须交给更慢的常规LLM。廉价决策确实存在,但在混乱环境中,它们并不像标价所示的那么廉价。
我一直在想的一部分是:当代理们拥有了互相发消息的工具后,它们未经指示就自发使用,一个代理还警告另一个代理,说自己要重命名对方所依赖的字段。也许多代理协调的答案根本不是内核,而只是会交谈的代理。
注意事项:每种设置只运行1到5次,因此这些是指示,而非证据。所有内容均以原始数据发布,采用MIT许可证:https://github.com/JoaquinRuiz/medula。另有一个西班牙语演示视频:https://youtu.be/xAFRuBxfapM
我很想知道这里各位的看法:代理应该通过一个裁判来协调,还是直接彼此交谈?