گفتگو با Control Center از یک pull request در GitHub
این راهنما نشان میدهد چگونه بدون ترک GitHub با Control Center کار کنید: از صفحهٔ PR یک بازبینی هوش مصنوعی بخواهید، در یک نظر از ربات پرسشی بپرسید و گفتگو را در رشتههای بازبینی آن ادامه دهید.
ربات، GitHub App خودِ سرور شماست — همان که از پیش افراد را وارد میکند و کارهای پسزمینه را اجرا میکند. چیز تازهای ثبت نمیشود و هیچچیز لازم نیست از اینترنت قابلدسترس باشد: سرور با پولینگ کشف میکند روی GitHub چه گفته شده است، پس یک لپتاپ پشت NAT دقیقاً مثل یک استقرار عمومی رفتار میکند.
پیشنیازها
بخش با عنوان “پیشنیازها”- سرور، GitHub App خود را ثبت و نصب کرده است، با Pull requests: read and write (برای نظرها، رشتهها و واکنشها) و Issues: read (برای جستوجوی نظرها). هر دو از پیش در فهرست مجوزهای همان راهنما آمدهاند
- مخزن به یک فضای کاری در Control Center پیوند خورده است
- نه URL وبهوک، نه تونل، نه callback — در سمت شبکه چیزی برای پیکربندی وجود ندارد
نام ربات خود را پیدا کنید
بخش با عنوان “نام ربات خود را پیدا کنید”نام کاربری ربات <appslug>[bot] است، که در آن appslug همان نامی است که
هنگام ثبت به برنامه دادهاید.
- به تنظیمات → سرور → ورود یکپارچه بروید و تا کارت برنامههای ارائهدهنده پایین بیایید
- بلوک GitHub را باز کنید و آزمایش را کلیک کنید
- وقتی ورود ربات پر شد آن را کپی کنید. اگر هنوز راهنمای خالی را نشان
میدهد، نام کاربری همیشه
<appslug>[bot]است — همان را تایپ کنید، یا شکل کوتاه@appslugرا
GitHub حسابهای برنامه را در تکمیل خودکار @ خود ارائه نمیدهد، پس نام
کاربری باید تایپ شود — به همین دلیل کارت تنظیمات کپیکردن آن را یککلیکی
میکند. پسوند [bot] اختیاری است: @myapp و @myapp[bot] هر دو ربات را
خطاب قرار میدهند.
از GitHub درخواست بازبینی کنید
بخش با عنوان “از GitHub درخواست بازبینی کنید”دو راه، که هر دو همان پایپلاین از پیش تعریفشدهٔ pr_review را شروع میکنند
که دکمهٔ پرسش از AI شروع میکند:
- روی PR برچسب
ai-reviewرا اضافه کنید. این نزدیکترین چیزی است که GitHub برای گماشتن ربات بهعنوان بازبین ارائه میدهد — حسابهای برنامه نمیتوانند جایگاه بومی بازبین درخواستشده را بگیرند. نظری برای واکنش نشان دادن وجود ندارد، پس چیزی روی GitHub منتشر نمیشود؛ بازبینی در Control Center آغاز میشود - روی گفتگوی PR
@myapp reviewرا کامنت کنید (یا فقط@myapp). ربات با 👀 واکنش نشان میدهد و سپس وقتی بازبینی آغاز شد پاسخ میدهد (یا میگوید یکی از قبل در حال اجراست)
بازبینها در فضای بازبینی PR کار میکنند؛ یافتهها را همانطور که در استفاده از بازبینی مبتنی بر هوش مصنوعی آمده بخوانید و منتشر کنید. انتشار دوباره در GitHub همچنان تصمیمی است که در Control Center میگیرید — آغاز یک بازبینی از GitHub بهخودیخود چیزی روی GitHub منتشر نمیکند.
برچسب یکبار بهازای هر PR فعال میشود: افزودن آن همان درخواست است و با برداشتن و افزودن دوباره از نو مسلح نمیشود. برای اجرای دوبارهٔ یک بازبینی — مثلاً پس از یک push — ربات را منشن کنید.
پرسشی بپرسید
بخش با عنوان “پرسشی بپرسید”روی گفتگوی PR نظر بگذارید:
@myapp why does the flaky test in runner_test.dart fail on CI but not locally?چه اتفاقی میافتد، به ترتیب:
- ربات با 👀 واکنش نشان میدهد تا بدانید نظر دیده شده است
- پرسش بهعنوان شما در فضای بازبینی PR فرستاده میشود — همان انتسابی که اگر خودتان آن را در Control Center تایپ کرده بودید
- یک عامل در فضا پاسخ میدهد و پاسخ بهشکل نظری که شما را با @ منشن میکند روی PR بازگردانده میشود
پرسشی روی PRی که هنوز بازبینیای ندارد، عامل CEO فضای کاری را بیدار میکند؛ پس از آنکه یک بازبینی اجرا شد، عاملی که آخر از همه سخن گفته پاسخ میدهد، پس پیگیریها به دست کسی میرسد که بافت را دارد.
پیگیری در یک رشتهٔ بازبینی
بخش با عنوان “پیگیری در یک رشتهٔ بازبینی”داخل یک رشتهٔ بازبینی درونخطی که ربات عضوی از آن است پاسخ دهید — نظری روی diff که ربات گذاشته، یا پاسخی که در همان رشته نوشته است. نیازی به منشن نیست؛ خودِ رشته همان خطاب قرار دادن است:
> @myapp the retry loop looks O(n²) to me
what would the complexity be with the bounded queue instead?چندنوبتی هم همینطور کار میکند: هر پاسخ پرسش دیگری در همان گفتگو است، با فضای بازبینی بهعنوان بافت، و پاسخ در همان رشته بازمیگردد.
یک پیگیری روی خط زمانی گفتگوی PR یک نظر جدید در سطح بالا است، پس همچنان به یک @منشن نیاز دارد.
ربات با چه کسی سخن میگوید
بخش با عنوان “ربات با چه کسی سخن میگوید”یک نظر GitHub چیزی بیش از یک نام کاربری با خود نمیآورد، پس ربات پیش از انجام هر کاری نویسنده را حل میکند:
- حساب GitHub شما باید به هویت شما پیوند شده باشد در Control Center — ورود با GitHub، یا جایگذاری یک توکن، از تنظیمات → فضای کاری → نمایه و هویت → میزبانی کد
- شما باید عضوی با نقش نوشتن باشید (
member،adminیاowner) در فضای کاریای که مخزن را پیوند میدهد
هر کس دیگری یک پاسخ مؤدبانه میگیرد که توضیح میدهد چه چیزی کم است — نام
کاربری ناشناس (پیوندنشده، یا پیوندشده اما عضو اینجا نباشد) و نقش فقطخواندنی
دو حالتاند — و سخنانشان هرگز وارد فضای کاری نمیشود. برچسب ai-review اینگونه
دروازهبانی نمیشود: نویسندهای ندارد، پس بازبینی را در همان فضای کاریای آغاز
میکند که از پیش مخزن را پیوند داده است.
چه انتظاری داشته باشید
بخش با عنوان “چه انتظاری داشته باشید”| مورد | رفتار |
|---|---|
| تأیید | 👀 روی یک نظر، ظرف حدود یک دقیقه — همان بازهٔ جاروب. برچسب ai-review نظری برای واکنش نشان دادن ندارد |
| پاسخها | بهعنوان ربات (همان برنامه)، در همان خطی که پرسش در آن مطرح شد، فرستاده میشوند |
| انتساب در فضا | پرسش مال شماست؛ عامل به نمایندگی شما و تحت تنظیمات خودمختاری فضا اجرا میشود |
| بازبینیها | یافتهها در فضای بازبینی مینشینند؛ انتشار در GitHub دستی است |
تأخیر حدوداً یکدقیقهای، بهای رفع نیاز به هرگونه دسترسی شبکهٔ ورودی است. هیچچیز در جاروب فوری نیست و تا وقتی سرور آفلاین است چیزی از دست نمیرود — نظری که در زمان خاموشی میرسد، در جاروب بعدی گرفته میشود.
عیبیابی
بخش با عنوان “عیبیابی”برای نظری که ربات را منشن میکند، هیچ اتفاقی نمیافتد.
- آیا برنامه روی حسابی که مالک مخزن است نصب شده و مخزن به یک فضای کاری پیوند خورده است؟ مخزن پیوندنشده پیش از ثبت هر چیزی نادیده گرفته میشود، پس اگر بعداً آن را پیوند بزنید، باز هم تحویل میشود
- آیا حساب GitHub شما پیوند شده و عضوی با نقش نوشتن هستید؟ روی PR پاسخ رد ربات را بگردید — میگوید کدام مورد است
- هنوز هیچ؟ وقتی چیزی شکست میخورد، لاگ سرور نام جاروب و PR را میآورد؛ دنبال
pr_conversation:(پولر) وgithub_pr_conversation:(پل) بگردید
برچسب یک بازبینی را آغاز نمیکند.
یکبار بهازای هر PR فعال میشود. اگر بازبینیای از قبل اجرا شده، یا برچسب پیش
از آنکه سرور هرگز PR را دیده باشد اضافه شده است (نخستین جاروب کارهای معوق را
بیصدا ثبت میکند، نه اینکه یکجا راهشان بیندازد)، بهجایش ربات را منشن کنید —
@myapp review همیشه یکی را آغاز میکند، مگر آنکه بازبینیای از قبل در جریان
باشد.
پاسخ ربات هرگز روی GitHub نرسید.
خودِ پاسخ هرگز گم نمیشود — در فضای بازبینی PR در Control Center است. شکست در فرستادن (از کار افتادن GitHub، تغییر مجوزها) ثبت میشود و پاسخ دوباره تلاش نمیشود؛ اگر مهم است در همان رشته دوباره بپرسید.
راهنماهای مرتبط
بخش با عنوان “راهنماهای مرتبط”- ایجاد GitHub App: ثبتی که ربات از آن زاده میشود
- استفاده از بازبینی مبتنی بر هوش مصنوعی: خواندن یافتههایی که یک بازبینی منشنآغازشده تولید میکند
- راهاندازی یکپارچهسازی GitHub: پیوند دادن حساب GitHub خودتان، که ربات شما را با آن حل میکند
- استفاده از فضاها: اتاقی که همهٔ اینها در آن مینشیند