Μετάβαση στο περιεχόμενο

Συνομιλία με το Control Center από GitHub PR

Αυτός ο οδηγός δείχνει πώς να δουλέψετε με το Control Center χωρίς να φύγετε από το GitHub: να ζητήσετε έλεγχο με AI από τη σελίδα του PR, να κάνετε μια ερώτηση στο bot μέσα σε ένα σχόλιο και να συνεχίσετε τη συνομιλία στα νήματα ελέγχου του.

Το bot είναι η GitHub App του ίδιου του διακομιστή σας — αυτή που συνδέει ήδη τα άτομα και εκτελεί εργασίες στο παρασκήνιο. Δεν καταχωρίζεται τίποτα νέο και τίποτα δεν χρειάζεται να είναι προσβάσιμο από το διαδίκτυο: ο διακομιστής ανακαλύπτει όσα λέγονται στο GitHub με περιοδική σάρωση, οπότε ένας φορητός υπολογιστής πίσω από NAT συμπεριφέρεται ακριβώς όπως μια δημόσια ανάπτυξη.

  • Ο διακομιστής έχει τη GitHub App του καταχωρισμένη και εγκατεστημένη, με Pull requests: read and write (για σχόλια, νήματα και αντιδράσεις) και Issues: read (για την αναζήτηση σχολίων). Και τα δύο υπάρχουν ήδη στη λίστα δικαιωμάτων εκείνου του οδηγού
  • Το αποθετήριο είναι συνδεδεμένο με έναν χώρο εργασίας στο Control Center
  • Χωρίς URL webhook, χωρίς σήραγγα, χωρίς callback — δεν υπάρχει τίποτα να ρυθμίσετε στο δίκτυο

Το όνομα σύνδεσης του bot είναι <appslug>[bot], όπου appslug είναι το όνομα που δώσατε στην εφαρμογή όταν την καταχωρίσατε.

  1. Μεταβείτε στις Ρυθμίσεις → Διακομιστής → Ενιαία σύνδεση και κάντε κύλιση στην κάρτα Εφαρμογές παρόχων
  2. Ανοίξτε το τμήμα GitHub και κάντε κλικ στο Δοκιμή
  3. Αντιγράψτε την τιμή του πεδίου Σύνδεση bot όταν συμπληρωθεί. Αν εξακολουθεί να εμφανίζει την κενή υπόδειξη, το όνομα σύνδεσης είναι πάντα <appslug>[bot] — πληκτρολογήστε το, ή το σύντομο @appslug

Το GitHub δεν προσφέρει λογαριασμούς εφαρμογών στην αυτόματη συμπλήρωση του @, οπότε το όνομα σύνδεσης πρέπει να πληκτρολογηθεί — γι’ αυτό η κάρτα ρυθμίσεων το κάνει αντιγραφή με ένα κλικ. Η κατάληξη [bot] είναι προαιρετική: τόσο το @myapp όσο και το @myapp[bot] απευθύνονται στο bot.

Δύο τρόποι, που ξεκινούν και οι δύο το ίδιο ενσωματωμένο pipeline pr_review που ξεκινά το κουμπί Ερώτηση AI:

  • Προσθέστε την ετικέτα ai-review στο PR. Αυτό είναι το κοντινότερο που προσφέρει το GitHub στην ανάθεση του bot ως ελεγκτή — οι λογαριασμοί εφαρμογών δεν μπορούν να καταλάβουν την εγγενή θέση του ζητούμενου ελεγκτή. Δεν υπάρχει σχόλιο για αντίδραση, οπότε δεν αναρτάται τίποτα στο GitHub· ο έλεγχος ξεκινά στο Control Center
  • Σχολιάστε @myapp review (ή απλώς @myapp) στη συνομιλία του PR. Το bot αντιδρά με 👀 και μετά απαντά όταν ξεκινήσει ο έλεγχος (ή ότι ένας εκτελείται ήδη)

Οι ελεγκτές εργάζονται στον χώρο ελέγχου του PR· διαβάστε και δημοσιεύστε τα ευρήματα όπως στη Χρήση ελέγχου με AI. Η δημοσίευση πίσω στο GitHub παραμένει απόφαση που παίρνετε στο Control Center — η έναρξη ενός ελέγχου από το GitHub δεν δημοσιεύει από μόνη της τίποτα στο GitHub.

Η ετικέτα ενεργοποιείται μία φορά ανά PR: η προσθήκη της είναι το αίτημα και δεν επανενεργοποιείται όταν αφαιρεθεί και προστεθεί ξανά. Για να εκτελέσετε ξανά έναν έλεγχο — μετά από ένα push, ας πούμε — κάντε @-αναφορά στο bot.

Σχολιάστε στη συνομιλία του PR:

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

Τι συμβαίνει, με τη σειρά:

  1. Το bot αντιδρά με 👀, ώστε να ξέρετε ότι το σχόλιο ειδώθηκε
  2. Η ερώτηση αναρτάται στον χώρο ελέγχου του PR ως εσείς — ίδια απόδοση όπως αν την είχατε πληκτρολογήσει στο Control Center
  3. Ένας πράκτορας απαντά στον χώρο και η απάντηση αναρτάται πίσω στο PR ως σχόλιο που σας κάνει @-αναφορά

Μια ερώτηση σε PR χωρίς έλεγχο ακόμη ξυπνά τον πράκτορα CEO του χώρου εργασίας· μόλις εκτελεστεί ένας έλεγχος, απαντά ο πράκτορας που μίλησε τελευταίος, ώστε οι συνέχειες να καταλήγουν σε όποιον έχει το πλαίσιο.

Απαντήστε μέσα σε ένα ενσωματωμένο νήμα ελέγχου στο οποίο συμμετέχει το bot — ένα σχόλιο σε diff που άφησε, ή μια απάντηση που ανήρτησε σε εκείνο το νήμα. Δεν χρειάζεται @-αναφορά· το νήμα είναι η απεύθυνση:

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

Οι πολλαπλές στροφές λειτουργούν με τον ίδιο τρόπο: κάθε απάντηση είναι άλλη μια ερώτηση στην ίδια συνομιλία, με τον χώρο ελέγχου ως πλαίσιο, και η απάντηση επιστρέφει στο νήμα.

Μια συνέχεια στο χρονολόγιο της συνομιλίας του PR είναι νέο σχόλιο στο ανώτατο επίπεδο, οπότε εξακολουθεί να χρειάζεται @-αναφορά.

Ένα σχόλιο στο GitHub φτάνει με λίγο περισσότερο από ένα όνομα σύνδεσης, οπότε το bot αντιστοιχίζει τον συντάκτη πριν κάνει οτιδήποτε:

  • Ο λογαριασμός σας στο GitHub πρέπει να είναι συνδεδεμένος με την ταυτότητά σας στο Control Center — συνδεθείτε με το GitHub, ή επικολλήστε ένα token, από τις Ρυθμίσεις → Χώρος εργασίας → Προφίλ και ταυτότητα → Φιλοξενία κώδικα
  • Πρέπει να είστε μέλος με ρόλο εγγραφής (member, admin ή owner) στον χώρο εργασίας που συνδέει το αποθετήριο

Οποιοσδήποτε άλλος λαμβάνει μία ευγενική απάντηση που εξηγεί τι λείπει — ένα άγνωστο όνομα σύνδεσης (χωρίς σύνδεση, ή συνδεδεμένο αλλά όχι μέλος εδώ) και ένας ρόλος μόνο για ανάγνωση είναι οι δύο περιπτώσεις — και τα λόγια του δεν μπαίνουν ποτέ στον χώρο εργασίας. Η ετικέτα ai-review δεν περνά από τέτοια πύλη: δεν έχει συντάκτη, οπότε ξεκινά τον έλεγχο στον χώρο εργασίας που έχει ήδη συνδεδεμένο το αποθετήριο.

Θέμα Συμπεριφορά
Επιβεβαίωση 👀 σε ένα σχόλιο μέσα σε περίπου ένα λεπτό — το διάστημα σάρωσης. Η ετικέτα ai-review δεν έχει σχόλιο για αντίδραση
Απαντήσεις Αναρτώνται ως το bot (η εφαρμογή), στη λωρίδα όπου τέθηκε η ερώτηση
Απόδοση εντός χώρου Η ερώτηση είναι δική σας· ο πράκτορας εκτελείται για λογαριασμό σας, με τις ρυθμίσεις αυτονομίας του χώρου
Έλεγχοι Τα ευρήματα προσγειώνονται στον χώρο ελέγχου· η δημοσίευση στο GitHub είναι χειροκίνητη

Η καθυστέρηση του περίπου ενός λεπτού είναι το τίμημα για να μη χρειάζεται καθόλου εισερχόμενη πρόσβαση δικτύου. Τίποτα στη σάρωση δεν είναι επείγον και τίποτα δεν χάνεται όσο ο διακομιστής είναι εκτός λειτουργίας — ένα σχόλιο που φτάνει κατά τη διάρκεια της διακοπής πιάνεται στην επόμενη σάρωση.

Δεν συμβαίνει τίποτα για ένα σχόλιο που κάνει @-αναφορά στο bot.

  • Είναι η εφαρμογή εγκατεστημένη στον λογαριασμό που κατέχει το αποθετήριο και το αποθετήριο συνδεδεμένο με χώρο εργασίας; Ένα μη συνδεδεμένο αποθετήριο παραλείπεται πριν καταγραφεί οτιδήποτε, οπότε η σύνδεσή του αργότερα παραδίδει ακόμη
  • Είναι συνδεδεμένος ο λογαριασμός σας στο GitHub και είστε μέλος με ρόλο εγγραφής; Ελέγξτε το PR για την απάντηση άρνησης του bot — λέει ποιο από τα δύο ισχύει
  • Τίποτα ακόμη; Το αρχείο καταγραφής του διακομιστή αναφέρει τη σάρωση και το PR όταν κάτι αποτυγχάνει· αναζητήστε τα pr_conversation: (η περιοδική σάρωση) και github_pr_conversation: (η γέφυρα)

Η ετικέτα δεν ξεκινά έλεγχο.

Ενεργοποιείται μία φορά ανά PR. Αν έχει ήδη εκτελεστεί έλεγχος, ή η ετικέτα προστέθηκε πριν ο διακομιστής δει ποτέ το PR (η πρώτη σάρωση καταγράφει σιωπηλά ό,τι εκκρεμεί αντί να το πλημμυρίσει), κάντε @-αναφορά στο bot — το @myapp review ξεκινά πάντα έναν, εκτός αν υπάρχει ήδη έλεγχος σε εξέλιξη.

Η απάντηση του bot δεν έφτασε ποτέ στο GitHub.

Η ίδια η απάντηση δεν χάνεται ποτέ — βρίσκεται στον χώρο ελέγχου του PR στο Control Center. Μια αποτυχία ανάρτησης (το GitHub έπεσε, άλλαξαν τα δικαιώματα) καταγράφεται και η απάντηση δεν επαναλαμβάνεται· ρωτήστε ξανά στο νήμα αν έχει σημασία.