Foremerge: Lớp phối hợp mã nguồn mới giúp các AI Agent lập trình song song không 'đá nhau'
Foremerge là một giao thức phối hợp mã nguồn mở hoạt động bên trên Git, cho phép nhiều AI Agent lập trình làm việc song song trên cùng một kho mã mà không xung đột. Công cụ này giúp các Agent công bố ý định trước khi chỉnh sửa, phát hiện sớm các xung đột về mặt kiến trúc mà Git không thể nhận ra, và đã được thử nghiệm thành công với 98 Agent chạy đồng thời.

Foremerge: Lớp phối hợp mã nguồn mới giúp các AI Agent lập trình song song không "đá nhau"
Khi ngày càng nhiều nhóm phát triển sử dụng các AI Agent lập trình song song trên cùng một kho mã, một vấn đề nan giải đã xuất hiện: các Agent có thể vô tình phá hủy công việc của nhau mà Git hoàn toàn không phát hiện được. Foremerge ra đời như một giải pháp mã nguồn mở nhằm giải quyết chính xác bài toán này.
Vấn đề mà Git không thể nhìn thấy
Hãy tưởng tượng hai Agent cùng làm việc trên một dự án. Mỗi Agent nhận một bản sao mã riêng biệt (worktree), nên chúng không bao giờ tranh chấp tập tin. Cả hai hoàn thành, cả hai trông đều đúng. Nhưng rồi bạn phát hiện ra chúng đã vô hiệu hóa công việc của nhau.
Git so sánh văn bản, không so sánh ý định. Git sẽ chặn bạn khi hai Agent chỉnh sửa cùng một phần của cùng một tập tin. Nhưng nó không thể nhìn thấy hai chỉnh sửa riêng lẻ đều hợp lý, lại nằm ở các tập tin khác nhau.
Ví dụ điển hình: một Agent thay thế lớp PaymentService bằng StripePaymentService, trong khi Agent khác đang thêm hỗ trợ PayPal vào PaymentService cũ. Không có dòng nào trùng nhau, nên Git hợp nhất cả hai mà không hề phàn nàn — và công việc PayPal bị bỏ rơi trên một lớp không còn ai gọi đến nữa.
Banner Foremerge
Foremerge hoạt động như thế nào?
Foremerge là một lớp phối hợp kiểu Git nằm bên trên Git (không can thiệp hay thay đổi cách Git và worktree hoạt động). Trước khi chỉnh sửa, mỗi Agent công bố ý định (intent) của mình và các phạm vi (scope) mà nó sẽ thay đổi, kèm theo thao tác dự kiến thực hiện trên từng phạm vi.
foremerge intent publish --agent "$A" \
--summary "Replace PaymentService with StripePaymentService" \
--scope symbol:PaymentService=replace
foremerge intent publish --agent "$B" \
--summary "Add PayPal support to PaymentService" \
--scope symbol:PaymentService=extend
Ngay khi Agent thứ hai công bố ý định, Foremerge sẽ trả về cảnh báo HIGH destructive_vs_additive trước khi bất kỳ dòng mã nào được viết. Các Agent vẫn giữ worktree riêng của mình, còn trạng thái chia sẻ chỉ là một tập tin SQLite duy nhất nằm trong thư mục chung của Git. Không hook, không merge driver, không viết lại lịch sử của bạn.
Điểm mấu chốt về mặt kỹ thuật
- Phát hiện mang tính xác định: Không dùng mô hình "trọng tài" để đọc mã của bạn. Các xung đột mức HIGH chỉ được khẳng định cho những thao tác đã được khai báo rõ ràng; các suy luận từ văn xuôi luôn bị giới hạn dưới mức HIGH.
- Claim là hợp đồng thuê tư vấn, không phải khóa: Hai Agent vẫn có thể cùng nắm giữ một phạm vi mà không bị deadlock.
- Kiểm tra trước khi chấp nhận: Trước khi công việc được chấp nhận, Foremerge chạy một bài kiểm tra đã đặt tên, được cấu hình dựa trên trạng thái Git chính xác của thay đổi. Một Agent tự báo "test đã pass" chỉ được ghi nhận như thông tin nguồn gốc, không thỏa mãn cổng chấp nhận nếu nó không tự chạy kiểm tra.
Quy trình làm việc ngữ nghĩa
Foremerge định nghĩa một vòng đời rõ ràng cho công việc của Agent:
INTENT → claim → CLAIMED → start → IN_PROGRESS → publish → PROVISIONAL → validate fingerprint → VALIDATED → accept gates → ACCEPTED → record Git ref → COMMITTED
Các loại phạm vi được hỗ trợ bao gồm: symbol, api, schema, config, infra, test, migration, env, file, component, contract, domain. Lời khuyên là hãy công bố phạm vi ngữ nghĩa hẹp nhất có ích, vì chỉ dùng đường dẫn tập tin sẽ bỏ sót các xung đột về API, cấu hình, lược đồ, hạ tầng và đa ngôn ngữ.
Demo terminal Foremerge
Tích hợp với các công cụ AI phổ biến
Foremerge được đóng gói dưới dạng một binary Rust duy nhất với CLI và MCP server gồm 18 công cụ. Lệnh foremerge setup all sẽ tự động kết nối nó vào Claude Code, Codex và Cursor. Vì giao thức không phụ thuộc vào nhà cung cấp cụ thể, một Agent Claude và một Agent Codex có thể phối hợp qua cùng một kho lưu trữ.
Một số công cụ MCP tiêu biểu:
publish_intent— Công bố công việc dự kiến và nhận về các xung đột cùng công việc liên quan.check_conflicts— Kiểm tra ý định đã công bố hoặc tạm thời trước khi thay đổi mã.run_verification— Chạy kiểm tra kho lưu trữ đáng tin cậy theo tên, không bao giờ dùng argv MCP thô.accept_changeset— Áp dụng các cổng xung đột, phụ thuộc, xác thực và Git cuối cùng.
Cài đặt nhanh chóng
Bạn chỉ cần dán hướng dẫn quickstart từ README vào Agent của mình, hoặc làm thủ công:
curl -fsSL https://foremerge.com/install.sh | sh
# hoặc
cargo install --locked foremerge
Sau đó, trong kho lưu trữ bạn muốn phối hợp:
foremerge init
foremerge setup all
foremerge checks set test -- cargo test --all-targets
foremerge doctor --client all
Quá trình cài đặt chỉ mất khoảng 30 giây. Foremerge được phát hành theo giấy phép Apache-2.0.
Kết quả thử nghiệm và giới hạn hiện tại
Nhóm phát triển đã thử nghiệm Foremerge với 98 Agent chạy song song trên cùng một kho lưu trữ và ghi nhận không có xung đột nào (dự kiến là 100 nhưng 2 Agent không chạy được do giới hạn tài nguyên). Họ cũng phát lại 76 ý định từ một bản build tuần trước theo đúng thứ tự xảy ra; mẫu này có đúng 1 xung đột (đã được gắn cờ) và phát hiện một điểm mù trong quá trình đánh giá — khi một Agent khai báo phạm vi theo tên lớp còn Agent kia khai báo theo phương thức nội bộ. Nhóm đang khắc phục vấn đề này cho bản phát hành tiếp theo.
Cần lưu ý rằng Foremerge 0.5.0 vẫn là MVP tiền 1.0, ưu tiên cục bộ. Các lược đồ công khai có thể còn thay đổi, chưa có kết quả benchmark được công bố, và việc phối hợp giữa các máy nằm ngoài phạm vi dự án. Foremerge cũng không thay thế việc review mã, quyền sở hữu kiến trúc, CI, quét bảo mật, quy tắc lưu trữ Git hay sao lưu dữ liệu.
Vì sao điều này quan trọng với lập trình viên Việt Nam?
Với các nhóm phát triển phần mềm tại Việt Nam đang ngày càng ứng dụng AI Agent vào quy trình làm việc, Foremerge mở ra một hướng tiếp cận thực tế: thay vì chờ đợi xung đột xuất hiện ở giai đoạn pull request rồi tốn thời gian sửa chữa, các nhóm có thể phát hiện và xử lý từ sớm. Đây là một bổ sung đáng cân nhắc cho bất kỳ nhóm nào đang vận hành nhiều Agent coding song song trên cùng một kho mã.
Bạn có thể tìm hiểu thêm tại foremerge.com và kho mã nguồn trên GitHub.
Câu hỏi mà nhóm phát triển muốn nhận phản hồi nhất từ cộng đồng: những xung đột nào giữa các kế hoạch của Agent mà bạn thực sự muốn được gắn cờ, và những loại nào bạn chấp nhận như nhiễu?

