OpenAI Atlas: AI駆動型ブラウジングのためのOWLアーキテクチャ

OpenAIは、Atlasブラウザを動かすために、Chromiumランタイムをメインアプリケーションプロセスから分離する新しいアーキテクチャレイヤーであるOWL (OpenAI's Web Layer) を開発しました。このデカップリングにより、AtlasはChromiumのウェブ互換性と、SwiftUIおよびAppKitで構築された高性能なネイティブUIを組み合わせることができ、エージェント型AIブラウジングのための堅牢な基盤を提供します。

OWLアーキテクチャ:Chromiumをアプリから分離する

標準的なChromiumの起動シーケンスとスレッドモデルの制約を回避するため、OpenAIは、ChromiumブラウザプロセスをメインのAtlasアプリケーションプロセスの外にある独立したサービスレイヤーとして実行するようにOWLを開発しました。この移行により、Chromiumがタブを分離する方法と同様に、アプリケーションレベルでブラウザエンジンを別のプロセスに移動させています。

このアーキテクチャは、いくつかの技術的な利点を提供します:

  • ネイティブUIのパフォーマンス: AtlasはSwiftUI、AppKit、およびMetalを使用して構築されており、単にChromiumのUXをリスキンするだけでは達成が困難な、豊かなアニメーションや視覚効果を実現できます。
  • 起動の高速化: Chromiumがバックグラウンドで非同期に起動するため、AtlasのUIはエンジンの初期化を待つことなく、ほぼ瞬時に画面にピクセルを描画できます。
  • 安定性の向上: エンジンを分離することで、Chromiumのメインスレッドがハングしたりプロセスがクラッシュしたりしても、Atlasは動作を継続できます。
  • 開発速度の向上: ほとんどのエンジニアはOWLをビルド済みのバイナリとして扱うことができ、ビルド時間を数時間から数分に短縮し、新しいチームメンバーが初日に変更をマージできるようにします。
  • メンテナンスの簡素化: アップストリームのChromiumソースコードに対する差分(diff)が小さくなるため、新しいバージョンのエンジンを統合することが容易になります。

技術的な実装と通信

AtlasはOWL Clientとして動作し、ChromiumブラウザプロセスはOWL Hostとして機能します。両者の間の通信は、カスタムのSwiftおよびTypeScriptバインディングを使用したChromiumの内部メッセージパッシングシステムであるMojoを介して行われます。

APIおよびサービスレイヤー

OWLクライアントライブラリは、以下のホスト側の概念を抽象化するSwift APIを提供します:

  • Session: ホストのグローバルな設定と制御。
  • Profile: 特定のユーザープロファイルに対するブラウザ状態の管理。
  • WebView: ナビゲーション、ズーム、入力を含む、個々のウェブコンテンツの制御。
  • WebContentRenderer: 入力イベントの転送とレンダラーからのフィードバックの管理。
  • LayerHost/Client: UIとChromiumの間でのコンポジット情報の交換。

レンダリングパイプライン

Atlasは、プロセス境界を越えてピクセルを投影するために、委譲レンダリングモデルを使用しています。WebViewは共有コンポジットコンテナに切り替えられます。Chromium側では、このコンテナはCALayerによってバックアップされたgfx::AcceleratedWidgetです。Atlasは、NSViewを介したプライベートなCALayerHost APIを使用して、このレイヤーを埋め込みます。

この同じ技術が、ChromiumのネイティブViews UI(権限プロンプトなど)や、個別のポップアップウィジェット(カラーピッカーや<select>ドロップダウンなど)をAtlasのインターフェースに投影するために使用されています。

入力イベントの処理

Chromiumは隠れたプロセスで実行されているため、AtlasのSwiftクライアントライブラリは、macOSのNSEventsをChromiumに転送する前にBlinkのWebInputEventモデルに変換します。ページがイベントを処理しない場合、イベントはクライアントに戻され、アプリケーションの他の部分が処理できるようにNSEventとして再合成されます。

エージェント型ブラウジングのサポート

OWLには、AIモデルがウェブとやり取りする「エージェントモード」をサポートするための特定の最適化が含まれています:

  • AIのためのビジュアルコンポジット: AIモデルに画面の単一の整合した画像を提供するために、Atlasは個別のポップアップウィンドウ(ドロップダウンなど)を正しい座標でメインのページ画像にコンポジットします。

  • サンドボックス化された入力: エージェントが生成したイベントは、特権のあるブラウザレイヤーをバイパスしてレンダラーに直接ルーティングされます。これにより、AIがウェブコンテンツとは無関係なブラウザレベルのアクションをトリガーする可能性のあるキーボードショートカットを合成することを防ぎます。

  • 分離されたストレージ: エージェントセッションは、ChromiumのStoragePartitionインフラストラクチャを使用して、一時的な「ログアウト」コンテキストで実行できます。これにより、セッションが終了すると破棄されるクッキーやサイトデータのための分離されたインメモリストアが作成され、複数の分離されたエージェントセッションを異なるタブで同時に実行できるようになります。

Sources