Chạy nhiều AI coding agent song song bằng Git worktree, không giẫm chân nhau
Mỗi AI coding agent làm việc trong một nhánh và thư mục riêng: Git worktree giúp tách code, môi trường test và quy trình review khi bạn chạy nhiều tác vụ song song.
Bạn giao một agent sửa lỗi đăng nhập, agent khác viết test cho order service. Nếu cả hai cùng làm trong một thư mục, thay đổi chưa commit, cấu hình chạy test hoặc file đang sửa rất dễ lẫn vào nhau.
Git worktree là cách gọn để tách các tác vụ đó: mỗi agent làm trong một thư mục riêng, trên một nhánh riêng, nhưng vẫn dùng chung lịch sử của cùng repository Git.
Worktree không loại bỏ hoàn toàn xung đột khi merge. Nếu hai agent cùng sửa một file, bạn vẫn phải xử lý xung đột như bình thường. Điểm mạnh của nó là giữ quá trình phát triển và chạy test song song gọn gàng hơn.
Git worktree là gì?
Git worktree cho phép một repository có nhiều thư mục làm việc cùng lúc. Mỗi thư mục có thể gắn với một nhánh riêng.
Ví dụ, repo chính là shop. Bạn muốn:
Agent A sửa lỗi đăng nhập trên nhánh fix/login.
Agent B bổ sung test cho order service trên nhánh test/order-service.
Đứng trong thư mục repo chính, tạo hai worktree:
bash
git worktree add ../shop-fix-login -b fix/login
git worktree add ../shop-add-tests -b test/order-service
Hai thư mục mới sẽ nằm cạnh repo hiện tại. File làm việc của từng nhánh được tách riêng, trong khi lịch sử Git được dùng chung.
Kiểm tra các worktree đang có:
bash
git worktree list
Git cũng không cho cùng một nhánh được mở ở hai worktree tại cùng thời điểm. Điều này giúp tránh việc hai phiên làm việc cùng ghi lên một nhánh.
Bước 1: Chia việc để ít đụng file chung
Worktree hiệu quả nhất khi đầu bài được chia nhỏ và tương đối độc lập, chẳng hạn:
Một agent xử lý một bug cụ thể.
Một agent bổ sung test.
Một agent làm một tính năng nhỏ.
Hãy cố gắng để các tác vụ ít sửa chung file nhất. Nếu hai nhánh cùng thay đổi một file, xung đột vẫn có thể xuất hiện khi gộp.
Đặt tên thư mục worktree theo nhánh hoặc nhiệm vụ cũng giúp bạn dễ nhận ra cửa sổ VS Code hay terminal nào đang phục vụ agent nào.
Bước 2: Chuẩn bị môi trường cho từng worktree
Đây là bước rất dễ bị bỏ quên. Worktree tách mã nguồn trên đĩa, nhưng không tự cô lập toàn bộ môi trường chạy.
Với mỗi thư mục, cần kiểm tra các phần sau:
Dependency: cài thư viện riêng trong từng worktree, chẳng hạn bằng npm install hoặc pip install.
File .env và cấu hình cục bộ: nếu không được Git theo dõi, bạn cần tự chuẩn bị cho thư mục mới.
Port: nếu nhiều agent cùng chạy server để test, hãy dùng các port khác nhau, ví dụ 3001 và 3002.
Database test: nên dùng database test riêng cho từng worktree để tránh một agent reset, migrate hoặc xoá dữ liệu mà agent khác đang dùng.
Một tình huống thường gặp là hai agent cùng trỏ vào một database test: agent này xoá bảng hoặc reset dữ liệu của agent kia. Đây không phải lỗi của Git worktree, vì database và port là tài nguyên nằm ngoài thư mục mã nguồn.
Trước khi copy .env, hãy kiểm tra .gitignore để tránh commit nhầm cấu hình cục bộ hoặc dữ liệu nhạy cảm.
Bước 3: Mở agent trong đúng thư mục
Bạn có thể mở từng worktree bằng một cửa sổ VS Code riêng:
Chọn File > New Window.
Mở thư mục worktree tương ứng.
Khởi động AI coding agent trong cửa sổ đó.
Hoặc dùng terminal riêng cho từng tác vụ:
bash
cd ../shop-fix-login
bash
cd ../shop-add-tests
Điều quan trọng là xác nhận agent đang làm việc trong đúng worktree, không phải thư mục repo chính.
Khi giao việc, hãy mô tả rõ nhiệm vụ và tiêu chí hoàn thành, chẳng hạn yêu cầu chạy test của dự án và commit thay đổi trên nhánh hiện tại.
Bước 4: Review và gộp như một PR
Khi agent hoàn thành, hãy xử lý nhánh đó như một pull request của đồng đội:
Đọc diff để kiểm tra thay đổi có đúng phạm vi không.
Kiểm tra test đã chạy và kết quả có phù hợp không.
Xem lại để .env, secret hoặc file cấu hình local không bị đưa vào commit.
Đối chiếu các thay đổi với những nhánh khác trước khi merge.
Sau đó, merge vào nhánh chính hoặc mở pull request theo quy trình của nhóm.
Kinh nghiệm được chia sẻ trong cộng đồng là chạy khoảng 2–3 agent song song thường dễ kiểm soát hơn. Khi số agent tăng lên, khâu review diff và xử lý xung đột có thể trở thành nút thắt.
Bước 5: Dọn worktree khi xong việc
Sau khi nhánh đã được merge và không còn cần dùng:
bash
git worktree remove ../shop-fix-login
git branch -d fix/login
Nếu bạn đã xoá thư mục worktree bằng tay, dùng lệnh sau để Git dọn metadata còn lại:
bash
git worktree prune
Có cần dùng container hoặc công cụ điều phối?
Container có thể giúp tách thêm môi trường chạy như port và database, nhưng cần nhiều bước thiết lập hơn. Với nhu cầu bắt đầu chạy vài agent song song, Git worktree là lựa chọn đơn giản và trực tiếp.
Nếu bạn gặp khó khăn khi phải theo dõi nhiều terminal, worktree và agent, Orca là một công cụ điều phối có thể tham khảo. Theo thông tin công bố, Orca chạy các CLI agent như Claude Code, Codex, OpenCode và Pi song song, mỗi tác vụ trong một Git worktree. Công cụ này cũng có terminal chia khung, theo dõi diff, tích hợp GitHub/Linear và hỗ trợ worktree qua SSH.
Orca hỗ trợ macOS, Windows và Linux, đồng thời được phát hành theo giấy phép MIT.
Checklist trước khi chạy nhiều agent
[ ] Mỗi agent có một branch và một worktree riêng.
[ ] Các đầu việc được tách để hạn chế sửa chung file.
[ ] Dependency và cấu hình cục bộ đã sẵn sàng trong từng thư mục.
[ ] Port và database test không bị dùng chung khi chạy đồng thời.
[ ] Agent được mở trong đúng worktree.
[ ] Diff, test và file nhạy cảm được review trước khi merge.
[ ] Worktree và branch được dọn sau khi hoàn tất.
Git worktree không thay thế kỷ luật chia việc và review, nhưng nó giúp nhiều AI coding agent trở thành các nhánh công việc tách biệt, dễ kiểm tra và dễ gộp hơn.