AI News HubLIVE
站内改写2 分钟阅读

Quilt:在一个Git仓库中运行多个AI编码代理

Quilt是一个命令行工具,可以追踪每个AI代理编辑了哪些代码行,使得多个代理可以在同一个Git检出中同时工作而不会产生冲突。它通过逐行归属、符号级声明和碰撞预防,确保每个代理只提交自己的更改,避免静默覆盖,并支持无缝协调。

来源Hacker News AI作者: wkoverfield

Quilt是一款专为多AI代理协作设计的命令行工具,它解决了多个代理在同一个Git仓库中工作时常见的冲突问题。传统的做法是为每个代理创建独立的工作树(worktree),但这会导致每个代理都需要独立的安装、构建和环境,开销巨大。而Quilt通过共享一个检出,让所有代理实时看到彼此的动态,并主动预防冲突,而非事后处理。

Quilt的核心功能包括逐行归属、符号级声明和碰撞预防。逐行归属意味着每个代理的修改都会被精确记录到每一行代码,即使多个代理修改了同一个文件的不同部分,Quilt也能在提交时准确分离各自的更改。符号级声明允许代理声明特定函数或符号的所有权。例如,一个代理可以声明utils.js#formatPrice,其他代理尝试写入该函数时会被拒绝,并看到持有者的意图和声明过期时间。这种细粒度的锁定机制大大减少了不必要的冲突。

碰撞预防是Quilt的另一大亮点。当一个代理试图写入已被其他代理声明的代码时,Quilt会在任何字节更改之前拒绝该操作,并显示持有者的意图。被拒绝的代理可以等待持有者提交后自动释放声明,再重新声明并叠加更改。这样,两个代理的修改都能被保留,不会丢失。此外,Quilt还能检测和保留被覆盖的未提交更改,确保数据不丢失。所有状态都存储在.quilt目录中,不会干扰Git仓库本身。

Quilt的安装非常简单,只需一个npm命令:npm install -g @quilt-dev/cli,然后运行quilt setup即可将其挂接到仓库中。它自动为每个Claude Code会话或MCP连接分配ID,也支持通过环境变量设置稳定的代理名称。例如,设置QUILT_ACTOR=auth-agent后,该代理的所有编辑都会归属于auth-agent。使用quilt commit --mine可以只提交自己的更改,而quilt status可以查看当前所有代理的状态和声明。

与工作树方案相比,Quilt的优势显而易见。工作树虽然提供了隔离,但合并时依然会产生冲突,并且每个代理都需要完整的安装和构建。Quilt通过共享一个检出,避免了这些开销,同时让代理之间能够互相感知并协调。工作树适合独立的长期任务,而Quilt则适合需要紧密协作的短期任务。两者并不互斥,可以结合使用。

Quilt的设计哲学是信任Git,它从不调用LLM或生成代理,所有状态都保存在本地.quilt目录中。提交的代码仍然是普通的Git提交,因此可以轻松集成到现有工作流中。无论是处理不相关的文件还是竞争同一段代码,Quilt都能提供清晰的提交历史和协作流程,是AI编码代理团队协作的有力工具。