سپردن مدیریت اولویت‌بندی (Triage) ایشوهای GitHub به هوش مصنوعی

مدیریت یک مخزن (repo) در GitHub کار دشواری است. ایشوهای جدید اغلب با عناوین مبهم یا بدون مراحل بازتولید (steps to reproduce) ارسال می‌شوند. شما روز خود را صرف برچسب‌گذاری، بررسی موارد تکراری و درخواست جزئیات بیشتر می‌کنید. این کار زمانی را که می‌خواهید صرف کدنویسی کنید، می‌بلعد.

یک نظرسنجی در سال ۲۰۲۴ نشان داد که ۶۰٪ از نگهدارندگان (maintainers) پروژه‌های متن‌باز به فکر ترک کار خود بوده‌اند. مدیریت ایشوها بار سنگینی است.

من رباتی ساختم تا مرحله‌ی اول را مدیریت کند. این ربات در GitHub Actions اجرا می‌شود و از یک مدل زبانی استفاده می‌کند. این ربات وظایف زیر را انجام می‌دهد:

  • اعمال برچسب‌ها بر اساس قوانین شما.
  • علامت‌گذاری موارد احتمالی تکراری.
  • درخواست جزئیات ناقص در توضیحات بسیار کوتاه.

این ربات یک عامل (agent) است، نه یک اسکریپت خشک و انعطاف‌ناپذیر. من مجموعه‌ای از ابزارها را به مدل می‌دهم. مدل تصمیم می‌گیرد که از کدام ابزارها و با چه ترتیبی استفاده کند. یک ایشوی مرتب ممکن است به یک ابزار نیاز داشته باشد، اما یک ایشوی نامنظم ممکن است به سه ابزار نیاز داشته باشد.

نسخه اول بیش از حد پرحرف بود. روی هر ایشویی کامنت می‌گذاشت. این کار باعث ایجاد سر و صدا (noise) می‌شد. سر و صدا باعث می‌شود افراد ربات‌ها را نادیده بگیرند.

من این مشکل را با یک جمله در system prompt حل کردم. به مدل اجازه دادم که هیچ کاری انجام ندهد. به او گفتم که سکوت اغلب بهترین پاسخ است. این کار رفتار مدل را بیش از هر تغییر کدی متحول کرد.

من از LiteLLM استفاده کردم تا ربات با Claude، GPT یا Gemini کار کند. ربات برای اقدام روی ایشوها، بر function calling متکی است.

تست‌های دنیای واقعی سه چالش اصلی را نشان داد:

  • امنیت GitHub مانع از آن می‌شود که ربات‌ها اسرار (secrets) موجود در pull requestها را ببینند.
  • تزریق پرامپت (Prompt injection) زمانی که متن‌های غیرقابل اعتماد را به مدل می‌دهید، یک ریسک است.
  • خطاهای مربوط به دسترسی‌ها (permissions) و API می‌توانند عیب‌یابی را گیج‌کننده کنند.

همچنین قانونی برای ربات وضع کردم: او فقط ریسک‌های امنیتی را بررسی می‌کند و کیفیت کد را ارزیابی نمی‌کند. رباتی که درباره طراحی قضاوت می‌کند، مشارکت‌کنندگان را فراری می‌دهد. این تصمیمات را به انسان‌ها بسپارید.

اگر کارهای اداریِ مربوط به ایشوها شما را فرسوده می‌کند، این تنظیمات می‌تواند کمک کند. این سیستم کارهای تکراری را از دوش شما برمی‌دارد و تصمیم‌گیری‌های واقعی را برای شما باقی می‌گذارد.

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

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