News · Το OWL της OpenAI βάζει το Chromium σε ξεχωριστή διαδικασία, ώστε το Atlas να είναι μια εγγενής εφαρμογή SwiftUI

Dec, 114 λεπτά ανάγνωσης
Frontend

Το OWL της OpenAI βάζει το Chromium σε ξεχωριστή διαδικασία, ώστε το Atlas να είναι μια εγγενής εφαρμογή SwiftUI

Μια εις βάθος ανάλυση της αρχιτεκτονικής πίσω από το ChatGPT Atlas, όπου η μηχανή web λειτουργεί ως απομονωμένη υπηρεσία και το UI του browser έχει ξαναχτιστεί με τα εγγενή frameworks της Apple.

Η αντιστροφή: το Chromium ως υπηρεσία, όχι ως κέλυφος

Οι περισσότεροι browsers που προκύπτουν από το Chromium διανέμουν τη μηχανή και το UI της μαζί, και στη συνέχεια αλλάζουν την επιφανειακή εμφάνιση όσων βλέπει ο χρήστης. Η OpenAI ακολούθησε διαφορετική πορεία με το Atlas. Το επίπεδο αρχιτεκτονικής της, το OWL (OpenAI's Web Layer), τρέχει τη browser process του Chromium εντελώς εκτός της κύριας διαδικασίας της εφαρμογής Atlas, σε αυτό που οι συγγραφείς αποκαλούν απομονωμένο επίπεδο υπηρεσίας.

Το παρουσιάζουν ως επέκταση μιας κίνησης που το ίδιο το Chromium είχε ήδη κάνει: το Chromium έβαλε τις καρτέλες σε ξεχωριστές διαδικασίες, και το OWL βάζει το ίδιο το Chromium σε ξεχωριστή διαδικασία. Η εφαρμογή Atlas γίνεται ο OWL Client, ενώ η browser process του Chromium γίνεται ο OWL Host. Οι δύο επικοινωνούν μέσω Mojo, του δικού του συστήματος ανταλλαγής μηνυμάτων του Chromium, με προσαρμοσμένα bindings σε Swift και TypeScript, ώστε η εφαρμογή Swift να μπορεί να καλεί απευθείας τις διεπαφές του host.

Αυτή η βιβλιοθήκη client εκθέτει ένα μικρό Swift API γύρω από συγκεκριμένες έννοιες — Session, Profile, WebView, WebContentRenderer, και LayerHost/Client — καθώς και endpoints για σελιδοδείκτες, λήψεις, επεκτάσεις και αυτόματη συμπλήρωση. Στην πράξη, η μηχανή web αντιμετωπίζεται ως backend και όχι ως κληρονομημένο framework.

Τι κερδίζει η ομάδα frontend

Το όφελος που τονίζει η OpenAI είναι η ελευθερία σε εγγενές UI. Επειδή δεν χτίζουν πάνω στο ανοιχτού κώδικα UI του Chromium, το Atlas είναι γραμμένο σχεδόν αποκλειστικά σε SwiftUI και AppKit, με Metal για τα πλούσια animations που ήθελε η ομάδα σχεδίασης για λειτουργίες όπως το Agent mode. Μία γλώσσα, ένα stack, μία βάση κώδικα.

Ο διαχωρισμός διαδικασιών αποσυνδέει επίσης τις αστοχίες από την εκκίνηση. Το Chromium ξεκινά ασύγχρονα στο παρασκήνιο, ενώ τα pixels εμφανίζονται στην οθόνη σχεδόν στιγμιαία· αν το κύριο thread του Chromium παγώσει ή καταρρεύσει, το Atlas παραμένει σε λειτουργία. Και επειδή η διαφορά τους σε σχέση με το upstream Chromium είναι μικρότερη, η ενσωμάτωση νέων εκδόσεων Chromium γίνεται λιγότερο επίπονη.

Υπάρχει και ένα κίνητρο εμπειρίας ανάπτυξης, συνδεδεμένο ρητά με την κουλτούρα της OpenAI. Το OWL διανέμεται εσωτερικά ως προκατασκευασμένο binary, οπότε οι περισσότεροι engineers δεν χτίζουν ποτέ το Chromium από τον πηγαίο κώδικα — οι builds του Atlas διαρκούν λεπτά, όχι ώρες.

Κάθε νέος engineer κάνει και συγχωνεύει μια μικρή αλλαγή το απόγευμα της πρώτης του ημέρας. Έπρεπε να διασφαλίσουμε ότι αυτό ήταν εφικτό, παρόλο που το checkout και το build του Chromium μπορούν να διαρκέσουν ώρες.Montana Labs

Διασχίζοντας τα όρια της διαδικασίας: pixels και είσοδος

Η ενδιαφέρουσα μηχανική βρίσκεται στον τρόπο με τον οποίο ένα εγγενές UI ενσωματώνει περιεχόμενο που αποδίδεται σε άλλη διαδικασία. Τα WebViews εναλλάσσονται μέσα σε ένα κοινό container σύνθεσης. Στην πλευρά του Chromium, αυτό το container είναι ένα gfx::AcceleratedWidget που υποστηρίζεται από ένα CALayer· το OWL εκθέτει το context ID αυτού του layer στον client, όπου ένα NSView το ενσωματώνει χρησιμοποιώντας το ιδιωτικό API CALayerHost. Ειδικές περιπτώσεις, όπως τα dropdown επιλογών και οι επιλογείς χρωμάτων, που αποδίδονται από το Chromium σε ξεχωριστά popup widgets, χρησιμοποιούν την ίδια διαδρομή delegated rendering.

Η είσοδος διαγράφει την αντίστροφη διαδρομή. Κανονικά, το Chromium μεταφράζει τα NSEvents του macOS στο μοντέλο WebInputEvent του Blink μόνο του· επειδή το Chromium είναι κρυμμένο σε άλλη διαδικασία, το OWL κάνει αυτή τη μετάφραση στον client Swift και προωθεί τα ήδη μεταφρασμένα events προς τα κάτω. Τα events που δεν χειρίζονται επιστρέφουν, ανασυνθέτονται ως NSEvents, και η υπόλοιπη εφαρμογή έχει την ευκαιρία να τα χειριστεί.

Το OWL επαναχρησιμοποιεί επίσης την τεχνική προβολής για να τραβήξει επιλεγμένα κομμάτια του εγγενή UI Views του ίδιου του Chromium στο Atlas — έναν πρακτικό τρόπο να στήσουν προτροπές δικαιωμάτων χωρίς να τις ξαναχτίσουν σε SwiftUI. Οι συγγραφείς σημειώνουν ότι αυτό δανείζεται από την υπάρχουσα υποδομή του Chromium για εγκαθιστάμενες web εφαρμογές σε macOS.

Το Agent mode είναι εκεί όπου η αρχιτεκτονική δικαιολογεί την απομόνωσή της

Ο διαχωρισμός δεν αφορά μόνο τη στιλβωτική εμφάνιση του UI· διαμορφώνει τον τρόπο με τον οποίο συμπεριφέρεται η λειτουργία agentic περιήγησης. Το μοντέλο computer-use της OpenAI περιμένει μία μοναδική εικόνα οθόνης, αλλά popups όπως τα dropdown επιλογών αποδίδονται σε ξεχωριστά παράθυρα εκτός των ορίων μιας καρτέλας. Σε λειτουργία agent, το Atlas συνθέτει αυτά τα popups πίσω στην κύρια εικόνα της σελίδας στις σωστές συντεταγμένες, ώστε το μοντέλο να βλέπει ένα συνεκτικό πλαίσιο.

Η ασφάλεια απορρέει από το ίδιο όριο. Τα events που παράγονται από τον agent οδηγούνται απευθείας στον renderer, ποτέ μέσω του προνομιούχου επιπέδου του browser, ώστε η αυτοματοποιημένη είσοδος να μην μπορεί να συνθέσει συντομεύσεις πληκτρολογίου που θα οδηγούσαν τον browser εκτός του web περιεχομένου. Και οι συνεδρίες agent μπορούν να τρέξουν σε ένα εφήμερο, χωρίς σύνδεση, πλαίσιο χρησιμοποιώντας το StoragePartition του Chromium για να στήσουν απομονωμένους αποθηκευτικούς χώρους στη μνήμη — κάθε συνεδρία ξεκινά από την αρχή, απορρίπτει cookies και δεδομένα ιστότοπων όταν τελειώνει, και πολλαπλές συνεδρίες παραμένουν απομονωμένες μεταξύ τους.

Το συνεπαγόμενο: η ασφάλεια του agent σχεδιάστηκε μέσα στο μοντέλο διαδικασιών, δεν προστέθηκε εκ των υστέρων

Το δίδαγμα που αξίζει να κρατήσουμε από το OWL είναι ότι οι εγγυήσεις του agent στο Atlas — το μοντέλο βλέπει ολόκληρη τη σελίδα, η αυτοματοποιημένη είσοδος παραμένει εντός του sandbox, οι αποσυνδεδεμένες συνεδρίες δεν μπορούν να διαρρεύσουν κατάσταση — είναι συνέπειες μιας αρχιτεκτονικής απόδοσης και διαδικασιών που επιλέχθηκε εκ των προτέρων, όχι φίλτρα που προστέθηκαν αργότερα.

Για ομάδες που χτίζουν agentic προϊόντα πάνω σε σύνθετα runtimes τρίτων, αυτή η σειρά προτεραιότητας έχει σημασία. Η OpenAI αποσύνδεσε πρώτα τη μηχανή από την εφαρμογή, και στη συνέχεια χρησιμοποίησε αυτό το όριο για να επιβάλει πού μπορούν να φτάσουν τα αυτοματοποιημένα events και πού βρίσκονται τα δεδομένα συνεδρίας. Η σύνθεση, τα bindings Mojo, και η απομόνωση StoragePartition είναι όλα η ίδια απόφαση εκφρασμένη σε διαφορετικά επίπεδα: αντιμετωπίστε το ισχυρό, αδιαφανές στοιχείο ως υπηρεσία που οδηγείτε εσείς, ώστε να ελέγχετε τα σημεία επαφής όπου ένας agent το αγγίζει.

Find this story relevant to you?

Contact us to find a unique solution

Contact us

Χρειάζεστε συνεργάτη AI engineering που μπορεί να παραδώσει;

Βοηθάμε ομάδες στην Ελλάδα να ενσωματώσουν AI, να δημιουργήσουν AI-powered προϊόντα, να αυτοματοποιήσουν κρίσιμες ροές εργασίας και να εκσυγχρονίσουν τα συστήματα που τα στηρίζουν.

Get in touch

Σχετικά άρθρα

Περισσότερη ανάλυση για την παράδοση προϊόντων, τη λειτουργική ΤΝ και τη δουλειά στα συστήματα που κάνει την ανάπτυξη να αντέχει στην πράξη.

Jul, 13Ανάγνωση 4 λεπτών
Frontend

Η DNP εγκατέστησε το ChatGPT Enterprise σε δέκα τμήματα και μεταχειρίστηκε το παράθυρο συνομιλίας ως το βασικό περιβάλλον εργασίας

Jul, 134 λεπτά ανάγνωσης
Frontend

Το AdventHealth αναπτύσσει το ChatGPT σε εννέα πολιτείες αντιμετωπίζοντας την υιοθέτηση ως το ίδιο το προϊόν

Jul, 134 λεπτά ανάγνωσης
Frontend

Το AP+ χρησιμοποιεί το Codex για να φτιάξει λειτουργικά πρωτότυπα πληρωμών, όχι απλές οθόνες με κλικ