İçeriğe geç

Bir GitHub PR'dan Control Center ile konuşma

Bu kılavuz, GitHub’dan ayrılmadan Control Center ile nasıl çalışacağınızı gösterir: PR sayfasından bir YZ incelemesi isteyin, bir yorumda bota soru sorun ve konuşmayı botun inceleme konularında sürdürün.

Bot, sunucunuzun kendi GitHub App uygulamasıdır — insanları zaten oturum açtıran ve arka plan işlerini yürüten aynı uygulama. Yeni hiçbir şey kaydedilmez ve hiçbir şeyin internetten erişilebilir olması gerekmez: sunucu, GitHub’da söylenenleri yoklayarak keşfeder; böylece NAT arkasındaki bir dizüstü bilgisayar, genel bir dağıtımla tamamen aynı davranır.

  • Sunucunun GitHub App’i kayıtlı ve kurulu olmalı; Pull requests: read and write (yorumlar, konular ve tepkiler için) ve Issues: read (yorum araması için) izinleriyle. Her ikisi de o kılavuzun izin listesinde zaten var
  • Depo, Control Center’da bir çalışma alanına bağlı
  • Webhook URL’si yok, tünel yok, geri çağırma yok — ağ tarafında yapılandırılacak hiçbir şey yok

Botun giriş adı <appslug>[bot] biçimindedir; burada appslug, uygulamayı kaydederken verdiğiniz addır.

  1. Ayarlar → Sunucu → Tek oturum açma bölümüne gidin ve Sağlayıcı uygulamaları kartına kaydırın
  2. GitHub bloğunu açın ve Test’e tıklayın
  3. Bot girişi dolduğunda kopyalayın. Hâlâ boş ipucunu gösteriyorsa giriş adı her zaman <appslug>[bot] biçimindedir — bunu yazın, ya da kısa @appslug biçimini kullanın

GitHub, @ otomatik tamamlamasında uygulama hesaplarını sunmaz; dolayısıyla giriş adının elle yazılması gerekir — ayarlar kartının kopyalamayı tek tıklamaya indirmesinin nedeni budur. [bot] soneki isteğe bağlıdır: @myapp ve @myapp[bot] ikisi de bota seslenir.

İki yol var; ikisi de AI’ya sor düğmesinin başlattığı aynı hazır gelen pr_review pipeline’ını başlatır:

  • PR’a ai-review etiketini ekleyin. Bu, GitHub’ın botu inceleyici olarak atamaya sunduğu en yakın şeydir — uygulama hesapları, yerel olarak istenen inceleyici yerini dolduramaz. Tepki verilecek bir yorum yoktur, dolayısıyla GitHub’da hiçbir şey yayımlanmaz; inceleme Control Center’da başlar
  • PR konuşmasına @myapp review yazın (ya da yalnızca @myapp). Bot 👀 ile tepki verir, ardından inceleme başladığında (ya da zaten bir incelemenin çalıştığını) yanıtlar

İnceleyiciler PR’ın inceleme alanında çalışır; bulguları YZ destekli inceleme kullanma sayfasındaki gibi okuyun ve yayımlayın. GitHub’a geri yayımlamak, Control Center’da verdiğiniz bir karar olarak kalır — GitHub’dan bir inceleme başlatmak kendi başına GitHub’a hiçbir şey yayımlamaz.

Etiket PR başına bir kez tetiklenir: onu eklemek isteğin kendisidir ve kaldırılıp yeniden eklendiğinde yeniden kurulmaz. Bir incelemeyi yeniden çalıştırmak için — sözgelimi bir push’un ardından — botu anın.

PR konuşmasına yorum yapın:

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

Sırasıyla olanlar:

  1. Bot 👀 ile tepki verir, böylece yorumun görüldüğünü anlarsınız
  2. Soru, PR’ın inceleme alanına siz olarak gönderilir — Control Center’da kendiniz yazmışsınız gibi aynı atıfla
  3. Bir ajan alanda yanıtlar ve yanıt, PR’a sizden @ ile söz eden bir yorum olarak geri gönderilir

Henüz incelemesi olmayan bir PR’daki soru, çalışma alanının CEO ajanını uyandırır; bir inceleme çalıştıktan sonra ise son konuşan ajan yanıtlar, böylece takip soruları bağlama sahip olana ulaşır.

Botun parçası olduğu satır içi bir inceleme konusunun içinde yanıtlayın — bıraktığı bir diff yorumu ya da o konuda gönderdiği bir yanıt. Anmaya gerek yoktur; hitap konunun kendisidir:

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

Çok turlu akış da aynı şekilde işler: her yanıt, inceleme alanını bağlam olarak kullanan aynı konuşmadaki bir başka sorudur ve yanıt konuda geri döner.

PR konuşması zaman çizelgesindeki bir takip sorusu, üst düzey yeni bir yorumdur, dolayısıyla yine bir @ ile anma gerektirir.

Bir GitHub yorumu, bir giriş adından biraz fazlası olarak gelir; dolayısıyla bot, herhangi bir şey yapmadan önce yazarı çözümler:

  • GitHub hesabınız, Control Center’da kimliğinize bağlı olmalıdır — Ayarlar → Çalışma alanı → Profil ve kimlik → Kod barındırma altından GitHub ile oturum açın ya da bir token yapıştırın
  • Depoyu bağlayan çalışma alanında yazma rolüne sahip bir üye olmalısınız (member, admin veya owner)

Başka herkes, neyin eksik olduğunu açıklayan tek bir kibar yanıt alır ve sözleri çalışma alanına asla girmez; bilinmeyen bir giriş adı (bağlı değil ya da bağlı ama burada üye değil) ile salt okunur bir rol, söz konusu iki durumdur. ai-review etiketi bu şekilde kısıtlanmaz: yazarı yoktur, dolayısıyla incelemeyi depoyu zaten bağlayan çalışma alanında başlatır.

Şey Davranış
Alındı bildirimi Bir yorumda yaklaşık bir dakika içinde 👀 — tarama aralığı. ai-review etiketinin tepki verilecek bir yorumu yoktur
Yanıtlar Bot (uygulama) olarak, sorunun sorulduğu kanalda gönderilir
Alan içi atıf Soru size aittir; ajan, alanın özerklik ayarları altında sizin adınıza çalışır
İncelemeler Bulgular inceleme alanına düşer; GitHub’a yayımlamak elle yapılır

Yaklaşık bir dakikalık gecikme, hiç gelen ağ erişimi gerektirmemenin bedelidir. Taramayla ilgili acil hiçbir şey yoktur ve sunucu çevrimdışıyken hiçbir şey kaybolmaz — kesinti sırasında gelen bir yorum, bir sonraki taramada yakalanır.

Botu anan bir yorumda hiçbir şey olmuyor.

  • Uygulama, depoya sahip hesapta kurulu mu ve depo bir çalışma alanına bağlı mı? Bağlı olmayan bir depo, hiçbir şey kaydedilmeden önce atlanır; dolayısıyla sonradan bağlamak yine de teslim eder
  • GitHub hesabınız bağlı mı ve yazma rolüne sahip bir üye misiniz? PR’da botun ret yanıtına bakın — hangisi olduğunu söyler
  • Hâlâ hiçbir şey yok mu? Bir şey başarısız olduğunda sunucu günlüğü taramayı ve PR’ı adlandırır; pr_conversation: (yoklayıcı) ve github_pr_conversation: (köprü) aramalarına bakın

Etiket bir inceleme başlatmıyor.

PR başına bir kez tetiklenir. Bir inceleme zaten çalıştıysa ya da etiket, sunucu PR’ı hiç görmeden önce eklendiyse (ilk tarama, birikmiş işleri üzerine salmak yerine sessizce kaydeder), bunun yerine botu anın — bir inceleme zaten yürürlükte değilse @myapp review her zaman bir tane başlatır.

Botun yanıtı GitHub’a hiç ulaşmadı.

Yanıtın kendisi hiç kaybolmaz — Control Center’da PR’ın inceleme alanındadır. Gönderme hatası (GitHub çalışmıyor, izinler değişti) günlüğe kaydedilir ve yanıt yeniden denenmez; önemliyse konuda tekrar sorun.