herdr-mcpソースバージョン v1.1.0-rc.2

ブラウザ拡張

Continuity、Browser Control Center、実験的なローカルブリッジ。

herdr-mcp のブラウザ拡張は、動作している MCP Connector の上に載る任意のブラウザ層です。第二の Agent runtime ではなく、最初のワークステーション接続にも必須ではありません。

ブラウザ側の次の三つの問題を担当します。

面 解決する問題 詳細ドキュメント
Continuity ローカルでの完了を、正しい Web 会話へどう戻し、復帰させ、引き継ぐか ブラウザ Continuity
Control Center Chrome Side Panel が workspace、ペイン、Agent をどう観測し、binding / Pinned Target を管理するか ブラウザ Control Center
JSON → MCP bridge ネイティブ MCP Connector を持たない Web AI が、境界付き JSON プロトコル経由でローカルツールを使う方法 JSON → MCP ブリッジ

ChatGPT の composer 横の Queue はブラウザ操作のプリミティブです。現在の返信が終わるのを待ってから、明示的な次ターンのユーザー指示を送ります。生成を中断しません。

データの扱いと権限については ブラウザ拡張のプライバシーポリシー を参照してください。

インストール identity:STORE / STANDALONE / DEV#

拡張の identity は Runtime の DEV/PROD 面とは独立しています。

チャネル 用途 Chromium identity
STORE 一般ユーザーの既定 固定の Chrome Web Store identity。ストア経由で更新される
STANDALONE GitHub / 手動による独立配布 固定の非 Store identity。インストールディレクトリを移動しても ID は変わらない
DEV ソース開発 repo/worktree の extension/ から Load unpacked。ID はパスから派生する

現在の runtime は STORE / STANDALONE / DEV の Native Host ownership をサポートします。STANDALONE は固定の非 Store identity を使い、パス派生の DEV ビルドが standalone を装ってはいけません。古い runtime では利用できる channel が少ない場合があるため、ownership を切り替える前にインストール済み runtime を確認してください。

既定では公式の Herdr Chrome Web Store 拡張を使います。STORE 配布が適切でなく、インストール済み runtime が明示的に対応している場合にだけ STANDALONE を使ってください。DEV はソース開発専用です。

現在の runtime は、ソースツリーを clone せずに GitHub リポジトリから Load unpacked 用の STANDALONE コピーを生成できます。

herdr-mcp extension standalone install
herdr-mcp native-host use standalone

リリース版 runtime の既定は、コンパイル時に埋め込まれた不変の source commit です。検証可能な build commit を持たない開発ビルドだけが main にフォールバックします。開発で明示的にリポジトリ最新ソースが必要な場合は herdr-mcp extension standalone install --ref main を使ってください。

--path を提供する runtime は、Chrome に見せる Load unpacked パスを明示的に選べます。

herdr-mcp extension standalone install --ref <release-tag-or-commit> --path ~/Documents/herdr-mcp/extension

--path は省略可能で、既定は ~/Documents/herdr-mcp/extension です。カスタムパスはユーザーの HOME 配下に解決されなければなりません。管理対象コピーは常に ~/.config/herdr-mcp/extensions/standalone/current に置かれ、選択したパスはそこへの安定したシンボリックリンクであるため、--path を変更しても standalone 拡張の identity は変わりません。明示的に指定されたパスがすでに使われている場合は上書きせず fail closed します。既定パスの衝突はそのまま残し、インストーラーは管理対象パスへフォールバックします。自動化が chrome://extensions → Developer mode → Load unpacked で選択すべき正確なディレクトリを必要とするときは、herdr-mcp extension standalone status を実行し、その chrome.load_unpacked_path 値を使ってください。今後の更新も同じパスを再利用します。この値は最後のインストールが記録した Chrome 向けパスで、~/.config state から読まれるため、macOS の権限で ~/Documents を検査できない場合でも安定しています。user_visible_path.status はそのエイリアス検査を unverified として報告しますが、chrome.load_unpacked_path は変わりません。

インストーラーは要求された ref を不変の commit SHA に解決し、その commit の extension/ ツリー配下にある Git 追跡ファイルだけをダウンロードします。manifest.json を除き、すべてのファイルはリポジトリのソースとバイト単位で同一のままです。manifest.json では、固定 STANDALONE 拡張 ID に必要な公開 key を Herdr が注入します。repo/worktree の DEV manifest は決して変更されません。herdr-mcp extension standalone status は、インストール済みの commit、バージョン、ID、パスを報告します。

拡張のパッケージ workflow(.github/workflows/extension-store.yml)は、Store ZIP と並んで手動用パッケージも生成します。herdr-mcp-extension-X.Y.Z.zip は Chrome Web Store へのアップロード用パッケージです。herdr-mcp-extension-standalone-X.Y.Z.zip とその .sha256 サイドカーは手動の Load unpacked 用です。Native Messaging が要求する STANDALONE Chromium ID を維持する公開固定 manifest key を持つのは standalone ZIP だけなので、Store ZIP を手動でロードしてはいけません。shasum -a 256 -c herdr-mcp-extension-standalone-X.Y.Z.zip.sha256 で検証し、古いバージョンの上に重ねるのではなくクリーンなディレクトリへ展開してください。

macOS では、STANDALONE のインストールまたは更新後に herdr-mcp doctor も実行してください。standalone status はディスク上の管理対象ファイルを説明します。doctor はさらに、Google Chrome の profile preferences にある Herdr 拡張の正確なエントリだけを読み、Chrome が現在 Load unpacked しているパスを上記の管理対象パスと比較します。管理対象の ~/.config/herdr-mcp/extensions/standalone/current ディレクトリと、最後のインストールが記録した Chrome 向けパスのどちらも受け付けます。記録されたパスは ~/.config state から読まれ、安定した文字列として比較されるため、--path の変更や macOS による ~/Documents の読み取り拒否で誤った drift は発生しません。WARN standalone-extension-load state=drift が報告された場合、同じ固定拡張 ID が別のディレクトリからロードされています。多くの場合、古い Downloads のコピーや開発用コピーです。chrome://extensions を開き、Herdr 拡張を見つけて、doctor が報告する expected パスから Load unpacked / Reload してください。このパスの不一致を直すためだけに Native Host のチャネルを切り替えたり、拡張データを削除したり、資格情報をコピーしたりしないでください。このチェックは診断専用で、Chrome の設定を書き換えることも、タブを再読み込みすることもありません。

チャネルを選んだら検証します。

herdr-mcp native-host status

active なチャネル、拡張 identity、Native Host、現在の runtime generation が一致している必要があります。STORE は Chrome Web Store、STANDALONE は正式な独立パッケージ、DEV は開発者による明示的な Reload で更新されます。拡張の更新後は、長時間開いている Web ページを更新して現在の content script を受け取らせてください。

現在の 1.1 開発版は、拡張のインストールまたは読み込み時に必須の <all_urls> host access を要求し、Generic Web BrowserPage が新しいサイトごとに追加の権限ダイアログを出さずに動作できるようにします。より狭い host permission を使っていた旧版から更新する場合、Chrome が追加権限について一度だけ確認を求めることがあります。承認後、Herdr は実行時にサイトごとの host permission を要求しません。

入口と状態オブジェクト#

概念 / 入口 単一の責務
ツールバーアイコン Side Panel Control Center を開く
HUD 現在のページの簡潔な状態、Auto、手動の continue / handoff
Control Center workspace binding、Pinned Target、ローカルでの観測と人間による制御
Queue 現在の返信が終わった後に、次の明示的なユーザーメッセージを送る
Workspace Binding この Project / conversation をどの長期 workspace が所有するか
Pinned Target 次の人間による制御がどのペイン / Agent を明示的に対象とするか
Herdr Focus 人がいま Herdr UI で見ているペイン。binding や pinned target を黙って置き換えてはならない

これらの状態をなぜ分離するのか、復帰と引き継ぎがどう動くのかは、それぞれの SSOT である ブラウザ Continuity と ブラウザ Control Center に属します。この概要はそれらの実装詳細を意図的に繰り返しません。

ローカルセキュリティ境界#

拡張は Herdr bearer をページの JavaScript、service worker、ブラウザストレージのどこにも置きません。

ページの content script / Side Panel
          ↓
Chrome Extension Service Worker
          ↓ Native Messaging
ローカル Host
          ↓ Unix socket (0600)
herdr-mcp Rust runtime

ブラウザは操作と可視化を所有し、Native Host は信頼されたローカルブリッジであり、ツール schema、managed-root チェック、権限、mutation 境界は引き続き runtime が所有します。公開 OAuth/MCP とローカル Native Messaging は別々の信頼境界です。

初回利用#

  1. Runtime と ChatGPT Connector がすでに動作していることを確認します。
  2. STORE / STANDALONE / DEV を選び、herdr-mcp native-host status を検証します。
  3. 対応する Web ページと Side Panel を開きます。
  4. そのページを意図した workspace にバインドします。
  5. 状態、Pinned Target、手動操作を確認している間は Auto をオフのままにします。
  6. 無人で長時間動く作業が本当に必要なときにだけ、スコープ付きの Continuity 自動化を有効にします。

設定画面では、言語、ChatGPT Project Auto の capability gate、対応 WebChat のサイトアクセスだけを常時表示します。実験サイト、Page Assist、ローカル接続、Continuity テンプレート、時間設定は必要になるまで折りたたみます。workspace binding は現在ページの文脈を確認できる Side Panel / HUD に残し、登録済み WebChat endpoint は既定で制御可能とし、独立した WebChat Control トグルは表示しません。

semantic Auto の Provider credential / endpoint はブラウザ拡張では設定しません。拡張はローカル Herdr Runtime だけを呼び出します。Runtime の Provider 設定は、単一マシン用の mode-0600 config.json と、登録済みワークステーション全体で共有する認証済み Cloudflare Worker route pool の 2 層だけです。同じ typed/chat capability にローカル route があればローカルを優先します。両方の層で name / protocol / url / model / api_key の共通 route JSON object を使い、decision と decision-vercel は typed evaluation、openai-chat は chat として protocol から自動判定します。shell/process environment は Provider 設定には使いません。通常の Auto は typed evaluation route(Jev)-> chat route(LLM)-> bounded script fallback の固定順序で動きます。設定順が route の優先順位で、最初の healthy route が primary、後続 route は failure/cooldown 時の bounded fallback です。route ごとの timeout と pool 全体の deadline は分離されています。旧 config.toml は初回読み込み時に JSON へ移行します。semantic provider がなくても script fallback が基本 Auto を維持し、Work Memory/TODO evidence と deterministic safety guard は引き続き authoritative です。

1.0 のブラウザ対応は ChatGPT、Claude、Grok を対象にします。3 つとも登録済み WebChat endpoint は既定で制御可能です。Project / Project 内の会話では workspace binding も表示し、グローバルな新規チャット / ホームでは Project または conversation scope がない限り workspace binding を表示しません。ChatGPT はさらに会話 create、archive、self-handoff に対応し、Claude と Grok はサインイン済みセッションの dispatch、settled result、reload recovery に対応します。Gemini はオプトインの実験的位置づけのままで、1.0 の受け入れ境界には含みません。

z.ai / DeepSeek の JSON → MCP 連携は実験的で、既定では無効です。Herdr の実験的設定で明示的に有効にしてください。

リリースとメンテナンスの境界#

STORE / STANDALONE / DEV の identity は共存できますが、管理対象の Native Messaging manifest の active owner は一つだけです。contracts/browser-extension-store.json は Store identity の機械可読な SSOT で、contracts/browser-extension-standalone.json は Standalone の SSOT です。DEV はパス派生のままです。

native-host use store / use standalone / use dev の後は、すでに開いている対応ページを更新してください。拡張のバージョンは Rust runtime とは独立に進化します。Native Host の identity / channel 契約が新しくなる場合にだけ、対応する runtime 能力が必要です。

メンテナー向けのリリース詳細は docs/_wip/browser-extension-development-and-store-release.md と AGENTS.md にあります。

ドキュメント

herdr-mcp を検索

入力してドキュメントを検索します。