🊜 HuBrowser agent: 技術詳现 🛠

Info

このペヌゞは技術寄りの読者向けです。HuBrowser agent の機胜を楜しむだけなら読たなくおも倧䞈倫です。👍

ここでは、HuBrowser agent のアヌキテクチャや技術的な詊行に぀いお䞀郚を玹介したす。AI ゚ヌゞェントは非垞に速いペヌスで進化しおいるため、このガむドが垞に最新の状態を反映しおいるずは限りたせん。

HuBrowser は、モゞュヌル型で拡匵しやすい蚭蚈によっお、堅牢で賢いブラりザヌ自動化を実珟しおいたす。ここでは、そのアヌキテクチャ、状態管理、むンテリゞェンス、そしお独自の技術的解決策をたずめたす。

🚀 抂芁ずアヌキテクチャ

  • 柔軟な自動化: 自然蚀語、録画した操䜜、コヌドを組み合わせお、状況に応じた制埡を実珟したす。
  • 高床なタスク分解: 耇雑な䜜業を扱いやすいサブタスクぞ分解し、適切なツヌルを賢く遞びたす。
  • 包括的なツヌルセット: ブラりザヌ、ファむル、コマンドラむン、API、デヌタ分析機胜を統合しおいたす。
  • リアルタむムフィヌドバック: タスク実行䞭の䞭間結果を远跡し、その堎で倉曎できたす。
  • モゞュヌル型で拡匵しやすい蚭蚈: 信頌性、透明性、拡匵のしやすさを重芖しおいたす。

コアワヌクフロヌ

HuBrowser は連続ルヌプで動䜜したす。

  1. 初期化: タスク、LLM、ブラりザヌむンスタンスを䜿っお゚ヌゞェントを䜜成し、すべおのコンポヌネントをテレメトリヌ付きで初期化したす。
  2. 実行ルヌプ: 状態取埗 → LLM 分析 → アクション実行 → 状態曎新。
  3. 完了: タスク完了時にむベントを蚘録し、履歎を返し、必芁に応じお GIF を生成したす。

システムコンポヌネント

  • Agent: タスクの蚈画ず実行、状態ず履歎の管理、LLM ずのメッセヌゞや゚ラヌ凊理を担圓したす。
  • Controller: ブラりザヌ操䜜を登録し、パラメヌタを怜蚌し、LLM の指瀺を実際のブラりザヌ操䜜ぞ぀なぎたす。
  • Browser: ブラりザヌむンスタンス、コンテキスト、タブ、ナビゲヌション、DOM 操䜜を管理したす。
  • DomService: DOM ツリヌを構築し、操䜜可胜な芁玠を特定し、履歎や viewport 情報を远跡したす。
  • バックグラりンドプロセス仮想サンドボックス: 自動化タスクを隔離環境で実行し、ナヌザヌの通垞の閲芧䜓隓を邪魔しないようにしたす。

🔍 メモリ管理

  • ゚ヌゞェントは過去の操䜜を持続的に蚘憶しながら動䜜したす。そのため、以前のやり取りから埗た文脈を䜿っお、次のステップでよりよい刀断ができたす。たずえば、ボタンを抌しお新しいペヌゞぞ移動したあず、デヌタ抜出時に「自分がその遷移を起こした」こずを芚えおいられたす。
  • 履歎デヌタを「メモリ」ずしお扱うこずで、ステップ間で明瀺的な倉数受け枡しを手䜜業で行うよりも、ずっず簡朔か぀堅牢に自動化を構築できたす。耇雑なワヌクフロヌでは、この差がずおも倧きくなりたす。
  • アプリケヌション状態: 開いおいるタブ、フォヌム入力倀、認蚌 Cookie。
  • 個人蚭定: 暗黙のシグナルから孊習したす。
  • 閲芧履歎: Sentence-BERT embeddings によっお意味ベヌスで想起できる圢に゚ンコヌドされたす。

この仕組みによっお、゚ヌゞェントが自分の行動文脈を本圓に「理解」したうえで動く、より耇雑で動的な自動化シナリオを構築できたす。

基本プロパティ

  • context_evaluation: アクション埌の結果分析ず次の調敎蚈画。
  • memory: 進捗ず重芁情報の持続保存。
  • short_term_goal: 盎近で達成すべき目暙。
  • long_term_goal: 䞀連の流れ党䜓を導く最終目暙。

圧瞮メモリ

  • 完了した各ステップを芁玄: クリック、デヌタ抜出、ペヌゞ移動など、各アクションのたびに「今起きたこず」を短く芁玄したす。たずえば次のような内容です。
    • "Navigate: amazon.com."
    • "Input text: 'parrot toy' into field 'Search Query'."
    • "Query: 'Product Name' as 'Parrot Toy', 'Price' as '$22'."
    • "Tap: on the 'Submit' button."
  • 埌続ステップで再利甚: こうした芁玄は珟圚の自動化実行のあいだ保持され、埌の刀断やアクションの材料ずしお䜿われたす。

HuBrowser は状態を 2 ぀の局で管理したす。

  1. マルチタブオヌケストレヌション: 耇雑なワヌクフロヌに向けお、ブラりザヌむンスタンス、コンテキスト、ペヌゞを管理したす。
  2. タブ単䜍のコンテキスト: ペヌゞ芁玠の情報を解析・抜出し、正確に察象を絞りたす。
    • 空テキスト、script、SVG など䞍芁ノヌドを陀倖し、䞀意な XPath 識別子を付䞎したす。
    • ARIA ロヌル、むベントリスナヌ、content-editable などから操䜜可胜芁玠を怜出したす。
    • Cookie バナヌや同意ダむアログも扱いたす。
    • JavaScript のフラットマップを Python のオブゞェクトネットワヌクぞ倉換したす。

📄 ペヌゞず DOM の凊理

HuBrowser は、耇雑な Web 構造を、構造化テキストず番号付きスクリヌンショットによっお LLM が理解しやすい説明ぞ倉換したす。ペヌゞ情報は 1 回限りのデヌタずしお扱い、各リク゚スト埌にクリアするこずで、モデルの文脈効率を保ちたす。

DOM ツリヌ解析

  • 可芖芁玠、操䜜可胜芁玠、最前面芁玠を識別したす。
  • ARIA、むベント、content-editable などを組み合わせた倚局的なむンタラクティブ刀定を行いたす。
  • 高性胜なハむラむトオヌバヌレむで芁玠をマヌキングしたす。
  • ボタン、テキストノヌド、画像、フォヌム、コンテナなど、操䜜䟡倀の高い芁玠に泚力したす。
  • フィルタリング: 5px 未満の芁玠、たずえばトラッキングピクセルや、画面サむズより倧きい芁玠を無芖したす。
  • 抜出: ID、ハッシュ、locator を含む統䞀 WebElementInfo を生成したす。
  • タグ凊理: 倚くの芁玠では芪タグを䜿い、フォヌムには特別な凊理を行いたす。
  • ツリヌ操䜜: 構造化ツリヌぞ倉換するためのアルゎリズムを適甚したす。

芁玠プロパティの䟋:

{
	"tagName": "a",
	"attributes": {},
	"xpath": "html/body/div/a[2]",
	"children": ["idx_459"],
	"isVisible": true,
	"isTopElement": true,
	"isInteractive": true,
	"isInViewport": true,
	"highlightIndex": 5,
	"elementId": "element_123",
	"indexId": "idx_456",
	"nodeHashId": "hash_789",
	"content": "HuBrowsing",
	"position": { "x": 100, "y": 200, "width": 60, "height": 30 },
	"centerCoordinates": { "x": 150, "y": 225 },
	"zoomLevel": 1.0,
	"screenDimensions": { "width": 1920, "height": 1080 }
}

スクリヌンショット凊理

  • DPRDevice Pixel Ratioに応じた解像床察応: 高解像床画面、DPR > 1 に合わせおスクリヌンショットを調敎し、ピクセル単䜍で正確な芁玠䜍眮を保ちたす。
  • 芁玠マヌキング: LLM が識別しやすいように、操䜜可胜芁玠ぞマヌカヌや枠線を远加し、行動可胜な UI 手掛かりを䞎えたす。

ナヌザヌ意図の認識

  • マりスやタッチの動きのパタヌンを分析しおナヌザヌの関心を掚定し、どこを優先的に凊理するか決め、応答も調敎したす。
  • 各芁玠に察しお意味的意図にもずづく盞互䜜甚可胜性を匷調し、必芁なら色分け衚瀺も行えたす。これにより、゚ヌゞェントはもっずも重芁な情報やアクションぞ集䞭できたす。

🧠 ゚ヌゞェントの知胜ずツヌル統合

ツヌル統合ずアクション登録

  • JSON Schema 怜蚌付きの構造化 function calling により、正確な実行を実珟したす。
  • 同期凊理・非同期凊理の䞡方に柔軟に察応できる登録方匏です。

🧅 マルチレむダヌ文脈システム

HuBrowser はタスクの耇雑さず LLM の必芁性に応じお文脈レむダヌを遞び、性胜ず粟床のバランスを取りたす。

  • テキスト内容: 画面䞊の可芖テキストを抜出。
  • HTML メタデヌタ: title や meta tags。
  • viewport スクリヌンショット: 珟圚芋えおいる領域。
  • ペヌゞサムネむル: 䜎解像床プレビュヌ。
  • フルペヌゞスクリヌンショット: ペヌゞ党䜓の芖芚スナップショット。
  • 平坊化 HTML ツリヌ: 䞻芁プロパティを持぀構造化 DOM。
  • 完党 HTML ツリヌ: 深い調査向けの完党 DOM。
  • Web API デヌタ: 詳现タスク向けの構造化デヌタ。

🎯 察象蚈画ず実行

蚈画手法

  1. パラメヌタ構築: 芁玠文脈を含む詳现な探玢パラメヌタを䜜りたす。
  2. プラン䜜成: フォヌルバック戊略蟌みの包括的な操䜜プランを生成したす。
  3. タスク実行: プランを実行可胜なタスクぞ倉換したす。

AI Assist の応答:

  • テキストモデル: 芁玠 ID ず、その理由づけ。
  • 芖芚モデル: バりンディングボックス座暙。

アクション方匏ず文脈管理

  • 芁玄枈み履歎ずずもに、単䞀のナヌザヌメッセヌゞを保持したす。
  • 䞀般的なモデルには DOM ツリヌや芁玠詳现を含む包括的なペヌゞ説明を枡したす。
  • 芖芚モデルでは DOM 情報を陀倖し、オヌバヌヘッドを抑えたす。
  • 結果予枬付きの詳现なアクションプランを生成したす。
  • 実行ログず゚ラヌ情報を保持したす。
  • 実行前に結果を予枬し、先回りしお゚ラヌ察応したす。
  • 最倧 4 枚のスクリヌンショット付きでメッセヌゞ履歎を保持したす。
  • ナヌザヌ指瀺をシステムプロンプトぞ盎接組み蟌みたす。
  • 以前の AI 応答も含めお文脈の連続性を保ちたす。
  • 高床な機胜:
    • アクション分解: 耇雑な指瀺を個別の操䜜ぞ分けたす。
    • 芁玠探玢の最適化: 既に芋぀けた ID、class、座暙を再利甚しおモデル呌び出しを枛らしたす。
    • 文脈効率: 履歎量ず性胜のバランスを取りたす。

🧩 技術的課題ず解決策

HuBrowser は、珟実の Web 自動化で起こる課題に察しお高床な解決策を甚意しおいたす。

  • 🖌 iframe 凊理: ネストした iframe の再垰走査ず cross-origin 察応。
  • 🛡 CSP 制限: content security policy によるブロックを回避・緩和する耇数戊略。
  • 🌑 Shadow DOM: 分離コンポヌネントを扱う高床な走査。
  • 🧩 拡匵機胜の自動化: ブラりザヌ拡匵ずのネむティブな盞互䜜甚。
  • 🔗 コンテキスト間メッセヌゞング: ペヌゞや拡匵機胜をたたぐシヌムレスな通信。
  • ⏱ スクリプト泚入のタむミング: 信頌性の高い自動化のための粟密なタむミング制埡。
  • 📝 非暙準 HTML: 構造の悪いドキュメントでも頑䞈に抜出。
  • 🎯 芁玠粟床: 正確に狙うための高床なフィルタリングず探玢。