OpenAI Atlas: AI 기반 브라우징을 위한 OWL 아키텍처

OpenAI는 OWL(OpenAI's Web Layer)을 개발했는데, 이는 Chromium 런타임을 메인 애플리케이션 프로세스로부터 분리하여 Atlas 브라우저를 구동하는 새로운 아키텍처 레이어입니다. 이 분리 덕분에 Atlas는 Chromium의 웹 호환성과 SwiftUI 및 AppKit으로 구축된 고성능 네이티브 UI를 결합하면서, 에이전트 기반 AI 브라우징을 위한 견고한 기반을 제공합니다.

OWL 아키텍처: 앱에서 Chromium 분리

표준 Chromium 부팅 시퀀스와 스레딩 모델의 제약을 피하기 위해, OpenAI는 메인 Atlas 애플리케이션 프로세스 외부에서 고립된 서비스 레이어로 Chromium 브라우저 프로세스를 실행하도록 OWL을 개발했습니다. 이 변경으로 브라우저 엔진이 별도 프로세스로 이동하게 되며, 이는 Chromium이 탭을 격리하는 방식과 유사하지만 애플리케이션 수준에서 적용됩니다.

이 아키텍처는 여러 가지 기술적 장점을 제공합니다:

  • 네이티브 UI 성능: Atlas는 SwiftUI, AppKit, Metal을 사용하여 구축되며, 이를 통해 Chromium UX를 단순히 다시皮肤하는 것만으로는 달성하기 어려운 풍부한 애니메이션과 시각 효과를 구현할 수 있습니다.
  • 가속된 시작: Chromium이 백그라운드에서 비동기식으로 부팅되므로, Atlas UI는 엔진 초기화를 기다리지 않고 화면에 픽셀을 거의 즉시 렌더링할 수 있습니다.
  • 안정성 향상: 엔진을 격리함으로써, Chromium 메인 스레드가 멈추거나 프로세스가 충돌하더라도 Atlas는 계속 작동합니다.
  • 개발 속도: 대부분의 엔지니어는 사전 빌드된 바이너리인 OWL을 사용하여 작업할 수 있어, 빌드 시간이 시간에서 분으로 단축되고 새로운 팀メンバー가 첫날에 변경 사항을 병합할 수 있습니다.
  • 유지보수 간소화: 업스트림 Chromium 소스 코드와의 차이가 작아져 엔진의 새로운 버전을 통합하기가 더 쉬워집니다.

기술적 구현 및 통신

Atlas는 OWL 클라이언트로 작동하며, Chromium 브라우저 프로세스는 OWL 호스트 역할을 합니다. 두 간의 통신은 Chromium의 내부 메시지 전달 시스템인 Mojo를 통해 이루어지며, 맞춤형 Swift 및 TypeScript 바인딩을 사용합니다.

API 및 서비스 레이어

OWL 클라이언트 라이브러리는 다음 호스트 측 개념을 추상화하는 Swift API를 제공합니다:

  • 세션: 호스트의 전역 구성 및 제어.
  • 프로필: 특정 사용자 프로필의 브라우저 상태 관리.
  • WebView: 개별 웹 콘텐츠에 대한 제어, 탐색, 줌, 입력 포함.
  • WebContentRenderer: 입력 이벤트 전달 및 렌더러 피드백 관리.
  • LayerHost/Client: UI와 Chromium 간 컴포지팅 정보 교환.

렌더링 파이프라인

Atlas는 프로세스 경계를 넘어 픽셀을 투사하기 위해 위임된 렌더링 모델을 사용합니다. WebViews는 공유 컴포지팅 컨테이너로 교체됩니다. Chromium 측에서 이 컨테이너는 CALayer를 지원하는 gfx::AcceleratedWidget입니다. Atlas는 NSView를 통해 개인 CALayerHost API를 사용하여 이 레이어를 임베드합니다.

이 동일한 기술은 Chromium의 네이티브 Views UI(권한 프롬프트 등)와 별도의 팝업 위젯(색상 선택 도구 또는 <select> 드롭다운 등)을 Atlas 인터페이스로 투사하는 데 사용됩니다.

입력 이벤트 처리

Chromium이 숨은 프로세스에서 실행되므로, Atlas Swift 클라이언트 라이브러리는 Chromium으로 전달하기 전에 macOS NSEvents를 Blink의 WebInputEvent 모델로 변환합니다. 페이지가 이벤트를 처리하지 않으면, 이벤트는 클라이언트로 반환되어 나머지 애플리케이션이 처리할 수 있도록 NSEvent로 재합성됩니다.

에이전트 기반 브라우징 지원

OWL은 AI 모델이 웹과 상호작용하는 '에이전트 모드'를 지원하기 위한 특정 최적화를 포함합니다:

  • AI를 위한 시각적 컴포지팅: AI 모델에 화면의 단일 일관된 이미지를 제공하기 위해, Atlas는 별도의 팝업 창(드롭다운 등)을 올바른 좌표에서 메인 페이지 이미지로 다시 컴포지트합니다.
  • 샌드박스된 입력: 에이전트가 생성한 이벤트는 특권 브라우저 레이어를 우회하여 렌더러로 직접 라우팅됩니다.これにより、ウェブコンテンツと無関係なブラウザレベルの操作をトリガーする可能性のあるキーボードショートカットをAIが合成することを防ぎます。
  • 격리된 저장소: 에이전트 세션은 Chromium의 StoragePartition 인프라를 사용하여 일시적인 '로그아웃' 컨텍스트에서 실행될 수 있습니다.これにより, 세션이 종료될 때 폐기되는 쿠키 및 사이트 데이터용 격리된 메모리 내 저장소가 생성되어, 서로 다른 탭에서 여러 개의 격리된 에이전트 세션을 동시에 실행할 수 있습니다.

Sources