shiichan

エージェントのログイン詰まりにサヨナラ!Browser Run に構造化ハンドオフが誕生!

みんな、しぃちゃんだよ!今日は Cloudflare の Browser Run にうれしいアップデートがあったから紹介するね!

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare Changelog で、Browser Run が Human in the Loop ワークフロー向けの構造化ハンドオフに対応したことが発表されたよ。Cloudflare 独自の CDP(Chrome DevTools Protocol)コマンドを使って、エージェントが「助けが必要だよ」と信号を送り、人間が Live View 経由でタスクを引き継いで、作業が終わったらエージェントが自動で再開できるようになるの。

複数ステップのブラウザ操作を自動でこなすエージェントにとって、ログイン画面や予期しないプロンプトひとつで処理全体が失敗しちゃうのはよくある悩みだよね。今回のアップデートは、そこにちゃんとした「一時停止・再開」の仕組みを用意したものなんだって。

今までどうだったの?

Browser Run(旧 Browser Rendering)には、今年の 4 月に Live View・Human in the Loop・Session Recordings といった機能がすでに追加されていたの。とはいえ、これまで人間の介入が必要になったときは、スクリプト側が Live View の URL を人間に共有して、作業が終わるまで自前でポーリング(定期確認)するしかなかったんだ。

つまり「介入をお願いする」「終わったことを検知する」の両方を、開発者が自分で組み立てる必要があったんだよ。

これで何が変わるの?

今回追加された構造化ハンドオフを使うと、この一連の流れが専用の CDP コマンドで完結するようになるよ。

  • エージェントが Cloudflare.handoff を呼ぶだけで、人間への指示とタイムアウトを添えて介入をリクエストできる
  • 人間側は Live View で画面を見ながら作業するだけ
  • 作業が終わると Cloudflare.handoffComplete イベントが発火して、エージェントが自動的に処理を再開できる

ログイン画面での MFA・SSO・CAPTCHA 対応、機密情報の入力、注文確認のような承認ステップなど、「全部は自動化しきれないけど、そこだけ人にお願いしたい」場面にぴったりの仕組みだね。

深く潜ってみよう

主なコマンドはこんな感じだよ。

  • Cloudflare.getLiveView — Live View の URL(devtoolsFrontendUrl)を発行するコマンド。modetabfulldevtools を選べて、expiresInMs で有効期限を指定できる(デフォルト 5 分、最大 1 時間)
  • Cloudflare.handoff — 人間への instructions(指示文)と、任意で timeout(最大 30 分、指定しなければタイムアウトなし)を渡して介入をリクエストするコマンド
  • Cloudflare.handoffComplete — 人間の作業が完了(またはタイムアウト)すると発火するイベント。successreason を受け取れる

公式サンプルはこんな流れだよ。

const cdp = await page.createCDPSession();

const { devtoolsFrontendUrl } = await cdp.send("Cloudflare.getLiveView", {
  mode: "tab",
});
console.log(`Human input needed: ${devtoolsFrontendUrl}`);

const handoffComplete = new Promise((resolve) => {
  cdp.once("Cloudflare.handoffComplete", resolve);
});

await cdp.send("Cloudflare.handoff", {
  instructions: "Please log in with your credentials",
  timeout: 600000,
});

const result = await handoffComplete;
console.log(result.success ? "Handoff complete" : `Failed: ${result.reason}`);

タイムアウトの目安としては、チェックボックス操作みたいな簡単なタスクなら 2〜3 分、複数ページのフォーム入力のような複雑なタスクなら 10〜15 分くらいが推奨されているみたい。

なお、Live View 経由のブラウザリクエストは常に「ボットトラフィック」として扱われるので、一部のサードパーティサービス側でブロックされる可能性がある点は注意が必要だよ。

まとめ

  • Browser Run の Human in the Loop に、CDP ベースの構造化ハンドオフが追加された
  • Cloudflare.getLiveViewCloudflare.handoffCloudflare.handoffComplete の流れで、一時停止・再開が自動化できる
  • 以前は Live View URL の共有とポーリングを自分で実装する必要があった
  • ログインの MFA・機密情報入力・承認ステップなど、人手が必要な場面を扱う AI エージェントを作っている人には見逃せないアップデートかも。