并行运行多个编码代理时出现了我未曾预料的故障。实际让我措手不及的三个问题
摘要
文章讨论了并行运行多个编码代理时出现的三个意外问题:共享工作树的冲突、运行时冲突(数据库、端口)以及难以检测卡住的代理。解决方案包括使用每个代理的 Git 工作树、隔离运行环境以及监测剩余差距指标。
我开始同时运行两三个编码代理,以为唯一的问题会是成本。真正的问题全都出在共享状态上,而且直到出错了它们才显现。第一个:它们会争夺同一个工作树。两个代理在同一个仓库里编辑文件,结果产生了一些并非它们真正做出的 diff,部分更改被覆盖掉了。最终有效的修复是为每个代理创建一个 Git 工作树,这样每个会话的 diff 又变得有意义了,而且它们物理上无法触碰彼此的文件。第二个:工作树解决了 Git 侧的问题,但运行时没解决。每个代理有自己的分支,但它们仍然共享一个开发数据库、一个端口范围、一个 node_modules。有次我让两个代理先后跑了一次迁移,第二个直接覆盖了第一个的 schema 变更,而这一切在 diff 里根本看不出,因为代码是干净的。为每个代理隔离运行时——自己的数据库和端口——这部分我跳过了,结果付出了代价。第三个,也是最隐蔽的:判断一个代理是卡住了还是只是慢。退出码只能说明它跑了还是没跑,所以崩溃和真正的反对在下游看起来一模一样。而一个循环运行的代理每一步都会保持非零的状态差异,所以即使它在原地打转也不会触发任何警报。有效的做法是对剩余差距进行指纹识别——哪些测试仍然失败,哪些字段仍然为空——而不是关注动作本身,并且在几步后相同的差距指纹再次出现时发出标记。这些都不是模型太笨。是管道的问题。好奇大家是如何处理隔离的,每个代理一个容器,还是更轻量级的方式?
相似文章
我测了一下为什么在 Claude Code 里并行跑超过 3 个 agent 就会卡住
分析了为什么在 Claude Code 中运行超过三个并行 agent 会遇到瓶颈,揭示了 duty-cycle 问题——开发者成为主要延迟来源,而“合并”并行输出的过程是最大的时间成本。
在2台以上机器上运行编码智能体让我明白,难点不在于智能体本身,而在于控制平面
跨多台机器运行编码智能体表明,管理控制平面比管理智能体本身更具挑战性,为分布式智能体编排提供了洞见。
在同一个仓库中运行混合编码代理数月之久的经验教训
本文分享了在多个代码仓库中使用多种AI编码代理数月的经验教训,涵盖了对其有效性和挑战的见解。
在实际仓库中运行编码代理:代理写完代码后哪些环节会出问题?
本文讨论了工程团队在采用AI编码代理时面临的实际挑战,如任务安全性、上下文检索、输出审查和协调,并提出了一个用于评估的准备度模型。
全职工作之余一人运营约16个代理:实际出问题的地方与真正有效的做法
一位独立创始人通过Paperclip协调运行16个AI代理,分享出问题与有效之处,包括通过QA代理缓解的幻觉功能承诺,以及用代码级执行取代提示规则。