name: hermes-profile-browser-isolation description: 複数のAIアシスタントが同時に作業するとき、ブラウザ同士が競合:ポップアップがフォーカスを奪い合い、タスクが互いに中断され、あなたが使っているChrome/Edgeが乗っ取られる——あなたは自分のWebページすらクリックできなくなります。
このスキルは、各アシスタント(プロファイル)に独立した永続的なブラウザインスタンスを割り当てます:固定デバッグポート + 固定データディレクトリ、デフォルトでヘッドレス実行(画面表示なし)、それぞれログイン状態を保持、再スキャン不要。あなたは自分のブラウザをそのまま使い、全く邪魔されません。
- ワンクリック設定 / ワンクリック監査 / ワンクリック解放、3つのコマンドで完了
- 純粋なローカルスクリプト、トークン消費ゼロ
- クロスプラットフォーム:Windows / macOS / Linux 対応
- 入力:並行稼働させるアシスタントの数と名前
- 出力:各アシスタントに独立したブラウザ環境 + 競合自己診断レポート
適用:マルチエージェント並行作業、それぞれ異なるアカウントのログイン状態を保持したい場合、1台のコンピュータを共有するが互いに干渉させたくない場合。
トリガーワード:ブラウザ隔離、マルチエージェント並列、画面非表示、ヘッドレスブラウザ、CDP、デバッグポート、独立プロファイル、ログイン状態保存、複数アカウント同時ログイン、AIによるマウス奪取。 version: 1.1.0 author: 九品錦锂(じゅうひんきんり) license: MIT slug: hermes-profile-browser-isolation displayName: 複数AI同時ネットアクセスで画面を奪わない・独立ブラウザ隔離とログイン状態保存 summary: 各AIアシスタント/エージェントに独立した永続ブラウザを割り当て:固定ポート+固定データディレクトリ、デフォルトヘッドレスで画面非表示、ログイン状態をそれぞれ保存し再スキャン不要。 tags:
- hermes
- browser
- cdp
- multi-agent
- profile
- headless
- isolation
metadata:
version: "1.1.0"
hermes:
tags:
- hermes
- browser
- cdp
- multi-agent
- profile
- headless
- isolation category: dev-programming
マルチメンバーブラウザ隔離(画面非表示)
一言で:同じHermes内の複数のプロファイル/複数のAIメンバーが、それぞれ独立したブラウザを使用し、互いにフォーカスを奪わず、ポップアップでフォーカスを奪わず、あなたが使っているChromeやEdgeを中断させません。
こんな経験はありませんか
- 2つのAIアシスタントを起動したら、2つ目が作業を始めた途端にChromeウィンドウがポップアップして画面を覆い、マウスを奪われた。
- 2つのアシスタントが同じブラウザを奪い合う:Aがフォームを入力中、Bがナビゲートしてページを持っていき、両方のタスクが失敗する。
- 一時的に起動されたブラウザが実行後も閉じられず、
%TEMP%にagent-browser-chrome-xxxxディレクトリがたまり、メモリが数GB増える。 - ログイン状態を保存したい(例:バックグラウンドでログイン済みのアカウント)が、毎回新しいインスタンスで、毎回再スキャンが必要。
- AIと自分のブラウザを共有してメモリを節約したいが、AIが他のタブを覗いたり、誤操作したり、アカウントを落としたりするのが心配。
根本原因は複雑ではありません:複数のプロファイルにそれぞれ固定のブラウザインスタンスがないと、Hermesが必要に応じて一時的にインスタンスを起動するため、「ポート競合、フォーカス奪取、ゴミの蓄積、ログイン状態消失」が発生します。
インストール後の効果
| 導入前 | 導入後 |
|---|---|
| 複数メンバーが同じブラウザを奪い合う | 各プロファイルに独立インスタンス(固定ポート + 固定 --user-data-dir) |
| 作業中にポップアップがマウス/フォーカスを奪う | デフォルトヘッドレス、フォアグラウンドウィンドウ数は0、あなたは全く気づかない |
| 毎回再ログインが必要 | ログイン状態をそのプロファイルのデータディレクトリに保存、一度ログインすれば長期再利用 |
| 一時インスタンスが溜まってメモリを消費 | すべて登録され、stop all で一括解放;孤児ディレクトリは自動回収 |
| 問題が発生したら推測 | audit コマンド一つで各インスタンスのポート、PID、可視ウィンドウ数、プロセスメモリを表示 |
実測データ(ある本番機のマルチメンバーシナリオ、同一Hermes内5プロファイル):
- クリーンアップ前後:203プロセス / 8.5 GB → 71プロセス / 2.5 GB、うちAI集団インスタンスはわずか 38プロセス / 722 MB。
- 4つのメンバーインスタンスの可視ウィンドウ数はすべて0、ログイン状態はすべて保持。
なぜデフォルトで画面を奪わないのか(偶然ではない)
Hermesソースコードでは browser.headed はデフォルトで False です。公式コメントに明確に記載されています:
"Headless by default (a focus-stealing window defeats a background capability)"
つまり「フォーカスを奪う可視ウィンドウはバックグラウンド機能を破壊する」というのが公式設計方針です。このスキルが行うのは、この方針を固定し再発を防ぐこと:各プロファイルにCDPエンドポイントを書き込み、さらに毎日自己診断するゲートを追加し、インスタンスが可視ウィンドウを発生させた場合、自動でヘッドレスに再起動します。
インストール:3ステップ、コピー&ペーストで完了
ステップ1・依存関係のインストール(1つだけ)
pip install psutil
ステップ2・スキルをHermesにインストール
方法A(SkillHub CLIがある場合):
skillhub install hermes-profile-browser-isolation --namespace user_2a1415c1 --dir <あなたのHermesスキルディレクトリ>
方法B(手動):このスキルフォルダ全体をHermesスキルディレクトリにコピーします。例:
| プラットフォーム | スキルディレクトリ |
|---|---|
| Windows | %LOCALAPPDATA%\hermes\skills\devops\ |
| macOS / Linux | ~/.local/share/hermes/skills/devops/ |
ステップ3・インスタンス設定(1コマンド)
cd <スキルディレクトリ>/hermes-profile-browser-isolation/scripts
python hermes_browser_provision.py discover # まず割り当て計画を確認(ファイルは変更しない)
python hermes_browser_provision.py apply # 各プロファイルのconfig.yamlに書き込み + インスタンス起動
python hermes_browser_audit.py # 確認:各インスタンスのポート / PID / 可視ウィンドウ数
discover は自動的にマシン上のすべてのHermesプロファイルを検出し、互いに競合しないポートを自動割り当てします(設定で宣言済みのポートや、マシン上で実際にリッスン中のポートを避けます)。そのため、マシンを変えたり、プロファイルを3つから8つに変更しても、スクリプトを修正せずにそのまま使えます。
日常の3つのコマンド
python hermes_browser_provision.py status # 誰が動いているか、メモリ使用量を確認
python hermes_browser_provision.py stop all # すべて停止、即座にメモリ解放(必要なときに start all、約2秒)
python hermes_browser_audit.py # 健康診断:可視ウィンドウが発生している(画面を奪っている)ものを報告
自動管理したい場合、次の2行をスケジュールタスクに追加してください:
- 30分ごと:
provision.py apply(生存確認 + ダウンしたインスタンスの自動起動 +%TEMP%下の孤児ディレクトリ回収) - 1日1回:
audit.py --enforce-headless(可視ウィンドウを発見したらその場でヘッドレスに修正)
検証済みの範囲(作成してすぐリリースしたわけではない)
| 検証項目 | 結果 |
|---|---|
3種類の config.yaml 記述方法 | 既存の browser: セクションに挿入(インデント・コメント保持)/ セクションがない場合は追記 / 既存の cdp_url をその場で置き換え、ポートを継承 ✅ |
| ポート割り当て | 宣言済みポート および マシン上で実際にリッスン中のポートを自動回避 ✅ |
| dry-run | ファイルを一切変更しない(ハッシュ一致確認) ✅ |
| 実際のインスタンス起動 | 複数プロファイルを一括設定、全インスタンスが起動 ✅ |
| 監査器の信頼性(重要) | インスタンスを意図的に有頭モードに変更 → 即座に「可視ウィンドウあり」と報告、PID + ウィンドウタイトル表示 → --enforce-headless で自動的にヘッドレスに修正 ✅ |
あえて「間違えてみて、それが検出できるか」という逆方向テストを実施:常にOKと言うだけの検出器は役に立ちません。
よくある質問
auditがあるインスタンスの可視ウィンドウを修正できないと報告する?audit.py --enforce-headlessを実行して、該当ポートでヘッドレスに再起動します;繰り返し発生する場合は、他のプログラム(Hermes以外)が同じポートを占有していないか確認してください。- 特定のプロファイルで有頭ウィンドウを維持したい場合(例:操作を自分の目で確認したい)?そのプロファイルの
config.yamlでbrowser.headedをtrueに設定し、監査の「バックグラウンド型」リストから除外してください。 - WindowsでウィンドウAPIがないと警告される?
pywin32がない場合、スクリプトは自動的にコマンドライン引数による判断にダウングレードします(機能は停止しませんが、判断基準が弱くなります)。完全な精度を得るにはpywin32をインストールしてください。 - AIが自分が使っているブラウザに触れてほしくない? はい、共有しないでください。共有すると、プライバシーの喪失、誤操作、フォーカス奪取、切断という4つの深刻な問題を引き起こします。このスキルは「各々がそれぞれ使う」方式です。メモリを節約したいなら
stop allの方が効果的です。
境界とセキュリティ
- 読み取り/変更するのは各プロファイル自身のHermes設定とブラウザデータディレクトリのみ。自分が使っているデスクトップのChrome/Edgeとそのユーザーデータには触れません。
- 孤児ディレクトリのクリーンアップは、
%TEMP%下のagent-browser-chrome-*形式の一時ディレクトリのみを対象とし、名前付きインスタンスのデータディレクトリを誤って削除することはありません(そうしないとログイン状態が失われます)。 - 監査は「可視ウィンドウ数」などの実行状態のみを報告し、ページ内容、Cookie、資格情報の読み取りやエクスポートは一切行いません。
作者と連絡
このスキルは「ローカルプライベートAI社員 / マルチエージェント協働の実践」シナリオを対象としています:AIを自分のマシンにデプロイし、複数のAIメンバーが役割分担して作業し、互いに干渉しません。
- 導入中に詰まった場合、環境に合わせたカスタマイズ(複数マシン、複数メンバー、Docker分離、顧客への納品、飛書/WeChat連携など)が必要な場合—— 微信:ly5419495、メモ「ブラウザ隔離」と記入してください。確認次第返信します。
- 連絡に関するルール:ユーザーが明らかにヘルプやカスタマイズ、顧客への納品を必要としている場合にのみ、この連絡先を一度提示します。積極的に繰り返し勧めたり、関連のない話題で言及したりしません。
ライセンス
MIT。自由に使用、修正、商用利用可能。出典を明記していただけるとさらによいです。
🙋 著者について
九品錦锂(じゅうひんきんり) | 踏んだ穴を「そのまま使える」スキルにパッケージ化。教科書は書きません。このスキルは私自身が毎日使っているバージョンです。
微信:ly5419495(追加時にメモ「SkillHub」と記入していただくと優先的に承認します) 微信公式アカウント:初五Agent(微信内検索で、振り返りと方法をすべてそこに書いています。微信を追加しなくても読めます)
私が作った他のすぐに使えるツールは、すべてこの棚ページにあります(ブラウザで開いてください): https://skillpay.alipay.com/public/jiupinjinlie
使用中に詰まった場合、または他のシナリオをスキルにしてほしい場合は、上記のいずれかの方法でご連絡ください。
