Cara kita mbangun OWL, arsitektur anyar ing balik browser Atlas adhedhasar ChatGPT
Ing njero arsitektur proses anyar kita, sing menehi cara luwih cepet lan luwih pinter kanggo nggunakke web.
Dening Ken Rockot, Member of the Technical Staff lan Ben Goodger, Head of Engineering, ChatGPT Atlas
Minggu kepungkur, kita ngluncurake ChatGPT Atlas, cara anyar kanggo njelajah web karo ChatGPT ing sisihmu. Saliyane dadi browser web kanthi fitur lengkap, Atlas menehi sekilas babagan masa depan: jagad sing ngidini sampeyan nggawa ChatGPT ngubengi internet kanggo takon, menehi saran, lan ngrampungake tugas kanggo sampeyan. Ing tulisan iki, kita mbabar salah siji aspek rekayasa paling kompleks saka produk iki: carane kita ngowahi ChatGPT dadi browser sing saya migunani nalika sampeyan terus nggunakke.
Nggawe ChatGPT dadi co-pilot sejati kanggo web tegesé mbayangake ulang kabeh arsitektur browser: misahake Atlas saka runtime Chromium. Iki mbutuhake ngembangake cara anyar kanggo ngintegrasikake Chromium sing ngidini kita nepaki tujuan produk: startup instan, tetep responsif sanajan sampeyan mbukak luwih akeh tab, lan nggawe pondasi sing kuwat kanggo kasus panggunaan agen.

Chromium dadi blok bangunan sing alami. Iki nyedhiyakake mesin web paling mutakhir kanthi model keamanan sing kukuh, rekam jejak kinerja sing wis kabukten, lan kompatibilitas web sing tanpa tandhing. Kajaba iku, Chromium dikembangake dening komunitas global sing terus nambah kualitasé. Iki dadi pilihan umum kanggo browser web desktop modern.
Tim desain kita sing berbakat nduweni tujuan ambisius kanggo pengalaman pangguna, kalebu animasi sugih lan efek visual kanggo fitur kaya mode Agent. Iki nuntut tim rekayasa kita nggunakke framework native paling modern kanggo UI kita (SwiftUI, AppKit lan Metal), tinimbang mung ngganti tampilan UX Chromium open source. Mula, UI Atlas minangka pembangunan ulang sing komprehensif saka kabeh UX aplikasi.
Kita uga nduweni tujuan produk liyane kaya wektu startup sing cepet lan ndhukung atusan tab tanpa ngorbanake kinerja. Tujuan iki angel digayuh nganggo Chromium standar, amarga Chromium nduweni akeh anggapan babagan rincian saka urutan boot, model threading lan model tab. Kita sempat nimbang nggawe owah-owahan gedhe ing kéné, nanging kita pengin supaya kumpulan patch kita marang Chromium tetep terarah supaya bisa cepet nggabungake versi anyar. Supaya kecepatan pangembangan bisa maksimal, kita kudu nemokake cara liya kanggo ngintegrasikake lan ngoperasikake runtime Chromium.
Uji nyata kanggo investasi teknis kita ora mung manawa iki bakal ngidini eksperimen, iterasi, lan pengiriman fitur anyar luwih cepet—nanging uga ngidini kita njaga bagean inti saka budaya rekayasa OpenAI: ngirim ing dina pisanan. Saben insinyur anyar nggawe lan nggabungake owah-owahan cilik ing sore dina kapisané. Kita kudu mesthekake iki tetep bisa sanajan Chromium bisa mbutuhake pirang-pirang jam kanggo checkout lan build.
Jawaban kita kanggo tantangan iki yaiku mbangun lapisan arsitektur anyar sing kita sebut OWL: OpenAI’s Web Layer. OWL yaiku integrasi Chromium versi kita, sing kalebu mbukak proses browser Chromium ing njaba proses app Atlas utama.
Coba bayangna kaya mangkéné: Chromium ngrevolusi browser kanthi mindhah tab menyang proses sing kapisah. Kita nggawa gagasan iki luwih adoh kanthi mindhah Chromium dhewe metu saka proses aplikasi utama menyang lapisan layanan sing terisolasi. Owah-owahan iki mbukak runtutan manfaat:
- App sing luwih prasaja lan modern: Atlas dibangun meh kabeh nganggo SwiftUI lan AppKit. Siji basa, siji tech stack, siji codebase sing resik.
- Startup luwih cepet: Chromium boot kanthi asinkron ing latar mburi. Atlas ora ngenteni—piksel katon ing layar meh sakcepete.
- Isolasi saka macet lan crash: Chromium iku mesin web sing kuat lan kompleks. Yen thread utamane macet, Atlas ora. Yen Chromium crash, Atlas tetep mlaku.
- Masalah merge luwih sithik: Amarga kita ora mbangun ing ndhuwur UI open source Chromium kanthi akeh, diff kita marang upstream Chromium luwih cilik lan luwih gampang dirawat.
- Iterasi luwih cepet: Akèh insinyur ora perlu mbangun Chromium lokal. OWL dikirim internal minangka binary sing wis dibangun, mula build Atlas butuh menit, dudu jam.
Amarga mayoritas insinyur ing tim kita ora rutin mbangun Chromium saka source, pangembangan bisa maju luwih cepet—malah anggota tim anyar bisa nggabungake owah-owahan sederhana ing sore pisanané.
Ing level dhuwur, browser Atlas yaiku OWL Client, lan proses browser Chromium yaiku OWL Host. Loro-loroné komunikasi liwat IPC, yaiku Mojo(mbukak ing jendhela anyar), sistem passing pesen duwèké Chromium dhewe. Kita nulis binding Swift (lan malah TypeScript) kustom kanggo Mojo, supaya app Swift kita bisa langsung nelpon interface ing sisi host.
Pustaka klien OWL nyedhiyakake API Swift publik sing prasaja, sing ngabstraksikake sawetara konsep kunci sing diekspos dening lapisan layanan host:
- Session: Ngatur lan ngontrol host sacara global
- Profile: Ngatur status browser kanggo profil pangguna tartamtu
- WebView: Ngontrol lan nyematake konten web individu (umpamane render, input, navigasi, zoom, lsp.)
- WebContentRenderer: Nerusake event input menyang pipeline rendering Chromium lan nampa umpan balik saka renderer
- LayerHost/Client: Tukar informasi compositing antarane UI lan Chromium
Ana uga macem-macem titik pungkasan layanan kanggo ngatur fitur level dhuwur kaya bookmarks, downloads, extensions, lan autofill.
WebView, sing nuduhake ruang presentasi bebarengan nanging eksklusif ing app klien, ditukar mlebu lan metu saka kontainer compositing sing dienggo bebarengan. Contoné, jendhela browser kerep nduweni siji kontainer bebarengan sing katon lan milih tab ing tab strip bakal ngganti WebView tab kasebut menyang kontainer. Ing sisi Chromium, kontainer iki cocog karo gfx::AcceleratedWidget sing pungkasane didhukung dening CALayer. Kita ngekspos context ID saka layer kasebut menyang klien, ing ngendi NSView nyematake nganggo API privat CALayerHost.
Kasus khusus kaya dropdown <select> utawa color picker, sing dirender Chromium ing widget popup kapisah, nggunakke pendekatan sing padha. Iki ora nduweni content::WebContents, nanging ya nduweni content::RenderWidgetHostView kanthi gfx::AcceleratedWidget dhewe, mula model rendering delegasi sing padha tetep ditrapake.
OWL sacara internal njaga geometri tampilan tetep sinkron karo sisi Chromium, supaya compositor GPU bisa dianyari kanthi cocog lan tansah bisa ngasilake konten layer kanthi ukuran lan skala piranti sing bener.
Kita uga nggunakke maneh teknik iki kanggo kanthi selektif nampilake unsur UI native Views duwèké Chromium menyang Atlas (iki uga migunani kanggo miwiti fitur kaya prompt izin kanthi cepet tanpa kudu mbangun pengganti saka nol ing SwiftUI). Teknik iki akeh nyilih saka infrastruktur Chromium sing wis ana kanggo app web sing bisa diinstal ing macOS.
UI Chromium nerjemahake event platform (kaya NSEvent ing macOS) menyang model WebInputEvent duwèké Blink sadurunge diterusake menyang renderer. Nanging amarga OWL mbukak Chromium ing proses sing didhelikake, kita nindakake terjemahan kasebut dhewe ing pustaka klien Swift banjur nerusake event sing wis diterjemahake mudhun menyang Chromium.
Saka kono, event kasebut ngetutake siklus urip sing padha kaya event input nyata sing biasane ngetutake kanggo konten web. Iki kalebu event dibalekake maneh menyang klien saben kaca nuduhake manawa event iku ora ditangani. Nalika iki kedadeyan, kita nyintesis ulang NSEvent lan menehi kesempatan marang sisa app kanggo nangani input kasebut.
Fitur njelajah agen ing Atlas nggawa sawetara tantangan unik kanggo pendekatan kita babagan rendering, nerusake event input, lan panyimpenan data.
Model computer use kita ngarepake siji gambar layar minangka input. Nanging sawetara unsur UI, kaya dropdown <select> , dirender ing njaba wates tab ing jendhela kapisah. Ing mode Agent, kita nggabungake popup kasebut bali menyang gambar kaca utama ing koordinat sing bener supaya model bisa ndeleng konteks lengkap ing siji frame.
Kanggo input, kita nerapake prinsip sing padha: event sing diasilake agen dirutekake langsung menyang renderer, ora tau liwat lapisan browser sing duwe hak istimewa. Iki njaga wates sandbox sanajan ing kontrol otomatis. Contoné, kita ora pengin kelas event iki nyintesis shortcut keyboard sing nggawe browser nindakake perkara sing ora ana gandhengané karo konten web sing ditampilake.
Njelajah agen uga bisa mlaku ing konteks ephemeris "logged-out". Tinimbang nuduhake profil Incognito pangguna sing wis ana, sing bisa mbocorake status, kita nggunakke infrastruktur StoragePartition duwèké Chromium kanggo nggawe panyimpenan terisolasi ing memori. Saben sesi agen diwiwiti saka awal, lan nalika rampung, kabeh cookie lan data situs dibuwang. Sampeyan bisa mbukak akeh sesi agen "logged-out", saben-saben ing tab browseré dhewe, lan sabené terisolasi kanthi lengkap saka liyane.
Kabeh iki ora bakal bisa tanpa komunitas Chromium global lan karya luar biasa saka dheweke kanggo mbangun pondasi web modern. OWL mbangun ing ndhuwur pondasi kasebut kanthi cara anyar: misahake mesin saka app, nyawijikake platform web kelas dunia karo framework native modern, lan mbukak arsitektur sing luwih cepet lan luwih fleksibel.
Kanthi mikir ulang carane browser nahan Chromium, kita nggawe ruang kanggo jinis pengalaman anyar: startup luwih alus, UI luwih sugih, integrasi luwih rapet karo sisa OS, lan loop pangembangan sing obah sakcepete ide. Yen iki muni kaya tantangan sing cocog kanggo sampeyan, delengen lowongan kita kanggo kerja ing Atlas dadi Software Engineer, Atlas, Software Engineer, iOS, lan liyane.
Coba Atlas ing chatgpt.com/atlas(mbukak ing jendhela anyar).
Ucapan matur nuwun
Matur nuwun khusus kanggo Darin Fisher lan Marie Shin, sing wis nyumbang kanggo tulisan iki lan uga kanggo kabeh tim OpenAI sing mbangun Atlas.


