Agent fan-out và git worktree: nhiều agent cùng sửa code mà không giẫm chân nhau
Hứa hẹn chạy song song thì dễ, làm cho nó an toàn mới khó. Câu trả lời của Muse Code là một công nghệ git cũ kỹ, nhàm chán — nhưng được dùng đúng cách đến từng chi tiết.
Mô hình: một agent cha, nhiều agent con có quyền ghi
Muse Code được xây dựng quanh một nguyên tắc đơn giản: khi một công việc tách được thành nhiều task riêng biệt, các task đó sẽ tự động “fan out” — tỏa ra cho nhiều agent xử lý. Agent cha sinh ra một agent con có quyền ghi cho mỗi task. Bạn không cần cấu hình gì, cũng không phải bật một chế độ song song đặc biệt nào — việc phân rã và phân phối task là hành vi mặc định mỗi khi khối lượng công việc đủ lớn để hưởng lợi từ nó.
Câu hỏi hiển nhiên lập tức xuất hiện: nếu nhiều agent có thể sửa code cùng lúc, trong cùng một repository, tại sao mọi thứ không kết thúc bằng một đống merge conflict và file bị ghi đè lẫn nhau?

Một phiên fan-out thật: sáu task trên một game, bốn task đã merge, hai task đang chạy — mỗi task nằm trong worktree riêng dưới .muse/worktrees/, còn checkout chính của bạn không bị đụng đến.
Worktree: cách ly theo đúng “chất” git
Mỗi agent con nhận một git worktree riêng — một bản checkout tách biệt của repository, dùng chung lịch sử với bản chính của bạn nhưng có thư mục làm việc riêng và branch riêng. Hai agent con có thể cùng sửa một file trong worktree của mình mà không bao giờ nhìn thấy thay đổi dở dang của nhau. Về mặt cấu trúc, va chạm đơn giản là không thể xảy ra.
Và điều quan trọng không kém: bản làm việc của bạn luôn sạch. Thư mục bạn đang mở trong editor không bao giờ là nơi agent đang cày xới. Không có gì nhảy múa dưới con trỏ của bạn, không có bản sửa dở dang nào của agent lọt vào diff của bạn, và bỏ đi công sức của một agent cũng rẻ như xóa worktree của nó. Thay đổi chỉ chạm vào branch của bạn khi công việc đã xong và đã được review.
Sao không dùng branch thường? Hay container?
Branch thuần túy dùng chung một thư mục làm việc — chuyển branch giữa chừng chẳng khác gì rút thảm dưới chân một agent đang chạy. Container đầy đủ hay clone cả repo thì làm được, nhưng quá nặng nề: object store bị nhân bản, khởi tạo chậm, merge lại lằng nhằng. Worktree rơi đúng điểm ngọt. Tạo gần như tức thì, dùng chung cơ sở dữ liệu object của git, và merge branch đã hoàn thành của agent con về lại chỉ là thao tác git bình thường — không có tầng đồng bộ tự chế nào phải đặt niềm tin, không có state độc quyền nào phải debug.
Sáu tính năng cùng lúc, có bằng chứng hẳn hoi
Các bản demo ra mắt dựa rất nhiều vào cơ chế này: trong ví dụ phát triển game, Muse Code xây sáu tính năng game đồng thời, mỗi agent trong một worktree riêng, và mọi branch đều merge sạch. Đó chính là phần thưởng thực tế — thời gian thực của một sprint nhiều tính năng co lại về gần bằng thời lượng của task dài nhất, thay vì tổng của tất cả cộng lại.
Thử ngay công thức này
Agent fan-out là một trong ba pattern mà Meta cung cấp sẵn recipe trong cookbook — chia một việc lớn cho nhiều subagent để không gì va chạm giữa chừng. Cookbook có phiên bản chạy được ngay. Và vì công việc được fan-out chính là thứ bạn sẽ muốn kiểm tra lại sau này, mọi lần spawn, mọi tool call và mọi lần merge của từng agent con đều được ghi vào event log — không có gì diễn ra ngoài sổ sách chỉ vì nó diễn ra song song.