Browser Harnessの設計を読む: CDP接続と自己編集エージェントの作業場
ブラウザハーネス | LLM があらゆるタスクを完了できるようにする自己修復ハーネス。
ひと目でわかる
- これは何?
- LLMにブラウザ操作を委ねるため、Chrome DevTools Protocol、単一プロンプトの初期化、生成スキルを組み合わせる小さなハーネスです。
- 誰に向いている?
- Browser Harnessは、ブラウザタスクをエージェントの作業ツリーで試したい開発者向けです。導入時はREADMEの単一プロンプトを実行し、4ファイルが生成される場所、CDP接続先、スキル生成後の差分、開発中の作業ツリーからの再実行結果を確認してください。
- 商用利用できる?
- できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 4 日前です。
- 何の言語で書かれている?
- 主に Python です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
CDPブリッジを自己編集型にする狙い
Browser Harnessは、Chrome DevTools Protocolを介してLLMを実際のブラウザに接続するPythonプロジェクトです。READMEは、ブラウザタスクに完全な自由を与える、薄くて編集可能なハーネスと説明しています。接続はChromeへの単一のWebSocketで、間に何もありません。実行中、エージェントは不足しているヘルパーコードを書き込み、ハーネスは実行ごとに自己改善します。READMEはファイルアップロードタスクを示しており、エージェントは最初に不足しているヘルパーを発見し、agent_helpers.pyに書き込み、アップロードを完了します。
「CDPブリッジを自己編集型にする狙い」では、browser-harnessの設定と実行結果を確認します。検証では、CDPの接続ポートと対象タブを固定し、生成された4ファイルの差分、エージェントが保存したドメインスキル、失敗時のブラウザ状態を1タスクごとに残すと設計上の境界が見えます。
単一プロンプトが作る初期ファイル
READMEには、Claude CodeまたはCodexに貼り付けるセットアッププロンプトがあります。プロンプトは、エージェントにuvとPython 3.12を使用してbrowser-harnessを最新の安定版にインストールまたはアップグレードし、'browser-harness skill'からスキルを登録し、ブラウザに接続するよう指示します。また、ローカルブラウザ録画を有効にするかどうかを尋ね、デフォルトはなしで、アップグレード時に既存の設定を保持します。セットアップまたは接続に失敗した場合、エージェントはinstall.mdファイルに従う必要があります。エージェントはchrome://inspect/#remote-debuggingを開き、ユーザーはチェックボックスをオンにして、Chrome 144以降に表示される接続ごとのポップアップでAllowをクリックする必要があります。READMEは代替としてBrowser Use Cloudを紹介しており、無料ティアでは3つの同時ブラウザ、プロキシ、キャプチャ解決、カード不要を提供します。
「単一プロンプトが作る初期ファイル」では、browser-harnessの設定と実行結果を確認します。検証では、CDPの接続ポートと対象タブを固定し、生成された4ファイルの差分、エージェントが保存したドメインスキル、失敗時のブラウザ状態を1タスクごとに残すと設計上の境界が見えます。
4ファイルの作業ツリーと変更単位
アーキテクチャは約1000行で4つのコアファイルにまたがると説明されています。READMEには、初回インストールとブラウザブートストラップ用のinstall.md、日常使用用のSKILL.md、保護されたコアパッケージとしてのsrc/browser_harness/、そして${XDG_CONFIG_HOME:-~/.config}/browser-harness/の下の2つのエージェントワークスペースの場所、エージェントが編集するヘルパーコード用のagent_helpers.pyと再利用可能なサイト固有スキル用のdomain-skills/がリストされています。通常の'browser-harness'ヘルパー呼び出しは、実行中のChromeまたはChromium CDPエンドポイントに接続します。分離された自動化には、--remote-debugging-portでChromeを起動し、BU_CDP_URLを渡すか、Browser Useクラウドブラウザを使用するとREADMEにあります。
「4ファイルの作業ツリーと変更単位」では、browser-harnessの設定と実行結果を確認します。検証では、CDPの接続ポートと対象タブを固定し、生成された4ファイルの差分、エージェントが保存したドメインスキル、失敗時のブラウザ状態を1タスクごとに残すと設計上の境界が見えます。
開発中コードをそのまま走らせる手順
チェックアウトからの開発では、READMEは仮想環境をアクティブにしたり、グローバルにインストールされたコマンドに依存したりせずに、現在の作業ツリーを実行するために./browser-harnessを使用することを示しています。例では、page_info()を呼び出すPythonスニペットをランチャーにパイプしています。READMEは、通常のエージェント向けドキュメントはbrowser-harnessコマンドを使い続けるべきであり、./browser-harnessランチャーはローカルリポジトリテスト専用であると注意しています。これにより、テスト済みの作業ツリーとインストール済みパッケージが分離されます。
「開発中コードをそのまま走らせる手順」では、browser-harnessの設定と実行結果を確認します。検証では、CDPの接続ポートと対象タブを固定し、生成された4ファイルの差分、エージェントが保存したドメインスキル、失敗時のブラウザ状態を1タスクごとに残すと設計上の境界が見えます。
ドメイン別スキルを生成する流れ
ドメインスキルはエージェントワークスペースにあり、BH_DOMAIN_SKILLS=1を設定することで有効になります。リポジトリのagent-workspace/domain-skills/ディレクトリには、github、linkedin、amazonなどの例があります。READMEは、スキルは手書きではなくハーネスによって書かれると明言しています。エージェントが非自明なことを見つけたとき、それ自体がスキルをファイルします。コントリビューターはスキルファイルを手書きせず、代わりにエージェントとタスクを実行し、生成されたdomain-skills/<site>/フォルダをリポジトリの例にコピーしてPRを開くことが求められています。バグ修正、ドキュメントの微調整、ヘルパーの改善も同様に歓迎されます。
「ドメイン別スキルを生成する流れ」では、browser-harnessの設定と実行結果を確認します。検証では、CDPの接続ポートと対象タブを固定し、生成された4ファイルの差分、エージェントが保存したドメインスキル、失敗時のブラウザ状態を1タスクごとに残すと設計上の境界が見えます。
MITライセンスが保証しない範囲
このプロジェクトはMITライセンスの下でリリースされており、著作権は2026年Browser Useにあります。このライセンスは、ソフトウェアのコピーを使用、複製、変更、統合、公開、配布、サブライセンス、販売する権利を許可しますが、すべてのコピーまたは実質的な部分に上記の著作権表示と許可表示を含めるという条件があります。ソフトウェアは'現状のまま'提供され、明示または黙示のいかなる保証もなく、商品性、特定目的への適合性、非侵害性を含みます。ライセンスは、免責事項を超えるセキュリティ保証、サポート義務、または責任条項を確立しません。READMEもサポートモデルを説明しておらず、リポジトリメタデータにはスナップショット時点で230のオープンイシューが記録されていますが、README自体はそれらについて議論していません。
「MITライセンスが保証しない範囲」では、browser-harnessの設定と実行結果を確認します。検証では、CDPの接続ポートと対象タブを固定し、生成された4ファイルの差分、エージェントが保存したドメインスキル、失敗時のブラウザ状態を1タスクごとに残すと設計上の境界が見えます。
編集部の結論
Browser Harnessは、ブラウザタスクをエージェントの作業ツリーで試したい開発者向けです。導入時はREADMEの単一プロンプトを実行し、4ファイルが生成される場所、CDP接続先、スキル生成後の差分、開発中の作業ツリーからの再実行結果を確認してください。認証情報を扱う本番自動化の安全性や対応ブラウザの範囲はREADMEだけでは判断できないため、最初は捨てられるアカウントと限定ドメインで試すべきです。
コミュニティノート