اتوماسیون هوش مصنوعی تریاژ ایشوهای GitHub با n8n

اگر روی چند ریپوی GitHub کار می‌کنید، احتمالاً با این مشکل آشنا هستید: ایشوهای زیادی باز می‌شود، عنوان‌ها مبهم‌اند، برچسب‌ها درست تنظیم نمی‌شوند و تیم توسعه نمی‌داند از کجا شروع کند. با یک ورک‌فلو هوش مصنوعی در n8n می‌توانید فرآیند تریاژ ایشوها را خودکار کنید؛ یعنی هر ایشو جدید به‌صورت خودکار تحلیل، برچسب‌گذاری، اولویت‌بندی و به شخص مناسب assign شود.

در این سناریو، متن و عنوان ایشو برای یک مدل زبانی (LLM) مثل OpenAI ارسال می‌شود، مدل نوع مشکل، شدت، ماژول مرتبط و برچسب‌های پیشنهادی را برمی‌گرداند و n8n همه این‌ها را در خود GitHub اعمال می‌کند.

این ورک‌فلو دقیقاً چه کاری انجام می‌دهد؟

سناریوی «تریاژ هوش مصنوعی ایشوهای GitHub» تبدیل به یک دستیار دائمی برای تیم توسعه می‌شود که:

  • هر ایشوی جدید را به محض ایجاد در ریپو دریافت می‌کند،
  • عنوان و متن ایشو را می‌خواند و موضوع، شدت و نوع آن را تحلیل می‌کند،
  • برچسب‌هایی مثل bug، feature، documentation یا برچسب‌های سفارشی شما را پیشنهاد و اضافه می‌کند،
  • اولویت (High / Medium / Low) و وضعیت (مثلاً needs-triage / ready-to-work) را تعیین می‌کند،
  • و در صورت لزوم، ایشو را به دولوپر یا تیم مناسب assign و در Slack یا ایمیل اطلاع‌رسانی می‌کند.

سناریوهای کاربردی این ورک‌فلو برای تیم‌های توسعه

  • ریپوهای open-source: وقتی تعداد زیادی ایشوی کاربر می‌آید و نمی‌رسید همه را دستی دسته‌بندی کنید.
  • تیم‌های محصول کوچک: برای هر ریلیز، نیاز دارید سریع بفهمید کدام ایشوها بحرانی‌ترند و باید اول حل شوند.
  • DevOps و SRE: تریاژ خودکار ایشوهای مربوط به خطاهای زیرساخت، Performance یا امنیت.
  • آژانس‌ها و تیم‌های چندریپویی: مدیریت چند پروژه و چند ریپو بدون گم شدن ایشوهای مهم در میان موارد کم‌اهمیت.

جریان کلی این ورک‌فلو در n8n

از نگاه فنی، این سناریو در n8n معمولاً به چند مرحله ساده تقسیم می‌شود:

  • ۱. تریگر روی ایشوی جدید GitHub: با استفاده از نود GitHub Trigger یا Webhook، هر بار یک ایشو جدید در ریپو ایجاد شود، n8n به‌صورت خودکار اجرا می‌شود و اطلاعات ایشو (عنوان، متن، نویسنده، لینک) را دریافت می‌کند.
  • ۲. آماده‌سازی متن برای LLM: در یک نود Set یا Function، عنوان و بدنه ایشو را به یک متن مرتب تبدیل می‌کنید؛ مثلاً:
    Title: ...\nBody: ...\nRepo: ...
  • ۳. تحلیل ایشو با OpenAI: این متن به OpenAI یا مدل LLM دیگر ارسال می‌شود و از مدل می‌خواهید:
    • نوع ایشو را تشخیص دهد (Bug, Feature, Question, Documentation, Refactor و…)
    • شدت/اولویت را تعیین کند (High, Medium, Low)
    • برچسب‌های پیشنهادی را به صورت لیستی بازگرداند،
    • و در صورت امکان ماژول/بخش مرتبط (Backend, Frontend, API, Billing و غیره) را هم مشخص کند.
    بهتر است خروجی مدل در قالب JSON برگردد تا در n8n راحت پارس شود.
  • ۴. پارس و تبدیل خروجی: خروجی LLM در n8n پارس می‌شود؛ مثلاً:
    { "type": "bug", "priority": "high", "labels": ["backend","performance"], "component": "API" }
    سپس این مقادیر را به فیلدهای جداگانه تبدیل می‌کنید.
  • ۵. به‌روزرسانی ایشو در GitHub: با نود GitHub → Issue Update برچسب‌ها، assignee، و احتمالاً عنوان یا body را (مثلاً اضافه کردن [High Priority]) به‌روزرسانی می‌کنید.
  • ۶. اطلاع‌رسانی در Slack/ایمیل: اگر اولویت High بود یا نوع ایشو Bug در محیط Production، با نود Slack/Telegram/Email پیام هشدار برای کانال یا فرد مسئول ارسال می‌شود.

پیش‌نیازهای راه‌اندازی این سناریو

  • ریپوی GitHub: با دسترسی API (Personal Access Token) که اجازه خواندن و به‌روزرسانی ایشوها را داشته باشد.
  • OpenAI API Key: یا کلید یک مدل LLM سازگار برای تحلیل متن ایشوها.
  • n8n در حال اجرا: روی سرور شخصی، Docker، VPS یا n8n Cloud.
  • فضای اطلاع‌رسانی: مثل Slack، تلگرام یا ایمیل برای ارسال نوتیف تریاژ.
  • تعریف مجموعه برچسب‌ها: لیست برچسب‌های استاندارد تیم توسعه (نوع، ماژول، سطح اهمیت) که در Prompt به مدل معرفی می‌شوند.

مراحل کلی پیاده‌سازی در n8n

  1. در GitHub یک Webhook یا GitHub App تنظیم کنید که روی رویداد Issues (opened/edited) به n8n فراخوانی شود.
  2. در n8n یک ورک‌فلو با تریگر GitHub یا Webhook بسازید و اطلاعات ایشوی جدید را به عنوان ورودی دریافت کنید.
  3. با نود Set/Function متن مناسب برای ارسال به LLM (شامل عنوان، بدنه و کانتکست ریپو) بسازید.
  4. نود OpenAI اضافه کنید و Promptی بنویسید که نوع، اولویت، برچسب‌ها و کامپوننت را در قالب JSON بازگرداند.
  5. خروجی JSON را با نودهای Parse/Set به فیلدهای جدا تبدیل کنید و منطق شرطی برای تصمیم‌گیری (مثلاً اگر priority = high) اضافه کنید.
  6. با نود GitHub → Update Issue برچسب‌ها، assignee و دیگر تنظیمات ایشو را به‌روزرسانی کنید.
  7. یک نود Slack/Telegram/Email برای اطلاع‌رسانی به تیم مناسب اضافه کنید و لینک ایشو را در پیام قرار دهید.
  8. ورک‌فلو را روی چند ایشوی تست اجرا کنید، Prompt و منطق برچسب‌گذاری را تا جایی که نتایج رضایت‌بخش باشد تنظیم کنید و در نهایت آن را فعال کنید.

چطور این ورک‌فلو را حرفه‌ای‌تر کنیم؟

  • اولویت پویا بر اساس کلمات کلیدی: اگر کلماتی مثل production، downtime، payment failed یا معادل فارسی‌شان دیده شد، اولویت را خودکار بالا ببرید.
  • تشخیص اسپم و ایشوهای بی‌کیفیت: از LLM بخواهید ایشوهای ناقص یا اسپم را تشخیص دهد و آن‌ها را با برچسب spam/needs-info علامت بزند.
  • هماهنگی با Jira: برای بعضی برچسب‌ها، به‌صورت خودکار تیکت Jira یا تسک داخلی بسازید و لینک GitHub Issue را در آن قرار دهید.
  • گزارش‌گیری: آمار تعداد ایشوها بر اساس نوع، اولویت و ماژول را در یک Google Sheet یا دیتابیس ذخیره کنید تا داشبورد بسازید.
  • یادگیری تدریجی: دیتای تریاژ قبلی (برچسب‌های واقعی تیم) را به مرور در Prompt استفاده کنید تا پیشنهادهای مدل به سبک تیم شما نزدیک‌تر شود.

نکات مهم و خطاهای رایج

  • خروجی مدل همیشه ۱۰۰٪ دقیق نیست؛ در ابتدای کار بهتر است یک مرحله بازبینی دستی روی ایشوهای مهم داشته باشید.
  • اگر JSON خروجی به هم می‌ریزد، در Prompt نمونه JSON و قوانین قالب‌دهی را کاملاً شفاف بنویسید.
  • برای جلوگیری از هزینه زیاد OpenAI، می‌توانید فقط روی ریپوهای خاص، یا فقط روی ایشوهای بدون برچسب، LLM را اجرا کنید.
  • دسترسی Token GitHub را محدود به حداقل دسترسی لازم کنید (فقط repo/issue)، برای امنیت بیشتر.

جمع‌بندی

با ورک‌فلو اتوماسیون هوش مصنوعی تریاژ ایشوهای GitHub با n8n می‌توانید به‌جای وقت گذاشتن روی دسته‌بندی و برچسب‌گذاری دستی، مستقیماً سراغ رفع مهم‌ترین مشکلات بروید. این سناریو هم تمرکز تیم را بالا می‌برد، هم سرعت واکنش به باگ‌ها و درخواست‌ها را.

اگر روی چند ریپوی فعال کار می‌کنید و می‌خواهید مدیریت ایشوها را هوشمند، سریع و استاندارد کنید، ترکیب GitHub، n8n و OpenAI برای ساخت یک سیستم تریاژ خودکار یکی از بهترین انتخاب‌هاست.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.