Browser MCP 弱モデル改善: Semantic Snapshot + Text Click¶
今回の反復の目的は明確です。能力の低い計画/コーディングモデルでも、ブラウザタスクを安定して完了できるようにすること。同時に、強いモデルの経路は劣化させません。
対象は、複雑ページ・厳格ロケータ・長い操作チェーンで失敗しやすい低能力プランナーモデル(例: 一部の GLM/minmax/Ollama 構成)です。
問題の要約¶
更新前、弱モデルの失敗点は主に3つでした。
- ページテキスト/HTML が高ノイズで、次アクションの選択が不安定
- 低レベルのロケータ生成と一意性解消が苦手
- 単体テストは通るが、実 CDP では
evaluate互換差で壊れる
今回のリリース内容¶
1) ネイティブプロンプトのブラウザ運用を強化¶
標準 SOP を以下へ強化しました。
read -> act -> verifyの短サイクル- 盲目的な多段アクション連鎖を禁止
- 密度の高い/動的ページでは
semantic_snapshotを先行 - ラベルが明確な場合は
click_textを優先
2) 弱モデル向け MCP プリミティブを追加¶
browser-use ランタイムに高レベルツールを追加:
page.semantic_snapshottitle/url/見出し/操作候補/切り詰め状態を返す- 生 HTML より低エントロピーで意思決定しやすい
page.click_text- テキスト優先クリック(
exact/nth/timeout_ms) - 脆い selector 手書きを大幅に削減
3) 実 CDP スモークに基づくランタイム堅牢化¶
初回の実ブラウザスモークで露出した差分を修正しました。
- locator evaluate 契約修正(
arguments[0]-> 明示引数) - semantic snapshot の文字列化オブジェクト互換
page.gotoURL 読み戻しフォールバック(get_url->location.href)- text click 候補の収束(インタラクティブ要素優先 + selector 重複排除)
検証¶
自動テスト¶
mcp-browser-useのpytest -q: 15 passed
実 CDP スモーク(修正後)¶
手順:
browser.connect_cdppage.goto("https://example.com")page.wait(text="Example Domain")page.semantic_snapshot(max_items=8)page.click_text("Learn more")browser.close
結果: ライブ実行ですべて成功。
弱モデルに効く理由¶
本更新の本質は意思決定の複雑度を下げることです。
- 高ノイズ DOM ではなく、コンパクトな意味情報を渡す
- selector 合成ではなく、テキスト中心アクションを使う
- 読み戻しと曖昧性処理を強化し、失敗連鎖を抑制
強モデルは従来の能力を維持したまま利用できます。
次の反復¶
NOT_UNIQUEの消歧ヒント強化- モデル階層別プロンプトプリセット(weak/medium/strong)
- 弱モデル向けブラウザ回帰ベンチマーク整備