Δημιουργία κοινόχρηστων χώρων εργασίας για ανθρώπους και πράκτορες
Πώς τα Έργα του Perplexity εξασφαλίζουν μονιμότητα, ταυτοχρονισμό και ιχνηλασιμότητα στις μακροχρόνιες εργασίες.
Πρόσφατα κυκλοφορήσαμε τα Έργα, όπου άνθρωποι και πράκτορες συνεργάζονται σε μακροχρόνιες εργασίες στο Perplexity Computer. Κάθε έργο βασίζεται σε έναν κοινόχρηστο χώρο εργασίας με ένα σύστημα αρχείων που συσσωρεύει πλαίσιο από συνεδρίες, πράκτορες και χρήστες. Η συνεργασία πολλών συμμετεχόντων που διαρκεί μήνες απαιτεί μονιμότητα, ταυτοχρονισμό και ιχνηλασιμότητα:
- Μονιμότητα: Η εργασία πρέπει να διατηρείται πέρα από οποιαδήποτε μεμονωμένη συνεδρία πράκτορα ή sandbox, ώστε να μπορεί να συνεχιστεί στο μέλλον από τον ίδιο χρήστη ή πράκτορα και να αξιοποιηθεί από οποιονδήποτε συνεργάτη.
- Ταυτοχρονισμός: Πολλοί χρήστες στο ίδιο έργο μπορούν να έχουν ο καθένας πολλούς πράκτορες που κάνουν επεξεργασίες παράλληλα, οι οποίες προωθούν μια κοινή κατάσταση αντί να αντικαθιστούν η μία την άλλη.
- Ιχνηλασιμότητα: Τόσο οι χρήστες όσο και οι πράκτορες πρέπει να μπορούν να βλέπουν το ιστορικό, ώστε να ελέγχουν ποιος άλλαξε τι από την τελευταία τους συνεδρία χωρίς να διαβάζουν ξανά ολόκληρο το έργο, και να αναιρούν επεξεργασίες όταν χρειάζεται.
Αυτές οι προκλήσεις είναι γνώριμες στους μηχανικούς λογισμικού. Τα Git forge εμφανίστηκαν πριν από δεκαετίες για να καλύψουν ακριβώς αυτές τις απαιτήσεις: πρόκειται για φιλοξενούμενες υπηρεσίες που συνδυάζουν τον έλεγχο εκδόσεων με λειτουργίες συνεργασίας, ώστε πολλοί συνεισφέροντες να συγκλίνουν σε μία ενιαία πηγή αλήθειας. Το σύστημα αρχείων στο οποίο βασίζονται τα Έργα είναι ένα τέτοιο Git forge, σχεδιασμένο για συνεργασία ανθρώπων με πράκτορες και πρακτόρων μεταξύ τους.
Αρχιτεκτονική
Το Git ήδη χειρίζεται τη μονιμότητα, τον ταυτοχρονισμό και την ιχνηλασιμότητα. Αναγνωρίζει κάθε αρχείο από το περιεχόμενό του, οπότε τα αμετάβλητα αρχεία αποθηκεύονται μία φορά και τα αποθηκευμένα αντίγραφα δεν γίνονται ποτέ παρωχημένα. Κάθε commit αποθηκεύει όλα τα ενημερωμένα αρχεία ταυτόχρονα, οπότε οι συνεργάτες δεν βλέπουν ποτέ μια μισοτελειωμένη κατάσταση. Όταν δύο συντάκτες συγκρούονται, αυτός που έχασε μπορεί να εφαρμόσει ξανά τις αλλαγές του στη νέα έκδοση και να δοκιμάσει πάλι. Η αλυσίδα των commit δείχνει ποιος άλλαξε τι και διευκολύνει την επαναφορά προηγούμενων εκδόσεων. Αυτό που δεν χρειάζονται οι πράκτορες είναι όλα τα υπόλοιπα ενός forge σχεδιασμένου για ανθρώπους, όπως οι οθόνες ελέγχου αλλαγών, η διαχείριση κλάδων και οι ειδοποιήσεις.
Η αρχιτεκτονική μας εκτελεί ολόκληρη τη διαδικασία στο cloud και υποστηρίζει κάθε μορφή εργασίας γνώσης, πέρα από τον προγραμματισμό. Κάθε έργο του Computer βασίζεται σε ένα αποθετήριο Git που εξυπηρετείται από 5 στοιχεία:
- Το CLI διατηρεί τα τοπικά checkout, συγχρονίζει τις ενημερώσεις και υποβάλλει τις αλλαγές του πράκτορα σε κάθε sandbox.
- Το επίπεδο ελέγχου εντοπίζει το αποθετήριο του έργου και εκδίδει βραχύβια διαπιστευτήρια για την πρόσβαση σε αυτό.
- Η υπηρεσία Git στέλνει δεδομένα αποθετηρίων στα sandbox, λαμβάνει τις υποβολές τους και αποφασίζει ποια υποβολή θα γίνει το πιο πρόσφατο αποδεκτό commit.
- Ο αποθηκευτικός χώρος με υποστήριξη AWS S3 αποθηκεύει μόνιμα τα δεδομένα των αποθετηρίων.
- Η μεταγενέστερη επεξεργασία εξάγει κείμενο και άλλες χρήσιμες πληροφορίες από τα αποθηκευμένα έγγραφα και τις καθιστά διαθέσιμες όταν οι πράκτορες φορτώνουν ή ανανεώνουν το έργο.
Κάθε πράκτορας έχει το δικό του απομονωμένο sandbox. Μέσα σε αυτό, εργάζεται με ένα τοπικό αντίγραφο του αποθετηρίου, το οποίο διαχειρίζεται ένα μικρό CLI. Το CLI ζητά από το επίπεδο ελέγχου να εντοπίσει το αποθετήριο και, στη συνέχεια, ανακτά και υποβάλλει αλλαγές μέσω της υπηρεσίας Git. Ένας διακομιστής μεσολάβησης πρακτόρων ελέγχει την πρόσβαση για τα αιτήματα των sandbox πριν φτάσουν στην υπηρεσία Git. Η υπηρεσία Git διαβάζει και γράφει αποθετήρια σε ένα κοινόχρηστο σύστημα αρχείων και αποφασίζει αν κάθε υποβολή θα γίνει το πιο πρόσφατο αποδεκτό commit. Αυτό το σύστημα αρχείων παρέχεται από το AWS S3Files, το οποίο καθιστά τον αποθηκευτικό χώρο που βασίζεται στο S3 προσβάσιμο ως συνηθισμένα αρχεία και καταλόγους. Ο αποθηκευτικός χώρος χωρίζεται σε απομονωμένα κελιά, το καθένα με το δικό του σύστημα αρχείων και τα δικά του αντίγραφα της υπηρεσίας Git. Αφού γίνει αποδεκτό ένα commit, διεργασίες παρασκηνίου εξάγουν κείμενο και άλλες χρήσιμες πληροφορίες από τα έγγραφα που άλλαξαν, αποθηκεύοντας τα αποτελέσματα ξεχωριστά από το ιστορικό του αποθετηρίου και καθιστώντας τα διαθέσιμα όταν οι πράκτορες φορτώνουν ή ανανεώνουν το έργο.
Στη συνέχεια, εξετάζουμε τα στοιχεία ένα προς ένα.
CLI: Εργασία με τοπικά αρχεία στα sandbox
Οι πράκτορες εκτελούνται στο SPACE, την εσωτερική μας πλατφόρμα sandbox. Κάθε sandbox διαθέτει ένα μικρό CLI που αναπαράγει τοπικά το αποθετήριο και το διατηρεί συγχρονισμένο. Για κάθε ουσιαστική μονάδα εργασίας που ολοκληρώνει ο πράκτορας, το CLI υποβάλλει τις αλλαγές ως commit.
Οι πράκτορες συνήθως χρησιμοποιούν μόνο ένα μικρό μέρος των αρχείων του έργου, οπότε δεν είναι απαραίτητο να αναπαραχθεί τοπικά ολόκληρο το αποθετήριο εκ των προτέρων. Γι' αυτό, το CLI φέρνει τα αρχεία τοπικά κατ' απαίτηση: τα μεγάλα και τα δυαδικά αρχεία που αποθηκεύονται μέσω του Git Large File Storage (LFS) φτάνουν ως μικρά αρχεία δείκτη που καταγράφουν το πραγματικό μέγεθος του αντικειμένου, ώστε ο πράκτορας να μπορεί να χρησιμοποιήσει το όνομα και το μέγεθος για να αποφασίσει αν αξίζει η λήψη. Για έγγραφα όπως τα PDF, ο πράκτορας διαβάζει πρώτα το αναλυμένο κείμενο και κατεβάζει τα αρχεία προέλευσης μόνο όταν είναι απαραίτητο.
Μια άλλη προφανής επιλογή θα ήταν η χρήση ενός εικονικού συστήματος αρχείων. Δοκιμάσαμε μια υλοποίηση βασισμένη στο FUSE, αλλά ήταν περίπου 400 φορές πιο αργή σε φόρτους εργασίας με έντονη χρήση του συστήματος αρχείων σε σύγκριση με τα τοπικά αρχεία, καθώς κάθε αίτημα απαιτεί έναν πλήρη κύκλο επικοινωνίας μέσω δικτύου. Επιπλέον, συνήθως απαιτεί προνομιακές δυνατότητες από τον κεντρικό υπολογιστή, οπότε κάθε πράκτορας θα έπρεπε να εκτελείται σε προνομιακό sandbox.
Επίπεδο ελέγχου: Εντοπισμός αποθετηρίων και παροχή πρόσβασης
Το επίπεδο ελέγχου εντοπίζει πού είναι αποθηκευμένο κάθε αποθετήριο και παρέχει πρόσβαση σε αυτό. Όταν δημιουργείται ένα αποθετήριο, το επίπεδο ελέγχου το αναθέτει σε ένα κελί αποθήκευσης, δηλαδή μια απομονωμένη μονάδα αποθήκευσης με τα δικά της αντίγραφα (replicas) της υπηρεσίας Git. Όταν ένας πράκτορας ξεκινά να εργάζεται σε ένα έργο, το CLI ρωτά το επίπεδο ελέγχου πού είναι αποθηκευμένο το αποθετήριο. Το επίπεδο ελέγχου επιστρέφει την τοποθεσία και προσωρινά διαπιστευτήρια για την υπηρεσία Git. Το επίπεδο ελέγχου δεν διαβάζει ούτε γράφει ποτέ δεδομένα αποθετηρίων. Η υπηρεσία Git αποφασίζει τι εισέρχεται σε ένα αποθετήριο.
Υπηρεσία Git: Μεταφορά δεδομένων και συντονισμός ενημερώσεων
Η υπηρεσία Git εκτελεί λειτουργίες Git και μεταφέρει τα περιεχόμενα και το ιστορικό εκδόσεων των αποθετηρίων μεταξύ των sandbox και του αποθηκευτικού χώρου. Πρόκειται για ένα λεπτό επίπεδο γύρω από τις εντολές εξυπηρέτησης του ίδιου του Git. Υποστηρίζει την ανακάλυψη ref, για να ενημερώνει τον πελάτη πού βρίσκεται το head του αποθετηρίου, το upload-pack για κλωνοποίηση και ανάκτηση και το receive-pack για τη λήψη νέων αντικειμένων και αιτήματος προώθησης του head του αποθετηρίου. Εξυπηρετεί επίσης το API του Git LFS: για μεγάλα και δυαδικά αρχεία, εκδίδει βραχύβιους συνδέσμους, ώστε τα sandbox να μπορούν να ανεβάζουν και να κατεβάζουν αυτά τα αρχεία απευθείας από το S3.
Ξεκινήσαμε με έναν έτοιμο διακομιστή forge, ώστε να μπορούμε να αναπτύσσουμε πρωτότυπα των διεπαφών πρακτόρων και χρηστών παράλληλα με την κατασκευή του δικού μας ελαφρού forge, εστιασμένου μόνο στις λειτουργίες Git που χρειαζόμαστε.
Η υπηρεσία αποτελείται από έναν στόλο αντιγράφων (replicas), καθένα από τα οποία είναι μια εκτελούμενη παρουσία του ίδιου διακομιστή. Ένα κελί ομαδοποιεί κοινόχρηστο αποθηκευτικό χώρο με ένα σύνολο αντιγράφων και τις υποστηρικτικές τους υπηρεσίες. Έτσι, τα αντίγραφα μέσα σε ένα κελί μπορούν να έχουν πρόσβαση στο ίδιο κοινόχρηστο σύστημα αρχείων, αντί να διατηρεί το καθένα ξεχωριστή εκδοχή κάθε αποθετηρίου.
Αυτός ο κοινόχρηστος αποθηκευτικός χώρος επιτρέπει στα αντίγραφα να παραμένουν χωρίς κατάσταση (stateless). Οποιοδήποτε αντίγραφο στο κελί μπορεί να εξυπηρετήσει οποιοδήποτε από τα αποθετήριά του, οπότε η αντικατάσταση ή η προσθήκη αντιγράφων δεν απαιτεί μετακίνηση δεδομένων αποθετηρίων μεταξύ διακομιστών. Τα αιτήματα για ένα αποθετήριο κατευθύνονται συνήθως στο ίδιο αντίγραφο, ώστε οι κρυφές μνήμες του να παραμένουν χρήσιμες, αλλά το αποθετήριο δεν εξαρτάται από τη συνεχή διαθεσιμότητα της συγκεκριμένης παρουσίας.
Το βήμα αποδοχής ελέγχει τις αμετάβλητες συνθήκες του αποθετηρίου, ώστε κάθε αποδεκτό commit να αντιστοιχεί σε έγκυρη κατάσταση του αποθετηρίου. Ορίζουμε ένα ρητό συμβόλαιο για κάθε αποθετήριο, ώστε μηχανικοί έλεγχοι να μπορούν να αποτρέπουν την υπερβολική αύξηση του μεγέθους του. Τα μεγάλα και τα δυαδικά αρχεία, όπως PDF και εικόνες, αποθηκεύονται μέσω του Git LFS και όχι ως ακατέργαστα Git blobs. Η συμπύκνωση διατηρεί διαθέσιμο το πρόσφατο ιστορικό, περιορίζοντας παράλληλα το μέγεθος του αποθετηρίου. Μετά από μια επιτυχή υποβολή, το CLI ρωτά την υπηρεσία Git αν το αποθετήριο χρειάζεται συμπύκνωση. Αν ο αριθμός των διατηρούμενων commit υπερβαίνει ένα όριο, η υπηρεσία Git κρατά μόνο ένα μικρότερο σύνολο από τα πιο πρόσφατα commit. Το παλαιότερο ιστορικό αντικαθίσταται από ένα ενιαίο αρχικό στιγμιότυπο και τα πρόσφατα commit αναπαράγονται, ώστε να ενημερωθούν τα αναγνωριστικά τους.
Ένα απλό βήμα συγχρονισμού διαχειρίζεται τους ταυτόχρονους συντάκτες. Παρακολουθεί το πιο πρόσφατο αποδεκτό commit, το λεγόμενο head. Όταν λαμβάνει μια υποβολή, την αποδέχεται μόνο αν η υποβολή βασίστηκε σε αυτό το head. Διαφορετικά, στέλνει μια δομημένη απόκριση stale-base· ο πράκτορας που έχασε πρέπει τότε να αναπαραγάγει την αλλαγή του πάνω στο νέο head και να την υποβάλει ξανά. Αυτός ο σχεδιασμός διασφαλίζει ότι οι ταυτόχρονοι πράκτορες δεν αντικαθιστούν σιωπηρά ο ένας τη δουλειά του άλλου, χωρίς να προκαλούνται σημαντικές καθυστερήσεις. Στις ροές εργασίας παραγωγής μας, κάτω από το 2% των υποβολών απορρίπτονται ως παρωχημένες. Συνολικά, ο διάμεσος χρόνος απόκρισης των υποβολών είναι κάτω από 1,7 δευτερόλεπτα και ο χρόνος απόκρισης p99 είναι κάτω από 8 δευτερόλεπτα.
Η υπηρεσία Git καταγράφει επίσης κάθε αποδεκτή αλλαγή. Για κάθε αποδεκτή εγγραφή, προσθέτει μια καταχώριση σε ένα outbox, ένα αρχείο καταγραφής που περιλαμβάνει το αποθετήριο, το νέο commit, τον χρήστη που έκανε την αλλαγή και τις διαδρομές που άλλαξαν. Μεταγενέστερες υπηρεσίες, όπως ο αναλυτής, διαβάζουν αυτό το αρχείο καταγραφής για να βρουν νέα εργασία.
Όλα αυτά μαζί συνθέτουν ένα επίπεδο διαχείρισης αποθετηρίων, χωρίς τα μέρη που δεν χρειάζονται οι πράκτορες. Τα pull request είναι περιττά, επειδή κανένας άνθρωπος δεν ελέγχει κάθε αλλαγή. Αντ' αυτού, η υπηρεσία Git ελέγχει το συμβόλαιο κατά την υποβολή, ο πράκτορας που χάνει σε μια συνθήκη ανταγωνισμού εφαρμόζει ξανά τη δική του αλλαγή και το ιστορικό των commit καταγράφει ποιος άλλαξε τι. Ντετερμινιστικοί έλεγχοι κρατούν κάθε αποθετήριο εντός του συμβολαίου του, αντί να βασίζονται σε έναν ανθρώπινο χειριστή για τη διαχείριση της αύξησης του μεγέθους του.
Αποθήκευση: Μόνιμη διατήρηση της εργασίας
Το επίπεδο αποθήκευσης αποθηκεύει μόνιμα τα δεδομένα των αποθετηρίων, ανεξάρτητα από τα sandbox και τα αντίγραφα της υπηρεσίας Git. Τα αποθετήρια βρίσκονται στο AWS S3Files, το οποίο παρέχει πρόσβαση σε αποθηκευτικό χώρο βασισμένο στο S3 μέσω μιας διεπαφής συστήματος αρχείων που μπορεί να χρησιμοποιήσει το τυπικό Git χωρίς τροποποιήσεις. Καθένα από αυτά είναι ένα bare αποθετήριο Git στο κοινόχρηστο σύστημα αρχείων, που περιέχει τα αντικείμενα και τις αναφορές του αποθετηρίου αντί για ένα checkout εργασίας.
Η αποσύνδεση της αποθήκευσης από την υπολογιστική ισχύ επιτρέπει στα sandbox να παραμένουν εφήμερα. Κάθε πράκτορας αποκτά το δικό του sandbox και πολλοί πράκτορες μπορούν να εργάζονται στο ίδιο έργο χωρίς να μοιράζονται ένα μηχάνημα. Αν ένα sandbox καταρρεύσει, κινδυνεύει μόνο η εργασία που δεν έχει υποβληθεί.
Θα μπορούσαμε, εναλλακτικά, να δώσουμε σε κάθε έργο ένα μακρόβιο sandbox κοινό για όλους τους πράκτορές του, ώστε τα αρχεία του έργου να βρίσκονται στον δίσκο εκείνου του μηχανήματος. Ωστόσο, αυτό θα έδενε την υπολογιστική ισχύ των πρακτόρων με το σημείο όπου εκτελείται το μηχάνημα και θα απαιτούσε να έχει διαστασιολογηθεί για τις πιο φορτωμένες περιόδους του. Θα έπρεπε επίσης να παραμένει σε καλή κατάσταση για μήνες, με τα αντίγραφα ασφαλείας και την ανάκτηση να διαχειρίζονται ως μέρος του συστήματος αποθήκευσης του έργου.
Μεταγενέστερη επεξεργασία: Πώς τα έγγραφα γίνονται αναγνώσιμα για τους πράκτορες
Το κύριο μεταγενέστερο στοιχείο είναι μια αλυσίδα ανάλυσης (parser pipeline) που εξάγει κείμενο και μεταδεδομένα από νέα ή ενημερωμένα έγγραφα, ώστε τα αρχεία του έργου να είναι εύκολα αναγνώσιμα από τους πράκτορες. Μια διεργασία ανάλυσης (parser worker) καταναλώνει ενημερώσεις από την ουρά της ροής αλλαγών, εντοπίζει τα αρχεία που άλλαξαν από τα μεταδεδομένα του commit και ανακτά τα ακατέργαστα bytes χρησιμοποιώντας το hash του περιεχομένου. Στη συνέχεια, αναλύει το έγγραφο για να παραγάγει το εξαγόμενο κείμενο και τα μεταδεδομένα του εγγράφου.
Τα αποτελέσματα της ανάλυσης βρίσκονται εκτός του αποθετηρίου, σε έναν χώρο αποθήκευσης με κλειδί το hash του εγγράφου προέλευσης. Αυτά τα παραγόμενα αρχεία δεν γίνονται ποτέ commit πίσω στο αποθετήριο, καθώς αυτό θα επιβάρυνε άσκοπα το ιστορικό και θα αύξανε τον αριθμό των ταυτόχρονων εγγραφών. Αντίθετα, τα αποτελέσματα της ανάλυσης φτάνουν σε ένα sandbox μέσω του checkout και του συγχρονισμού. Κάθε checkout περιλαμβάνει έναν δεσμευμένο κατάλογο που χρησιμοποιεί το CLI για την τοπική αναπαραγωγή αυτών των αρχείων. Η ανάλυση γίνεται ασύγχρονα, οπότε μια διεργασία ανάλυσης στο παρασκήνιο δεν μπλοκάρει τα checkout.
Πώς χρησιμοποιούν οι πράκτορες τον χώρο εργασίας
Οι πράκτορες εξερευνούν την έκδοση του αποθετηρίου που έχει φορτωθεί στο sandbox χρησιμοποιώντας τυπικά εργαλεία συστήματος αρχείων. Αντί να ακολουθούν μια σταθερή διαδικασία «πρώτα αναζήτηση και μετά ανάγνωση», εμφανίζουν τα περιεχόμενα φακέλων, αναζητούν στα περιεχόμενα αρχείων με το grep, διαβάζουν σχετικά αποσπάσματα και χρησιμοποιούν όσα βρίσκουν για να αποφασίσουν πού θα ψάξουν στη συνέχεια.
Όπως και το Computer, η Αναζήτηση χρησιμοποιεί την ίδια προσέγγιση μέσω των τυπικών εργαλείων αρχείων της. Ένας ξεχωριστός πράκτορας εξερεύνησης πραγματοποιεί αναζήτηση στο έργο με πιο περιορισμένο προϋπολογισμό και επιστρέφει σχετικές διαδρομές αρχείων και υποστηρικτικά αποσπάσματα. Στη συνέχεια, το μοντέλο απάντησης διαβάζει τα επιλεγμένα αρχεία και δημιουργεί την απάντηση. Η επαναχρησιμοποίηση ενός υπάρχοντος sandbox έργου μειώνει τον χρόνο προετοιμασίας: η σύνδεση σε ένα ήδη έτοιμο checkout διαρκεί περίπου 2,9 δευτερόλεπτα, έναντι περίπου 8 δευτερολέπτων για μια ψυχρή εκκίνηση.
Το αναλυμένο κείμενο καθιστά τα μεγαλύτερα έγγραφα, όπως PDF και αρχεία Office, αναζητήσιμα με τα ίδια εργαλεία. Ο πράκτορας ελέγχει πρώτα ένα manifest, μια λίστα που δείχνει ποια έγγραφα διαθέτουν εξαγόμενο κείμενο, και στη συνέχεια αναζητά και διαβάζει αυτό το κείμενο ως συνηθισμένα αρχεία. Κατεβάζει το αρχικό έγγραφο μόνο όταν το κείμενο δεν επαρκεί, για παράδειγμα για να εξετάσει γραφήματα, τη διάταξη ή ενσωματωμένα δεδομένα.
Συγκρίναμε αυτή την προσέγγιση με τη σημασιολογική αναζήτηση σε ευρετήριο, σε 150 οικονομικές ερωτήσεις που αφορούν ένα μόνο έγγραφο, στο ίδιο σώμα κειμένων. Ο πράκτορας εξερεύνησης πέτυχε βαθμολογία 0,867 στην ανάκτηση του σωστού εγγράφου και 0,627 στη σωστή απάντηση, έναντι περίπου 0,39 και 0,37 για τη σημασιολογική αναζήτηση, δηλαδή περίπου 1,7 φορές καλύτερη επίδοση στις απαντήσεις και 2 φορές καλύτερη στην ανάκτηση, με περίπου 25% χαμηλότερο χρόνο απόκρισης. Ο πράκτορας εξερεύνησης εργάζεται κυρίως με εξαγόμενο κείμενο και σπάνια κατεβάζει τα αρχικά PDF.
Μία κοινή υποδομή
Η μόνιμη μνήμη του Computer χρησιμοποιεί την ίδια υποδομή συστήματος αρχείων. Το Perplexity Brain, το wiki γνώσεων του Computer, αποθηκεύει τη μνήμη σε αποθετήρια γνώσεων με δικό τους ιστορικό και δικές τους πολιτικές. Ο διαχωρισμός της γνώσης από τα αρχεία του έργου σημαίνει ότι οι ενημερώσεις μνήμης στο παρασκήνιο δεν ανταγωνίζονται τις επεξεργασίες αυτών των αρχείων. Μια συνεδρία που χρειάζεται και τα δύο φορτώνει και τα δύο αποθετήρια.
Οι πράκτορες παρασκηνίου διαβάζουν την υπάρχουσα γνώση, ενσωματώνουν νέες πληροφορίες και αποθηκεύουν τις ενημερωμένες σελίδες ως commit. Άλλοι πράκτορες διαβάζουν αυτές τις σελίδες με συνηθισμένα εργαλεία αρχείων και οι άνθρωποι μπορούν επίσης να τις επεξεργαστούν. Οι συντάκτες μοιράζονται τη δουλειά τους μέσω του αποθετηρίου αντί να συντονίζονται απευθείας με κάθε αναγνώστη. Το ιστορικό των commit καταγράφει ποιος άλλαξε τι, ενώ το outbox αναφέρει τις αποδεκτές ενημερώσεις στις μεταγενέστερες υπηρεσίες. Άνθρωποι και πράκτορες μπορούν να βασίζονται ο ένας στη δουλειά του άλλου, με καταγραφή του τρόπου με τον οποίο εξελίχθηκε η γνώση.
Συμπέρασμα
Όταν άνθρωποι και πράκτορες μοιράζονται ένα έργο, ο χώρος εργασίας κάνει κάτι περισσότερο από το να αποθηκεύει αρχεία. Παρέχει ένα κοινό σημείο για τον συνδυασμό των συνεισφορών και την παρακολούθηση των αλλαγών. Το Git ήδη παρέχει μεγάλο μέρος αυτής της βάσης. Εμείς προσθέτουμε συντονισμό και αυτοματοποιημένους ελέγχους, ώστε οι πράκτορες να μπορούν να υποβάλλουν εργασία χωρίς να χρειάζεται ένας άνθρωπος να εγκρίνει κάθε ενημέρωση. Το αποτέλεσμα είναι ένα forge περιορισμένο στα απολύτως απαραίτητα, καθώς η συνεργασία μεταξύ πρακτόρων και η ανάπτυξη λογισμικού με πολλούς συνεισφέροντες είναι στην ουσία το ίδιο πρόβλημα.
Οι πράκτορες εργάζονται σε ανεξάρτητα, προσωρινά sandbox, ενώ συνεισφέρουν σε μόνιμα αποθετήρια. Τα όρια των αποθετηρίων διατηρούν την αύξηση του μεγέθους τους σε διαχειρίσιμα επίπεδα, οι ρητές λήψεις επιτρέπουν στους πράκτορες να επιλέγουν τι θα ανακτήσουν και τα συνηθισμένα αρχεία τούς επιτρέπουν να εξερευνούν με οικεία εργαλεία. Οι ενημερώσεις στο παρασκήνιο, οι διαδραστικές επεξεργασίες και οι προγραμματισμένες εργασίες μπορούν να βασίζονται η μία στη δουλειά της άλλης χωρίς άμεσο συντονισμό.
Καθώς όλο και περισσότεροι πράκτορες εργάζονται αυτόνομα μέσα στα Έργα, ο κοινόχρηστος χώρος εργασίας τους πρέπει να παραμένει αξιόπιστος και κατανοητός για τους ανθρώπους. Ο στόχος είναι απλός: κάθε αλλαγή πρέπει να διαρκεί περισσότερο από τον πράκτορα που την παρήγαγε, να γίνεται διαθέσιμη στον επόμενο συνεργάτη και να αφήνει σαφή καταγραφή του τι άλλαξε.
Παραπομπή
@online{perplexity2026BuildingSharedWorkspacesForPeopleAndAgents,
author = {{Perplexity} and Se Won Jang and Peter Hart and Kartik Kapur and Kevin Lau and Sidhant Rajadnya and Ishbir Singh and Thomas Wang and Jarrod Bryan and Claire Beamer and Jeremy Yang},
title = {{Building shared workspaces for people and agents}},
date = {2026-10-12},
url = {https://www.perplexity.ai/hub/blog/building-shared-workspaces-for-people-and-agents}
}