ブラウザ自動化
TriggerfishはCDP(Chrome DevTools Protocol)を使用した専用の管理Chromiumインスタンスを通じて、 深いブラウザ制御を提供します。エージェントはウェブをナビゲートし、ページと対話し、フォームを入力し、 スクリーンショットを撮り、ウェブワークフローを自動化できます — すべてポリシーの強制のもとで行われます。
アーキテクチャ
ブラウザ自動化はpuppeteer-coreの上に構築されており、CDPを介して管理Chromiumインスタンスに接続します。 すべてのブラウザアクションは、ブラウザに届く前にポリシーレイヤーを通過します。
TriggerfishはGoogle Chrome、Chromium、Braveを含むChromiumベースのブラウザを自動検出します。 検出はLinux、macOS、Windows、Flatpak環境の標準インストールパスをカバーします。
browser_navigateツールにはhttp://またはhttps:// URLが必要です。ブラウザ内部スキーム
(chrome://、brave://、about:など)はサポートされておらず、代わりにウェブURLを使用するよう ガイダンスとともにエラーが返されます。 :::
ブラウザプロファイルはエージェントごとに分離されています。管理Chromiumインスタンスは、個人のブラウザと クッキー、セッション、ローカルストレージを共有しません。認証情報の自動入力はデフォルトで無効です。
利用可能なアクション
| アクション | 説明 | 使用例 |
|---|---|---|
navigate | URLに移動する(ドメインポリシーに従う) | リサーチのためにウェブページを開く |
snapshot | ページのスクリーンショットを撮る | UIの状態を記録し、視覚的情報を抽出する |
click | ページ上の要素をクリックする | フォームを送信し、ボタンをアクティブにする |
type | 入力フィールドにテキストを入力する | 検索ボックスに入力し、フォームを完成させる |
select | ドロップダウンからオプションを選択する | メニューから選択する |
upload | フォームにファイルをアップロードする | ドキュメントを添付する |
evaluate | ページコンテキストでJavaScriptを実行する(サンドボックス化) | データを抽出し、DOMを操作する |
wait | 要素または条件を待つ | ページが完全に読み込まれてから操作する |
ドメインポリシーの強制
エージェントがナビゲートするすべてのURLは、ブラウザが動作する前にドメイン許可リストと拒否リストに 対してチェックされます。
設定
yaml
browser:
domain_policy:
allow:
- "*.example.com"
- "github.com"
- "docs.google.com"
- "*.notion.so"
deny:
- "*.malware-site.com"
classification:
"*.internal.company.com": INTERNAL
"github.com": INTERNAL
"*.google.com": INTERNALドメインポリシーの仕組み
- エージェントが
browser.navigate("https://github.com/org/repo")を呼び出す - URLをコンテキストとして
PRE_TOOL_CALLフックが発火する - ポリシーエンジンが許可/拒否リストに対してドメインをチェックする
- 拒否されるか許可リストにない場合、ナビゲーションはブロックされる
- 許可された場合、ドメインの分類が検索される
- セッションTaintがドメインの分類に合わせてエスカレートする
- ナビゲーションが続行する
SECURITY ドメインが許可リストにない場合、ナビゲーションはデフォルトでブロックされます。
LLMはドメインポリシーをオーバーライドできません。これにより、機密データを公開したり不要な アクションをトリガーしたりする可能性のある任意のウェブサイトへのアクセスをエージェントから 防ぎます。 :::
スクリーンショットと分類
browser.snapshotで撮られたスクリーンショットは、セッションの現在のTaintレベルを継承します。 セッションがCONFIDENTIALでTaintされている場合、そのセッションからのすべてのスクリーンショットは CONFIDENTIALとして分類されます。
これは出力ポリシーに影響します。CONFIDENTIALとして分類されたスクリーンショットはPUBLIC チャンネルに送信できません。PRE_OUTPUTフックが境界でこれを強制します。
スクレイピングされたコンテンツとリネージ
エージェントがウェブページからコンテンツを抽出するとき(evaluate経由、テキスト読み取り、 または要素解析)、抽出されたデータは:
- ドメインに割り当てられた分類レベルに基づいて分類される
- ソースURL、抽出時刻、分類を追跡するリネージレコードが作成される
- セッションTaintに寄与する(Taintはコンテンツの分類に合わせてエスカレートする)
このリネージ追跡により、データが数週間前にウェブページからスクレイピングされた場合でも、 常にデータの出所をたどることができます。
セキュリティコントロール
エージェントごとのブラウザ分離
各エージェントは独自のブラウザプロファイルを持ちます。これは以下を意味します:
- エージェント間でクッキーが共有されない
- ローカルストレージやセッションストレージが共有されない
- ホストブラウザのクッキーやセッションへのアクセスがない
- 認証情報の自動入力がデフォルトで無効
- ブラウザ拡張機能が読み込まれない
ポリシーフックインテグレーション
すべてのブラウザアクションは標準のポリシーフックを通過します:
| フック | 発火するタイミング | チェックする内容 |
|---|---|---|
PRE_TOOL_CALL | すべてのブラウザアクションの前 | ドメイン許可リスト、URLポリシー、アクション権限 |
POST_TOOL_RESPONSE | ブラウザがデータを返した後 | レスポンスを分類し、セッションTaintを更新し、リネージを作成 |
PRE_OUTPUT | ブラウザコンテンツがシステムを出るとき | デスティネーションに対する分類チェック |
リソース制限
- ナビゲーションタイムアウトにより、ブラウザが無期限にハングするのを防ぐ
- ページ読み込みサイズ制限により、過剰なメモリ消費を防ぐ
- 同時タブ制限がエージェントごとに強制される
エンタープライズコントロール
エンタープライズデプロイメントには、ブラウザ自動化に関する追加コントロールがあります:
| コントロール | 説明 |
|---|---|
| ドメインレベルの分類 | イントラネットドメインは自動的にINTERNALとして分類される |
| ブロックドメインリスト | 管理者が管理する禁止ドメインのリスト |
| スクリーンショット保持ポリシー | キャプチャされたスクリーンショットの保存期間 |
| ブラウザセッション監査ログ | コンプライアンスのためのすべてのブラウザアクションの完全ログ |
| ブラウザ自動化を無効にする | 管理者は特定のエージェントまたはロールに対してブラウザツールを完全に無効にできる |
例:ウェブリサーチワークフロー
ブラウザ自動化を使用した典型的なエージェントワークフロー:
1. ユーザー: "example-competitor.comの競合他社の料金を調査してください"
2. エージェント: browser.navigate("https://example-competitor.com/pricing")
-> PRE_TOOL_CALL:ドメイン"example-competitor.com"が許可リストに対してチェックされる
-> 許可、PUBLICとして分類
-> ナビゲーション続行
3. エージェント: browser.snapshot()
-> スクリーンショット撮影、セッションTaintレベル(PUBLIC)で分類
4. エージェント: browser.evaluate("document.querySelector('.pricing-table').innerText")
-> テキスト抽出、PUBLICとして分類
-> リネージレコード作成:source=example-competitor.com/pricing
5. エージェント: 料金情報をまとめてユーザーに返す
-> PRE_OUTPUT:PUBLICデータからユーザーチャンネルへ -- ALLOWED各ステップはログに記録され、分類され、監査可能です。
