Langkau ke kandungan

Bercakap dengan Control Center dari PR GitHub

Panduan ini menunjukkan cara bekerja dengan Control Center tanpa meninggalkan GitHub: minta semakan AI dari halaman PR, tanya bot sesuatu soalan dalam komen, dan teruskan perbualan dalam benang semakannya.

Bot itu ialah GitHub App pelayan anda sendiri — yang sama yang sudah membenarkan orang daftar masuk dan menjalankan kerja latar belakang. Tiada apa-apa baharu didaftarkan, dan tiada apa-apa perlu boleh dicapai dari internet: pelayan menemui apa yang diperkatakan di GitHub melalui pengundian, jadi komputer riba di belakang NAT berkelakuan sama seperti penerapan awam.

  • Pelayan mempunyai GitHub App-nya didaftarkan dan dipasang, dengan Pull requests: read and write (untuk komen, benang dan reaksi) dan Issues: read (untuk carian komen). Kedua-duanya sudah ada dalam senarai kebenaran panduan itu
  • Repositori itu dipautkan ke ruang kerja dalam Control Center
  • Tiada URL webhook, tiada terowong, tiada callback — tiada apa-apa untuk dikonfigurasikan di sisi rangkaian

Log masuk bot itu ialah <appslug>[bot], dengan appslug ialah nama yang anda berikan kepada aplikasi itu semasa mendaftarkannya.

  1. Pergi ke Tetapan → Pelayan → Daftar masuk tunggal dan tatal ke kad Apl penyedia
  2. Buka blok GitHub dan klik Uji
  3. Salin Log masuk bot apabila nilainya terisi. Jika ia masih memaparkan petunjuk kosong, log masuk itu sentiasa <appslug>[bot] — taip nilai itu, atau bentuk pendek @appslug

GitHub tidak menawarkan akaun aplikasi dalam autolengkap @-nya, jadi log masuk itu perlu ditaip — sebab itulah kad tetapan menjadikannya boleh disalin dengan satu klik. Akhiran [bot] adalah pilihan: @myapp dan @myapp[bot] kedua-duanya menujukan bot itu.

Dua cara, kedua-duanya memulakan pipeline pr_review yang dibenihkan yang sama seperti yang dimulakan oleh butang Tanya AI:

  • Tambahkan label ai-review pada PR. Inilah cara paling hampir yang ditawarkan GitHub untuk menetapkan bot sebagai penyemak — akaun aplikasi tidak boleh memegang slot penyemak yang diminta secara asli. Tiada komen untuk diberi reaksi, jadi tiada apa-apa disiarkan di GitHub; semakan itu bermula dalam Control Center
  • Komen @myapp review (atau hanya @myapp) pada perbualan PR. Bot itu memberi reaksi 👀, kemudian membalas apabila semakan telah bermula (atau bahawa satu semakan sedang berjalan)

Penyemak bekerja dalam ruang semakan PR itu; baca dan terbitkan penemuan seperti dalam Gunakan semakan berkuasa AI. Menerbitkan semula ke GitHub kekal sebagai keputusan yang anda buat dalam Control Center — memulakan semakan dari GitHub tidak menerbitkan apa-apa ke GitHub dengan sendirinya.

Label itu tercetus sekali sahaja bagi setiap PR: menambahnya ialah permintaannya, dan ia tidak dipasang semula apabila dibuang dan ditambah semula. Untuk menjalankan semakan sekali lagi — selepas push, misalnya — sebut bot itu.

Komen pada perbualan PR:

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

Apa yang berlaku, mengikut urutan:

  1. Bot itu memberi reaksi 👀 supaya anda tahu komen itu telah dilihat
  2. Soalan itu disiarkan ke dalam ruang semakan PR sebagai anda — atribusi yang sama seperti jika anda menaipnya dalam Control Center
  3. Seorang ejen menjawab dalam ruang itu, dan jawapan itu disiarkan semula pada PR sebagai komen yang @-menyebut anda

Soalan pada PR yang belum mempunyai semakan akan membangunkan ejen ketua (CEO) ruang kerja itu; apabila sesuatu semakan telah dijalankan, ejen yang bercakap terakhir akan menjawab, jadi susulan sampai kepada sesiapa yang mempunyai konteksnya.

Balas di dalam benang semakan sebaris yang bot itu sertai — komen diff yang ditinggalkannya, atau jawapan yang disiarkannya dalam benang itu. Tiada sebutan diperlukan; benang itu ialah penujukannya:

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

Perbualan berbilang giliran berfungsi dengan cara yang sama: setiap balasan ialah satu lagi soalan dalam perbualan yang sama, dengan ruang semakan sebagai konteks, dan jawapan itu kembali dalam benang itu.

Susulan pada garis masa perbualan PR ialah komen peringkat atas yang baharu, jadi ia masih memerlukan @sebutan.

Komen GitHub tiba dengan tidak lebih daripada satu log masuk, jadi bot itu menyelesaikan penulisnya sebelum melakukan apa-apa:

  • Akaun GitHub anda mesti dipautkan kepada identiti anda dalam Control Center — daftar masuk dengan GitHub, atau tampal token, dari Tetapan → Ruang kerja → Profil & identiti → Hos kod
  • Anda mesti ahli dengan peranan tulis (member, admin, atau owner) dalam ruang kerja yang memautkan repositori itu

Sesiapa yang lain menerima satu balasan sopan yang menerangkan apa yang tiada — log masuk yang tidak dikenali (tidak dipautkan, atau dipautkan tetapi bukan ahli di sini) dan peranan baca sahaja ialah dua kesnya — dan kata-kata mereka tidak pernah memasuki ruang kerja itu. Label ai-review tidak dikawal dengan cara ini: ia tiada penulis, jadi ia memulakan semakan dalam ruang kerja yang sudah memautkan repositori itu.

Perkara Tingkah laku
Pengakuan 👀 pada komen dalam masa kira-kira satu minit — selang sapuan. Label ai-review tiada komen untuk diberi reaksi
Jawapan Disiarkan sebagai bot (aplikasi itu), dalam lorong tempat soalan itu ditanya
Atribusi dalam ruang Soalan itu milik anda; ejen berjalan bagi pihak anda, di bawah tetapan autonomi ruang itu
Semakan Penemuan mendarat dalam ruang semakan; penerbitan ke GitHub adalah manual

Kependaman kira-kira satu minit itulah harganya kerana tidak memerlukan sebarang akses rangkaian masuk. Tiada apa-apa tentang sapuan itu yang mendesak, dan tiada apa-apa hilang semasa pelayan di luar talian — komen yang tiba semasa waktu henti akan ditangkap pada sapuan berikutnya.

Tiada apa-apa berlaku bagi komen yang menyebut bot.

  • Adakah aplikasi itu dipasang pada akaun yang memiliki repositori itu, dan repositori itu dipautkan ke ruang kerja? Repositori yang tidak dipautkan dilangkau sebelum apa-apa direkodkan, jadi memautkannya kemudian tetap menyampaikannya
  • Adakah akaun GitHub anda dipautkan, dan adakah anda ahli dengan peranan tulis? Semak PR untuk balasan penolakan bot itu — ia menyatakan yang mana
  • Masih tiada apa-apa? Log pelayan menamakan sapuan dan PR itu apabila sesuatu gagal; cari pr_conversation: (pengundi) dan github_pr_conversation: (jambatan)

Label itu tidak memulakan semakan.

Ia tercetus sekali sahaja bagi setiap PR. Jika semakan sudah dijalankan, atau label itu ditambah sebelum pelayan pernah melihat PR itu (sapuan pertama merekodkan tunggakan itu secara senyap dan bukannya mencetuskannya sekaligus), sebut bot itu sebagai gantinya — @myapp review sentiasa memulakan satu kecuali satu semakan sudah pun berjalan.

Jawapan bot itu tidak pernah sampai ke GitHub.

Jawapan itu sendiri tidak pernah hilang — ia ada dalam ruang semakan PR itu dalam Control Center. Kegagalan penyiaran (GitHub tidak beroperasi, kebenaran berubah) akan dilogkan dan balasan itu tidak dicuba semula; tanya lagi dalam benang itu jika ia penting.