דלגו לתוכן

דיבור עם Control Center מבקשת משיכה ב־GitHub

המדריך הזה מראה איך לעבוד עם Control Center בלי לצאת מ-GitHub: לבקש סקירת AI מעמוד ה-PR, לשאול את הבוט שאלה בתגובה, ולהמשיך את השיחה בשרשורי הסקירה שלו.

הבוט הוא ה-GitHub App של השרת שלכם — אותו אחד שכבר מכניס אנשים ומריץ עבודת רקע. שום דבר חדש לא נרשם, ושום דבר לא צריך להיות נגיש מהאינטרנט: השרת מגלה מה נאמר ב-GitHub באמצעות סריקה, כך שמחשב נייד מאחורי NAT מתנהג בדיוק כמו פריסה ציבורית.

  • לשרת יש GitHub App רשום ומותקן, עם Pull requests: read and write (עבור תגובות, שרשורים וריאקציות) ו-Issues: read (עבור חיפוש התגובות). שניהם כבר מופיעים ברשימת ההרשאות של אותו מדריך
  • המאגר מקושר לסביבת עבודה ב-Control Center
  • בלי כתובת webhook, בלי מנהרה, בלי callback — אין שום דבר להגדיר בצד הרשת

שם המשתמש של הבוט הוא <appslug>[bot], כאשר appslug הוא השם שנתתם לאפליקציה כשרשמתם אותה.

  1. עברו אל הגדרות ← שרת ← כניסה מאוחדת וגללו אל הכרטיס אפליקציות ספק
  2. פתחו את הבלוק GitHub ולחצו על בדוק
  3. העתיקו את שם המשתמש של הבוט כשהוא מתמלא. אם עדיין מוצגת הנחיה ריקה, שם המשתמש הוא תמיד <appslug>[bot] — הקלידו אותו, או את הצורה המקוצרת @appslug

GitHub אינו מציע חשבונות אפליקציה בהשלמה האוטומטית של @, ולכן יש להקליד את שם המשתמש — זו הסיבה שכרטיס ההגדרות מאפשר להעתיק אותו בלחיצה אחת. הסיומת [bot] אופציונלית: גם @myapp וגם @myapp[bot] פונים אל הבוט.

שתי דרכים, ושתיהן מפעילות את אותו פייפליין מובנה pr_review שהכפתור שאל את ה־AI מפעיל:

  • הוסיפו את התווית ai-review ל-PR. זה הדבר הקרוב ביותר ש-GitHub מציע להקצאת הבוט כסוקר — חשבונות אפליקציה אינם יכולים להחזיק במשבצת המקורית של סוקר מבוקש. אין תגובה להגיב עליה, ולכן שום דבר לא מפורסם ב-GitHub; הסקירה מתחילה ב-Control Center
  • הגיבו @myapp review (או רק @myapp) בשיחת בקשת המשיכה. הבוט מגיב ב-👀, ואז משיב כשהסקירה התחילה (או שהיא כבר רצה)

הסוקרים עובדים במרחב הסקירה של ה-PR; קראו ופרסמו את הממצאים כמו בשימוש בסקירה מבוססת AI. פרסום חזרה ל-GitHub נשאר החלטה שאתם מקבלים ב-Control Center — התחלת סקירה מ-GitHub לא מפרסמת דבר ל-GitHub בעצמה.

התווית מופעלת פעם אחת לכל PR: הוספה שלה היא הבקשה, והיא אינה נטענת מחדש כשמסירים אותה ומוסיפים שוב. כדי להריץ סקירה שוב — אחרי דחיפה, למשל — אזכרו את הבוט.

הגיבו בשיחת בקשת המשיכה:

@myapp why does the flaky test in runner_test.dart fail on CI but not locally?

מה קורה, לפי הסדר:

  1. הבוט מגיב ב-👀 כדי שתדעו שהתגובה נראתה
  2. השאלה מפורסמת אל מרחב הסקירה של ה-PR כמוכם — אותו ייחוס כאילו הקלדתם אותה ב-Control Center
  3. סוכן עונה במרחב, והתשובה מפורסמת חזרה ב-PR כתגובה שמאזכרת אתכם ב-@

שאלה על PR שאין לו עדיין סקירה מעירה את סוכן ה-CEO של סביבת העבודה; לאחר שסקירה רצה, הסוכן שדיבר אחרון משיב, כך ששאלות ההמשך נוחתות אצל מי שמחזיק בהקשר.

שאלות המשך בשרשור סקירה

קטע בשם “שאלות המשך בשרשור סקירה”

השיבו בתוך שרשור סקירה מוטבע שהבוט שותף בו — תגובת diff שהוא השאיר, או תשובה שהוא פרסם באותו שרשור. אין צורך באזכור; השרשור הוא הפנייה:

> @myapp the retry loop looks O(n²) to me
what would the complexity be with the bounded queue instead?

ריבוי סבבים עובד באותו אופן: כל תשובה היא שאלה נוספת באותה שיחה, כשמרחב הסקירה הוא ההקשר, והתשובה חוזרת בשרשור.

שאלת המשך בציר הזמן של שיחת בקשת המשיכה היא תגובה חדשה ברמה העליונה, ולכן היא עדיין דורשת אזכור ב-@.

תגובה בבקשת משיכה מגיעה כשהיא נושאת מעט יותר משם המשתמש של המחבר, ולכן הבוט פותר את המחבר לפני שהוא עושה משהו:

  • חשבון ה-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 למטה, הרשאות שהשתנו) נרשם ביומן והתשובה אינה נשלחת שוב; שאלו שוב בשרשור אם זה חשוב.