Sari la conținut

Vorbește cu Control Center dintr-un PR GitHub

Acest ghid îți arată cum să lucrezi cu Control Center fără să părăsești GitHub: cere o revizuire IA chiar din pagina PR-ului, pune botului o întrebare într-un comentariu și continuă conversația în firele lui de revizuire.

Botul este chiar GitHub App al serverului tău — același care deja autentifică oameni și rulează munca din fundal. Nu se înregistrează nimic nou și nimic nu trebuie să fie accesibil din internet: serverul descoperă ce s-a spus pe GitHub prin interogare periodică, așa că un laptop aflat în spatele unui NAT se comportă exact ca o implementare publică.

  • Serverul are GitHub App-ul înregistrat și instalat, cu permisiunile Pull requests: read and write (pentru comentarii, fire și reacții) și Issues: read (pentru căutarea de comentarii). Ambele sunt deja în lista de permisiuni din acel ghid
  • Repozitoriul este legat de un spațiu de lucru din Control Center
  • Fără URL de webhook, fără tunel, fără callback — nu e nimic de configurat pe partea de rețea

Loginul botului este <appslug>[bot], unde appslug este numele pe care l-ai dat aplicației când ai înregistrat-o.

  1. Mergi la Setări → Server → Autentificare unică și derulează până la cardul Aplicații provider
  2. Deschide secțiunea GitHub și apasă Test
  3. Copiază Login bot când se completează. Dacă încă afișează indicația de câmp gol, loginul este întotdeauna <appslug>[bot] — tastează asta, sau forma scurtă @appslug

GitHub nu oferă conturile de aplicație în autocompletarea pentru @, așa că loginul trebuie tastat — de aceea cardul din setări îl face copiabil cu un singur clic. Sufixul [bot] este opțional: atât @myapp, cât și @myapp[bot] ajung la bot.

Două metode, ambele pornind același pipeline predefinit pr_review pe care îl pornește butonul Întreabă AI:

  • Adaugă eticheta ai-review pe PR. Este cel mai apropiat lucru de a atribui botul ca recenzent pe care îl oferă GitHub — conturile de aplicație nu pot ocupa locul nativ de recenzent solicitat. Nu există niciun comentariu la care să se reacționeze, așa că nu se publică nimic pe GitHub; revizuirea pornește în Control Center
  • Comentează @myapp review (sau doar @myapp) în conversația PR-ului. Botul reacționează cu 👀, apoi răspunde când revizuirea a pornit (sau că una rulează deja)

Recenzenții lucrează în spațiul de revizuire al PR-ului; citește și publică constatările ca în Folosește revizuirea bazată pe IA. Publicarea înapoi pe GitHub rămâne o decizie pe care o iei în Control Center — pornirea unei revizuiri din GitHub nu publică nimic pe GitHub de la sine.

Eticheta se declanșează o singură dată per PR: adăugarea ei este cererea, și nu se re-armează când este eliminată și adăugată din nou. Ca să rulezi din nou o revizuire — după un push, de exemplu — menționează botul.

Comentează în conversația PR-ului:

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

Ce se întâmplă, în ordine:

  1. Botul reacționează cu 👀 ca să știi că comentariul a fost văzut
  2. Întrebarea este postată în spațiul de revizuire al PR-ului ca tine — aceeași atribuire ca și cum ai fi tastat-o în Control Center
  3. Un agent răspunde în spațiu, iar răspunsul este postat înapoi pe PR ca un comentariu care te menționează cu @

O întrebare pe un PR fără nicio revizuire încă trezește agentul CEO al spațiului de lucru; după ce a rulat o revizuire, răspunde agentul care a vorbit ultimul, așa că continuările ajung la cine are contextul.

Răspunde într-un fir de revizuire inline din care botul face parte — un comentariu pe diff lăsat de el, sau un răspuns postat de el în acel fir. Nu e nevoie de nicio mențiune; firul este adresarea:

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

Conversația pe mai multe replici funcționează la fel: fiecare răspuns este o nouă întrebare în aceeași conversație, cu spațiul de revizuire ca context, iar răspunsul se întoarce în fir.

O continuare pe cronologia conversației PR-ului este un comentariu nou de nivel superior, așa că are nevoie în continuare de o mențiune cu @.

Un comentariu GitHub sosește purtând nu mult mai mult decât un login, așa că botul rezolvă autorul înainte de a face orice:

  • Contul tău GitHub trebuie să fie legat de identitatea ta în Control Center — autentifică-te cu GitHub sau lipește un token, din Setări → Spațiu de lucru → Profil și identitate → Găzduire de cod
  • Trebuie să fii membru cu un rol de scriere (member, admin sau owner) în spațiul de lucru care leagă repozitoriul

Oricine altcineva primește un singur răspuns politicos care explică ce lipsește — un login necunoscut (nelegat, sau legat dar care nu este membru aici) și un rol doar în citire sunt cele două cazuri — iar vorbele lor nu intră niciodată în spațiul de lucru. Eticheta ai-review nu este condiționată astfel: nu are autor, așa că pornește revizuirea în spațiul de lucru care deja leagă repo-ul.

Lucru Comportament
Confirmare 👀 pe un comentariu în circa un minut — intervalul de scanare. Eticheta ai-review nu are niciun comentariu la care să reacționeze
Răspunsuri Postate ca botul (aplicația), în firul în care a fost pusă întrebarea
Atribuirea în spațiu Întrebarea este a ta; agentul rulează în numele tău, sub setările de autonomie ale spațiului
Revizuiri Constatările ajung în spațiul de revizuire; publicarea pe GitHub este manuală

Latența de circa un minut este prețul plătit pentru a nu avea deloc nevoie de acces de rețea de intrare. Nimic din scanare nu este urgent și nimic nu se pierde cât timp serverul este offline — un comentariu care sosește în timpul unei perioade de nefuncționare este prins la scanarea următoare.

Nu se întâmplă nimic pentru un comentariu care menționează botul.

  • Aplicația este instalată pe contul care deține repo-ul, iar repo-ul este legat de un spațiu de lucru? Un repo nelegat este sărit înainte de a se înregistra ceva, așa că legarea lui mai târziu livrează totuși
  • Contul tău GitHub este legat și ești membru cu un rol de scriere? Verifică pe PR răspunsul de refuz al botului — spune care dintre ele
  • Tot nimic? Jurnalul serverului numește scanarea și PR-ul când ceva eșuează; caută pr_conversation: (interogatorul) și github_pr_conversation: (puntea)

Eticheta nu pornește o revizuire.

Se declanșează o singură dată per PR. Dacă o revizuire a rulat deja, sau eticheta a fost adăugată înainte ca serverul să vadă vreodată PR-ul (prima scanare înregistrează restanța în silență, în loc să o ia cu asalt), menționează botul în schimb — @myapp review pornește întotdeauna una, dacă nu este deja o revizuire în curs.

Răspunsul botului nu a ajuns niciodată pe GitHub.

Răspunsul în sine nu se pierde niciodată — se află în spațiul de revizuire al PR-ului din Control Center. O eroare de postare (GitHub căzut, permisiuni schimbate) este consemnată în jurnal, iar răspunsul nu este reîncercat; întreabă din nou în fir dacă contează.