AIエージェントがWebワークフローを自動化する際、通常はブラウザのWeb層(PlaywrightおよびChrome DevTools Protocol(CDP)が公開するDOM)内で動作します。Amazon Bedrock AgentCoreブラウザは、このために安全で分離されたブラウザ環境を提供し、ページナビゲーション、フォーム入力、要素クリック、コンテンツ抽出など、大多数の自動化タスクを処理できます。しかし、Web層にはハードな境界があります。オペレーティングシステムによってレンダリングされるすべてのもの(ネイティブダイアログ、セキュリティプロンプト、証明書選択、コンテキストメニュー、Chrome設定さえも)はDOMの外にあり、CDPはそれらを認識できず、Playwrightも操作できません。
例えば、Webアプリケーションがwindow.print()を呼び出してシステム印刷ダイアログが表示された場合、Playwrightには操作可能なDOMがありません。ワークフローでキーボードショートカットや右クリックメニューが必要な場合、CDPはOSレベルでそれらのコマンドを発行するメカニズムを持ちません。ブラウザセッションがmacOSのプライバシーダイアログ、Windowsセキュリティプロンプト、または証明書選択に遭遇した場合、それらはWeb自動化層からは見えません。これらのシナリオは本番環境で表面化する傾向があり、テスト環境ではなく、特定のアプリケーション状態、OS設定、またはユーザー権限によって引き起こされます。
ビジョン対応エージェントでは課題がさらに深刻です。一般的なアーキテクチャは、スクリーンショットをキャプチャしてモデルに送信し、座標や指示を受け取って実行するというものです。このループはWebコンテンツではうまく機能しますが、ネイティブUIが表示された瞬間に機能しなくなります。スクリーンショットはキャプチャし、モデルは分析しますが、操作する手段がありません。CDPはOSがレンダリングしたものに到達できません。エージェントは何をすべきか正確に認識しても、それを実行する方法がありません。
そこで、AgentCoreブラウザ向けのOSレベルアクションを発表します。この新機能は、InvokeBrowser APIを通じて直接OS制御を公開し、エージェントがブラウザのWeb層からアクセスできるコンテンツだけでなく、画面上に表示されるすべてのコンテンツと対話できるようにします。フルデスクトップのスクリーンショットとOSレベルのマウス・キーボード制御を組み合わせることで、エージェントはネイティブUIを観察し、分析し、同じセッション内で操作できます。この記事では、OSレベルアクションの仕組み、サポートされるアクション、および開始方法を説明します。
仕組み
OSレベルアクションは、追加設定なしで新規および既存のブラウザ設定で利用可能です。セッションがアクティブになると、InvokeBrowser APIを通じてアクションをディスパッチします。各呼び出しは1つのアクション(タイプと引数で識別)を運び、SUCCESSまたはFAILEDステータスを返します。アクティブセッションはx-amzn-browser-session-idヘッダーで識別され、各OSレベルアクションを正しいブラウザセッションに結び付けます。
期待されるインタラクションパターンは、「アクション→スクリーンショット→反応」のループです。エージェントはアクション(クリック、入力、ショートカット)を実行し、スクリーンショットをキャプチャして現在の画面状態を観察し、その結果に基づいて次のアクションを決定します。このループにより、エージェントは動的UI(ワークフロー途中で表示されるネイティブダイアログやOSプロンプトを含む)に反応できます。
- エージェントがInvokeBrowserを使用してアクション(マウスクリック、キープレス、ショートカット)を送信。
- AgentCoreが完全なOSデスクトップ上でアクションを実行し、SUCCESSまたはFAILEDを返す。
- エージェントがスクリーンショットを要求して現在の画面状態を観察。
- AgentCoreがネイティブダイアログ、OSモーダル、ブラウザウィンドウ外のUIを含む完全なデスクトップをキャプチャし、Base64エンコードされたPNGを返す。
- エージェントがスクリーンショットをビジョンモデルに送信して、何が起こったか、次に何をすべきかを判断。
- エージェントが観察に基づいて次のアクションを送信し、ループを継続。
サポートされるアクション
OSレベルアクションは、マウス制御、キーボード入力、ビジュアルキャプチャの3つのカテゴリに分類されます。合計8つのアクションがあります:
- マウスアクション:mouseClick(クリック、座標はオプション、デフォルトは現在位置の左クリック)、mouseMove(カーソルを座標に移動)、mouseDrag(開始から終了までドラッグ、4つの座標が必要)、mouseScroll(スクロール、水平/垂直対応、deltaY負値で下スクロール)。
- キーボードアクション:keyType(テキスト入力、最大10,000文字)、keyPress(キーを押す、繰り返し回数を指定可能、最大100回)、keyShortcut(キーの組み合わせ、最大5キー、例:["ctrl","a"])。
- スクリーンショット:screenshot(全デスクトップをキャプチャ、Base64エンコードPNGを返す。データを返す唯一のアクション)。
すべてのキー名は小文字である必要があります。サポートされるキーには、単一文字(a-z、0-9)および名前付きキー(enter、tab、space、backspace、delete、escape、ctrl、alt、shiftなど)が含まれます。
はじめに
2つのクライアントが必要です:コントロールプレーンクライアント(bedrock-agentcore-control)はブラウザリソース管理用、データプレーンクライアント(bedrock-agentcore)はセッション中のアクションディスパッチ用です。最初にIAM実行ロールとカスタムブラウザを作成し、次にセッションを開始します。セッション開始後、invokeヘルパー関数を使用してOSレベルアクションをディスパッチします。例えば、座標(600,370)での左クリック:invoke(endpoint, sid, {"mouseClick": {"x":600, "y":370, "button":"LEFT"}})。その後、スクリーンショットをキャプチャ:invoke(endpoint, sid, {"screenshot": {"format":"PNG"}})。
典型的なユースケースは、window.print()によってトリガーされた印刷ダイアログの処理です。エージェントがスクリーンショットをキャプチャし、ビジョンモデルが「キャンセル」ボタンの座標(例:x:410,y:535)を特定し、その座標をマウスクリックし、再度スクリーンショットをキャプチャしてダイアログが閉じられたことを確認します。ワークフロー完了後、セッションを停止してリソースをクリーンアップします。
結論
AgentCoreブラウザは当初、AIエージェントに完全マネージドなクラウドベースのブラウザ環境を提供し、PlaywrightとCDPを通じてページナビゲーション、コンテンツ抽出、ワークフロー自動化を実現しました。OSレベルアクションは、その機能をWeb層を超えて画面上のUI要素にまで拡張します。ネイティブダイアログ、セキュリティプロンプト、キーボードショートカット、ブラウザクロムはもはや障害ではありません。エージェントは同じセッション内で完全なOSデスクトップを観察し、推論し、操作できるようになりました。既存のビジュアル理解機能やPlaywright、Amazon Nova Actとのフレームワーク統合と組み合わせることで、OSレベルアクションはブラウザ自動化の最後のギャップを埋めます。