گردش کار بازبینی کد خودکار با هوش مصنوعی و GitHub

گردش کار بازبینی کد خودکار با هوش مصنوعی و GitHub

10 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۷

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 4476 · منبع: کاتالوگ Axeto

دستیار بازبینی کد با قدرت هوش مصنوعی با GitHub، OpenAI و LangChain

این گردش کار، فرآیند بازبینی کد با قدرت هوش مصنوعی را که توسط رویدادهای push در GitHub راه‌اندازی می‌شود، خودکار می‌کند. هنگامی که کد به یک مخزن مشخص ارسال می‌شود، گردش کار جزئیات commit و diffها را دریافت می‌کند، آن‌ها را به فرمت HTML تبدیل می‌کند، diff کد را به یک عامل هوش مصنوعی برای بازبینی ارسال می‌کند و خلاصه بازبینی تولید شده توسط هوش مصنوعی را از طریق ایمیل ارسال می‌کند. این گردش کار از تریگرهای GitHub، فراخوانی‌های API HTTP، فرمت‌بندی جاوا اسکریپت، مدل‌های زبان هوش مصنوعی از طریق LangChain و اعلان‌های ایمیلی استفاده می‌کند.

مراحل گردش کار:

1. تریگر رویداد GitHub: جدیدترین pushهای کد به یک مخزن GitHub مشخص را شناسایی می‌کند.

2. استخراج داده‌های Commit: اطلاعات دقیق commit و diffهای فایل را با استفاده از API GitHub بازیابی می‌کند.

3. فرمت‌بندی کد: diffهای خام کد را به فرمت HTML قابل خواندن توسط انسان و با کد رنگی تبدیل می‌کند.

4. تحلیل کد با هوش مصنوعی: از یک عامل هوش مصنوعی LangChain برای بازبینی diff کد فرمت‌بندی شده و تولید خلاصه‌ای از یافته‌ها استفاده می‌کند.

5. تولید گزارش و اعلان: diff کد اصلی و بازبینی هوش مصنوعی را در یک گزارش HTML واحد ادغام کرده و از طریق ایمیل ارسال می‌کند.

---

تشریح جزئیات نودها

۱. تریگر رویداد GitHub

  • هدف: راه‌اندازی گردش کار هنگام دریافت رویداد "push" از یک مخزن GitHub مشخص.
  • نود: GitHub Trigger (n8n-nodes-base.githubTrigger)
  • پیکربندی:

* Owner URL: آدرس URL پروفایل GitHub شما.

* Event: push

* Repository: مخزن مورد نظر را انتخاب کنید (مثلاً "relevance").

* Authentication: اعتبارنامه‌های OAuth2 پیکربندی شده برای دسترسی به API GitHub.

  • ورودی: بارگذاری وب‌هوک از GitHub.
  • خروجی: داده‌های JSON حاوی جزئیات رویداد push، از جمله اطلاعات مخزن و commit.
  • مشکلات احتمالی: راه‌اندازی نادرست وب‌هوک، شکست احراز هویت، مشکلات اتصال شبکه.

۲. استخراج و فرمت‌بندی داده‌های Commit

  • هدف: دریافت اطلاعات دقیق commit و فرمت‌بندی diffهای کد برای تجزیه و تحلیل هوش مصنوعی و خوانایی انسانی.
  • نودها:

* Set (n8n-nodes-base.set) - برای تجزیه و تحلیل و ساختاردهی داده‌های اولیه commit.

* HTTP Request (n8n-nodes-base.httpRequest) - برای پرس‌وجو از API GitHub برای جزئیات commit.

* Code (n8n-nodes-base.code) - برای فرمت‌بندی diffهای کد به صورت HTML.

  • جزئیات نود:

* نود Set (تجزیه‌کننده):

* نقش: استخراج و سازماندهی فیلدهای کلیدی (شناسه مخزن، نام، مالک، شناسه commit، فایل‌های اضافه شده/حذف شده/تغییر یافته) از خروجی تریگر GitHub.

* ورودی: خروجی از GitHub Trigger.

* خروجی: JSON پاکسازی شده با متادیتای ضروری commit.

* مشکلات احتمالی: خطا در صورت عدم وجود فیلدهای مورد انتظار در JSON ورودی.

* نود HTTP Request:

* نقش: انجام درخواست GET به API GitHub برای بازیابی داده‌های جامع commit، از جمله diffهای فایل.

* پیکربندی:

* URL: به صورت پویا با استفاده از جزئیات مخزن و commit ساخته می‌شود (مثلاً https://api.github.com/repos/{owner}/{repo}/commits/{commit_sha}).

* Authentication: اعتبارنامه‌های OAuth2 GitHub.

* ورودی: داده‌های تجزیه شده commit از نود Set.

* خروجی: پاسخ JSON حاوی جزئیات commit، تغییرات فایل و پچ‌های diff.

* مشکلات احتمالی: محدودیت‌های نرخ API GitHub، اعتبارنامه‌های نامعتبر، خطاهای شبکه.

* نود Code (فرمت‌کننده HTML):

* نقش: پردازش داده‌های خام پچ diff دریافت شده از API GitHub و تبدیل آن به نمایشی از HTML با کد رنگی. این امر خوانایی را هم برای انسان‌ها و هم برای هوش مصنوعی بهبود می‌بخشد.

* پیکربندی: حاوی کد سفارشی جاوا اسکریپت که:

* خطوط پچ را تجزیه می‌کند و برای افزوده‌ها سبز، برای حذف‌ها قرمز و برای هدرهای hunk خاکستری اعمال می‌کند.

* یک بلوک HTML شامل اطلاعات مخزن، متادیتای commit و diffهای فرمت‌بندی شده برای هر فایل تغییر یافته ایجاد می‌کند.

* ورودی: JSON جزئیات commit از نود HTTP Request.

* خروجی: JSON حاوی یک فیلد htmlOutput با رشته کامل HTML فرمت‌بندی شده.

* مشکلات احتمالی: خطا در اجرای جاوا اسکریپت، فرمت‌های diff غیرمنتظره، داده‌های ورودی گمشده.

۳. تحلیل کد با هوش مصنوعی

  • هدف: تجزیه و تحلیل diff کد فرمت‌بندی شده با استفاده از یک عامل هوش مصنوعی و تولید خلاصه بازبینی.
  • نودها:

* AI Agent (@n8n/n8n-nodes-langchain.agent)

* Simple Memory (@n8n/n8n-nodes-langchain.memoryBufferWindow) - اختیاری، برای تاریخچه مکالمه.

* Groq Chat Model (@n8n/n8n-nodes-langchain.lmChatGroq) - LLM مورد استفاده را مشخص می‌کند.

  • جزئیات نود:

* نود AI Agent:

* نقش: اجرای یک عامل هوش مصنوعی LangChain که برای انجام بازبینی کد پیکربندی شده است.

* پیکربندی:

* Prompt: یک prompt سفارشی به هوش مصنوعی دستور می‌دهد تا تغییرات کد را تجزیه و تحلیل کند، مشکلات عملکردی، سبکی، املایی یا امنیتی را شناسایی کند و بازبینی را در یک بلوک HTML برگرداند.

* ورودی: diff HTML فرمت‌بندی شده تولید شده توسط نود Code قبلی.

* Integration: می‌تواند به صورت اختیاری به نودهای حافظه و LLM متصل شود.

* ورودی: HTML فرمت‌بندی شده از نود Code.

* خروجی: یک بلوک HTML حاوی بازبینی کد تولید شده توسط هوش مصنوعی.

* مشکلات احتمالی: تایم‌اوت سرویس هوش مصنوعی، داده‌های ورودی نامعتبر، چالش‌های مهندسی prompt.

* نود Simple Memory:

* نقش: ارائه زمینه مکالمه به عامل هوش مصنوعی با استفاده از بافر پنجره لغزان.

* پیکربندی: با یک کلید جلسه سفارشی پیکربندی شده است.

* اتصال: به عنوان ورودی حافظه به نود AI Agent متصل است.

* مشکلات احتمالی: محدودیت‌های اندازه حافظه، مدیریت کلیدهای جلسه منحصر به فرد.

* نود Groq Chat Model:

* نقش: تعریف مدل زبان بزرگ (LLM) خاص مورد استفاده توسط عامل هوش مصنوعی (مثلاً Llama 3.1 8b instant).

* پیکربندی:

* Model: llama-3.1-8b-instant

* Credentials: کلید API Groq.

* اتصال: به عنوان ورودی مدل زبان به نود AI Agent متصل است.

* مشکلات احتمالی: محدودیت‌های نرخ API، در دسترس بودن مدل، خطاهای اعتبارنامه‌ها.

۴. تولید گزارش و اعلان ایمیلی

  • هدف: ترکیب HTML diff کد اصلی با بازبینی هوش مصنوعی و ارسال گزارش نهایی از طریق ایمیل.
  • نودها:

* Code (n8n-nodes-base.code) - برای ادغام خروجی‌های HTML.

* Gmail (n8n-nodes-base.gmail) - برای ارسال ایمیل.

* No Operation (n8n-nodes-base.noOp) - برای علامت‌گذاری پایان گردش کار.

  • جزئیات نود:

* نود Code (تجزیه‌کننده خروجی):

* نقش: ادغام محتوای HTML از نود فرمت‌بندی کد اولیه و خروجی بازبینی عامل هوش مصنوعی در یک رشته HTML واحد.

* پیکربندی: کد سفارشی جاوا اسکریپت برای الحاق دو قطعه HTML.

* ورودی: خروجی از AI Agent و اولین نود Code.

* خروجی: JSON حاوی محتوای HTML ادغام شده تحت کلید html.

* مشکلات احتمالی: داده‌های ورودی گمشده.

* نود Gmail:

* نقش: ارسال ایمیلی حاوی گزارش کامل بازبینی کد.

* پیکربندی:

* Recipient: akhilgadiraju@gmail.com (قابل سفارشی‌سازی).

* Subject: "Code Review".

* Message Body: تزریق پویا محتوای HTML ادغام شده.

* Authentication: اعتبارنامه‌های OAuth2 پیکربندی شده برای Gmail.

* ورودی: HTML ادغام شده از نود Code (تجزیه‌کننده خروجی).

* خروجی: تأیید تحویل ایمیل.

* مشکلات احتمالی: خطاهای احراز هویت، آدرس گیرنده نادرست، مشکلات شبکه.

* نود No Operation (پایان گردش کار):

* نقش: به عنوان یک نقطه پایانی واضح برای اجرای گردش کار عمل می‌کند.

* ورودی: خروجی از نود Gmail.

* خروجی: ندارد.

---

جدول خلاصه گردش کار

نام نود (Node Name)نوع نود (Node Type)نقش عملکردی (Functional Role)نود(های) ورودی (Input Node(s))نود(های) خروجی (Output Node(s))یادداشت چسبان (Sticky Note)
Github Triggern8n-nodes-base.githubTriggerراه‌اندازی گردش کار با رویداد push در GitHub(Webhook)Set (Parser)## 👨‍💻 Github Trigger: فیلدهای خاص برای گوش دادن به پروژه‌های مشخص را سفارشی کنید.
Set (Parser)n8n-nodes-base.setاستخراج و ساختاردهی متادیتای کامیتGithub TriggerHTTP Request
HTTP Requestn8n-nodes-base.httpRequestدریافت داده‌های دقیق کامیت از API گیت‌هابSet (Parser)Code (Formatter)
Code (Formatter)n8n-nodes-base.codeفرمت‌بندی diff کامیت به HTML رنگیHTTP RequestAI Agent
AI Agent@n8n/n8n-nodes-langchain.agentتحلیل diff کد، تولید بازبینی کدCode (Formatter)Code (Merge)## سفارشی‌سازی AI Agent: برای جنبه‌های مختلف بازبینی، prompt را به‌روز کنید.
Simple Memory@n8n/n8n-nodes-langchain.memoryBufferWindowارائه حافظه جلسه به عامل هوش مصنوعی-AI Agent (memory)
Groq Chat Model@n8n/n8n-nodes-langchain.lmChatGroqمدل زبانی برای عامل هوش مصنوعی-AI Agent (LLM)## سفارشی‌سازی LLM: در صورت نیاز با سایر مدل‌های زبانی پشتیبانی‌شده جایگزین کنید.
Code (Merge)n8n-nodes-base.codeترکیب خروجی HTML کامیت و بازبینی هوش مصنوعیAI Agent, Code (Formatter)Gmail
Gmailn8n-nodes-base.gmailارسال ایمیل با نتایج بازبینی کدCode (Merge)No Operation## ایمیل: گیرنده یا استایل ایمیل را به‌روز کنید.
End Workflown8n-nodes-base.noOpنقطه پایان گردش کارGmail-

ساخت گردش کار

1. GitHub Trigger:

* یک گره GitHub Trigger اضافه کنید.

* آن را برای رویدادهای push در مخزن مورد نظر خود پیکربندی کنید.

* اعتبارسنجی‌های GitHub OAuth2 را راه‌اندازی کنید.

* URL وب‌هوک را ذخیره کرده و آن را در تنظیمات وب‌هوک مخزن GitHub خود ثبت کنید.

2. گره Set (تجزیه‌کننده):

* یک گره Set اضافه کنید.

* ورودی آن را از GitHub Trigger متصل کنید.

* فیلدهای زیر را با استفاده از عبارات برای استخراج داده‌ها از خروجی تریگر تعریف کنید:

* body.repository.id (Number)

* body.repository.name (String)

* body.repository.owner.name (String)

* body.head_commit.id (String)

* body.head_commit.added (Array)

* body.head_commit.removed (Array)

* body.head_commit.modified (Array)

3. گره HTTP Request:

* یک گره HTTP Request اضافه کنید.

* ورودی آن را از گره Set متصل کنید.

* متد را روی GET تنظیم کنید.

* URL را به صورت پویا پیکربندی کنید: https://api.github.com/repos/{{ $json.body.repository.owner.name }}/{{ $json.body.repository.name }}/commits/{{ $json.body.head_commit.id }}

* از اعتبارسنجی‌های GitHub OAuth2 خود برای احراز هویت استفاده کنید.

4. گره Code (قالب‌بندی HTML):

* یک گره Code (JavaScript) اضافه کنید.

* ورودی آن را از گره HTTP Request متصل کنید.

* کد جاوا اسکریپت ارائه شده را برای فرمت‌بندی diffهای commit به HTML کد رنگی، جای‌گذاری کنید. از عبارات برای ارجاع به داده‌های گره‌های قبلی استفاده کنید.

5. گره AI Agent:

* یک گره @n8n/n8n-nodes-langchain.agent اضافه کنید.

* ورودی آن را از گره Code (قالب‌بندی HTML) متصل کنید.

* Prompt سفارشی برای بازبینی کد را پیکربندی کنید.

* (اختیاری) گره‌های Simple Memory و Groq Chat Model را برای قابلیت‌های پیشرفته هوش مصنوعی به این گره متصل کنید.

6. گره Code (ادغام‌کننده خروجی):

* یک گره Code دیگر (JavaScript) اضافه کنید.

* ورودی‌های آن را از گره AI Agent و گره اول Code (قالب‌بندی HTML) متصل کنید.

* کد جاوا اسکریپت را برای ادغام دو خروجی HTML در یک رشته واحد، جای‌گذاری کنید.

7. گره Gmail:

* یک گره Gmail اضافه کنید.

* ورودی آن را از گره Code (ادغام‌کننده خروجی) متصل کنید.

* گیرنده، موضوع و بدنه پیام (با استفاده از HTML ادغام شده) را پیکربندی کنید.

* اعتبارسنجی‌های Gmail OAuth2 را راه‌اندازی کنید.

8. گره No Operation:

* یک گره No Operation اضافه کنید.

* ورودی آن را از گره Gmail متصل کنید تا پایان گردش کار را نشان دهد.

این تنظیمات یک فرآیند بازبینی کد خودکار و قوی را فراهم می‌کند که از هوش مصنوعی برای بهبود کیفیت کد و بهره‌وری توسعه‌دهندگان استفاده می‌کند. می‌توانید این و سایر گردش کارهای مفید را در کاتالوگ Axeto در https://axeto.ai/n8n بیابید.

Nodeهای استفاده‌شده

سوالات متداول

این گردش کار n8n چگونه بازبینی کد را خودکار می‌کند؟

این گردش کار با راه‌اندازی توسط رویدادهای push در GitHub، diffهای کد را استخراج کرده، آن‌ها را به فرمت HTML قابل خواندن تبدیل می‌کند و سپس برای تحلیل به یک عامل هوش مصنوعی (مانند OpenAI از طریق LangChain) ارسال می‌کند. در نهایت، خلاصه‌ای از بازبینی هوش مصنوعی را از طریق ایمیل برای شما ارسال می‌کند.

چه ابزارها و سرویس‌هایی در این گردش کار استفاده شده‌اند؟

این گردش کار از n8n برای اتوماسیون، GitHub برای مدیریت کد و رویدادها، OpenAI (یا مدل‌های مشابه از طریق LangChain) برای تحلیل هوش مصنوعی کد، و Gmail برای ارسال گزارش بازبینی استفاده می‌کند.

آیا این گردش کار برای همه زبان‌های برنامه‌نویسی قابل استفاده است؟

بله، این گردش کار بر اساس diffهای کد کار می‌کند و می‌تواند برای هر زبان برنامه‌نویسی که توسط GitHub پشتیبانی می‌شود و توسط مدل هوش مصنوعی قابل درک است، مورد استفاده قرار گیرد.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.