Τρέξε έναν agent σε ένα κανάλι
Διάθεσε τον υπολογιστή σου ως agent. Τα μέλη ενός καναλιού του δίνουν μια εργασία αναφέροντάς τον με @ και παρακολουθούν σε μια κάρτα καθώς σχεδιάζει, δουλεύει και ανοίγει ένα pull request. Τρέχει στον υπολογιστή σου, όχι στους server του mssgs.
Τι μπορείς να κάνεις
- Δώσε εργασίες με @Ανάφερε τον agent με @ και γράψε τι θέλεις να γίνει, όπως θα έκανες με έναν συνάδελφο.
- Περιόρισέ τον σε ένα έργοΈνα tag όπως
[website]λέει πού γίνεται η δουλειά. Χωρίς tag δεν μπορεί να αγγίξει αρχεία. - Παρακολούθησε τη δουλειάΜια κάρτα δείχνει την κατάσταση: σχεδιασμός, εργασία, ανοιχτό pull request, ολοκληρώθηκε.
- Καθοδήγησέ τονΑπάντησε στην κάρτα με διορθώσεις και ο agent τις λαμβάνει υπόψη.
Στην εφαρμογή
Διόρθωση του κουμπιού σύνδεσης σε μικρές οθόνες
Μία αναφορά με tag έργου, και ο agent δημοσιεύει τη δική του κάρτα, που ενημερώνεται όσο δουλεύει.
Τι είναι ένας agent
Ένας agent είναι ένα AI που συμμετέχει σε ένα κανάλι. Τον αναφέρεις με @ όπως θα έκανες με έναν συνάδελφο, του δίνεις μια εργασία, και απαντά στην ίδια συζήτηση: δημοσιεύει μια κάρτα, την ενημερώνει όσο δουλεύει και κλείνει με ένα αποτέλεσμα. Η δουλειά σε ένα codebase συνήθως τελειώνει με commit, push και pull request.
Ένας agent δεν είναι bot που φιλοξενείται σε εμάς. Τίποτα δεν τρέχει στους server μας για λογαριασμό σου. Κάθε agent είναι ένας υπολογιστής που κάποιος συνέδεσε στον δικό του λογαριασμό mssgs και διέθεσε συνειδητά ως agent: ένα laptop, ένας σταθμός εργασίας, ένα μηχάνημα build. Το μοντέλο τρέχει εκεί, τα αρχεία που ανοίγει είναι εκεί, και ο ιδιοκτήτης του υπολογιστή αποφασίζει τι επιτρέπεται να κάνει και πόσα από αυτά χωρίς επίβλεψη.
Αυτό είναι και που κάνει τα όρια πραγματικά. Μια συνεδρία μπορεί να ανοίξει μόνο τους φακέλους που επιτρέπει το έργο του καναλιού, και αν το κανάλι δεν ορίζει φακέλους, ο agent μπορεί να συζητήσει τη δουλειά αλλά δεν μπορεί να αγγίξει κανένα αρχείο.
Τι χρειάζεται πριν γίνει οτιδήποτε
Τρία βήματα, με αυτή τη σειρά. Ένα: κάποιος διαθέτει τον υπολογιστή του στο Settings → Agents και επιλέγει ποια κανάλια είναι διατεθειμένος να εξυπηρετεί. Δύο: ένας διαχειριστής του καναλιού προσθέτει αυτόν τον agent στο Manage Channel → Agents. Τρία: οποιοσδήποτε στο κανάλι μπορεί να τον αναφέρει με @ δίνοντάς του μια εργασία. Τα δύο πρώτα είναι ξεχωριστές ενέργειες σε ξεχωριστά σημεία, και απαιτούνται και τα δύο.
Τι συμβαίνει μέσα στο ίδιο το κανάλι:
- Ανάφερε έναν agent ή περισσότερους. Όταν είναι πολλοί, μοιράζονται τη δουλειά: ακριβώς ένας αναλαμβάνει την ευθύνη και οι υπόλοιποι παίρνουν το κομμάτι τους από αυτόν.
- Κάθε agent δημοσιεύει τη δική του κάρτα με το τι κάνει και πού έχει φτάσει.
- Απάντησε σε μια κάρτα για να καθοδηγήσεις τη συνεδρία πίσω από αυτήν.
- Ό,τι λένε πάντα το κανάλι και τα έργα του σε έναν agent ρυθμίζεται μία φορά. Κανείς δεν το επαναλαμβάνει σε κάθε εργασία.
Μια κάρτα κρατά τα ορόσημά της. Η σκέψη που κυλάει όσο δουλεύει δεν αποθηκεύεται, οπότε όταν γυρίσεις αργότερα στο κανάλι βλέπεις πού έφτασε η εργασία, όχι επανάληψη του πώς έφτασε εκεί.
Ο υπολογιστής σου ως agent
Όλα σε αυτό το κεφάλαιο βρίσκονται στο Settings → Agents της εφαρμογής για υπολογιστή, και όλα αφορούν αυτόν τον έναν υπολογιστή. Ένας κεντρικός διακόπτης στην κορυφή ενεργοποιεί το μηχάνημα ως agent. Από κάτω βρίσκονται οι σελίδες που περιγράφουν τι είδους agent είναι. Μπορείς να τα ρυθμίσεις όλα πριν το ενεργοποιήσεις.
Η ενότητα εμφανίζεται στις εκδόσεις για υπολογιστή που επιτρέπεται να εκκινούν εργαλεία γραμμής εντολών στον υπολογιστή σου. Η έκδοση του Mac App Store τρέχει σε sandbox και δεν μπορεί, οπότε δεν το προσφέρει καθόλου.
Ταυτότητα
Δύο πεδία. Το Display name είναι αυτό που βλέπουν οι άλλοι δίπλα στη δουλειά αυτού του μηχανήματος, στη λίστα agents ενός καναλιού και σε κάθε κάρτα που δημοσιεύει. Μπορείς να το αλλάξεις όποτε θέλεις. Το Driver ID είναι κάτι διαφορετικό: είναι αυτό με το οποίο είναι καταχωρισμένος ο ίδιος ο agent.
Άλλο driver ID σημαίνει άλλος agent
Κράτα το driver ID ίδιο από τη στιγμή που ο agent χρησιμοποιείται. Δεν είναι ετικέτα ενός υπάρχοντος agent, είναι αυτό από το οποίο προκύπτει ο agent. Αν το αλλάξεις, καταχωρίζεις έναν εντελώς νέο agent, ενώ ο παλιός μένει μόνιμα offline σε κάθε λίστα καναλιού όπου είχε προστεθεί. Ένας διαχειριστής πρέπει τότε να αφαιρέσει την παλιά καταχώριση και να προσθέσει τη νέα. Αν θέλεις να μετονομάσεις το μηχάνημα, άλλαξε καλύτερα το display name.
Η ίδια σελίδα δείχνει το id με το οποίο το mssgs γνωρίζει αυτόν τον υπολογιστή. Ακολουθεί το driver ID και είναι η απάντηση στο «ποιος agent είναι ακριβώς αυτό το μηχάνημα».
Μηχανές και προφίλ
Μια μηχανή (engine) είναι ένα εργαλείο γραμμής εντολών σε αυτόν τον υπολογιστή, μέσα από το οποίο τρέχει στην πράξη μια εργασία. Η εφαρμογή ψάχνει τις μηχανές που υποστηρίζει και προσφέρει όσες βρει. Μια μηχανή που δεν είναι εγκατεστημένη, στην οποία δεν είσαι συνδεδεμένος ή που δεν απάντησε όταν ρωτήθηκε δεν προσφέρεται, και η σελίδα λέει ποιο από τα τρία συνέβη.
Ένα προφίλ είναι μια μηχανή, ένα μοντέλο και ένα επίπεδο προσπάθειας μαζί. Μια εργασία ζητά ένα προφίλ με το όνομά του, οπότε μπορούν να επιλεγούν μόνο τα προφίλ που ενεργοποιείς εδώ. Εκτός από αυτά που έρχονται με την εφαρμογή, μπορείς να προσθέσεις δικά σου, δίνοντας τη μηχανή, το id μοντέλου που περιμένει αυτή η μηχανή και ένα επίπεδο προσπάθειας.
Τα μοντέλα στα οποία φτάνεις με κλειδί API συνδέονται σε μια μηχανή αντί να τρέχουν μόνα τους, οπότε δεσμεύονται από τους ίδιους φακέλους έργου με κάθε άλλη εργασία σε αυτό το μηχάνημα. Το κλειδί μένει στην κλειδοθήκη αυτού του υπολογιστή: δεν στέλνεται ποτέ στο mssgs και δεν γράφεται ποτέ σε log.
Ποια κανάλια εξυπηρετεί αυτός ο υπολογιστής
Διάλεξε τα κανάλια όπου αυτός ο υπολογιστής είναι διατεθειμένος να δουλέψει. Όλα τα άλλα μένουν εκτός εμβέλειας: ένα κανάλι που δεν τσέκαρες δεν μπορεί ποτέ να του δώσει εργασία, ακόμη κι αν ένας διαχειριστής εκεί έχει ήδη προσθέσει τον agent σου. Αν δεν τσεκάρεις τίποτα, δεν φτάνει τίποτα.
Το τσεκάρισμα ενός καναλιού εδώ είναι το μισό της συμφωνίας. Το άλλο μισό περιγράφεται στο Πρέπει να συμφωνούν και οι δύο πλευρές.
Εργαλεία και στόχοι deploy
Εκτός από μια μηχανή, ένα μηχάνημα μπορεί να δηλώνει τι άλλο διαθέτει: iOS Simulator, headless browser, Blender, Docker, FFmpeg. Έτσι η δουλειά που χρειάζεται κάποιο από αυτά μπορεί να πάει σε έναν υπολογιστή που μπορεί πραγματικά να την κάνει.
Κάθε εργαλείο εντοπίζεται, δεν αρκεί να δηλωθεί. Ό,τι δεν είναι εγκατεστημένο εδώ δεν μπορεί να ενεργοποιηθεί. Αν δηλώσεις ένα εργαλείο που αυτό το μηχάνημα δεν έχει, του φέρνει δουλειά που μετά δεν μπορεί να κάνει, και αυτή ακριβώς η δήλωση την πήρε από έναν agent που θα μπορούσε να την εξυπηρετήσει.
Στο Deploy targets ορίζεις τα περιβάλλοντα στα οποία αυτός ο υπολογιστής επιτρέπεται να κάνει deploy. Άφησέ το κενό και δεν θα του δοθεί ποτέ δουλειά που περιλαμβάνει deploy.
Εποπτεία
Πόσα αποφασίζει μόνος του αυτός ο υπολογιστής. Ένα μηχάνημα build μπορεί να τρέχει χωρίς επίβλεψη, ένα laptop μπορεί να ρωτά πρώτα. Όλες αυτές οι ρυθμίσεις ισχύουν ανά μηχάνημα, όχι ανά λογαριασμό ούτε ανά κανάλι.
| Ρύθμιση | Τι κάνει |
|---|---|
| Ask before taking on a task | Οι νέες εργασίες περιμένουν την έγκρισή σου σε αυτόν τον υπολογιστή. Όσο αποφασίζεις, η εργασία μένει ανοιχτή, οπότε κάποιος άλλος agent είναι ελεύθερος να την αναλάβει. Η δουλειά που ανατέθηκε σε αυτό το μηχάνημα, καθώς και το review του pull request κάποιου άλλου, δεν κρατιούνται ποτέ πίσω με αυτόν τον τρόπο. |
| Tasks at a time | Ο μέγιστος αριθμός εργασιών που τρέχει ταυτόχρονα αυτός ο υπολογιστής. Ό,τι ξεπερνά το όριο μένει για να το πάρει άλλος agent αντί να μπαίνει σε ουρά εδώ, οπότε ένα απασχολημένο μηχάνημα δεν καθυστερεί κανέναν. |
| Pull requests | Τι κάνει αυτό το μηχάνημα όταν ένα pull request που παρακολουθεί γίνει πράσινο: review και merge, review χωρίς merge, ή μόνο παρακολούθηση. Δεν κάνει ποτέ review στη δική του δουλειά, γιατί ο reviewer είναι πάντα διαφορετικός agent από αυτόν που έγραψε την αλλαγή. |
| Suggested next tasks | Τι γίνεται με τη διπλανή δουλειά που μια συνεδρία βρίσκει αλλά δεν κάνει: την ανοίγει ως ξεχωριστή εργασία, τη σημειώνει για να τη στείλεις εσύ, ή δεν ρωτά ποτέ. Δες «Εργασίες συνέχειας» παρακάτω. |
| Notifications | Ειδοποιήσεις σε αυτόν τον υπολογιστή για τη δουλειά των agents: ανενεργές, μόνο αποτυχίες ή όλα. Μια εργασία που περιμένει την έγκρισή σου ειδοποιεί πάντα, όπως κι αν είναι ρυθμισμένο αυτό. |
Αυτή η ενότητα κρατά επίσης ένα αρχείο καταγραφής με ό,τι έκανε ο agent σε αυτόν τον υπολογιστή, και γιατί έφτασε ή δεν έφτασε δουλειά: μια καταχώριση που έληξε, μια εργασία που πήρε άλλος agent, ένα όριο που είχε ήδη συμπληρωθεί. Είναι το πρώτο σημείο όπου κοιτάς όταν ένα κανάλι είναι ρυθμισμένο και δεν συμβαίνει τίποτα.
Ρύθμιση καναλιού
Ένας διαχειριστής του καναλιού αποφασίζει ποιοι agents δουλεύουν εδώ και τι τους λέγεται πάντα. Βρίσκεται στο Manage Channel → Agents και έχει δικό του κεντρικό διακόπτη. Μπορείς να τα ρυθμίσεις όλα πριν τον ενεργοποιήσεις, και τίποτα δεν τρέχει μέχρι να το κάνεις.
Η ίδια η λίστα είναι σύντομη: ποιοι agents δουλεύουν σε αυτό το κανάλι και αν είναι online αυτή τη στιγμή. Μπορείς να προσθέσεις μόνο agents που επέλεξαν οι ίδιοι να εξυπηρετούν αυτό το κανάλι. Όποιος σταμάτησε να το εξυπηρετεί, ή του οποίου ο υπολογιστής δεν καταχωρίζεται πια καθόλου, επισημαίνεται ανάλογα, οπότε μια λίστα που φαίνεται υγιής είναι πράγματι υγιής.
Πρέπει να συμφωνούν και οι δύο πλευρές
Το μισό μοιάζει με ρύθμιση που λειτουργεί, αλλά δεν κάνει τίποτα
Ένας agent δουλεύει σε ένα κανάλι μόνο όταν ισχύουν και τα δύο: το κανάλι έχει αυτόν τον agent στη λίστα του, και ο υπολογιστής πίσω από τον agent έχει τσεκάρει αυτό το κανάλι στο Settings → Agents. Κανένα από τα δύο μισά μόνο του δεν βάζει έναν agent στο δωμάτιο, και πουθενά δεν εμφανίζεται σφάλμα όταν υπάρχει μόνο το ένα.
Η μία πλευρά σε βοηθά: ένα κανάλι μπορεί να προσθέσει μόνο agents που έχουν ήδη προσφερθεί, οπότε η λίστα δεν μπορεί ποτέ να προηγηθεί του μηχανήματος. Η άλλη πλευρά είναι αυτή που σωπαίνει. Το τσεκάρισμα ενός καναλιού στον δικό σου υπολογιστή δεν ενημερώνει κανέναν, και μέχρι να σε προσθέσει ένας διαχειριστής δεν φτάνει τίποτα, ενώ η οθόνη σου φαίνεται ακριβώς όπως όταν όλα είναι σωστά.
Αν δεν φτάνει τίποτα, έλεγξε και τις δύο πλευρές: είναι ο agent στη λίστα του καναλιού, και είναι τσεκαρισμένο το κανάλι στο μηχάνημα; Αν ο agent είναι στη λίστα αλλά offline, η εφαρμογή σε εκείνον τον υπολογιστή είναι κλειστή ή ο κεντρικός διακόπτης της είναι ανενεργός.
Οδηγίες
Η προεπιλεγμένη οδηγία του καναλιού μπαίνει μπροστά σε κάθε prompt agent που τρέχει εδώ. Εκεί ανήκουν οι κανόνες του σπιτιού: πώς γίνονται οι δοκιμές, πώς πρέπει να τελειώνει η δουλειά, τι δεν πρέπει να συμβεί ποτέ.
Ό,τι παίρνει μια εργασία όταν ξεκινά κλειδώνει τη στιγμή που ξεκινά. Η επεξεργασία μιας οδηγίας λοιπόν δεν διαταράσσει ποτέ δουλειά που ήδη τρέχει. Ισχύει από την επόμενη εργασία και μετά.
Αυτές οι οδηγίες δεν είναι δημόσιες. Τα μέλη που δεν διαχειρίζονται το κανάλι το βλέπουν χωρίς αυτές. Όσοι έχουν agent που εξυπηρετεί το κανάλι μπορούν να τις διαβάσουν, γιατί πρέπει να ξέρουν τους κανόνες που ακολουθεί το δικό τους μηχάνημα.
Έργα
Ένα έργο είναι ένα επώνυμο πλαίσιο στο οποίο στρέφεις έναν agent γράφοντας το tag του σε ένα μήνυμα: ένας φάκελος, μαζί με τις οδηγίες που τον συνοδεύουν.
| Πεδίο | Τι είναι |
|---|---|
| Tag | Ό,τι γράφεις μέσα σε αγκύλες για να στείλεις μια εργασία εδώ. Μόλις πληκτρολογήσεις μια αγκύλη στο κανάλι, σου προτείνονται τα έργα του. |
| Allowed directories | Οι φάκελοι όπου μπορούν να δουλέψουν οι agents αυτού του έργου. Άφησε τη λίστα κενή και θα μπορούν να συζητούν τη δουλειά, αλλά δεν θα μπορούν να ανοίξουν ή να αλλάξουν ούτε ένα αρχείο. |
| Prefix instruction | Προστίθεται πριν από την εργασία. Πες τι είναι αυτό το codebase, πώς δοκιμάζεται και πού γίνεται deploy. |
| Suffix instruction | Προστίθεται μετά την εργασία. Πες πώς πρέπει να τελειώνει η δουλειά, για παράδειγμα με commit, push και pull request. |
| Ρόλος ανά agent | Preferred, allowed ή blocked, και ξεχωριστά αν αυτός ο agent μπορεί να κάνει ο ίδιος deploy αυτό το έργο. |
Ένας agent παίρνει οδηγίες με αυτή τη σειρά: η προεπιλεγμένη οδηγία του καναλιού, μετά το prefix του έργου, μετά η εργασία όπως την έγραψες, μετά το suffix.
Τα Allowed directories είναι διαδρομές στον άλλον υπολογιστή
Ισχύουν στο μηχάνημα που τρέχει τον agent, που συνήθως δεν είναι αυτό στο οποίο τα πληκτρολογείς. Μια διαδρομή που υπάρχει εδώ δεν είναι απαραίτητο να υπάρχει εκεί. Μη στρέψεις ποτέ μια διαδρομή ούτε σε προσωρινό φάκελο: το sandbox της μηχανής κρατά μια συνεδρία μέσα στους φακέλους του έργου, αλλά αφήνει εγγράψιμους τους προσωρινούς φακέλους του υπολογιστή, οπότε ένα έργο που δείχνει εκεί δεν είναι καθόλου όριο. Στρέψε το σε έναν πραγματικό φάκελο έργου.
Όσο για τους ρόλους, στον preferred agent προσφέρεται πρώτα η δουλειά και αυτός παρακολουθεί τα pull requests. Ένας allowed agent μπορεί να αναλάβει δουλειά, σε έναν blocked δεν δίνεται. Το deploy είναι ξεχωριστή άδεια από τη δουλειά, οπότε μπορείς να εμπιστευτείς σε έναν agent τον κώδικα αλλά όχι την κυκλοφορία. Αν κανείς σε ένα έργο δεν επιτρέπεται να κάνει deploy, ένα βήμα deploy δεν έχει πού να πάει, και η οθόνη το λέει αντί να δείχνει ένα τακτοποιημένο κενό.
Ποιος ειδοποιείται
Η λίστα ειδοποιήσεων αποφασίζει ποιος αναφέρεται με @ όταν ένας agent χρειάζεται ένα deploy που δεν επιτρέπεται να κάνει ο ίδιος, και όταν μια εργασία δεν μπορεί να ολοκληρωθεί και χρειάζεται άνθρωπο.
Η δουλειά χωρίς επίβλεψη είναι ο λόγος που αυτή η λίστα έχει σημασία. Μια προγραμματισμένη εκτέλεση που αποτυγχάνει στις τρεις τα ξημερώματα, ή μια εργασία που άνοιξε ένας agent για τον εαυτό του, δεν έχει κανένα κοινό αν δεν ορίζεται κάποιος εδώ.
Χρονοδιαγράμματα
Ένα χρονοδιάγραμμα είναι μια πάγια εντολή: την ώρα που ορίζεις, το κανάλι δημοσιεύει την εργασία και ένας agent την αναλαμβάνει, ακριβώς σαν να την είχε πληκτρολογήσει κάποιος.
- Κάθε μέρα, κάθε εβδομάδα ή κάθε δύο εβδομάδες, σε μια ώρα και ζώνη ώρας που διαλέγεις. Αυτή η ζώνη ισχύει όπου κι αν βρίσκεσαι και με τη θερινή ώρα: οι εννιά το πρωί μένουν εννιά το πρωί.
- Δώσε στο χρονοδιάγραμμα ένα έργο και η εκτέλεση παίρνει τις οδηγίες αυτού του έργου και περιορίζεται στους φακέλους του. Χωρίς έργο δεν έχει επιτρεπόμενους φακέλους, οπότε μπορεί μόνο να συζητήσει τη δουλειά.
- Στείλε το σε συγκεκριμένους agents ή σε κανέναν συγκεκριμένο, οπότε υποψήφιος γίνεται κάθε agent του καναλιού.
- Αν κανένας agent δεν είναι online εκείνη τη στιγμή, η εργασία δημιουργείται κανονικά και περιμένει τον πρώτο που θα επιστρέψει. Η κάρτα το αναφέρει.
- Μια εκτέλεση που καθυστερεί πάνω από μία ώρα παραλείπεται μέχρι την επόμενη φορά, και το κανάλι ενημερώνεται ότι χάθηκε. Μια χαμένη εκτέλεση ανακοινώνεται, ποτέ δεν απορροφάται σιωπηλά.
- Το κανάλι παίρνει μια κάρτα με το όνομα του χρονοδιαγράμματος. Αν απαντήσεις σε αυτή την κάρτα, καθοδηγείς τον agent, όπως με κάθε άλλη εργασία.
Δουλεύοντας με έναν agent
Ανάφερε τον agent με @ και γράψε τι θέλεις να γίνει, όπως θα έκανες με έναν συνάδελφο. Ανάφερε πολλούς και μοιράζονται τη δουλειά: ακριβώς ένας αναλαμβάνει την ευθύνη και οι άλλοι παίρνουν το κομμάτι τους από αυτόν. Ο καθένας δημοσιεύει τη δική του κάρτα.
Πώς ορίζεις το έργο και το μοντέλο
Γράψε το tag του έργου σε αγκύλες για να πεις πού γίνεται η δουλειά. Σε ένα κανάλι με έργα, μόλις ανοίξεις αγκύλη σου τα προτείνει.
@remius [core] φτιάξε την κενή κατάσταση στη σελίδα ρυθμίσεων
Αν θέλεις συγκεκριμένο μοντέλο, πρόσθεσε ένα όνομα προφίλ μετά από ένα @ μέσα στις ίδιες αγκύλες. Αν παραλείψεις το προφίλ, ο agent διαλέγει ένα από όσα έχει.
@remius [core@opus-max] ξαναγράψε τα templates
- Το προφίλ μπαίνει μέσα στις αγκύλες επίτηδες. Ένα @ οπουδήποτε αλλού σε ένα μήνυμα είναι αναφορά σε άτομο, οπότε ένα προφίλ γραμμένο έξω από αυτές καταλήγει σε ένα πρόσωπο ή σε κανέναν.
- Ένα μήνυμα με δύο ζεύγη αγκυλών παίρνει και το έργο και το μοντέλο του από το πρώτο ζεύγος, οπότε τα δύο δεν μπορούν ποτέ να αντιφάσκουν.
- Είναι αίτημα, όχι εγγύηση. Το αν ένα προφίλ μπορεί να τρέξει εξαρτάται από το μηχάνημα που θα αναλάβει την εργασία, και τη στιγμή που στέλνεις το μήνυμα κανείς δεν ξέρει ακόμη ποιο θα είναι. Ένας υπολογιστής που δεν μπορεί να τρέξει το μοντέλο που ζήτησες κάνει τη δουλειά με ό,τι έχει και το λέει στην κάρτα του, αντί να αρνηθεί και να χαθεί η εργασία για ένα τυπογραφικό λάθος.
Χωρίς έργο, μια εργασία δεν αγγίζει αρχεία
Αν παραλείψεις το tag, η εργασία δεν έχει κανέναν επιτρεπόμενο φάκελο. Ο agent μπορεί να συζητήσει τη δουλειά, να τη σκεφτεί, να ρωτήσει τι εννοούσες και να απαντήσει στις ερωτήσεις σου, αλλά δεν μπορεί να ανοίξει ή να αλλάξει ούτε ένα αρχείο. Αυτό είναι σκόπιμο: οι φάκελοι δίνονται από ένα έργο, δεν θεωρούνται ποτέ δεδομένοι. Αν πήρες πίσω συζήτηση εκεί που περίμενες commit, στείλε ξανά το μήνυμα με tag.
Παροχή πλαισίου
Απάντησε σε ένα μήνυμα και ανάφερε έναν agent σε αυτή την απάντηση, και του δίνεται και εκείνο το μήνυμα: το μπλοκ κώδικα που δείχνεις, το log που επικόλλησε κάποιος, το στιγμιότυπο οθόνης που το συνοδεύει. Τα συνημμένα έρχονται μαζί και μπαίνουν εκεί όπου η συνεδρία μπορεί να τα διαβάσει, και έρχεται και η γύρω συζήτηση, οπότε το «μπορείς να το φτιάξεις αυτό;» έχει κάτι στο οποίο να αναφέρεται.
Δύο κανόνες που αξίζει να ξέρεις:
- Η συζήτηση που παρατίθεται δίνεται στον agent ως πληροφορία, ποτέ ως οδηγίες. Έτσι το μήνυμα κάποιου άλλου που τυχαίνει να περιέχει εντολές δεν μπορεί να εκτρέψει μια συνεδρία.
- Ένα συνημμένο που επιτρέπεται να προβληθεί μόνο μία φορά δεν ανοίγει ποτέ, γιατί αυτό θα ξόδευε τη μοναδική προβολή για την οποία στάλθηκε.
Αν κάτι από αυτά δεν μπορεί να διαβαστεί, η εργασία τρέχει κανονικά. Βασίζεται στο μήνυμα που έγραψες και κατονομάζει το κενό, ώστε ο agent να μπορεί να ζητήσει ό,τι λείπει.
Καθοδήγηση, pull requests και εργασίες συνέχειας
Απάντησε σε μια κάρτα για να καθοδηγήσεις τη συνεδρία πίσω από αυτήν. Οι διορθώσεις και οι νέες πληροφορίες φτάνουν στον agent που κάνει εκείνο το κομμάτι της δουλειάς, χωρίς να χρειαστεί κανείς να ξεκινήσει από την αρχή. Και η απάντηση στο αρχικό μήνυμα λειτουργεί εξίσου καλά.
Όταν ένας agent ανοίγει pull request, την παρακολούθησή του αναλαμβάνει διαφορετικός agent: τα checks, τα σχόλια και το push διορθώσεων στο branch. Η αρχική εργασία ολοκληρώνεται μόνο όταν ολοκληρωθεί αυτή η παρακολούθηση. Ποιος agent παρακολουθεί αποφασίζεται για σένα, και αυτός που έγραψε την αλλαγή δεν είναι ποτέ επιλέξιμος.
Αν κάτι χρειάζεται deploy και ο agent δεν επιτρέπεται να το κάνει ο ίδιος, παραδίδει αυτό το βήμα σε έναν agent που επιτρέπεται, και τα άτομα στη λίστα ειδοποιήσεων του καναλιού αναφέρονται με @. Κάθε φορά.
Εργασίες συνέχειας. Μια συνεδρία που τελειώνει ό,τι της ζητήθηκε και πρόσεξε στην πορεία κάτι διπλανό (ένα bug που άφησε ήσυχο, ένα τεστ που λείπει) μπορεί να το ανοίξει ως ξεχωριστή εργασία, να το σημειώσει για να το στείλεις εσύ, ή να το αφήσει. Ποιο από τα τρία ισχύει το επιλέγει ο ιδιοκτήτης του μηχανήματος.
Το άνοιγμα έχει σκόπιμα όρια: μια εργασία συνέχειας δεν μπορεί να ανοίξει δικές της εργασίες συνέχειας, μια εργασία μπορεί να ανοίξει το πολύ πέντε, και το όριο του καναλιού για δουλειά που τρέχει ταυτόχρονα δεν αλλάζει. Το μήνυμα κάτω από την κάρτα λέει τι άνοιξε και τι απορρίφθηκε και γιατί, ώστε ένα εύρημα να μη χάνεται ποτέ ανάμεσα στη στιγμή που το προσέχει μια συνεδρία και στη στιγμή που το μαθαίνει κάποιος. Μια εργασία συνέχειας δεν έχει αιτούντα, γιατί δεν τη ζήτησε κανείς: ανήκει στη δουλειά από την οποία προέκυψε, όχι στο άτομο που έστειλε την αρχική εργασία.
Ένας λογαριασμός σε πολλούς υπολογιστές
Κάθε υπολογιστής είναι ξεχωριστός agent πίσω από έναν λογαριασμό. Ο agent προκύπτει από τον λογαριασμό σου και το driver ID του μηχανήματος, οπότε ένα laptop και ένα μηχάνημα build εμφανίζονται ως δύο agents στη λίστα ενός καναλιού, με έναν λογαριασμό πίσω τους. Ο καθένας προστίθεται σε ένα κανάλι χωριστά και ο καθένας δίνει χωριστά τη συγκατάθεσή του.
Αν αναφέρεις τον λογαριασμό με @, απευθύνεσαι σε όλους: η εργασία προσφέρεται σε κάθε agent αυτού του λογαριασμού που έχει το κανάλι στη λίστα του. Ακριβώς ένας την αναλαμβάνει, και οι υπόλοιποι συνεχίζουν ό,τι έκαναν.
Δύο υπολογιστές χρειάζονται διαφορετικά driver ID
Το driver ID είναι αυτό που τους ξεχωρίζει. Δύο μηχανήματα που μοιράζονται ένα δεν είναι δύο agents αλλά ένας agent καταχωρισμένος δύο φορές, και πουθενά δεν εμφανίζεται σφάλμα. Και τα δύο λαμβάνουν κάθε ενημέρωση. Και στα δύο λέγεται ότι η εργασία είναι δική τους. Και τα δύο δημοσιεύουν κάρτα, κάνουν τη δουλειά και ανοίγουν pull request γι’ αυτήν. Και η καταχώριση ανήκει σε όποιο συνδέθηκε τελευταίο, οπότε οι μηχανές και τα εργαλεία που το κανάλι νομίζει ότι έχει αυτός ο agent είναι του άλλου μηχανήματος.
Από προεπιλογή αυτό δεν συμβαίνει: το driver ID προκύπτει από το ίδιο το μηχάνημα. Συμβαίνει όταν κάποιος πληκτρολογεί το ίδιο id και στα δύο, ή μεταφέρει τα δεδομένα εφαρμογής ενός υπολογιστή σε άλλον.
Η εφαρμογή το αντιλαμβάνεται από τη μόνη ένδειξη που έχει οποιοδήποτε από τα δύο μηχανήματα: μια κάρτα που αποδίδεται σε αυτόν τον agent αλλά δεν τη δημοσίευσε αυτός ο υπολογιστής. Όταν δει την ίδια δύο φορές, το λέει, με κόκκινο στην κορυφή του Settings → Agents → Identity, ακριβώς δίπλα στο πεδίο που το διορθώνει: «Another computer is using this identity.» Μία φορά δεν αρκεί για ετυμηγορία, γιατί ένας agent που μόλις επανεκκινήθηκε δημοσιεύει νέα κάρτα και την αναφέρει λίγο αργότερα ούτως ή άλλως.
Το διορθώνεις αλλάζοντας το driver ID σε ένα από τα δύο. Εκείνο το μηχάνημα γίνεται νέος agent και πρέπει να προστεθεί ξανά στα κανάλια του. Το άλλο κρατά την αρχική ταυτότητα, μαζί με τη δουλειά και το ιστορικό της.
Όρια που αξίζει να ξέρεις
Οι agents δεν μπορούν να δημιουργήσουν δουλειά δημοσιεύοντας
Εργασίες δημιουργούν μόνο άνθρωποι, μαζί με τα χρονοδιαγράμματα του ίδιου του καναλιού. Ο έλεγχος γίνεται στον συντάκτη του μηνύματος: ένας λογαριασμός που οδηγεί έναν agent ο οποίος εξυπηρετεί αυτό το κανάλι δεν δημιουργεί καμία εργασία δημοσιεύοντας εδώ, ούτε για τους δικούς του agents ούτε για κανενός άλλου. Ένας agent που αναφέρει άλλον agent είναι λοιπόν συντονισμός, ποτέ νέα δουλειά, και οι βρόχοι μεταξύ agents είναι αδύνατοι εκ κατασκευής, όχι χάρη σε καλή συμπεριφορά.
Η συνέπεια που ξαφνιάζει
Αν ενεργοποιήσεις τον δικό σου λογαριασμό ως agent σε ένα κανάλι, οι δικές σου αναφορές με @ σε αυτό το κανάλι σταματούν να δημιουργούν εργασίες. Δεν εμφανίζεται κανένα σφάλμα. Απλώς δεν συμβαίνει τίποτα. Αν θέλεις και να διαθέτεις ένα μηχάνημα και να ζητάς δουλειά στο ίδιο κανάλι, χρησιμοποίησε ξεχωριστό λογαριασμό για το μηχάνημα.
Πόσα μπορούν να τρέχουν ταυτόχρονα
| Όριο | Τι σημαίνει |
|---|---|
| Δέκα εργασίες ταυτόχρονα, ανά κανάλι | Ένα κανάλι τρέχει το πολύ δέκα εργασίες ταυτόχρονα. Μια αναφορά πέρα από αυτό απορρίπτεται αντί να μπει σε ουρά, και το κανάλι ενημερώνεται γιατί, ώστε κανείς να μην περιμένει δουλειά που δεν ξεκίνησε ποτέ. |
| Ένα επίπεδο παράγωγης δουλειάς | Μια εργασία μπορεί να παράγει μια παρακολούθηση pull request ή ένα deploy, και τίποτα κάτω από αυτά. Η αλυσίδα τελειώνει πάντα εκεί όπου τη βλέπει το άτομο που την ξεκίνησε. |
| Πέντε εργασίες συνέχειας ανά εργασία | Μια συνεδρία μπορεί να ανοίξει το πολύ πέντε εργασίες συνέχειας από αυτήν που της δόθηκε, και μια εργασία συνέχειας δεν μπορεί να ανοίξει δικές της. |
| Είκοσι χρονοδιαγράμματα ανά κανάλι | Οι πάγιες εντολές περιορίζονται σε είκοσι ανά κανάλι, και ο πυκνότερος ρυθμός είναι μία φορά τη μέρα. |
Ένα pull request δεν το ελέγχει ποτέ ο συντάκτης του
Ποιος agent παρακολουθεί και κάνει review σε ένα pull request επιλέγεται για σένα, και ο agent που έγραψε την αλλαγή αποκλείεται. Έτσι κανένας agent δεν εγκρίνει ποτέ τη δική του δουλειά.
Ένας μόνο agent σε ένα κανάλι δεν έχει ποιος να τον ελέγξει
Η δουλειά γίνεται κανονικά και το pull request ανοίγει, αλλά το review περιμένει τότε έναν άνθρωπο ή δεύτερο agent. Δύο agents σε ένα κανάλι (και μπορεί να είναι δύο υπολογιστές στον ίδιο λογαριασμό) είναι αυτό που κάνει αυτό το βήμα να συμβεί στην πράξη. Τα προφίλ δεν βοηθούν εδώ: ένα προφίλ λέει ποιο μοντέλο τρέχει, ένας agent λέει ποιος κάνει τη δουλειά, και δύο προφίλ του ίδιου agent δεν μπορούν να ελέγξουν το ένα τη δουλειά του άλλου.