Τους τελευταίους πέντε μήνες, η ομάδα μας διεξάγει ένα πείραμα: ανάπτυξη και κυκλοφορία μιας εσωτερικής beta έκδοσης ενός προϊόντος λογισμικού με 0 γραμμές κώδικα γραμμένες χειροκίνητα.
Το προϊόν έχει εσωτερικούς καθημερινούς χρήστες και εξωτερικούς δοκιμαστές alpha. Παραδίδεται, αναπτύσσεται, χαλάει και επιδιορθώνεται. Αυτό που είναι διαφορετικό είναι ότι κάθε γραμμή κώδικα —λογική εφαρμογής, δοκιμές, διαμόρφωση CI, τεκμηρίωση, παρατηρησιμότητα και εσωτερικά εργαλεία— έχει γραφτεί από το Codex. Εκτιμούμε ότι το δημιουργήσαμε σε περίπου το 1/10 του χρόνου που θα χρειαζόταν για να γράψουμε τον κώδικα με το χέρι.
Οι άνθρωποι κατευθύνουν. Οι πράκτορες εκτελούν.
Επιλέξαμε σκόπιμα αυτόν τον περιορισμό, ώστε να δημιουργήσουμε ό,τι ήταν απαραίτητο για να αυξήσουμε την ταχύτητα της μηχανικής κατά τάξεις μεγέθους. Είχαμε εβδομάδες για να παραδώσουμε αυτό που τελικά κατέληξε να είναι ένα εκατομμύριο γραμμές κώδικα. Για να το κάνουμε αυτό, έπρεπε να κατανοήσουμε τι αλλάζει όταν η κύρια δουλειά μιας ομάδας μηχανικών λογισμικού δεν είναι πλέον να γράφει κώδικα, αλλά να σχεδιάζει περιβάλλοντα, να καθορίζει την πρόθεση και να δημιουργεί βρόχους ανατροφοδότησης που επιτρέπουν στους πράκτορες Codex να εκτελούν αξιόπιστα την εργασία.
Αυτή η ανάρτηση αφορά όσα μάθαμε δημιουργώντας ένα ολοκαίνουργιο προϊόν με μια ομάδα πρακτόρων —τι δεν λειτούργησε, τι συσσωρεύτηκε και πώς να μεγιστοποιήσουμε τον μοναδικό πραγματικά σπάνιο πόρο μας: τον ανθρώπινο χρόνο και την προσοχή.
Η πρώτη υποβολή σε ένα κενό αποθετήριο πραγματοποιήθηκε στα τέλη Αυγούστου 2025.
Το αρχικό scaffold —η δομή του αποθετηρίου, η διαμόρφωση CI, οι κανόνες μορφοποίησης, η εγκατάσταση του διαχειριστή πακέτων και το πλαίσιο εφαρμογής— δημιουργήθηκε από το Codex CLI χρησιμοποιώντας το GPT‑5, καθοδηγούμενο από ένα μικρό σύνολο υπαρχόντων προτύπων. Ακόμη και το αρχικό αρχείο AGENTS.md που καθοδηγεί τους πράκτορες για το πώς να εργάζονται στο αποθετήριο γράφτηκε από το Codex.
Δεν υπήρχε προϋπάρχων κώδικας γραμμένος από ανθρώπους για να αποτελέσει σημείο αναφοράς για το σύστημα. Από την αρχή, το αποθετήριο διαμορφώθηκε από τον πράκτορα.
Πέντε μήνες αργότερα, το αποθετήριο περιέχει περίπου ένα εκατομμύριο γραμμές κώδικα που καλύπτουν τη λογική, την υποδομή, τα εργαλεία, την τεκμηρίωση και τις εσωτερικές βοηθητικές λειτουργίες για προγραμματιστές της εφαρμογής. Κατά τη διάρκεια αυτής της περιόδου, περίπου 1.500 pull requests ανοίχτηκαν και συγχωνεύτηκαν, με μια μικρή ομάδα μόλις τριών μηχανικών να προωθεί το Codex. Αυτό μεταφράζεται σε μέση ρυθμαπόδοση 3,5 PRs ανά μηχανικό ανά ημέρα, και παραδόξως η ρυθμαπόδοση έχει αυξηθεί καθώς η ομάδα έχει μεγαλώσει και πλέον αριθμεί επτά μηχανικούς. Σημαντικό είναι ότι αυτό δεν ήταν αποτέλεσμα για χάρη του αποτελέσματος: το προϊόν έχει χρησιμοποιηθεί από εκατοντάδες χρήστες εσωτερικά, συμπεριλαμβανομένων καθημερινών εσωτερικών χρηστών με μεγάλη εμπειρία.
Καθ' όλη τη διαδικασία ανάπτυξης, οι άνθρωποι δεν συνέβαλαν ποτέ απευθείας με κώδικα. Αυτό έγινε μια βασική φιλοσοφία για την ομάδα: καθόλου κώδικας γραμμένος με το χέρι.
Η έλλειψη ανθρώπινου προγραμματισμού με το χέρι εισήγαγε ένα διαφορετικό είδος εργασίας μηχανικής, με έμφαση στα συστήματα, το scaffolding και την αξιοποίηση.
Η αρχική πρόοδος ήταν πιο αργή από ό,τι περιμέναμε, όχι επειδή το Codex ήταν ανίκανο, αλλά επειδή το περιβάλλον ήταν ανεπαρκώς καθορισμένο. Ο πράκτορας δεν διέθετε τα εργαλεία, τις αφαιρέσεις και την εσωτερική δομή που απαιτούνταν για να σημειώσει πρόοδο προς υψηλού επιπέδου στόχους. Η κύρια δουλειά της ομάδας μηχανικών μας έγινε να επιτρέψουμε στους πράκτορες να εκτελούν χρήσιμη εργασία.
Στην πράξη, αυτό σήμαινε εργασία με προτεραιότητα βάθους: αποδόμηση των μεγαλύτερων στόχων σε μικρότερα δομικά στοιχεία (σχεδίαση, κώδικας, έλεγχος, δοκιμή, κ.λπ.), προτρέποντας τον πράκτορα να κατασκευάσει αυτά τα δομικά στοιχεία και χρησιμοποιώντας τα για να ξεκλειδώσουμε πιο σύνθετες εργασίες. Όταν κάτι αποτύγχανε, η λύση σχεδόν ποτέ δεν ήταν «προσπαθήστε περισσότερο». Επειδή ο μόνος τρόπος να σημειωθεί πρόοδος ήταν να βάλουμε το Codex να κάνει τη δουλειά, οι άνθρωποι μηχανικοί πάντα αναλάμβαναν το έργο και ρωτούσαν: «ποια δυνατότητα λείπει και πώς την κάνουμε ευανάγνωστη και εκτελεστή για τον πράκτορα;»
Οι άνθρωποι αλληλεπιδρούν με το σύστημα σχεδόν εξ ολοκλήρου μέσω προτροπών: ένας μηχανικός περιγράφει μια εργασία, εκτελεί τον πράκτορα και του επιτρέπει να ανοίξει ένα pull request. Για να ολοκληρώσουμε ένα PR, δίνουμε οδηγίες στο Codex να ελέγξει τις αλλαγές του τοπικά, να ζητήσει επιπλέον συγκεκριμένες αξιολογήσεις από πράκτορες τόσο τοπικά όσο και στο cloud, να απαντήσει σε οποιαδήποτε σχόλια από ανθρώπους ή πράκτορες και να επαναλαμβάνει τη διαδικασία σε βρόχο μέχρι να ικανοποιηθούν όλοι οι πράκτορες-ελεγκτές (ουσιαστικά αυτό είναι ένας Βρόχος Ralph Wiggum(ανοίγει σε νέο παράθυρο)). Το Codex χρησιμοποιεί απευθείας τα τυπικά εργαλεία ανάπτυξής μας (gh, τοπικές δέσμες ενεργειών και δεξιότητες ενσωματωμένες στο αποθετήριο) για να συλλέγει περιεχόμενο χωρίς να απαιτείται από ανθρώπους να κάνουν αντιγραφή και επικόλληση στο CLI.
Οι άνθρωποι μπορεί να ελέγξουν τα pull requests, αλλά δεν είναι υποχρεωμένοι να το κάνουν. Με την πάροδο του χρόνου, έχουμε μεταφέρει σχεδόν όλη την προσπάθεια ελέγχου ώστε να διεκπεραιώνεται από μεταξύ πρακτόρων.
Καθώς η ρυθμαπόδοση του κώδικα αυξανόταν, το σημείο συμφόρησής μας έγινε η ανθρώπινη ικανότητα QA. Επειδή ο σταθερός περιορισμός ήταν ο ανθρώπινος χρόνος και η προσοχή, εργαστήκαμε για να προσθέσουμε περισσότερες δυνατότητες στον πράκτορα, καθιστώντας το περιβάλλον χρήστη της εφαρμογής, τα αρχεία καταγραφής και τις μετρήσεις εφαρμογής άμεσα αναγνώσιμα από το Codex.
Για παράδειγμα, κάναμε την εφαρμογή εκκινήσιμη ανά git worktree, ώστε το Codex να μπορεί να εκκινεί και να διαχειρίζεται μία παρουσία ανά αλλαγή. Ενσωματώσαμε επίσης το Chrome DevTools Protocol στο runtime του πράκτορα και δημιουργήσαμε δεξιότητες για εργασία με στιγμιότυπα DOM, στιγμιότυπα οθόνης και πλοήγηση. Αυτό επέτρεψε στο Codex να αναπαράγει σφάλματα, να επικυρώνει διορθώσεις και να αναλύει τη συμπεριφορά του περιβάλλοντος χρήστη απευθείας.

Κάναμε το ίδιο και για τα εργαλεία παρατηρησιμότητας. Τα αρχεία καταγραφής, τα στοιχεία μέτρησης και τα ίχνη εκτίθενται στο Codex μέσω μιας τοπικής στοίβας παρατηρησιμότητας που είναι εφήμερη για κάθε δεδομένο worktree. Το Codex λειτουργεί σε μια πλήρως απομονωμένη έκδοση αυτής της εφαρμογής, συμπεριλαμβανομένων των αρχείων καταγραφής και των στοιχείων μέτρησής της, τα οποία καταργούνται μόλις ολοκληρωθεί αυτή η εργασία. Οι πράκτορες μπορούν να υποβάλλουν ερωτήματα σε αρχεία καταγραφής με LogQL και σε στοιχεία μέτρησης με PromQL. Με αυτό το θεματικό πλαίσιο διαθέσιμο, προτροπές όπως «διασφαλίστε ότι η εκκίνηση της υπηρεσίας ολοκληρώνεται σε λιγότερο από 800 ms» ή «κανένα span σε αυτές τις τέσσερις κρίσιμες διαδρομές χρήστη δεν υπερβαίνει τα δύο δευτερόλεπτα» γίνονται διαχειρίσιμες.
Τακτικά παρατηρούμε μεμονωμένες εκτελέσεις του Codex να εργάζονται σε μία μόνο εργασία για περισσότερες από έξι ώρες (συχνά ενώ οι άνθρωποι κοιμούνται).
Η διαχείριση του πλαισίου είναι μία από τις μεγαλύτερες προκλήσεις για να γίνουν οι πράκτορες αποτελεσματικοί σε μεγάλες και σύνθετες εργασίες. Ένα από τα πρώτα μαθήματα που πήραμε ήταν απλό: δώστε στο Codex έναν χάρτη, όχι ένα εγχειρίδιο οδηγιών 1.000 σελίδων.
Δοκιμάσαμε την προσέγγιση «ενός μεγάλου AGENTS.md(ανοίγει σε νέο παράθυρο)» . Απέτυχε με προβλέψιμους τρόπους:
- Το θεματικό πλαίσιο είναι ένας σπάνιος πόρος. Ένα γιγάντιο αρχείο οδηγιών παραγκωνίζει την εργασία, τον κώδικα και τα σχετικά έγγραφα —οπότε ο πράκτορας είτε δεν προσέχει βασικούς περιορισμούς είτε αρχίζει να βελτιστοποιεί για τους λάθος περιορισμούς.
- Η υπερβολική καθοδήγηση γίνεται μη καθοδήγηση. Όταν όλα είναι «σημαντικά», τίποτα δεν είναι. Οι πράκτορες καταλήγουν να αντιστοιχίζουν μοτίβα τοπικά αντί να πλοηγούνται επί σκοπού.
- Σαπίζει άμεσα. Ένα μονολιθικό εγχειρίδιο μετατρέπεται σε νεκροταφείο παρωχημένων κανόνων. Οι πράκτορες δεν μπορούν να διακρίνουν τι παραμένει αληθές, οι άνθρωποι σταματούν να το συντηρούν και το αρχείο σιωπηλά γίνεται μια ελκυστική πηγή προβλημάτων.
- Είναι δύσκολο να επαληθευτεί. Ένα ενιαίο blob δεν προσφέρεται για μηχανικούς ελέγχους (κάλυψη, επικαιρότητα, ιδιοκτησία, διασταυρούμενοι σύνδεσμοι), επομένως η απόκλιση είναι αναπόφευκτη.
Έτσι, αντί να αντιμετωπίζεται το AGENTS.md ως η εγκυκλοπαίδεια, αντιμετωπίζεται ως ο πίνακας περιεχομένων.
Η βάση γνώσεων του αποθετηρίου βρίσκεται σε έναν δομημένο κατάλογο docs/ που θεωρείται το σύστημα καταγραφής. Ένα σύντομο AGENTS.md (περίπου 100 γραμμές) εισάγεται στο πλαίσιο και λειτουργεί κυρίως ως χάρτης, με δείκτες προς βαθύτερες πηγές πληροφόρησης αλλού.
Η τεκμηρίωση σχεδιασμού καταλογογραφείται και ευρετηριάζεται, συμπεριλαμβανομένης της κατάστασης επαλήθευσης και ενός συνόλου βασικών πεποιθήσεων που ορίζουν τις αρχές λειτουργίας με προτεραιότητα στον πράκτορα. Η τεκμηρίωση αρχιτεκτονικής(ανοίγει σε νέο παράθυρο) παρέχει έναν χάρτη υψηλού επιπέδου των τομέων και της διαστρωμάτωσης πακέτων. Ένα έγγραφο ποιότητας αξιολογεί κάθε τομέα προϊόντος και αρχιτεκτονικό επίπεδο, παρακολουθώντας τα κενά με την πάροδο του χρόνου.
Τα σχέδια αντιμετωπίζονται ως πρώτης τάξεως τεχνουργήματα. Τα εφήμερα ελαφρά σχέδια χρησιμοποιούνται για μικρές αλλαγές, ενώ η σύνθετη εργασία καταγράφεται σε σχέδια εκτέλεσης(ανοίγει σε νέο παράθυρο) με καταγραφές προόδου και αποφάσεων που καταχωρούνται στο αποθετήριο. Τα ενεργά σχέδια, τα ολοκληρωμένα σχέδια και το γνωστό τεχνικό χρέος διαθέτουν όλα χρονολόγηση κατά έκδοση και κοινή τοποθεσία, επιτρέποντας στους πράκτορες να λειτουργούν χωρίς να βασίζονται σε εξωτερικό πλαίσιο.
Αυτό επιτρέπει την προοδευτική αποκάλυψη: οι πράκτορες ξεκινούν με ένα μικρό, σταθερό σημείο εισόδου και εκπαιδεύονται πού να κοιτάζουν στη συνέχεια, αντί να κατακλύζονται από την αρχή.
Αυτό το επιβάλλουμε μηχανικά. Αποκλειστικοί linters και εργασίες CI επικυρώνουν ότι η γνωσιακή βάση είναι ενημερωμένη, διασυνδεδεμένη και σωστά δομημένη. Ένας επαναλαμβανόμενος πράκτορας «doc-gardening» σαρώνει για έωλη ή παρωχημένη τεκμηρίωση που δεν αντικατοπτρίζει την πραγματική συμπεριφορά του κώδικα και ανοίγει pull requests για διορθώσεις.
Καθώς η βάση κώδικα εξελισσόταν, το πλαίσιο του Codex για τις αποφάσεις σχεδιασμού έπρεπε επίσης να εξελιχθεί.
Επειδή το αποθετήριο δημιουργείται εξ ολοκλήρου από πράκτορες, είναι βελτιστοποιημένο πρώτα για την αναγνωσιμότητα του Codex. Με τον ίδιο τρόπο που οι ομάδες στοχεύουν να βελτιώσουν την πλοηγησιμότητα του κώδικά τους για νέες προσλήψεις μηχανικών, ο στόχος των ανθρώπων μηχανικών μας ήταν να καταστήσουν δυνατό για έναν πράκτορα να συλλογίζεται σχετικά με ολόκληρο τον επιχειρηματικό τομέα απευθείας από το ίδιο το αποθετήριο.
Από την οπτική γωνία του πράκτορα, οτιδήποτε δεν μπορεί να προσπελάσει εντός πλαισίου κατά την εκτέλεση, ουσιαστικά δεν υπάρχει. Η γνώση που βρίσκεται στα Google Docs, σε νήματα συνομιλίας ή στο μυαλό των ανθρώπων δεν είναι προσβάσιμη στο σύστημα. Τοπικά στο αποθετήριο, τεχνουργήματα με χρονολόγηση κατά έκδοση (π.χ., κώδικας, markdown, σχήματα, εκτελέσιμα σχέδια) είναι το μόνο που μπορεί να δει.

Μάθαμε ότι έπρεπε να προσθέτουμε όλο και περισσότερο περιεχόμενο στο αποθετήριο με την πάροδο του χρόνου. Εκείνη η συζήτηση στο Slack που ευθυγράμμισε την ομάδα σε ένα αρχιτεκτονικό πρότυπο; Αν δεν είναι ανιχνεύσιμη από τον πράκτορα, είναι δυσανάγνωστη με τον ίδιο τρόπο που θα ήταν άγνωστο σε έναν νέο υπάλληλο που θα ενταχθεί τρεις μήνες αργότερα.
Η παροχή περισσότερου θεματικού πλαισίου στο Codex σημαίνει την οργάνωση και έκθεση των σωστών πληροφοριών, ώστε ο πράκτορας να μπορεί να συλλογίζεται πάνω σε αυτές, αντί να κατακλύζεται με ad-hoc οδηγίες. Με τον ίδιο τρόπο που θα εντάσσατε ένα νέο μέλος της ομάδας στις αρχές του προϊόντος, στους κανόνες της μηχανικής και στην κουλτούρα της ομάδας (συμπεριλαμβανομένων των προτιμήσεων για emoji), η παροχή αυτών των πληροφοριών στον πράκτορα οδηγεί σε καλύτερα ευθυγραμμισμένο αποτέλεσμα.
Αυτό το πλαίσιο αποσαφήνισε πολλούς συμβιβασμούς. Προτιμήσαμε εξαρτήσεις και αφαιρέσεις που μπορούσαν να εσωτερικευτούν πλήρως και να αναλυθούν εντός του αποθετηρίου. Οι τεχνολογίες που συχνά περιγράφονται ως «βαρετές» τείνουν να μοντελοποιούνται πιο εύκολα από τους πράκτορες, λόγω της δυνατότητα σύνθεσης, της σταθερότητας του API και της αναπαράστασής τους στο σύνολο εκπαίδευσης. Σε ορισμένες περιπτώσεις, ήταν φθηνότερο ο πράκτορας να υλοποιήσει εκ νέου υποσύνολα λειτουργικότητας παρά να παρακάμψει αδιαφανή συμπεριφορά από δημόσιες βιβλιοθήκες ανάντη. Για παράδειγμα, αντί να ενσωματώσουμε ένα γενικό πακέτο τύπου p-limit, υλοποιήσαμε το δικό μας βοηθητικό εργαλείο map-with-concurrency: είναι στενά ενσωματωμένο με τα όργανα διαχείρισης OpenTelemetry, έχει 100% κάλυψη δοκιμών και συμπεριφέρεται ακριβώς όπως αναμένει το περιβάλλον εκτέλεσής μας.
Η ενσωμάτωση περισσότερων στοιχείων του συστήματος σε μια μορφή που ο πράκτορας μπορεί να επιθεωρήσει, να επικυρώσει και να τροποποιήσει άμεσα αυξάνει τη μόχλευση —όχι μόνο για το Codex, αλλά και για άλλους πράκτορες (π.χ. το Aardvark) που εργάζονται επίσης στη βάση κώδικα.
Η τεκμηρίωση από μόνη της δεν διατηρεί συνεκτική μια βάση κώδικα που έχει παραχθεί πλήρως από πράκτορες. Με την επιβολή αμετάβλητων παραμέτρων και την αποφυγή της μικροδιαχείρισης υλοποιήσεων, επιτρέπουμε στους πράκτορες να παραδίδουν γρήγορα χωρίς να υπονομεύουμε τα θεμέλια. Για παράδειγμα, απαιτούμε από το Codex να αναλύει σχήματα δεδομένων στα όρια(ανοίγει σε νέο παράθυρο), αλλά δεν είμαστε δεσμευτικοί σχετικά με το πώς γίνεται αυτό (το μοντέλο φαίνεται να προτιμά το Zod, αλλά δεν καθορίσαμε αυτή τη συγκεκριμένη βιβλιοθήκη).
Οι πράκτορες είναι πιο αποτελεσματικοί σε περιβάλλοντα με αυστηρά όρια και προβλέψιμη δομή(ανοίγει σε νέο παράθυρο), επομένως δημιουργήσαμε την εφαρμογή γύρω από ένα άκαμπτο αρχιτεκτονικό μοντέλο. Κάθε επιχειρηματικός τομέας διαιρείται σε ένα σταθερό σύνολο επιπέδων, με αυστηρά επικυρωμένες κατευθύνσεις εξαρτήσεων και ένα περιορισμένο σύνολο επιτρεπόμενων άκρων. Αυτοί οι περιορισμοί επιβάλλονται μηχανικά μέσω προσαρμοσμένων linters (που δημιουργούνται από το Codex, φυσικά!) και δοκιμών δομής.
Το παρακάτω διάγραμμα δείχνει τον κανόνα: εντός κάθε επιχειρηματικού τομέα (π.χ. Ρυθμίσεις εφαρμογής), ο κώδικας μπορεί να εξαρτάται μόνο «προς τα εμπρός» μέσω ενός σταθερού συνόλου επιπέδων (Types → Config → Repo → Service → Runtime → UI). Οι εγκάρσιες ανησυχίες (έλεγχος ταυτότητας, συνδέσεις, τηλεμετρία, σημαίες χαρακτηριστικών) εισέρχονται μέσω μιας ενιαίας ρητής διεπαφής: τα Providers. Οτιδήποτε άλλο απαγορεύεται και επιβάλλεται μηχανικά.

Αυτό είναι το είδος της αρχιτεκτονικής που συνήθως αναβάλλετε μέχρι να έχετε εκατοντάδες μηχανικούς. Με τους πράκτορες προγραμματισμού, είναι μια πρώιμη προϋπόθεση: οι περιορισμοί είναι αυτοί που επιτρέπουν την ταχύτητα χωρίς υποβάθμιση ή αρχιτεκτονική απόκλιση.
Στην πράξη, εφαρμόζουμε αυτούς τους κανόνες με προσαρμοσμένους linters και δοκιμές δομής, καθώς και με ένα μικρό σύνολο «αμετάβλητων παραμέτρων αισθητικής». Για παράδειγμα, επιβάλλουμε στατικά τη δομημένη καταγραφή, τις συμβάσεις ονοματοδοσίας για σχήματα και τύπους, τα όρια μεγέθους αρχείων και τις απαιτήσεις αξιοπιστίας που είναι ειδικές για την πλατφόρμα με προσαρμοσμένα lints. Επειδή τα lints είναι προσαρμοσμένα, γράφουμε τα μηνύματα σφάλματος για να εισάγουμε οδηγίες αποκατάστασης στο πλαίσιο του πράκτορα.
Σε μια ροή εργασίας που δίνει προτεραιότητα στον άνθρωπο, αυτοί οι κανόνες μπορεί να φαίνονται σχολαστικοί ή περιοριστικοί. Με τους πράκτορες, οι κανόνες γίνονται πολλαπλασιαστές: μόλις κωδικοποιηθούν, εφαρμόζονται παντού ταυτόχρονα.
Ταυτόχρονα, είμαστε σαφείς για το πού οι περιορισμοί έχουν σημασία και πού δεν έχουν. Αυτό μοιάζει με τη διοίκηση ενός μεγάλου οργανισμού πλατφόρμας μηχανικής: επιβάλλετε τα όρια κεντρικά, επιτρέπετε την αυτονομία τοπικά. Εσείς ενδιαφέρεστε βαθιά για τα όρια, την ορθότητα και την αναπαραγωγιμότητα. Μέσα σε αυτά τα όρια, επιτρέπετε στις ομάδες —ή στους πράκτορες— σημαντική ελευθερία στον τρόπο με τον οποίο εκφράζονται οι λύσεις.
Ο κώδικας που προκύπτει δεν ταιριάζει πάντα με τις ανθρώπινες στυλιστικές προτιμήσεις, και αυτό είναι αποδεκτό. Εφόσον το αποτέλεσμα είναι σωστό, συντηρήσιμο και ευανάγνωστο για μελλοντικές εκτελέσεις του πράκτορα, πληροί το απαιτούμενο επίπεδο.
Η ανθρώπινη αισθητική ανατροφοδοτείται στο σύστημα συνεχώς. Τα σχόλια ελέγχου, τα pull request αναδιάρθρωσης και τα σφάλματα που αντιμετωπίζει ο χρήστης καταγράφονται ως ενημερώσεις τεκμηρίωσης ή κωδικοποιούνται απευθείας στα εργαλεία. Όταν η τεκμηρίωση δεν επαρκεί, προωθούμε τον κανόνα στον κώδικα
Καθώς η ρυθμαπόδοση του Codex αυξανόταν, πολλοί συμβατικοί κανόνες της μηχανικής γίνονταν αντιπαραγωγικοί.
Το αποθετήριο λειτουργεί με ελάχιστες πύλες συγχώνευσης αποκλεισμού. Τα pull request είναι βραχύβια. Οι αναξιόπιστες δοκιμές συχνά αντιμετωπίζονται με επαναληπτικές εκτελέσεις αντί να αποκλείεται η πρόοδος επ' αόριστον. Σε ένα σύστημα όπου η ρυθμαπόδοση των πρακτόρων υπερβαίνει κατά πολύ την ανθρώπινη προσοχή, οι διορθώσεις είναι φθηνές και η αναμονή είναι ακριβή.
Αυτό θα ήταν ανεύθυνο σε ένα περιβάλλον χαμηλής ρυθμαπόδοσης. Εδώ, συχνά είναι ο σωστός συμβιβασμός.
Όταν λέμε ότι η βάση κώδικα δημιουργείται από πράκτορες Codex, εννοούμε τα πάντα στη βάση κώδικα.
Οι πράκτορες παράγουν:
- Κωδικό προϊόντος και δοκιμές
- Διαμόρφωση CI και εργαλεία κυκλοφορίας
- Εσωτερικά εργαλεία προγραμματιστών
- Ιστορικό τεκμηρίωσης και σχεδιασμού
- Μηχανισμούς αξιολόγησης
- Ανασκόπηση σχολίων και απαντήσεων
- Δέσμες ενεργειών που διαχειρίζονται το ίδιο το αποθετήριο
- Αρχεία ορισμού πίνακα ελέγχου παραγωγής
Οι άνθρωποι είναι πάντα ενήμεροι, αλλά εργάζονται σε διαφορετικό επίπεδο αφαίρεσης από ό,τι συνηθίζαμε. Δίνουμε προτεραιότητα στην εργασία, μετατρέπουμε τα σχόλια των χρηστών σε κριτήρια αποδοχής και επικυρώνουμε τα αποτελέσματα. Όταν ο πράκτορας δυσκολεύεται, το αντιμετωπίζουμε ως σήμα: εντοπίζουμε τι λείπει —εργαλεία, δικλείδες ασφαλείας, τεκμηρίωση— και το ανατροφοδοτούμε στο αποθετήριο, πάντα βάζοντας το ίδιο το Codex να γράψει τη διόρθωση.
Οι πράκτορες χρησιμοποιούν απευθείας τα τυπικά εργαλεία ανάπτυξης μας. Αντλούν σχόλια ελέγχου, απαντούν ενσωματωμένα, προωθούν ενημερώσεις και συχνά καθαρίζουν και συγχωνεύουν τα δικά τους pull requests.
Καθώς όλο και περισσότερο μέρος του κύκλου ανάπτυξης κωδικοποιήθηκε απευθείας μέσα στο σύστημα —δοκιμές, επικύρωση, έλεγχος, διαχείριση ανάδρασης και αποκατάσταση— το αποθετήριο πρόσφατα ξεπέρασε ένα σημαντικό όριο, όπου το Codex μπορεί να οδηγήσει με ολοκληρωμένο τρόπο μια νέα λειτουργία.
Δεδομένης μιας μόνο προτροπής, ο πράκτορας μπορεί πλέον να κάνει τα εξής:
- Να επικυρώνει την τρέχουσα κατάσταση της βάσης κώδικα
- Να αναπαράγει ένα αναφερόμενο σφάλμα
- Να δημιουργεί ένα βίντεο όπου παρουσιάζεται η αποτυχία
- Να εφαρμόζει μια διόρθωση
- Να επικυρώνει τη διόρθωση οδηγώντας την εφαρμογή
- Να δημιουργεί δεύτερο βίντεο όπου παρουσιάζεται η επίλυση
- Να ανοίγει ένα pull request
- Να ανταποκρίνεται σε σχόλια από πράκτορα και ανθρώπους
- Να εντοπίζει και να αποκαθιστά αποτυχίες build
- Να προωθεί σε άνθρωπο μόνο όταν απαιτείται κρίση
- Να συγχωνεύει την αλλαγή
Αυτή η συμπεριφορά εξαρτάται σε μεγάλο βαθμό από τη συγκεκριμένη δομή και τα εργαλεία αυτού του αποθετηρίου και δεν θα πρέπει να θεωρείται ότι μπορεί να γενικευτεί χωρίς παρόμοια επένδυση —τουλάχιστον, όχι ακόμη.
Η πλήρης αυτονομία του πράκτορα εισάγει επίσης καινοτόμα προβλήματα. Το Codex αναπαράγει μοτίβα που υπάρχουν ήδη στο αποθετήριο —ακόμα και ανομοιόμορφα ή μη βέλτιστα. Με την πάροδο του χρόνου, αυτό αναπόφευκτα οδηγεί σε απόκλιση.
Αρχικά, οι άνθρωποι το αντιμετώπιζαν χειροκίνητα. Η ομάδα μας συνήθιζε να περνάει κάθε Παρασκευή (20% της εβδομάδας) καθαρίζοντας την «ακαταστασία της ΤΝ». Αναμενόμενα, αυτό δεν κλιμακώθηκε.
Αντ’ αυτού, αρχίσαμε να κωδικοποιούμε αυτό που αποκαλούμε «χρυσές αρχές» απευθείας στο αποθετήριο και δημιουργήσαμε μια επαναλαμβανόμενη διαδικασία εκκαθάρισης. Αυτές οι αρχές είναι αυστηροί, μηχανικοί κανόνες που διατηρούν τη βάση κώδικα ευανάγνωστη και συνεπή για μελλοντικές εκτελέσεις πρακτόρων. Για παράδειγμα: (1) προτιμάμε κοινόχρηστα πακέτα βοηθητικών εργαλείων αντί για χειροποίητους βοηθούς, ώστε να διατηρούμε τις αμετάβλητες παραμέτρους κεντρικοποιημένες, και (2) δεν διερευνούμε δεδομένα «τύπου YOLO» — επικυρώνουμε τα όρια ή βασιζόμαστε σε τυποποιημένα SDK, ώστε ο πράκτορας να μην μπορεί κατά λάθος να βασιστεί σε εικαζόμενα σχήματα. Σε τακτική βάση, έχουμε ένα σύνολο παρασκηνιακών εργασιών Codex που σαρώνουν για αποκλίσεις, ενημερώνουν τις βαθμολογίες ποιότητας και ανοίγουν στοχευμένα pull request αναδιάρθρωσης. Τα περισσότερα από αυτά μπορούν να ελεγχθούν σε λιγότερο από ένα λεπτό και να συγχωνευθούν αυτόματα.
Αυτό λειτουργεί όπως η συλλογή απορριμμάτων. Το τεχνικό χρέος είναι σαν ένα δάνειο με υψηλό επιτόκιο: σχεδόν πάντα είναι καλύτερο να το αποπληρώνετε συνεχώς, σε μικρές δόσεις, παρά να το αφήνετε να συσσωρεύεται και να το αντιμετωπίζετε σε επώδυνες εκρήξεις. Η ανθρώπινη αισθητική αποτυπώνεται μία φορά και στη συνέχεια επιβάλλεται συνεχώς σε κάθε γραμμή κώδικα. Αυτό σας επιτρέπει επίσης να εντοπίζετε και να επιλύετε κακά μοτίβα σε καθημερινή βάση, αντί να τα αφήνετε να εξαπλώνονται στη βάση κώδικα για ημέρες ή εβδομάδες.
Αυτή η στρατηγική έχει μέχρι στιγμής λειτουργήσει καλά μέχρι την εσωτερική κυκλοφορία και υιοθέτηση στην OpenAI. Η δημιουργία ενός πραγματικού προϊόντος για πραγματικούς χρήστες βοήθησε να εδραιώσουμε τις επενδύσεις μας στην πραγματικότητα και να μας καθοδηγήσει προς τη μακροπρόθεσμη συντηρησιμότητα.
Αυτό που δεν γνωρίζουμε ακόμη είναι πώς εξελίσσεται η αρχιτεκτονική συνοχή με την πάροδο των ετών σε ένα σύστημα πλήρως παραγόμενο από πράκτορες. Εξακολουθούμε να μαθαίνουμε πού η ανθρώπινη κρίση προσφέρει τη μεγαλύτερη μόχλευση και πώς να κωδικοποιούμε αυτή την κρίση ώστε να συνδυάζεται. Επίσης, δεν γνωρίζουμε πώς θα εξελιχθεί αυτό το σύστημα καθώς τα μοντέλα συνεχίζουν να γίνονται πιο ικανά με την πάροδο του χρόνου.
Αυτό που έχει γίνει σαφές είναι ότι η ανάπτυξη λογισμικού εξακολουθεί να απαιτεί πειθαρχία, αλλά η πειθαρχία εμφανίζεται περισσότερο στη δομή υποστήριξης παρά στον κώδικα. Τα εργαλεία, οι αφαιρέσεις και οι βρόχοι ανατροφοδότησης που διατηρούν τη συνοχή της βάσης κώδικα είναι όλο και πιο σημαντικά.
Οι πιο δύσκολες προκλήσεις μας τώρα επικεντρώνονται στον σχεδιασμό περιβαλλόντων, βρόχων ανατροφοδότησης και συστημάτων ελέγχου που βοηθούν τους πράκτορες να επιτύχουν τον στόχο μας: να δημιουργήσουν και να συντηρήσουν σύνθετο, αξιόπιστο λογισμικό σε μεγάλη κλίμακα.
Καθώς οι πράκτορες όπως το Codex αναλαμβάνουν μεγαλύτερα τμήματα του κύκλου ζωής του λογισμικού, αυτά τα ερωτήματα θα έχουν ακόμη μεγαλύτερη σημασία. Ελπίζουμε ότι η κοινοποίηση ορισμένων πρώιμων μαθημάτων θα σας βοηθήσει να σκεφτείτε πού να επενδύσετε την προσπάθειά σας, ώστε να μπορείτε απλώς να δημιουργείτε πράγματα.


