[Showcase] Bot review pull request tự động cho team 8 dev: 3 tháng chạy thật
Team mình có 8 dev, mỗi ngày khoảng 15–20 pull request (PR). Người review chính là 2 bạn senior, lúc nào cũng quá tải, PR chờ review trung bình gần 1 ngày. Mình làm một bot review tự động để xử lý phần "soi lỗi cơ bản", để senior tập trung vào thiết kế và nghiệp vụ. BOT LÀM GÌ Mỗi khi có PR mới hoặc commit mới vào PR: 1. Lấy phần thay đổi (diff) và nội dung đầy đủ của các file liên quan. 2. Gửi cho LLM kèm "bộ quy tắc của team": quy ước đặt tên, cách xử lý lỗi, các lỗi bảo mật hay gặp, những thư viện không được dùng. 3. Bot bình luận trực tiếp vào từng dòng code có vấn đề, mỗi bình luận ghi rõ mức độ: nghiêm trọng / nên sửa / gợi ý. 4. Viết một đoạn tóm tắt PR ở đầu: thay đổi gì, ảnh hưởng tới phần nào, cần người review chú ý chỗ nào. CÁCH LÀM - Chạy bằng GitHub Actions, không cần máy chủ riêng. - Diff lớn thì chia theo file, mỗi file gọi một lần, cuối cùng gộp kết quả. - Bỏ qua file sinh tự động, file lock, file dịch. - Bộ quy tắc của team lưu trong một file markdown ngay trong repo, ai cũng sửa được qua PR. VẤN ĐỀ LỚN NHẤT: BOT NÓI QUÁ NHIỀU Tuần đầu bot bình luận trung bình 12 cái mỗi PR, phần lớn là góp ý vụn vặt kiểu đổi tên biến. Dev bắt đầu bỏ qua toàn bộ bình luận của bot, kể cả bình luận đúng. Cách mình xử lý: - Giới hạn tối đa 5 bình luận mỗi PR, ưu tiên mức nghiêm trọng. - Không bình luận những gì linter và formatter đã bắt được. - Yêu cầu bot chỉ bình luận khi "chắc chắn có vấn đề và giải thích được hậu quả cụ thể". - Thêm nút phản hồi: dev đánh dấu bình luận hữu ích hay không, mỗi tuần mình đọc lại để chỉnh bộ quy tắc. KẾT QUẢ SAU 3 THÁNG - Thời gian chờ review lần đầu giảm từ gần 1 ngày xuống dưới 10 phút (bot), senior review sau đó nhanh hơn vì đã có tóm tắt. - Khoảng 60% bình luận của bot được dev đánh giá là hữu ích. - Bot bắt được vài lỗi thật đáng giá: quên kiểm tra quyền ở một API, truy vấn database trong vòng lặp, lộ thông tin trong log. - Chi phí API khoảng 25 USD/tháng. ĐIỀU BOT KHÔNG LÀM ĐƯỢC - Không hiểu nghiệp vụ: không biết một thay đổi có đúng yêu cầu của khách hay không. - Không đánh giá được thiết kế tổng thể. - Vì vậy bot không bao giờ được quyền "approve" PR, chỉ bình luận. Mọi người có dùng bot review không? Làm sao để dev không "lờ" bình luận của bot?