Lewati ke konten

Bicara ke Control Center dari PR GitHub

Panduan ini menunjukkan cara bekerja dengan Control Center tanpa meninggalkan GitHub: minta tinjauan AI dari halaman PR, ajukan pertanyaan kepada bot di sebuah komentar, dan lanjutkan percakapan di utas tinjauannya.

Bot ini adalah GitHub App milik server Anda sendiri — app yang sama yang sudah menangani proses masuk pengguna dan menjalankan pekerjaan latar belakang. Tidak ada yang didaftarkan baru, dan tidak ada yang harus dapat dijangkau dari internet: server menemukan apa yang dikatakan di GitHub lewat polling, sehingga laptop di balik NAT berperilaku persis seperti deployment publik.

  • Server sudah mendaftarkan dan memasang GitHub App-nya, dengan Pull requests: read and write (untuk komentar, utas, dan reaksi) dan Issues: read (untuk pencarian komentar). Keduanya sudah ada di daftar izin panduan tersebut
  • Repositori sudah ditautkan ke sebuah ruang kerja di Control Center
  • Tanpa URL webhook, tanpa tunnel, tanpa callback — tidak ada yang perlu dikonfigurasi di sisi jaringan

Login bot adalah <appslug>[bot], dengan appslug sebagai nama yang Anda berikan saat mendaftarkan app.

  1. Buka Pengaturan → Server → Single sign-on dan gulir ke kartu Aplikasi penyedia
  2. Buka blok GitHub dan klik Tes
  3. Salin Login bot saat nilainya terisi. Jika masih menampilkan petunjuk kosong, login-nya selalu <appslug>[bot] — ketik itu, atau bentuk pendeknya @appslug

GitHub tidak menyediakan akun app di pelengkapan otomatis @-nya, jadi login-nya harus diketik — itulah sebabnya kartu pengaturan menyediakannya untuk disalin dalam satu klik. Akhiran [bot] bersifat opsional: @myapp dan @myapp[bot] sama-sama mengalamatkan bot.

Ada dua cara, keduanya memulai pipeline pr_review bawaan yang sama seperti yang dimulai tombol Tanya AI:

  • Tambahkan label ai-review ke PR. Ini adalah hal terdekat yang ditawarkan GitHub untuk menugaskan bot sebagai peninjau — akun app tidak dapat mengisi slot peninjau yang diminta secara native. Tidak ada komentar untuk direaksikan, jadi tidak ada yang diposting ke GitHub; tinjauan dimulai di Control Center
  • Komentari @myapp review (atau cukup @myapp) di percakapan PR. Bot bereaksi dengan 👀, lalu membalas saat tinjauan sudah dimulai (atau bahwa satu tinjauan sedang berjalan)

Para peninjau bekerja di space tinjauan milik PR; baca dan publikasikan temuannya seperti pada Gunakan tinjauan bertenaga AI. Penerbitan kembali ke GitHub tetap merupakan keputusan yang Anda buat di Control Center — memulai tinjauan dari GitHub tidak memublikasikan apa pun ke GitHub dengan sendirinya.

Label ini menyala sekali per PR: menambahkannya adalah permintaannya, dan label ini tidak dipersenjatai ulang saat dihapus lalu ditambahkan lagi. Untuk menjalankan tinjauan lagi — misalnya setelah push — sebut bot.

Komentari percakapan PR:

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

Apa yang terjadi, secara berurutan:

  1. Bot bereaksi dengan 👀 agar Anda tahu komentarnya terlihat
  2. Pertanyaan diposting ke space tinjauan milik PR atas nama Anda — atribusi yang sama seperti jika Anda mengetiknya di Control Center
  3. Seorang agen menjawab di space tersebut, dan jawabannya diposting kembali di PR sebagai komentar yang menyebut Anda dengan @

Pertanyaan pada PR yang belum ditinjau akan membangunkan agen CEO ruang kerja; setelah sebuah tinjauan berjalan, agen yang terakhir berbicara akan menjawab, sehingga tindak lanjutnya sampai ke pihak yang memiliki konteksnya.

Balas di dalam utas tinjauan inline tempat bot menjadi bagiannya — komentar diff yang ditinggalkannya, atau jawaban yang dipostingnya di utas itu. Tidak perlu sebutan; utas itu sendiri adalah alamatnya:

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

Percakapan multi-giliran bekerja dengan cara yang sama: setiap balasan adalah pertanyaan lain dalam percakapan yang sama, dengan space tinjauan sebagai konteks, dan jawabannya kembali di utas tersebut.

Tindak lanjut pada linimasa percakapan PR adalah komentar tingkat teratas yang baru, jadi tetap memerlukan @mention.

Komentar GitHub datang hanya membawa login, tidak lebih, sehingga bot menyelesaikan penulisnya sebelum melakukan apa pun:

  • Akun GitHub Anda harus ditautkan ke identitas Anda di Control Center — masuk dengan GitHub, atau tempel token, dari Pengaturan → Ruang kerja → Profil & identitas → Hosting kode
  • Anda harus menjadi anggota dengan peran tulis (member, admin, atau owner) di ruang kerja yang menautkan repositori tersebut

Siapa pun selain itu mendapat satu balasan sopan yang menjelaskan apa yang kurang — login yang tidak dikenal (belum ditautkan, atau ditautkan tetapi bukan anggota di sini) dan peran hanya-baca adalah dua kasusnya — dan kata-kata mereka tidak pernah masuk ke ruang kerja. Label ai-review tidak digerbangi seperti ini: label ini tidak punya penulis, jadi label ini memulai tinjauan di ruang kerja yang sudah menautkan repo tersebut.

Hal Perilaku
Pengakuan 👀 pada sebuah komentar dalam waktu sekitar satu menit — interval penyapuan. Label ai-review tidak punya komentar untuk direaksikan
Jawaban Diposting sebagai bot (app), di jalur tempat pertanyaan diajukan
Atribusi di dalam space Pertanyaannya milik Anda; agen berjalan atas nama Anda, di bawah pengaturan otonomi space
Tinjauan Temuan mendarat di space tinjauan; publikasi ke GitHub dilakukan secara manual

Latensi sekitar satu menit itu adalah harga yang dibayar agar tidak perlu akses jaringan masuk sama sekali. Tidak ada yang mendesak dari penyapuan ini, dan tidak ada yang hilang saat server offline — komentar yang tiba selama server mati akan tertangkap pada penyapuan berikutnya.

Tidak ada yang terjadi untuk komentar yang menyebut bot.

  • Apakah app sudah dipasang di akun yang memiliki repo tersebut, dan repo-nya sudah ditautkan ke sebuah ruang kerja? Repo yang belum ditautkan dilewati sebelum apa pun dicatat, jadi menautkannya nanti tetap akan mengantarkan
  • Apakah akun GitHub Anda sudah ditautkan, dan apakah Anda anggota dengan peran tulis? Periksa PR untuk balasan penolakan dari bot — balasan itu menyebutkan kasus yang mana
  • Masih tidak ada? Log server menyebutkan penyapuan dan PR-nya ketika ada yang gagal; cari pr_conversation: (penyapu) dan github_pr_conversation: (jembatan)

Label tidak memulai tinjauan.

Label ini menyala sekali per PR. Jika tinjauan sudah pernah berjalan, atau label ditambahkan sebelum server pernah melihat PR tersebut (penyapuan pertama mencatat tumpukan yang tertunda secara senyap alih-alih menyerbunya), sebut bot sebagai gantinya — @myapp review selalu memulai tinjauan kecuali sudah ada tinjauan yang sedang berjalan.

Jawaban bot tidak pernah tiba di GitHub.

Jawabannya sendiri tidak pernah hilang — jawaban itu ada di space tinjauan milik PR di Control Center. Kegagalan posting (GitHub mati, izin berubah) akan dicatat dan balasannya tidak dicoba ulang; tanyakan lagi di utas tersebut jika hal itu penting.