Ga naar inhoud

Met Control Center praten vanuit een GitHub-PR

Deze gids laat zien hoe je met Control Center werkt zonder GitHub te verlaten: vraag een AI-review aan vanaf de PR-pagina, stel de bot een vraag in een opmerking, en houd het gesprek gaande in zijn reviewthreads.

De bot is de eigen GitHub App van je server — dezelfde die mensen al aanmeldt en achtergrondwerk uitvoert. Er wordt niets nieuws geregistreerd, en niets hoeft vanaf het internet bereikbaar te zijn: de server ontdekt door te pollen wat er op GitHub is gezegd, dus een laptop achter NAT gedraagt zich precies als een openbare deployment.

  • De server heeft zijn GitHub App geregistreerd en geïnstalleerd, met Pull requests: read and write (voor opmerkingen, threads en reacties) en Issues: read (voor het zoeken in opmerkingen). Beide staan al in de machtigingenlijst van die gids
  • De repository is aan een werkruimte in Control Center gekoppeld
  • Geen webhook-URL, geen tunnel, geen callback — aan de netwerkkant valt er niets te configureren

De login van de bot is <appslug>[bot], waarbij appslug de naam is die je de app bij de registratie hebt gegeven.

  1. Ga naar Instellingen → Server → Single sign-on en scroll naar de kaart Provider-apps
  2. Open het blok GitHub en klik op Testen
  3. Kopieer Bot-login zodra die verschijnt. Staat er nog de lege hint, dan is de login altijd <appslug>[bot] — typ die, of de korte vorm @appslug

GitHub biedt appaccounts niet aan in zijn @-autocomplete, dus de login moet je typen — daarom maakt de kaart in de instellingen het kopiëren één klik. Het achtervoegsel [bot] is optioneel: @myapp en @myapp[bot] spreken beide de bot aan.

Twee manieren, die beide dezelfde meegeleverde pr_review-pipeline starten als de knop Ask AI:

  • Voeg het label ai-review toe aan de PR. Dat komt het dichtst in de buurt van de bot als reviewer toewijzen — appaccounts kunnen de native plek van een aangevraagde reviewer niet bezetten. Er is geen opmerking om op te reageren, dus er wordt niets op GitHub geplaatst; de review start in Control Center
  • Plaats @myapp review (of alleen @myapp) als opmerking in het PR-gesprek. De bot reageert met 👀 en antwoordt vervolgens wanneer de review is gestart (of dat er al een loopt)

De reviewers werken in de reviewruimte van de PR; lees en publiceer de bevindingen zoals in AI-gestuurde review gebruiken. Terug naar GitHub publiceren blijft een beslissing die je in Control Center neemt — een review vanuit GitHub starten publiceert op zichzelf niets naar GitHub.

Het label vuurt één keer per PR: het toevoegen is de aanvraag, en het wordt niet opnieuw geactiveerd wanneer je het verwijdert en weer toevoegt. Wil je een review nog eens laten lopen — na een push, bijvoorbeeld — vermeld dan de bot.

Plaats een opmerking in het PR-gesprek:

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

Wat er gebeurt, in volgorde:

  1. De bot reageert met 👀, zodat je weet dat de opmerking is gezien
  2. De vraag wordt in de reviewruimte van de PR geplaatst als jou — dezelfde attributie als wanneer je hem in Control Center had getypt
  3. Een agent antwoordt in de ruimte, en het antwoord wordt terug op de PR geplaatst als een opmerking die jou @-vermeldt

Een vraag op een PR zonder review wekt de CEO-agent van de werkruimte; zodra er een review is gelopen, antwoordt de agent die het laatst sprak, zodat vervolgvragen bij degene met de context terechtkomen.

Antwoord binnen een inline reviewthread waar de bot deel van uitmaakt — een diff-opmerking die hij achterliet, of een antwoord dat hij in die thread plaatste. Een vermelding is niet nodig; de thread is de adressering:

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

Meerdere beurten werken hetzelfde: elk antwoord is een nieuwe vraag in hetzelfde gesprek, met de reviewruimte als context, en het antwoord komt terug in de thread.

Een vervolgvraag op de tijdlijn van het PR-gesprek is een nieuwe opmerking op het hoogste niveau en heeft daarom nog steeds een @-vermelding nodig.

Een GitHub-opmerking komt binnen met weinig meer dan een login, dus de bot herleidt de auteur voordat hij iets doet:

  • Je GitHub-account moet aan je identiteit gekoppeld zijn in Control Center — meld je aan met GitHub, of plak een token, via Instellingen → Werkruimte → Profiel en identiteit → Codehosting
  • Je moet lid zijn met een schrijfrol (member, admin of owner) in de werkruimte die de repository koppelt

Alle anderen krijgen één beleefd antwoord dat uitlegt wat er ontbreekt — een onbekende login (niet gekoppeld, of gekoppeld maar hier geen lid) en een alleen-lezenrol zijn de twee gevallen — en hun woorden komen nooit de werkruimte binnen. Het label ai-review wordt niet zo tegengehouden: het heeft geen auteur, dus het start de review in de werkruimte die de repo al koppelt.

Onderdeel Gedrag
Bevestiging 👀 op een opmerking binnen ongeveer een minuut — het pollinterval. Het label ai-review heeft geen opmerking om op te reageren
Antwoorden Geplaatst als de bot (de app), op de plek waar de vraag is gesteld
Attributie in de ruimte De vraag is van jou; de agent draait namens jou, onder de autonomie-instellingen van de ruimte
Reviews Bevindingen belanden in de reviewruimte; publiceren naar GitHub is handmatig

De latentie van ongeveer een minuut is de prijs voor het feit dat er helemaal geen inkomende netwerktoegang nodig is. Niets aan de pollronde is dringend, en er gaat niets verloren terwijl de server offline is — een opmerking die tijdens downtime binnenkomt, wordt bij de volgende pollronde opgepikt.

Er gebeurt niets bij een opmerking die de bot vermeldt.

  • Is de app geïnstalleerd op het account dat eigenaar is van de repo, en is de repo gekoppeld aan een werkruimte? Een niet-gekoppelde repo wordt overgeslagen voordat er iets wordt vastgelegd, dus later koppelen levert alsnog
  • Is je GitHub-account gekoppeld, en ben je lid met een schrijfrol? Kijk op de PR naar het weigeringsantwoord van de bot — dat zegt welk geval het is
  • Nog steeds niets? Het serverlogboek noemt de pollronde en de PR wanneer er iets misgaat; zoek naar pr_conversation: (de poller) en github_pr_conversation: (de brug)

Het label start geen review.

Het vuurt één keer per PR. Als er al een review is gelopen, of het label is toegevoegd voordat de server de PR ooit zag (de eerste pollronde registreert de achterstand stil, in plaats van er een storm van te maken), vermeld dan in plaats daarvan de bot — @myapp review start er altijd een, tenzij er al een review onderweg is.

Het antwoord van de bot is nooit op GitHub aangekomen.

Het antwoord zelf gaat nooit verloren — het staat in de reviewruimte van de PR in Control Center. Een fout bij het plaatsen (GitHub plat, machtigingen gewijzigd) wordt gelogd en het antwoord wordt niet opnieuw geprobeerd; vraag het opnieuw in de thread als het belangrijk is.