bảng thuật ngữ
tách riêng worktree là gì?
TL;DR
Cô lập bằng worktree nghĩa là mỗi AI agent có bản sao code riêng, trên branch riêng, trong thư mục riêng. Nhờ đó các agent có thể sửa cùng các tệp cùng lúc mà không ghi đè lên nhau. Checkout chính của bạn không bị đụng đến cho đến khi bạn merge. Pane tự động thiết lập điều này cho mọi pane.
Cô lập bằng worktree nghĩa là mỗi AI agent làm việc trên bản sao code riêng, trên branch riêng, trong thư mục riêng. Nhờ đó nhiều agent có thể sửa cùng các tệp cùng lúc mà không ghi đè lên nhau, và checkout chính của bạn không bị đụng đến cho đến khi bạn merge.
vấn đề
Các agent dùng chung một thư mục sớm muộn sẽ ghi đè lên nhau.
Bạn nhờ agent A viết lại trang đăng nhập và agent B thêm luồng đăng ký. Cả hai đều cần sửa auth.ts. Trong một thư mục dùng chung, agent B lưu phiên bản của nó và lặng lẽ thay thế các chỉnh sửa của agent A. Không agent nào nhận ra, và bạn chỉ phát hiện sau đó.
Vì vậy để nhiều agent trong một thư mục là một canh bạc. Mọi thứ ổn cho đến khi hai agent cùng đụng vào một tệp, rồi công sức của ai đó bị mất.
cách sửa
Mỗi agent một worktree: tệp và branch riêng, cùng lịch sử.
Cho mỗi agent một git worktree riêng: một thư mục riêng với branch riêng, dùng chung lịch sử. Agent A làm ở một worktree, agent B ở worktree khác, và cả hai đều sửa được auth.ts vì chúng sửa các bản sao khác nhau.
my-project/ ← main branch, untouched
my-project/worktrees/
├─ login-rewrite/ ← agent A, branch login-rewrite
└─ signup-flow/ ← agent B, branch signup-flownhững gì được tách riêng
Tệp, branch và shell tách biệt. Lịch sử, remote và git object dùng chung.
| tách riêng | dùng chung |
|---|---|
| Tệp và thay đổi chưa commit | Lịch sử git và commit |
| Branch | Remote (origin) |
| Trạng thái shell và biến môi trường | Cấu hình git |
| Thư mục làm việc | Kho object (tiết kiệm dung lượng) |
pane làm việc này thế nào
Pane tự động thiết lập và dọn dẹp worktree cho mọi pane.
Khi bạn tạo pane, Pane giao cho nó một worktree đã chuẩn bị sẵn, tạo branch mới, sao chép tệp .env, thiết lập agent và node_modules vào, rồi khởi chạy agent ở đó. Khi bạn lưu trữ pane, Pane kiểm tra công việc chưa lưu rồi xóa worktree. Bạn không bao giờ phải tự gõ git worktree add.
những gì cô lập không bao quát
Worktree giữ tệp của các agent tách biệt. Nó không sandbox những gì agent có thể làm.
Worktree là một thư mục, không phải sandbox. Agent vẫn chạy với quyền của người dùng của bạn, nên một agent có thể đọc tệp của worktree khác qua đường dẫn, truy cập mạng hoặc thay đổi thứ nằm ngoài repo. Thực tế agent thường ở trong thư mục làm việc của mình, nhưng nếu bạn cần giới hạn cứng, hãy chạy chúng trong container hoặc VM.
Một số thứ được dùng chung bên ngoài git: database ứng dụng của bạn dùng, cổng dev server, cache package toàn cục. Pane cấp cho mỗi pane một dải cổng riêng trong PANE_PORT; với database, hãy dùng setup script hoặc công cụ tạo một database cho mỗi worktree.
liên quan
Nguồn
- Đính chính
- Nếu có gì ở đây sai hoặc đã cũ, hãy báo cho chúng tôi, chúng tôi sẽ sửa và cập nhật ngày ở đầu trang. Mở issue trên GitHub
- Nguồn
câu hỏi thường gặp
Bởi Parsa Khazaeepoul, đồng sáng lập Pane. .