Κύκλος ζωής αποστολής πράκτορα
Τι είναι μια αποστολή
Ενότητα με τίτλο «Τι είναι μια αποστολή»Μια αποστολή είναι μία εκτέλεση ενός πράκτορα, σε μία συνομιλία, σε έναν προσαρμογέα. Όλα όσα την αφορούν συμβαίνουν στο cc_server: ο πελάτης στέλνει ένα μήνυμα και μετά παρακολουθεί τα συμβάντα να έρχονται σε ροή. Δεν υπάρχει διαδρομή αποστολής σε κανέναν πελάτη.
Οι πράκτορες ξυπνούν για έξι λόγους, τους οποίους η εκτέλεση μεταφέρει ως πλαίσιο αφύπνισης ώστε ο πράκτορας να ξέρει γιατί είναι ξύπνιος:
| Λόγος αφύπνισης | Ενεργοποίηση |
|---|---|
userMessage |
Κάποιος έστειλε μήνυμα σε έναν χώρο ή ανέφερε τον πράκτορα |
assignment |
Ανατέθηκε ένα εισιτήριο στον πράκτορα |
pipelineStep |
Την απέστειλε ένα βήμα pipeline |
childCompleted |
Ολοκληρώθηκε ένα θυγατρικό εισιτήριο |
followUp |
Ένας προγραμματισμένος παλμός παρακολούθησης |
recovery |
Η διαδρομή ανάκτησης την απέστειλε ξανά μετά από μια αποτυχία |
Το πλαίσιο αφύπνισης μεταφέρει τα αναγνωριστικά που συνοδεύουν τον λόγο — εισιτήριο, χώρος, μήνυμα, εκτέλεση pipeline — και αυτά εγχέονται στο περιβάλλον και την προτροπή του πράκτορα.
Συναρμολόγηση της προτροπής
Ενότητα με τίτλο «Συναρμολόγηση της προτροπής»Η προτροπή χτίζεται σε επίπεδα, καθένα από τα οποία είναι μια ενότητα με ετικέτα:
- Ταυτότητα — το δικό του αναγνωριστικό του πράκτορα, το όνομα και το αναγνωριστικό του χώρου εργασίας, με ρητή οδηγία να περνά αυτά τα ακριβή UUID σε εργαλεία με εμβέλεια χώρου εργασίας. Ο χώρος εργασίας είναι εγγενής στον πράκτορα, οπότε είναι πάντα παρών.
- Κατάλογος εργαλείων και πρωτόκολλα πόρων, έπειτα η διάταξη του χώρου εργασίας.
- Παράκαμψη της προτροπής συστήματος, αν ο πράκτορας έχει μία, έπειτα περσόνα (παραμετροποιημένη κατά ρόλο) και το ενημερωτικό της ομάδας.
- Δεξιότητες — τα ονόματα πάνω στον πράκτορα.
- Σύμβαση εκτέλεσης και διαδικασία για την τρέχουσα λειτουργία.
- Πλαίσιο αφύπνισης και πλαίσιο αναφοράς: ποιος κάλεσε τον πράκτορα και ο κατάλογος γύρω του.
- Μπλοκ λειτουργίας — παραγόμενο από το προφίλ δυνατοτήτων της λειτουργίας και την υλοποιημένη λίστα εργαλείων της, οπότε μια προτροπή δεν μπορεί ποτέ να ονομάσει ένα εργαλείο που η εκτέλεση δεν έχει στην πραγματικότητα.
- Πλαίσιο μνήμης — γεγονότα που ανακτώνται για την εργασία.
- Πλαίσιο συνομιλίας — πρόσφατο ιστορικό του χώρου, με όριο τις 50.000 χαρακτήρες αυτούσιου παραθύρου ανεξάρτητα από το διαμορφωμένο μέγεθος πλαισίου του πράκτορα. Το παλαιότερο ιστορικό δεν κόβεται: ο πράκτορας το ανακτά κατά απαίτηση με το
get_messagesκαι παλαιότερα σημασιολογικά συναφή μηνύματα εξακολουθούν να εμφανίζονται.
Οι εντολές μοιράζονται σε δύο σημεία. Οι /todo και /compact αναχαιτίζονται στο πεδίο σύνταξης και σκόπιμα δεν αποθηκεύονται ποτέ ως μηνύματα ούτε στέλνονται στον πράκτορα — η αποθήκευση του /compact θα μετακινούσε το σημείο συμπύκνωσης μια στροφή πίσω και θα λέρωσε τη μεταγραφή. Η /plan αντιμετωπίζεται και στα δύο: το πεδίο σύνταξης αλλάζει τη λειτουργία του χώρου, και αυτό είναι που κάνει την επιφάνεια εργαλείων, το προεπιλεγμένο σύνολο περιορισμών και την προτροπή να συμφωνούν για αυτή τη στροφή και για κάθε επόμενη. Οι /goal, /loop και /skill:<name> αντιμετωπίζονται μέσα στην ίδια την εκτέλεση και μόνο στον ενσωματωμένο μηχανισμό — οι /goal και /loop ξεκινούν αυτόνομη εργασία με προϋπολογισμό κόστους, και ένα όνομα με πρόθεμα skill: αναζητάται ως δεξιότητα της οποίας το σώμα του SKILL.md γίνεται η οδηγία της στροφής. Ο χώρος ονομάτων είναι αυτό που κρατά τα δύο λεξιλόγια χωριστά: η αντιστοίχιση ενός γυμνού ονόματος σε δεξιότητες σήμαινε ότι μια δεξιότητα με το όνομα plan ή compact σκιαζόταν μόνιμα από την ενσωματωμένη. Ένα γυμνό μη ενσωματωμένο όνομα εξακολουθεί να αντιστοιχίζεται, για μηνύματα που γράφτηκαν πριν υπάρξει ο χώρος ονομάτων. Ένα μη αναγνωρισμένο όνομα απλώς περνά ως απλό κείμενο.
Παροχή worktree
Ενότητα με τίτλο «Παροχή worktree»Πριν εκτελεστεί οτιδήποτε, η συνομιλία αποκτά τη δική της ρίζα εργασίας, με ένα απομονωμένο worktree copy-on-write ανά αποθετήριο από κάτω της. Από προεπιλογή αυτό είναι κάθε αποθετήριο συνδεδεμένο με τον χώρο εργασίας· ένας χώρος PR — ή ένας χώρος που δημιουργήθηκε με ρητή επιλογή — παρέχει μόνο όσα περιλαμβάνονται στη λίστα επιτρεπόμενων, και μια συνομιλία ελέγχου PR καρφιτσώνει το ένα της αποθετήριο στο head ref του pull request, ενώ τα άλλα μένουν στον προεπιλεγμένο κλάδο τους. Το αρχικό checkout δεν μεταβάλλεται ποτέ και ολόκληρος ο κατάλογος της συνομιλίας ελευθερώνεται όταν διαγραφεί ο χώρος.
Το copy-on-write είναι η μόνη υλοποίηση όπου διατίθεται το rift, με υποστήριξη από το ενσωματωμένο native. Ένα σύστημα αρχείων που δεν μπορεί να κάνει reflink — ή ένας κατάλογος δεδομένων σε διαφορετικό τόμο από το αποθετήριο — αποτυγχάνει την παροχή αντί να καταφύγει σε εφεδρική λύση. Το git worktree είναι το backend στα Windows, όπου δεν υπάρχει backend copy-on-write για να χτιστεί, και δεν αποτελεί σιωπηλή υποβάθμιση σε άλλους κεντρικούς υπολογιστές. Ένα rift που λείπει σε μια πλατφόρμα όπου διατίθεται σημαίνει σπασμένη εγκατάσταση — ο διακομιστής αρνείται να εκκινήσει αντί να καταφύγει αθόρυβα σε εφεδρική λύση, γιατί μια σιωπηλή εφεδρική λύση κρύβει τη βλάβη πίσω από μια πιο αργή διαδρομή για πάντα.
Ταυτότητα και διαπιστευτήρια
Ενότητα με τίτλο «Ταυτότητα και διαπιστευτήρια»Δύο ταυτότητες επιλύονται ανά εκτέλεση, πριν εκκινήσει οποιαδήποτε διεργασία.
Πατρότητα Git. Οι commits που κάνει ένας πράκτορας έχουν πατρότητα ως ο πράκτορας — <Name> (agent) <agentId@agents.control-center.local> και στα GIT_AUTHOR_* και στα GIT_COMMITTER_* — ποτέ υποδυόμενος άνθρωπο. Το τοπικό τμήμα είναι το UUID του πράκτορα, όχι το slug του ονόματός του. Ο άνθρωπος που ζήτησε πιστώνεται με ένα trailer Co-Authored-By:, που μεταφέρεται στο περιβάλλον και οδηγείται στην προτροπή συστήματος. Μια ρητή ταυτότητα που ορίζει ο καλών κερδίζει πάντα και τις δύο.
Ταυτότητα forge. Το διαπιστευτήριο GitHub της εκτέλεσης είναι πάντα μόνο του μεσίτη — ένα token εγκατάστασης App με εμβέλεια αποθετηρίου, ή η εφεδρική λύση του PAT από το περιβάλλον — ποτέ το αποθηκευμένο token του ίδιου του μέλους που το ζήτησε. Το actingUserId οριοθετεί την εφεδρική λύση PAT ώστε ένα μέλος που δεν είναι ιδιοκτήτης του διακομιστή να μην κληρονομεί την εμβέλεια του διακομιστή· δεν επικαλύπτει το περιβάλλον του πράκτορα με προσωπικό token.
Τα διαπιστευτήρια του παρόχου μοντέλων επιλύονται με σταθερή σειρά και η σειρά έχει σημασία:
- μια παράκαμψη περιβάλλοντος ανά προσαρμογέα,
- το περιβάλλον του καλούντος,
- η αποθήκη διαπιστευτηρίων του διακομιστή (ανανεώνοντας ένα token OAuth αν είναι κοντά στη λήξη),
- το περιβάλλον της διεργασίας.
Επειδή η παράκαμψη ανά προσαρμογέα έρχεται πρώτη, νικά σιωπηλά έναν λογαριασμό παρόχου που έχει συνδεθεί στην εφαρμογή. Αν μια εκτέλεση χρεώνει λάθος λογαριασμό, αυτή η παράκαμψη είναι το πρώτο σημείο που θα κοιτάξετε. Τα διαπιστευτήρια του παρόχου είναι καθολικά για τον κεντρικό υπολογιστή — κοινά σε κάθε χώρο εργασίας της εγκατάστασης.
Το token του GitHub της εκτέλεσης προέρχεται από τον μεσίτη διαπιστευτηρίων: ένα token μόνο για ανάγνωση, με εμβέλεια το αποθετήριο του worktree. Ένα push περνά από την πύλη εκτελέσεων πρακτόρων, η οποία ρωτά τον κανόνα Push σε απομακρυσμένο πριν το προωθήσει, και δεν εγχέεται κανένα κλειδί εισιτηρίων. Δείτε το Sandbox και ασφάλεια.
Εκκίνηση
Ενότητα με τίτλο «Εκκίνηση»Η εκτέλεση ξεκινά με το worktree της ως κατάλογο εργασίας και — για το Claude Code — μια παραγόμενη διαμόρφωση MCP ώστε ο πράκτορας να μπορεί να φτάσει στην επιφάνεια εργαλείων του Control Center. Οι ACP και το bash του μηχανισμού παίρνουν απολυμασμένο περιβάλλον· το Claude Code μέσω NoSandboxAdapter κληρονομεί το περιβάλλον του κεντρικού υπολογιστή.
Μετάδοση σε ροή
Ενότητα με τίτλο «Μετάδοση σε ροή»Η εκτέλεση μεταδίδει σε ροή μια τυποποιημένη ακολουθία συμβάντων πίσω, την οποία ο επεξεργαστής ροής αποθηκεύει ως δέλτα μηνυμάτων, τη διπλώνει σε τμήματα μεταγραφής και τη μετατρέπει σε συμβάντα μηνυμάτων:
| Συμβάν | Τι μεταφέρει |
|---|---|
thinking |
Έξοδος συλλογισμού, που αποδίδεται ενσωματωμένα |
text |
Ορατή έξοδος |
toolCall |
Μια κλήση εργαλείου, με το αναγνωριστικό της και δομημένα ορίσματα |
toolResult |
Το αντίστοιχο αποτέλεσμα, σημασμένο όταν είχε σφάλμα ή είναι μερική ροή |
usage |
Πλήθη tokens και κόστος για ένα παράθυρο μέτρησης |
error |
Ένα σφάλμα, με τον δομημένο κωδικό του προσαρμογέα όταν τον ανέφερε |
sandboxViolation |
Το λειτουργικό σύστημα αρνήθηκε μια κλήση συστήματος. Εκπέμπεται μόνο όπου ένα sandbox τυλίγει πραγματικά τη διεργασία — δείτε τη σημείωση παραπάνω |
debug |
Διαγνωστικά χρόνου εκτέλεσης (δείκτες εκκίνησης, αποφάσεις περιορισμών, παροτρύνσεις της σύμβασης) |
done |
Η εκτέλεση ολοκληρώθηκε |
Τι οριοθετεί μια εκτέλεση
Ενότητα με τίτλο «Τι οριοθετεί μια εκτέλεση»Σκόπιμα δεν υπάρχει ανώτατο όριο στροφών πουθενά. Ένας σκληρός αριθμός επαναλήψεων σκοτώνει νόμιμη μακρά εργασία (μεταναστεύσεις, καθαρισμό fan-out) και δεν πιάνει τίποτα που οι παρακάτω φρουροί πιάνουν νωρίτερα. Μια εκτέλεση τελειώνει όταν:
- το μοντέλο σταματήσει μόνο του·
- ένας άνθρωπος τη σταματήσει, ή αναλάβει τη συνομιλία (πράγμα που παγώνει τον ενσωματωμένο μηχανισμό στο επόμενο καθαρό όριο στροφής — μια εκτέλεση Claude Code, που δεν έχει ασφαλές όριο, σταματιέται αντ’ αυτού)·
- ενεργοποιηθεί ο φύλακας σιωπής. Καμία έξοδος για το κατώφλι και η συνεδρία τερματίζεται με αποτυχία
silentRun. Η προεπιλογή είναι 15 λεπτά, πέφτοντας στα 10 στις λειτουργίες κυρίως ανάγνωσης (ανασκόπηση και σχέδιο)· ένας πράκτορας μπορεί να την παρακάμψει μεταξύ 1 και 240 λεπτών. Ο φύλακας οπλίζεται όταν μια θυγατρική διεργασία αναφέρει το PID της, οπότε καλύπτει το CLI του Claude Code — όχι τον ενσωματωμένο μηχανισμό, που δεν εκκινεί τίποτα· - δαγκώσει ένα ανώτατο όριο κόστους — αλλά μόνο για αυτόνομες εντολές.
Ο φρουρός του μοιραίου βρόχου δεν είναι τερματιστής: τρεις πανομοιότυπες κλήσεις εργαλείου στη σειρά και ο βρόχος καθοδηγεί τον πράκτορα να αλλάξει προσέγγιση.
Συνδυαστικά, μια συνηθισμένη διαδραστική στροφή στον ενσωματωμένο μηχανισμό δεν έχει ανώτατο όριο στροφών, ούτε ανώτατο όριο κόστους, ούτε φύλακα σιωπής. Τελειώνει όταν σταματήσει το μοντέλο ή όταν τη σταματήσετε εσείς. Αυτό είναι σκόπιμο αντάλλαγμα — οι εναλλακτικές σκοτώνουν όλες νόμιμη μακρά εργασία — αλλά σημαίνει ότι μια διαδραστική εκτέλεση χωρίς επίβλεψη δεν οριοθετείται από τίποτα άλλο πέρα από την κρίση του ίδιου του μοντέλου.
Στα μισά της εκτέλεσης, ένα μήνυμα που στέλνεται σε έναν ενεργό πράκτορα μπαίνει σε ουρά ως καθοδήγηση και αδειάζεται στο επόμενο όριο στροφής, ώστε να μπορείτε να σπρώξετε μια εκτέλεση χωρίς να τη σκοτώσετε. Η καθοδήγηση, η παύση, οι υποπράκτορες και η σύμβαση ολοκλήρωσης είναι λειτουργίες του ενσωματωμένου μηχανισμού· το Claude Code δεν έχει καμία από αυτές.
Πώς καταγράφεται μια εκτέλεση
Ενότητα με τίτλο «Πώς καταγράφεται μια εκτέλεση»Κάθε αποστολή γράφει ένα AgentRunLog: ώρα έναρξης και λήξης, σύνοψη, πλήθη tokens και εκτιμώμενο κόστος (συμπεριλαμβανομένου του κόστους που συγκεντρώνεται από υποπράκτορες), προσαρμογέα και μοντέλο, αναγνωριστικό διεργασίας και διαδρομή καταγραφής, τη συνομιλία και οποιοδήποτε εισιτήριο ή εκτέλεση pipeline στην οποία ανήκει, συν δύο πεδία ταξινόμησης που κουβαλούν το μεγαλύτερο μέρος της αλήθειας.
- Κατάσταση είναι χονδρική:
pending,running,completed,error. - Ζωτικότητα είναι η λεπτομερέστερη ανάγνωση:
alive,productive,completed,blocked,empty,looping,failed,stalled,dead. - Οικογένεια σφαλμάτων ομαδοποιεί χρήσιμα τις αποτυχίες:
transientUpstream,sandboxInfrastructure,budgetExceeded,processLost,silentRun,unknown.
Το κλείσιμο της εκτέλεσης δημοσιεύει το AgentRunCompleted και πολλά κρέμονται από αυτό: η συγκέντρωση κόστους pipeline, η συνέχιση ενός βήματος pipeline που περίμενε την εκτέλεση, η ολοκλήρωση του εισιτηρίου που τη στηρίζει, η αντιστοίχιση μιας ενορχήστρωσης σε τελική κατάσταση, η απόφαση συνέχειας ή σταματήματος του επόπτη στόχου, ο ρόλος του ελεγκτή και η αξιολόγηση του προϋπολογισμού μετά την εκτέλεση. Ο κατάλογος παρουσίας ακολουθεί ξεχωριστά, παρακολουθώντας τα πρόσφατα αρχεία καταγραφής εκτέλεσης αντί για το συμβάν. Η ειδοποίηση «Ο πράκτορας ολοκλήρωσε» δεν είναι σε αυτή τη λίστα: το συμβάν ενεργοποιείται όταν τελειώνει η ροή της διεργασίας, πριν γραφτεί η απάντηση, οπότε η ειδοποίηση είναι το MessageReceived της στροφής, που δημοσιεύεται μόλις αποθηκευτεί το μήνυμα.
Προϋπολογισμοί, εκ των υστέρων
Ενότητα με τίτλο «Προϋπολογισμοί, εκ των υστέρων»Η επιβολή του προϋπολογισμού είναι αντίδραση, όχι πύλη. Όταν μια εκτέλεση ολοκληρώνεται, ο αξιολογητής συγκρίνει τη δαπάνη του πράκτορα από την αρχή του μήνα με το ενεργό ανώτατό του όριο (μια συνδεδεμένη πολιτική προϋπολογισμού αν υπάρχει, αλλιώς το δικό του μηνιαίο ποσό του πράκτορα· μηδέν σημαίνει απεριόριστο). Η υπέρβαση του ήπιου κατωφλίου καταγράφει ένα περιστατικό προειδοποίησης· η εξάντληση του προϋπολογισμού καταγράφει ένα σκληρό περιστατικό και αναστρέφει την κατάσταση κύκλου ζωής του πράκτορα σε paused στο οργανόγραμμα. Η αποστολή εξακολουθεί να δέχεται εργασία από αυτόν τον πράκτορα. Ένας ενεργοποιητής pipeline BudgetThresholdCrossed μπορεί να ξεκινήσει εργασία παρακολούθησης από το ίδιο συμβάν.
Καταγωγή επαναλήψεων
Ενότητα με τίτλο «Καταγωγή επαναλήψεων»Κάθε αρχείο καταγραφής εκτέλεσης μπορεί να φέρει καταγωγή επανάληψης — ένα αναγνωριστικό γονικής εκτέλεσης, έναν μετρητή προσπαθειών και μια σύνοψη συνέχειας. Το δέντρο εκτελέσεων της συνομιλίας αποδίδει τον αριθμό προσπάθειας όταν δεν είναι μηδέν. Ένα «δοκίμασε ξανά» από τη συνομιλία είναι μια νέα αποστολή με ένα νέο αρχείο καταγραφής εκτέλεσης.
Σχετικές έννοιες
Ενότητα με τίτλο «Σχετικές έννοιες»- Το μοντέλο πρακτόρων: τι μπορεί και τι δεν μπορεί να επιβάλει ο προσαρμογέας
- Λειτουργίες: από πού προέρχονται η επιφάνεια εργαλείων και η σύμβαση ολοκλήρωσης
- Περιορισμοί: η πολιτική κλάσεων επιδράσεων από την οποία περνά κάθε κλήση με πύλη
- Sandbox και ασφάλεια: ολόκληρη η ιστορία της απομόνωσης
- Συνεργασία: καθοδήγηση, ανάληψη ελέγχου και ο δείκτης αυτονομίας
- Γεγονότα τομέα: τι ξεκινά το
AgentRunCompleted