社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

Coding Agent 必备的Git Worktree的实践指南

字节笔记本 • 1 月前 • 129 次点击  

 

本文是AI编程高效开发指南专栏的续篇,预计会更新100多期,每篇不到5毛钱。

这一期我们讲Worktree。

现在用 Claude Code、Codex 这类 Coding Agent 多Agent已经成为常态。

以前是一个需求做完,再做下一个。

现在都是同时开几个任务:

Agent A:修改登录
Agent B:开发支付
Agent C:修复 Bug
Agent D:补测试
Agent E:重构 API

代码生成速度已经足够快,不过新的问题来了。

这几个 Agent 到底在哪里工作?

如果全部放在同一个目录里,很快就会乱。

A 修改了一半,B 切了分支。

C 跑测试改了数据库。

D 执行格式化,又碰了 A 正在改的文件。

于是 Git Worktree 开始变得非常适合 AI Coding。

一个 Repository,可以同时拥有多个独立工作目录。

最直观的用法就是:

project-main
project-login
project-payment
project-bugfix
project-test

一个 Agent 一个目录。

到这里看起来已经解决问题了。

但真正连续使用几天以后,会发现 Worktree 解决的其实只是最表面的一层。

第一个问题:代码隔离以后,环境没有隔离

Worktree 可以保证每个 Agent 拿到自己的代码目录。

但开发一个真实项目,需要的东西远远不止代码。

还有:

.env
node_modules
数据库
Redis
开发端口
Docker
临时目录
测试数据
浏览器 Profile
日志

比如同时启动两个前端项目:

Agent A → localhost:3000
Agent B → localhost:3000

马上端口冲突。

两个 Agent 都操作:




    
dev.db

一样会互相污染。

再比如每创建一个新的 Worktree,都重新:

pnpm install

项目稍微大一点,同时开 5 个目录,安装依赖本身就变成了负担。

所以这里很快会发现一个关键问题:

Git Worktree 解决的是 Workspace,AI Agent 真正需要的是完整的 Runtime。

这两个概念差别很大。

第二个问题:临时创建 Worktree 本身也开始变成成本

很多人的 Worktree 使用方式是:

来一个任务
↓
创建 Worktree
↓
安装环境
↓
开发
↓
提交
↓
删除 Worktree

任务少的时候没问题。

一天启动十几个 Agent 后,创建和销毁环境就开始变成机械劳动。

所以更适合 Agent 的方式,其实是另一种模型:

Worker 1
Worker 2
Worker 3
Worker 4
Worker 5
Worker 6

这些 Worktree 长期存在。

任务来的时候,只负责找到一个空闲 Worker。

例如:

支付需求 → Worker 2
登录 Bug → Worker 4
数据库重构 → Worker 6

任务结束以后,把 Worker 恢复干净。

下一项任务直接继续使用。

这时候 Worktree 已经不太像临时分支目录,它更像一个 Worker Pool。

第三个问题:Agent 数量越多,Merge 越容易失控

假设三个 Agent 同时从 main 开始工作。

A ───────────── 完成
B ─────────────────── 完成
C ───────────────────────── 完成

A 第一个完成,直接合入 main。

B 完成的时候,main 已经变化,需要同步一次。

C 最后完成,此时 main 已经包含 A 和 B 的修改。

于是出现一个非常典型的情况:

第一个完成的人几乎不用处理冲突。

最后完成的人承担所有并行开发产生的冲突。

Agent 越多,这种情况越明显,如果每个 Agent 都拥有如下操作

pull
rebase
merge
push

完整权限,很快会出现多个 Agent 同时修改 Git 历史的情况。

这个时候,真正需要设计的已经不是简单的Worktree的概念和操作了。

而是任务怎么分配、环境怎么隔离、结果怎么回收、谁有权修改主干。

只有掌握这些,Git Worktree 才真正进入 AI Coding 的核心问题。

下面进入我的个人实践和具体实现,可以作为参考。

从这一部分开始,回答五个问题:

1. Worker Pool 到底应该怎么设计
2. .env 和依赖应该怎么共享

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/201226