Để AI đảm nhận việc phân loại GitHub Issue

Quản lý một repo GitHub thật khó khăn. Các issue mới thường đến với tiêu đề mơ hồ hoặc không có các bước để tái hiện lỗi. Bạn dành cả ngày để gắn nhãn, kiểm tra xem có bị trùng lặp không và yêu cầu thêm thông tin chi tiết. Công việc này ngốn hết thời gian mà lẽ ra bạn nên dành để viết code.

Một khảo sát năm 2024 cho thấy 60% những người duy trì mã nguồn mở (open-source maintainers) đã từng nghĩ đến việc bỏ cuộc. Việc quản lý các issue là một gánh nặng lớn.

Tôi đã xây dựng một bot để xử lý bước sàng lọc đầu tiên. Nó chạy trong GitHub Actions và sử dụng một mô hình ngôn ngữ. Nó thực hiện các tác vụ sau:

  • Gắn nhãn dựa trên các quy tắc của bạn.
  • Đánh dấu các issue có khả năng bị trùng lặp.
  • Yêu cầu thêm thông tin chi tiết cho các mô tả sơ sài.

Con bot này là một agent, không phải là một script cứng nhắc. Tôi cung cấp cho mô hình một bộ công cụ. Nó sẽ tự quyết định sử dụng công cụ nào và theo thứ tự nào. Một issue rõ ràng có thể chỉ cần một công cụ. Một issue lộn xộn có thể cần đến ba công cụ.

Phiên bản đầu tiên nói quá nhiều. Nó đăng bình luận lên mọi issue. Điều này tạo ra sự nhiễu loạn. Sự nhiễu loạn khiến mọi người phớt lờ các bot.

Tôi đã khắc phục điều này chỉ bằng một câu trong system prompt. Tôi cho phép mô hình được quyền không làm gì cả. Tôi bảo nó rằng im lặng thường là câu trả lời tốt nhất. Điều này đã thay đổi hành vi của nó nhiều hơn bất kỳ thay đổi mã nguồn nào.

Tôi sử dụng LiteLLM để bot có thể hoạt động với Claude, GPT, hoặc Gemini. Bot dựa vào function calling để thực hiện các hành động trên issue.

Thử nghiệm trong thực tế đã tiết lộ ba thách thức chính:

  • Bảo mật của GitHub ngăn bot xem các thông tin bí mật (secrets) trong pull requests.
  • Prompt injection là một rủi ro khi bạn đưa văn bản không đáng tin cậy vào mô hình.
  • Các lỗi về quyền hạn và API có thể gây khó khăn khi debug.

Tôi cũng đặt ra một quy tắc cho bot: nó chỉ kiểm tra các rủi ro bảo mật. Nó không đánh giá chất lượng code. Một con bot đi phán xét thiết kế sẽ khiến các cộng tác viên rời đi. Hãy để những quyết định đó cho con người.

Nếu các thủ tục giấy tờ của issue làm bạn kiệt sức, thiết lập này có thể giúp ích. Nó loại bỏ các công việc lặp đi lặp lại và để lại những quyết định thực sự cho bạn.

Source: https://dev.to/jescalada/putting-an-ai-agent-in-charge-of-github-issue-triage-3085

Optional learning community: https://t.me/GyaanSetuAi