Tôi vừa đọc bài Redesigning source control của Anthropic, trong đó họ mô tả Scion, một hệ thống quản lý phiên bản chạy theo kiểu server-centric để hàng trăm coding agent cùng đọc ghi code một lúc. Vấn đề là Scion chỉ dùng nội bộ, không phát hành ra ngoài. Rồi repo feder-cr/git-ai xuất hiện, tự nhận là bản triển khai lại thiết kế đó bằng Go, dưới license MIT.
Nó giải quyết vấn đề gì, cụ thể
Git cổ điển được thiết kế cho người: clone repo về, làm vài tiếng, push một lần. Coding agent thì chạy hàng nghìn task ngắn, mỗi task sửa vài file, muốn land trong vài giây, tất cả trên cùng một nhánh. Clone đầy đủ, merge queue, rồi client phải tự dạo lịch sử commit trở thành nút cổ chai.
gitai đẩy phần lớn việc đó về server. Client giữ kết nối online và chỉ fetch đúng object mình cần (ObjectService phục vụ single object và sparse tree). Câu hỏi về lịch sử (blame, path history, ancestry, code search) chạy server-side và được memoize như derived data, tính một lần cho mỗi commit. Thay vì merge queue, nó dùng UserLand: rebase thay đổi lên tip hiện tại rồi land bằng compare-and-swap, các land đồng thời trên cùng nhánh được gộp vào một reference update duy nhất. Xung đột thì đưa cho resolver bạn chọn, có thể là LLM provider bất kỳ, một tool deterministic, hoặc không dùng gì cả.
Phần lưu trữ cũng khác kiểu thường thấy. Mỗi thay đổi là một changeset trong write-ahead log trên SQLite hoặc PostgreSQL, pack nằm trong object storage (file, S3, GCS, Azure). Các node server chỉ là cache, node nào cũng rebuild được từ database và object storage, nên muốn scale thì thêm node. Bên dưới vẫn là Git repository bình thường.
Vì sao repo này đang được chú ý
1.102 sao, tạo ngày 15/10/2026, cập nhật ngày 16/10/2026. Một ngày. Con số đó nói lên khá nhiều: nhu cầu về hạ tầng cho coding agent đang nóng, và cái tên Anthropic trong câu chuyện khiến người ta tò mò. Điểm khác biệt so với hàng trăm repo AI khác là gitai không gọi language model ở server. Vendor neutral, mọi tính năng AI chạy được với bất kỳ provider nào, hoặc không cần provider nào. Với người làm hạ tầng, đây là tiêu chí quan trọng: không bị khóa vào một API.
Repo cũng thẳng thắn ghi rõ nó là implementation độc lập của thiết kế đã công bố, không liên kết hay được Anthropic bảo trợ. Kiểu minh bạch này tôi đánh giá cao hơn mấy repo mập mờ nguồn gốc.
Cài và chạy thử
Yêu cầu: Linux hoặc macOS, Go 1.26, C toolchain, Meson và Ninja (build sẽ biên dịch một bản Git đi kèm).
git clone https://github.com/feder-cr/git-ai.git
cd git-ai
make build # server, CLI and tools into _build/bin
examples/graft/quickstart.sh # a server, a cache daemon, two agents and a land, in a temporary directory
./_build/bin/graft # the CLI and its commands
Script quickstart dựng một server, một cache daemon, hai agent và một land trong thư mục tạm. Muốn tự chạy server thì sửa examples/graft/config.toml rồi khởi động bằng _build/bin/gitaly serve config.toml. Muốn đưa trạng thái repo vào database và object storage thì thêm section [graft.storage], chạy ở mode shadow trước, import repo, rồi chuyển sang authoritative.
Trong code, các extension được gọi là Graft: section config [graft], CLI graft, package internal/graft, tài liệu trong doc/graft. Hơi rối tên gọi lúc đầu (gitai vs graft vs gitaly), nhưng đọc ARCHITECTURE.md là hiểu.
Ai nên dùng, dùng trong trường hợp nào
- Team đang chạy nhiều coding agent song song trên cùng repo và thấy merge queue là điểm nghẽn.
- Người muốn thử mô hình “server giữ lịch sử, client chỉ fetch cái cần” mà không phụ thuộc vào hạ tầng nội bộ của ai.
- Dev hạ tầng tò mò về thiết kế changeset log, compare-and-swap per reference, cache tier. Đọc code Go trong repo này cũng là cách học tốt.
- Ai cần CI chạy sau khi land và tự revert commit gây lỗi:
graft-verifytest tip, bisect khi fail rồi revert thay đổi gây ra.
Ngược lại, nếu bạn chỉ có một người làm việc với một repo nhỏ, gitai là overkill. Cài đặt cần Go 1.26 cộng Meson, Ninja, C toolchain, chưa kể phải hiểu mô hình storage mới. Git thường vẫn ổn.
So sánh nhanh
Thị trường có JGit, libgit2, hay các giải pháp Git hosting như Gitea, Forgejo. Nhưng mấy cái đó vẫn xoay quanh mô hình client clone đầy đủ rồi push. gitai khác ở chỗ nó giả định client luôn online và server là nơi tính toán. Tôi chưa thấy dự án mã nguồn mở nào khác triển khai đúng thiết kế Scion như thế này, nên so sánh trực tiếp thì hơi khập khiễng. Cần thời gian để biết cộng đồng có nuôi được nó không.
Ưu điểm và những chỗ cần cân nhắc
Ưu: license MIT rõ ràng. Vendor neutral, server không gọi LLM. Có phân quyền theo agent (per-agent token, RPC allowlist, branch policy), review với semantic approval rules (thay đổi chỉ comment có thể cần ít approval hơn thay đổi logic). Version 0.1.0 nhưng README khẳng định mọi thứ mô tả đều đã implement và có unit test, end-to-end test, multi-node test, crash test, fuzz test. Có cả tính năng “superfans”, agent theo dõi changeset stream và báo cáo qua Slack. Nghe hơi lạ nhưng đúng nhu cầu thật khi có hàng trăm agent chạy.
Hạn chế: interface có thể còn đổi trước 1.0. README tự liệt kê known gap, ví dụ garbage collection của pack trong storage core, trong LIMITATIONS.md. License ghi “không rõ” trong metadata GitHub dù README nói MIT, nên kiểm tra file LICENSE trước khi dùng cho sản phẩm. Tài liệu khá nhiều file (ARCHITECTURE, STORAGE, PLAN.md đến PLAN6.md) nhưng chưa có ai viết hướng dẫn kiểu “tôi gặp lỗi này thì sửa sao”. Cộng đồng mới, chưa có gì đảm bảo sẽ được maintain lâu dài.
Một điểm tôi hơi nghi: build phải biên dịch một bản Git đi kèm, khá nặng cho người chỉ muốn thử nhanh. Và việc phải chuyển storage từ shadow sang authoritative là bước dễ gây lỗi nếu làm ẩu trên repo đang có traffic.
Nếu bạn đang vận hành hạ tầng cho coding agent và thấy merge queue là điểm nghẽn thật, đáng bỏ một buổi chạy thử examples/graft/quickstart.sh. Còn nếu chỉ tò mò, đọc ARCHITECTURE.md trước đã, tốn 15 phút mà hiểu được cách họ xử lý compare-and-swap và derived data. Repo đây: feder-cr/git-ai.
