spinny:~/writing $ less codex-multi-agent-workflows.md
12Την πρώτη φορά που ένας παράγοντας κωδικοποίησης επιδιορθώνει πραγματικά ένα σφάλμα για εσάς, η αντίδραση είναι σχεδόν πάντα η ίδια: ένα μείγμα ενθουσιασμού και καχυποψίας. Ωραίο, σίγουρα. Αλλά μετά κοιτάς τη διαφορά και αναρωτιέσαι: "Εντάξει, αλλά τι ακριβώς άγγιξε; Μπορώ να τον εμπιστευτώ; Θα το κάνει ξανά με τον ίδιο τρόπο αύριο;".34Εκεί νομίζω αρχίζει το ενδιαφέρον κομμάτι. Όχι όταν ο πράκτορας γράφει μια συνάρτηση, αλλά όταν γίνεται αρκετά ικανός να αναλάβει ολόκληρα κομμάτια εργασίας: διαβάστε το αποθετήριο, δημιουργήστε μια ενημέρωση κώδικα, εκτελέστε δοκιμές, ανοίξτε ένα PR, επιστρέψτε μετά από ένα σχόλιο αξιολόγησης. Το Codex κινείται ακριβώς προς αυτή την κατεύθυνση: εργασία στο παρασκήνιο, ξεχωριστά δέντρα εργασίας, ενσωματωμένο πρόγραμμα περιήγησης, αυτοματισμοί, πρόσθετα, μνήμη και πιο συγκεκριμένα στοιχεία ελέγχου αδειών.56Το θέμα δεν είναι να φανταστεί κανείς ένα μέλλον όπου κανείς δεν διαβάζει πια κώδικα. Θα ήταν ένα τρομερό μέλλον, καθώς και αρκετά αφελές. Το θέμα είναι να καταλάβουμε πώς να συνεργαστείτε με πράκτορες που μπορούν να κάνουν πολλά χωρίς να τους αφήσουν να κάνουν τα πάντα.78## Η αλλαγή συνήθειας910Με την παραδοσιακή αυτόματη συμπλήρωση ήσασταν πάντα στο τιμόνι. Το AI πρότεινε μια γραμμή, αποφασίσατε. Με έναν ατζέντη, όμως, η σχέση αλλάζει: του δίνεις έναν στόχο και περνάει από πολλά βήματα μόνος του.1112Αυτό είναι ισχυρό, αλλά μετατοπίζει το πρόβλημα. Το ερώτημα δεν είναι πλέον μόνο «μπορεί το μοντέλο να προγραμματίσει;». Το ερώτημα γίνεται:1314- Του έδωσα αρκετά μικρό πεδίο εφαρμογής;15- ξέρετε πώς να ελέγξετε το αποτέλεσμα;16- Εργάζομαι σε απομονωμένο περιβάλλον;17- Η τελική αναθεώρηση εξακολουθεί να είναι ανθρώπινη και προσεκτική;1819Μια υγιής ροή εργασίας μοιάζει περισσότερο με αυτό παρά με ένα μαγικό ραβδί:2021```mermaid22flowchart LR23 Idea[Ανθρώπινο έργο] --> Scope[Μικρός, επαληθεύσιμος σκοπός]24 Scope --> Agent[Πράκτορας στο δέντρο εργασίας απομονωμένος]25 Agent --> Checks[Test, lint, build, browser]26 Checks --> Review[Ανθρώπινη αναθεώρηση]27 Review --> Merge[Συγχώνευση ή νέα επανάληψη]28 Review --> Iterate[Ακριβή σχόλια για τη διαφορά]29 Iterate --> Agent30```3132Ακούγεται λιγότερο ρομαντικό από το "ο πράκτορας χτίζει τα πάντα", αλλά λειτουργεί πολύ καλύτερα. Και είναι επίσης ο τρόπος με τον οποίο λειτουργούν οι ομάδες που είναι καλές με τους ανθρώπους: ξεκάθαρες εργασίες, γρήγορη ανατροφοδότηση, ρητή ευθύνη.3334## Η καλή προτροπή είναι σχεδόν ένα καλό εισιτήριο3536Η πιο επικίνδυνη προτροπή είναι η ασαφής αλλά σίγουρη: "διορθώστε τη σελίδα τιμολογίων", "βελτίωση της αρχιτεκτονικής", "εκκαθάριση της ενότητας ελέγχου ταυτότητας". Αυτά είναι αιτήματα που ακούγονται παραγωγικά και δημιουργούν τεράστιες διαφορές. Αλλά μετά βρίσκεις τον εαυτό σου να κάνει αρχαιολογία.3738Μια χρήσιμη προτροπή είναι πιο βαρετή. Για παράδειγμα: εφαρμόστε την εξαγωγή CSV για τη σελίδα τιμολογίων, γνωρίζοντας ότι ο πίνακας βρίσκεται στο `app/(dashboard)/invoices/page.tsx`, τα ερωτήματα είναι στο `src/server/invoices.ts` και υπάρχει ήδη ένα παρόμοιο μοτίβο στο `app/(dashboard)/reports`.3940Στη συνέχεια, προσθέστε σαφείς περιορισμούς: μην αλλάξετε το σχήμα της βάσης δεδομένων, μην προσθέσετε εξαρτήσεις εάν ένα μικρό βοηθητικό πρόγραμμα είναι αρκετό, διατηρήστε το υπάρχον στυλ διεπαφής χρήστη. Και κλείστε με την επαλήθευση: `npm test -- invoices` και `npm run build`.4142Αυτός ο τύπος σύντομης περιγραφής δεν είναι για να "εξηγηθεί καλύτερα στο AI". Χρησιμεύει πάνω από όλα για να σας καταστήσει πιο σαφές τι αναθέτετε. Εάν δεν μπορείτε να το γράψετε συγκεκριμένα, ίσως η εργασία να μην είναι ακόμα έτοιμη για έναν πράκτορα.4344## Τρεις δουλειές που αναθέτω πρόθυμα4546Η πρώτη είναι επαναλαμβανόμενη αλλά επαληθεύσιμη εργασία: προσθήκη δοκιμών, μετεγκατάσταση κλήσεων σε ένα νέο εσωτερικό API, ενημέρωση εισαγωγών, αντικατάσταση καταργημένων στοιχείων, διόρθωση σφαλμάτων TypeScript. Εδώ ο πράκτορας μπορεί να εξοικονομήσει ώρες και ο κίνδυνος είναι ελεγχόμενος.4748Το δεύτερο είναι η διερευνητική εργασία: "βρες πού υπολογίζεται αυτό το σύνολο", "εξήγησέ μου γιατί αυτό το τεστ είναι εύθραυστο", "αναπαραγωγή του σφάλματος και πες μου ποια αρχεία φαίνεται να επηρεάζονται". Ακόμη και όταν δεν παράγει αμέσως ένα έμπλαστρο, μπορεί να κάνει χρήσιμη αναγνώριση.4950Το τρίτο είναι οι επαναλαμβανόμενες εργασίες συντήρησης: μικρές ενημερώσεις εξάρτησης, εκκαθάριση παλιών σημαιών χαρακτηριστικών, περίληψη αποκλεισμένων PR, έλεγχος ξεχασμένων TODO. Δεν είναι λαμπερό, αλλά είναι ακριβώς το είδος της δουλειάς που τείνει να συσσωρεύεται.5152## Τρεις δουλειές που κρατάω ανθρώπινες5354Οι αποφάσεις για τα προϊόντα παραμένουν ανθρώπινες. Εάν μια αλλαγή αλλάξει τον τρόπο με τον οποίο ένας χρήστης πληρώνει, διαγράψει δεδομένα, δει τιμές ή κατανοήσει μια άδεια, θέλω ένα υπεύθυνο άτομο.5556Τα όρια ασφαλείας αξίζουν επίσης την ανθρώπινη προσοχή: ταυτότητα, ρόλοι, διακριτικά, ευαίσθητα δεδομένα καταγραφής, μετεγκαταστάσεις βάσεων δεδομένων. Ένας πράκτορας μπορεί να βοηθήσει στην εφαρμογή, αλλά δεν χρειάζεται να είναι ο μόνος λήπτης αποφάσεων.5758Τέλος, κρατάω ό,τι απαιτεί αρχιτεκτονικό γούστο ανθρώπινο. Ένας πράκτορας μπορεί να προτείνει έναν ανασχηματιστή, αλλά η κατανόηση του εάν μια αφαίρεση είναι πραγματικά απαραίτητη ή αν απλώς λύνουμε ένα ανύπαρκτο πρόβλημα παραμένει δουλειά.5960## Η αναθεώρηση δεν είναι προαιρετική6162Ο πειρασμός, όταν ένας πράκτορας είναι καλός, είναι να εμπιστευτείς το πράσινο του CI. Είναι κατανοητό. Είναι επίσης όταν αρχίζουν τα προβλήματα.6364Πάντα κοιτάζω τουλάχιστον πέντε πράγματα:65661. Η ενημέρωση κώδικα επιλύει μόνο την ζητούμενη εργασία;672. Άγγιξε αρχεία που δεν είχαν καμία σχέση με αυτό;683. Καλύπτουν τα τεστ νέα συμπεριφορά ή απλώς ευτυχισμένη ευκαιρία;694. Ο κώδικας ακολουθεί τοπικά μοτίβα;705. Αντιμετωπίζονται τα σφάλματα όπως στο υπόλοιπο έργο;7172Όταν κάτι δεν πάει καλά, η ανατροφοδότηση πρέπει να είναι συγκεκριμένη. Το «Fix it» είναι τεμπέλης. Καλύτερα: αυτό το βοηθητικό πρόγραμμα αντιγράφει το `parseMoney` σε `src/lib/money.ts`. επαναχρησιμοποιήστε αυτήν τη λειτουργία, προσθέστε μια δοκιμή για την περίπτωση EUR και μην αλλάξετε το δημόσιο API της μονάδας χρέωσης.7374Οι πράκτορες ανταποκρίνονται πολύ καλύτερα σε μικρά, επαληθεύσιμα σχόλια. Περιέργως, το ίδιο κάνουν και οι άνθρωποι.7576## Τα προστατευτικά κιγκλιδώματα αξίζει τον κόπο7778Εάν ένας πράκτορας μπορεί να διαβάζει αρχεία, να γράφει κώδικα και να εκτελεί εντολές, θα πρέπει να αντιμετωπίζεται ως μια ισχυρή διαδικασία. Δεν χρειάζεται παράνοια, χρειάζεται υγιεινή.7980Χρησιμοποιήστε ξεχωριστά δέντρα εργασίας ή κλαδιά. Έτσι, μπορείτε να συγκρίνετε τη διαφορά, να πετάξετε τα αποτυχημένα πειράματα και να μην ανακατέψετε τη δουλειά του πράκτορα με αυτό που κάνατε.8182Περιορίστε τα δικαιώματα. Εντολές όπως `rg`, `git diff`, `npm test` και `npm run build` μπορεί να είναι αρκετά δωρεάν. Οι αναπτύξεις, οι μετεγκαταστάσεις βάσεων δεδομένων, η πρόσβαση σε μυστικά και οι καταστροφικές εντολές πρέπει να παραμένουν σαφείς.8384Μειώστε την πρόσβαση στο δίκτυο όταν δεν το χρειάζεστε. Για πολλές εργασίες, αρκεί η επίσημη τεκμηρίωση, το μητρώο πακέτων και συγκεκριμένες εσωτερικές υπηρεσίες. Λιγότερη επιφάνεια, λιγότερες εκπλήξεις.8586Παρακολούθηση ενεργειών. Όταν μια ενημερωμένη έκδοση κώδικα φθάνει σε αναθεώρηση, θα πρέπει να μπορείτε να ανακατασκευάσετε τις προτροπές, τις εντολές που εκτελούνται, τις δοκιμές που έχουν περάσει και τα αρχεία που έχουν τροποποιηθεί. Όχι για να δημιουργήσουμε γραφειοκρατία, αλλά για να μπορέσουμε να καταλάβουμε τι έγινε αν κάτι πάει στραβά.8788## Ένας εύκολος τρόπος για να ξεκινήσετε ως ομάδα8990Αν εισήγαγα πράκτορες σε μια μικρή ομάδα, θα ξεκινούσα χωρίς μεγάλες επαναστάσεις.9192Θα δημιουργούσα μια ετικέτα `agent-ready` για ζητήματα με σαφή εμβέλεια. Θα πρόσθετα ένα πρότυπο με πλαίσιο, περιορισμούς και εντολές επαλήθευσης. Θα ζητούσα μικρό PR, ιδανικά κάτω από μερικές εκατοντάδες γραμμές. Θα χρειαζόμουν δοκιμή ή στιγμιότυπα οθόνης για ορατές αλλαγές. Και πάνω από όλα θα κρατούσα υπεύθυνο για τη συγχώνευση.9394Μετά από δύο εβδομάδες θα κοίταζα τα δεδομένα: ποιες εργασίες επιταχύνθηκαν πραγματικά, ποιες αναθεωρήσεις ήταν βαριές, ποιες προτροπές προκαλούν σύγχυση, ποια μέρη της βάσης κωδικών είναι πολύ εύθραυστα για να τα αναθέσουμε.9596Είναι μια λιγότερο θεαματική προσέγγιση από το "από σήμερα θα κάνουμε τα πάντα με τους πράκτορες", αλλά είναι αυτή που σας επιτρέπει να φτάσετε στην τρίτη εβδομάδα χωρίς τύψεις.9798## Το πιο ανθρώπινο κομμάτι99100Το αστείο είναι ότι όσο πιο αυτόνομοι πράκτορες γίνονται, τόσο πιο σημαντικές γίνονται και πάλι οι κλασικές δεξιότητες: να γράφεις ένα καλό εισιτήριο, να κάνεις μικρές περικοπές, να δημιουργείς τεστ, να διαβάζεις διαφοροποιήσεις, να επικοινωνείς συμβιβασμούς. Ο πράκτορας επιταχύνει αυτούς που ήδη ξέρουν πώς να δουλεύουν καλά. Ενισχύει επίσης το χάος όσων αναθέτουν άσχημα.101102Επομένως, όχι, δεν βλέπω τις ροές εργασίας πολλαπλών πρακτόρων ως συντόμευση για να σταματήσετε να ασχολείστε με τη μηχανική. Τους βλέπω ως έναν τρόπο για να μεταφέρετε περισσότερη ενέργεια στα μέρη που έχουν σημασία: να αποφασίσετε τι να κατασκευάσετε, να βεβαιωθείτε ότι λειτουργεί, να διατηρήσετε το σύστημα κατανοητό.103104Οι πράκτορες μπορούν να κάνουν σπουδαίους ασύγχρονους συναδέλφους. Αλλά ένας ασύγχρονος συνάδελφος, για να είναι χρήσιμος, χρειάζεται πλαίσιο, όρια και αναθεώρηση. Όπως όλοι οι άλλοι.105106## Χρήσιμες πηγές107108- [Codex για (σχεδόν) τα πάντα - OpenAI](https://openai.com/index/codex-for-almost-everything/)109- [Εκτέλεση Codex με ασφάλεια στο OpenAI](https://openai.com/index/running-codex-safely/)110- [Παρουσιάζοντας το Codex - OpenAI](https://openai.com/index/introducing-codex/)111- [Τι νέο υπάρχει με τον παράγοντα κωδικοποίησης GitHub Copilot](https://github.blog/ai-and-ml/github-copilot/whats-new-with-github-copilot-coding-agent/)112
:Codex και ροή εργασιών πολλαπλών πρακτόρων: εργαστείτε με πράκτορες χωρίς να χάσετε τον έλεγχοlines 1-112 (END) — press q to close