Tóm tắt
Cursor thử lại hướng agent swarm trên một bài toán lớn: dựng SQLite bằng Rust chỉ từ tài liệu, không dùng source code, test suite, binary SQLite hay internet. Swarm mới vượt bản cũ trong mọi cấu hình model; với Grok 4.5, bản mới đạt 80% test suite sau 4 giờ, còn bản cũ phải dừng trước giờ thứ hai vì mất ổn định.
Điểm chính không phải là gọi thật nhiều agent. Cursor cho rằng swarm scale được nhờ chia context đúng: planner giữ mục tiêu và cây công việc, worker chỉ xử lý phần hẹp được giao, còn hệ thống version control và review riêng xử lý va chạm ở tốc độ mà Git/code review kiểu người không chịu nổi.
Kiến trúc swarm
Bài viết mô tả task lớn như một cây. Gốc là mục tiêu, các nhánh là phần việc được chia nhỏ dần, lá là đơn vị có thể giao cho worker.
- Planner agent dùng model mạnh để chia mục tiêu, quyết định thiết kế và giao việc.
- Worker agent dùng model nhanh/rẻ hơn để triển khai từng phần hẹp.
- Planner không implement nên context không bị lấp bằng chi tiết code.
- Worker không phải giữ toàn bộ plan nên có thể dùng context cho một mảnh việc cụ thể.
Cursor nghi rằng lợi thế của swarm đến từ hiệu quả context nhiều hơn là parallelism. Một single agent chạy lâu thường trôi mục tiêu: hoặc tập trung vào chi tiết trước mặt, hoặc giữ bức tranh lớn nhưng làm phần nhỏ kém hơn. Tách planner và worker giảm lỗi đó.
Version control cho agent
Swarm cũ từng đạt khoảng 1.000 commit mỗi giờ trên Git. Hệ thống mới có lúc đạt khoảng 1.000 commit mỗi giây, nên Cursor xây một VCS riêng thay vì dựa vào Git/Cargo với lock thô.
Lý do không chỉ là throughput. Mọi thay đổi đều đi qua VCS, vì vậy đây là nơi phát hiện collision sớm và đặt cơ chế điều phối trực tiếp vào pipeline.
Các failure mode chính:
- Split-brain design: nhiều planner tự thiết kế cùng một khái niệm theo nhiều cách khác nhau. Cursor sửa bằng prompt: planner phải tự chốt quyết định thiết kế và đảm bảo các subtree không quyết cùng một câu hỏi.
- Planner contention: planner biết nhau nhưng vẫn giằng co trên cùng file. Cách sửa là ghi quyết định vào shared design docs; code phụ thuộc quyết định đó mang reference được compiler kiểm tra.
- Merge conflicts: worker thường tệ khi phải hấp thụ context của agent khác để merge. Cursor dùng một agent trung lập chỉ chuyên giải conflict.
- Megafiles: file quá lớn trở thành điểm nghẽn cho diff, vận chuyển và merge. Worker có thể flag file phình to; hệ thống chặn commit mới và một agent ngoài scope tách file thành module nhỏ hơn.
- Ossification: agent ngại đụng core code vì học từ codebase có người review. Cursor cho phép agent phá có chủ đích nếu để lại patch hẹp và comment giải thích; compiler kéo thay đổi đó qua phần còn lại.
Review và shared context
Trong hệ thống multi-agent chạy lâu, lỗi nhỏ có thể thành nền móng sai. Cursor thử nhiều “review lenses”: reviewer đọc transcript đầy đủ, chỉ đọc output, hoặc chỉ đọc codebase; reviewer cũng có model và tính cách khác nhau.
Không lens nào bắt hết lỗi, nhưng các lens ít tương quan có thể cộng lại. Chi phí review rẻ hơn chi phí làm lại phần bị review, nên đây là khoản compute có ROI tốt.
Cursor cũng thử một thư mục shared context gọi là Field Guide. Agents tự sở hữu thư mục này; index.md được inject vào mọi agent lúc khởi động. Vì model weights là cố định, những lần gặp tình huống lạ được ghi lại để agent sau đi đường ngắn hơn.
Thí nghiệm SQLite
Bài test yêu cầu swarm implement toàn bộ manual SQLite dài 835 trang bằng Rust. Cursor giữ lại source code, test suite, SQLite binary và internet; swarm không biết test suite tồn tại.
Họ chấm bằng sqllogictest, bộ test của SQLite dùng để kiểm tra các database engine trả về cùng kết quả cho cùng query. Sau mỗi run, họ review thủ công để tránh shortcut hoặc “học tủ”.
Bốn cấu hình được thử:
- GPT-5.5 làm cả planner và worker.
- Grok 4.5 làm cả planner và worker.
- Opus 4.8 làm planner, Composer 2.5 làm worker.
- Fable 5 làm planner, Composer 2.5 làm worker.
Swarm mới thắng swarm cũ ở mọi cấu hình. Các run mới đạt 73-85% sau 4 giờ và cuối cùng đều vượt 100% suite. Fable 5 hybrid vượt khoảng hai phần ba suite trong giờ đầu.
Phần so sánh sâu cho thấy bản cũ có vẻ “bận” hơn nhưng thực ra churn nhiều hơn:
- Old Grok 4.5 tạo 68.000 commit trong hai giờ đầu, khoảng 70 lần tốc độ của run mới.
- Old run tích lũy hơn 70.000 merge conflict trước khi bị dừng; new run dưới 1.000 conflict trong 4 giờ.
- File nóng nhất ở old run có 7.771 conflict và bị 1.173 agent đụng vào; ở new run, file bị tranh chấp nhất chỉ có 47 conflict.
- Old run phình thành 54 Rust crates, gồm 3 package SQL riêng; new run ổn định ở 9 crates.
- Với Fable 5 mix, old swarm cần 64.305 dòng engine code để pass suite, new swarm làm được với 9.908 dòng. Với Opus mix, old đạt 97% bằng 19.013 dòng, new đạt 100% bằng 4.645 dòng.
Kinh tế model
Chất lượng giữa các cấu hình gần nhau, nhưng chi phí rất khác: từ 1.339 USD cho hybrid Opus 4.8/Composer 2.5 tới 10.565 USD khi dùng GPT-5.5 cho mọi vai trò.
Worker chiếm ít nhất 69% token và thường hơn 90%. Nhưng token planner đắt hơn, nên trong cấu hình Opus planner/Composer worker, Opus chỉ tạo một phần nhỏ token mà chiếm khoảng hai phần ba chi phí.
Bài học rõ ràng: không phải khoảnh khắc nào trong task lớn cũng cần frontier intelligence. Các bước như chia việc ban đầu, quyết định thiết kế và trade-off khó cần model mạnh. Khi planner đã biến mơ hồ thành instruction cụ thể, model rẻ hơn có thể xử lý phần lớn token còn lại.
Ví dụ chi phí rất mạnh: trong run GPT-5.5 toàn phần, riêng worker tốn 9.373 USD. Trong run Opus 4.8 planner + Composer 2.5 worker, toàn bộ worker fleet chỉ tốn 411 USD.
Ý nghĩa với Dev
Nếu bạn đang xây coding agent hoặc automation nội bộ, bài này gợi ý vài nguyên tắc thiết kế đáng làm ngay:
- Tách rõ vai trò plan và implement; đừng bắt một agent giữ toàn bộ bức tranh lẫn từng diff nhỏ.
- Ghi quyết định thiết kế vào artifact dùng chung, không để quyết định sống trong transcript riêng lẻ.
- Dùng review nhiều góc nhìn, nhất là khi task dài và có nhiều agent song song.
- Theo dõi conflict, file phình to, churn và số dòng code như metric chất lượng, không chỉ số commit.
- Chọn model theo vai trò: model mạnh cho ambiguity, model rẻ cho execution đã được mô tả rõ.
Cursor kết luận đơn vị làm việc mới của engineer có thể chuyển từ file/feature lên spec. Nhưng để “spec as prompt” hoạt động, swarm phải bảo toàn ý định qua từng bước hạ abstraction; toàn bộ cơ chế trong bài là để giảm khoảng cách giữa compiler deterministic và swarm probabilistic.