この章で分かること
web_search(検索)→web_extract(本文抽出)→ ブラウザ自動化という3段階のエスカレーションと、どの段階で足りるかの見極め方web_extractが長いページを要約せずに切り詰める仕組み(決定的な文字数バジェットと[TRUNCATED]フッター)- ブラウザ自動化の複数バックエンド(ローカル/クラウド)と、navigate・click・type・screenshot系の主要ツールの役割
- 実プロファイルブラウジング(ログイン済みブラウザの利用)が持ち込む具体的なリスクと、有効化する前に理解すべきこと
- vision・画像生成・TTSという3つのマルチモーダル機能が、どのツール・プロバイダ経由で動くか
これは何か
本章で扱う機能はどれも、CLIの専用サブコマンドではなくエージェントがモデルコールとして呼び出すツールという形で提供される。対話の中で「〜を調べて」「このページを開いて」「画像を作って」と頼むと、エージェントが状況に応じて次のツールを選ぶ。
web_search/web_extract— Webを検索し、指定したURLの本文を抽出するbrowser_navigate/browser_snapshot/browser_click/browser_type/browser_visionほか — ブラウザを実際に操作するvision_analyze— 画像を解析する(多くの場合は自動ルーティングされ、明示的に呼ばれないこともある)image_generate— テキストから画像を生成・編集するtext_to_speech— テキストを音声に変換する
どのバックエンドが動くかは、hermes toolsのウィザードか~/.hermes/config.yamlの設定キー(web.backend / browser.backend / browser.cloud_provider / image_gen.provider / tts.provider)で選ぶ。第3章のNous Portal有料サブスクリプションがあれば、これらすべてをTool Gateway経由でAPIキーなしに使える。ただしweb・browserのツールセット自体が有効でなければ使えず、Blank Slateで導入した場合は既定で無効な点に注意(詳細は第3章参照)。
いつ使うのか
典型的な使いどころは次の4つに分かれる。
- 最新情報を調べたい — ニュース・ドキュメント・料金など、学習データにない/変わりやすい情報を知りたいとき。
web_searchで十分なことが多い - 特定ページの内容をまとめて読みたい — 記事全文、フォーラムのスレッド、ドキュメントの1ページを丸ごと読ませたいとき。
web_extractを使う - ページを操作したい — ログイン、フォーム送信、ボタンのクリック、JavaScriptで描画される動的なコンテンツの確認など、読むだけでは済まないとき。ブラウザ自動化が必要になる
- 画像・音声を読む/作る — スクリーンショットや添付画像の中身を理解したい(vision)、説明用の画像が欲しい(画像生成)、返答を声で届けたい(TTS)
最初の3つは「情報を得る」ための手段を、速さ・コスト・自由度で並べた段階になっている。迷ったら軽い方から試し、それで足りなければ一段重い方へ進めばよい。
vision・画像生成・TTSは向きが逆で、画像や音声を入力として理解する(vision)か、出力として作る(画像生成・TTS)かで分かれる——エージェントが「見る」のがvision、「描く」のが画像生成、「話す」のがTTSである。
仕組み① Web検索と抽出——バックエンドの多様性と文字数バジェット
web_searchとweb_extractは単一のバックエンド選択で動く、モデルコール可能な2つのツールである。既定はFirecrawlだが、実際には8種類のプロバイダから選べる。
| プロバイダ | 環境変数 | 検索 | 抽出 | 無料枠 |
|---|---|---|---|---|
| Firecrawl(既定) | FIRECRAWL_API_KEY(任意) | ✔ | ✔ | 500クレジット/月・鍵無しでも利用可 |
| SearXNG | SEARXNG_URL | ✔ | — | 無料(自前ホスト) |
| Brave Search | BRAVE_SEARCH_API_KEY | ✔ | — | 2,000クエリ/月 |
| DDGS (DuckDuckGo) | なし | ✔ | — | 無料 |
| Exa | EXA_API_KEY(任意) | ✔ | ✔ | 鍵無しでも利用可・鍵ありで1,000検索/月 |
| Parallel | PARALLEL_API_KEY(任意) | ✔ | ✔ | 鍵無しでも利用可 |
| Keenable | KEENABLE_API_KEY(任意) | ✔ | ✔ | 鍵無しでも利用可 |
| xAI (Grok) | XAI_API_KEY | ✔ | — | 有料 |
Brave・DDGS・xAIは検索専用なので、web_extractも使いたいならFirecrawl・Exa・Parallel・Keenableのいずれかと組み合わせる(web.search_backend / web.extract_backendで検索と抽出を別プロバイダにできる)。特筆すべきは鍵なしフォールバックリングで、何も設定していない新規インストールでも、Exa・Parallel・Firecrawl・Keenableの公開無料枠をラウンドロビンで自動利用し、サインアップなしでWeb検索・抽出が動く。レート制限に当たったリクエストは自動的にリング内の次のベンダーへフェイルオーバーする。
web_extractは、フォーラムのスレッドやニュース記事のようにページが巨大になりがちな問題に、LLMによる要約ではなく決定的な文字数バジェットで対処する。既定は15,000文字(web.extract_char_limitで変更可)で、これを超えたページは先頭75%+末尾25%のウィンドウに[TRUNCATED]フッターを添えて返す。省略された全文は~/.hermes/cache/web/に保存されており、フッターに書かれたread_fileの呼び出しでいつでも続きを読める。「切り詰められて壊れた」のではなく、「読み切れなかった残りがどこにあるか」を毎回教えてくれる設計だと理解しておくとよい。
仕組み② ブラウザ自動化——バックエンドとアクセシビリティツリー
ブラウザ自動化は用途に応じて複数のバックエンドから選べる。
- Browser Use cloud mode(
BROWSER_USE_API_KEY)— stealth・住宅プロキシ・CAPTCHA解決・永続プロファイル付きの管理Chromium - Browserbase cloud mode(
BROWSERBASE_API_KEY+BROWSERBASE_PROJECT_ID)— アンチボット機能を持つ別のクラウドブラウザ - Browser Use mode(既定)— Browser Use CLI 3.0を使い、エージェントがPythonコードを書いてブラウザを操作する駆動方式。
browser.backend未設定でCLIが動く環境なら自動的にこのモードになる - Firecrawl cloud mode(
FIRECRAWL_API_KEY)— 組み込みスクレイピング付きのクラウドブラウザ - Camofox local mode— Camoufox(フィンガープリント偽装機能つき Firefox フォーク)をラップする自前の Node.js サーバー。標準デプロイは Docker 経由
- Lightpanda local engine— Zig製の高速ヘッドレスブラウザ。Chrome比16倍省メモリ・9倍高速だがスクリーンショット非対応
- Local Chromium-family CDP—
/browser connectで稼働中のChrome/Brave/Chromium/Edgeにアタッチする - Local browser mode—
agent-browserCLI経由のローカルChromium
ページはアクセシビリティツリー(画面の見た目ではなく、要素の役割・ラベル・状態をテキストで表した構造)として表現され、クリック可能な要素には@e1・@e2のような参照IDが振られる。エージェントはピクセル座標ではなくこの参照IDでクリックや入力を行う。主要ツールは次のとおり。
browser_navigate— URLへ移動する(最初に必ず呼ぶ)browser_snapshot— 現在のページのアクセシビリティツリーを取得する。web_extractと同じ15,000文字の既定しきい値(browser.snapshot_threshold)で切り詰められ、超過分は同様にキャッシュされるbrowser_click/browser_type/browser_scroll/browser_press/browser_back— クリック・入力・スクロール・キー入力・戻るbrowser_get_images— ページ上の画像一覧を取得するbrowser_vision— スクリーンショットを撮ってAIで解析する。CAPTCHAや複雑なレイアウトなど、テキストのスナップショットでは分からない視覚情報を確認するときに使うbrowser_console/browser_cdp/browser_dialog— JSエラー取得・生CDPパススルー・ネイティブダイアログ応答という、他のツールで届かない領域の逃げ道
単に情報を読みたいだけならweb_searchやweb_extractの方が速くて安い。ブラウザツールは、クリック・フォーム送信・動的コンテンツの確認など「操作」が必要なときに使う——これが図11-1のエスカレーションの実体である。
仕組み③ 実プロファイルブラウジング——便利さと引き換えのリスク
既定のローカルブラウジングは、まっさらな使い捨てプロファイルで動く——エージェントはどこにもログインしていない。browser.use_real_profile: trueにすると、これが一変する。
# ~/.hermes/config.yaml
browser:
use_real_profile: true
有効にすると、Hermesはあなたの既定ブラウザの「実際に使っている」プロファイル(Cookie・保存済みログイン・設定)のスナップショットを~/.hermes/browser-profile/<browser>/にコピーし、実際のブラウザ本体をそのスナップショット上でヘッドレス起動して、エージェントがあなた自身としてブラウジングできるようにする。実体を持つブラウザ本体を使うのは、macOSのKeychainで暗号化されたCookieを正しく復号するためだ。独立したコピー上で動くため実行中のブラウザとロックを取り合わず、ヘッドレスなので作業の邪魔にもならない。
これは隔離境界ではなく、同意に基づく利便性機能である。公式ドキュメントが明記しているとおり、エージェントが訪れるページはあなたの本物のログイン状態で実行される。有効にするのは「エージェントに自分として振る舞ってほしい」と判断したときだけにすべきで、既定では無効になっている。
対応ブラウザはChrome・Edge・Brave・Brave Origin・Chromium(OSの既定ブラウザに限る)で、Firefoxのような非Chromium系は明確なエラーで失敗する。複数プロファイルを使い分けている場合はbrowser.real_profile_pinで対象を明示できる。Windowsでは対象ブラウザを完全終了しないとCookie・ログインDBが排他ロックされてコピーできない(バックグラウンドで動き続けるトレイ常駐にも注意)。トグルをOFFに戻すと、次回のブラウザ利用時に~/.hermes/browser-profile/のスナップショット自体が削除され、コピーされた認証情報が残り続けることはない。
仕組み④ マルチモーダル——vision・画像生成・TTS
Hermesは画像や音声を「見る」「描く」「話す」という3方向のマルチモーダル機能を持つ。いずれも本体の会話モデルとは別の、専用バックエンドを経由する。
vision — 画像を理解する
クリップボードの画像は/pasteコマンド(最も確実な明示的手段)でCLIに貼り付けられ、~/.hermes/images/にPNGとして保存される。貼った画像がどう処理されるかは、いま使っているモデルがvision対応かどうかで自動的に切り替わる。
- vision対応モデル(Claude・GPT-4V系・Gemini・Qwen-VLなど)— 実ピクセルとしてそのままモデルに送られる
- テキスト専用モデル(DeepSeek V3など)— 補助ツール
vision_analyzeが画像を説明文に変換し、その説明がテキストとして会話に注入される
この切り替えはユーザーが設定するものではなく、Hermesがプロバイダのメタデータからモデルの対応状況を見て自動的に選ぶ。セッションの途中でモデルを切り替えても、画像の扱いは意識せずそのまま動く。
画像生成 — 画像を作る
画像生成はimage_generateツールが担い、FAL.ai経由で11モデルを標準サポートする。hermes toolsで選んだモデルはconfig.yamlに保存され、以後そのモデルが使われ続ける。
| モデル | 速度 | 強み | 価格 |
|---|---|---|---|
fal-ai/flux-2/klein/9b(既定) | 1秒未満 | 高速・くっきりした文字 | $0.006/MP |
fal-ai/flux-2-pro | 約6秒 | スタジオ品質の写実性 | $0.03/MP |
fal-ai/nano-banana-pro | 約8秒 | Gemini 3 Pro相当・推論力・文字描画 | $0.15/枚(1K) |
fal-ai/gpt-image-2 | 約20秒 | 最高峰の文字描画・CJK対応 | $0.04〜0.06/枚 |
fal-ai/recraft/v4/pro/text-to-image | 約8秒 | デザイン・ブランド用途 | $0.25/枚 |
同じimage_generateツールは既存画像の編集(image-to-image)もこなす——編集対応モデルなら元画像を渡すだけで自動的に編集エンドポイントへ切り替わる。アスペクト比はlandscape / square / portraitの3種類をエージェント側から指定でき、モデルごとの実際のサイズ指定はHermesが内部で変換する。image_gen.providerは一度選ぶと固定され、.envに鍵を追加しただけでは自動的に切り替わらない——変更は必ずhermes toolsから行う。
# ~/.hermes/config.yaml
image_gen:
provider: fal # nousを選べばTool Gateway経由
model: fal-ai/flux-2/klein/9b
max_parallel_requests: 4
TTS — 音声で話す
テキスト読み上げはtext_to_speechツールが担い、11のプロバイダから選べる。既定のEdge TTSはAPIキー不要の無料プロバイダで、322音声・74言語をカバーする。
| プロバイダ | 品質 | 費用 | APIキー |
|---|---|---|---|
| Edge TTS(既定) | 良好 | 無料 | 不要 |
| ElevenLabs | 最高峰 | 有料 | ELEVENLABS_API_KEY |
| OpenAI TTS | 良好 | 有料 | VOICE_TOOLS_OPENAI_KEY |
| Google Gemini TTS | 最高峰 | 無料枠あり | GEMINI_API_KEY |
| Piper / KittenTTS / NeuTTS | 良好 | 無料(ローカル実行) | 不要 |
切り替えはtts.providerを書き換えるだけで、選んだプロバイダ固有の設定はtts.<provider名>以下にまとまる。配信形式はプラットフォームごとに変わる(Telegramは再生ボタン付きのボイスバブル、CLIは~/.hermes/audio_cache/へのMP3保存など)。逆方向の音声メッセージ(声を文字に起こすSTT)は、Telegram・Discord・WhatsApp・Slack・Signal経由で自動的に文字起こしされ会話に注入される仕組みで、既定はローカルWhisperによる無料処理。プラットフォームごとの配信の詳細は第7章のゲートウェイを参照。
ハンズオン 11-1 web_searchとweb_extractで調べ物をする
APIキーを何も設定していなくても、この操作はExa・Parallel・Firecrawl・Keenableの鍵なし無料枠へ実際に外部通信を行う(該当ベンダーの公開エンドポイントにアクセスする)。個別のAPIキーを設定している場合は、そのプロバイダの利用枠を消費する。
- 対話セッションで、最近の出来事について尋ねる。
Nous ResearchのHermes Agentの最新リリースについて調べて。
エージェントはweb_searchを呼び、検索結果のタイトル・URL・スニペットを返す。
- 検索結果に出てきた特定のURLについて、本文をまとめて読ませる。
さっき出てきたリリースノートのページを丸ごと読んで要点をまとめて。
エージェントはweb_extractを呼び、ページの本文(既定で最大15,000文字)を取得して要約する。ページが長大な場合は本文の末尾に[TRUNCATED]という注記が付き、続きを読むためのread_file呼び出しが案内される——これはエラーではなく正常な切り詰めである。
ハンズオン 11-2 ブラウザでページを開き、スクリーンショットをvisionで解析する
この操作は指定した実在のWebサイトへ実際にアクセスする。クラウドバックエンド(Browserbase・Browser Use Cloud等)を設定している場合はセッション課金が発生する。ローカルバックエンドでも、browser_visionによるスクリーンショット解析は使用中のモデル(または補助vision モデル)のトークンを消費する。
- 対話セッションで、特定のページを開いて視覚的な内容を尋ねる。
https://github.com/NousResearch/hermes-agent を開いて、
トップページのスクリーンショットを見て何が書いてあるか教えて。
エージェントはbrowser_navigateでページへ移動し、必要に応じてbrowser_snapshotでアクセシビリティツリーを取得したうえで、視覚的な確認が要ると判断すればbrowser_visionでスクリーンショットを撮ってAIに解析させる。撮影した画像は~/.hermes/cache/screenshots/に保存され、24時間後に自動で消えるため後片付けは不要である。
ハンズオン 11-3 画像をクリップボードから貼り付けてvisionに読ませる
- スクリーンショットや画像をクリップボードにコピーする。
- 対話中に
/pasteと入力してEnterを押す。
/paste
入力欄の上に[📎 Image #1]というバッジが表示され、画像が添付された状態になる。
- そのまま質問を続けて送信する。
この画像に写っているグラフは何を示している?
使用中のモデルがvision対応なら画像は実ピクセルとして直接送られ、テキスト専用モデルならvision_analyzeが自動的に代役を務める。どちらの場合も、応答の質はモデルのvision対応状況次第であることを覚えておく。
つまずきポイント
[TRUNCATED]を「取得に失敗した」と誤解しない —— これはweb_extractとbrowser_snapshot共通の正常な切り詰め表示である。全文は~/.hermes/cache/web/に保存されており、フッターに書かれたread_file呼び出しで続きを取得できる。要約ではなく機械的な文字数カットなので、重要な情報が真ん中で切れることもある点には注意する。
実プロファイルブラウジングは「安全なサンドボックス」ではない —— browser.use_real_profile: trueを有効にした瞬間から、エージェントが訪れるページはあなたの実際のログイン状態で動く。公式ドキュメントが明言するとおり、これは同意に基づく利便性機能であって隔離境界ではない。既定は無効なので、有効化するのは「エージェントに自分として振る舞ってほしい」場面に限るべきである。
画像生成・TTSのプロバイダは後から鍵を足しても自動で切り替わらない —— image_gen.providerやtts.providerは一度選ぶと固定される。有料プロバイダのAPIキーを.envに追加しても、明示的にhermes toolsで選び直さない限り無料プロバイダのまま動き続ける(逆に、選択済みのプロバイダの鍵を消すとエラーになる——無料側へ黙って戻ることはない)。
「読むだけ」の作業にブラウザ自動化を使うと遅く高くつく —— ページの内容を知りたいだけならweb_searchやweb_extractの方が速く、多くの場合コストも低い。ブラウザツールはクリック・フォーム送信・動的コンテンツの確認など、実際に「操作」が必要な場面に絞って使う。
理解度チェック
Q1. web_search、web_extract、ブラウザ自動化はそれぞれ何をするツールですか。どういう基準で使い分けますか。
web_searchはWebを検索してリンクとスニペットを返す。web_extractは指定したURLの本文を抽出して返す。ブラウザ自動化はページを実際に操作する(クリック・入力・スクリーンショットなど)。情報を得るだけなら軽くて速いweb_search・web_extractから試し、クリックやフォーム送信のような操作が必要になったときだけブラウザ自動化へ進む。
Q2. web_extractが文字数の既定上限を超えたページを取得したとき、何が起きますか。
LLMによる要約はせず、決定的な文字数バジェット(既定15,000文字)に基づき先頭75%+末尾25%のウィンドウを返し、末尾に[TRUNCATED]フッターを付ける。省略された全文は~/.hermes/cache/web/に保存され、read_fileの呼び出しで続きを取得できる。
Q3. browser.use_real_profile: trueを有効にすると何が起き、なぜ「隔離境界ではない」と説明されますか。
あなたの既定ブラウザの実際のプロファイル(Cookie・保存済みログイン)のスナップショットをコピーし、実ブラウザ本体をヘッドレスで起動して、エージェントがあなた自身としてログイン済みでブラウジングできるようにする。エージェントが訪れるページは本物のログイン状態で実行されるため、公式ドキュメントはこれを「同意に基づく利便性機能であり、安全な隔離ではない」と明記している。既定は無効。
Q4. visionでモデルが画像非対応(テキスト専用)の場合、貼り付けた画像はどう処理されますか。
実ピクセルとして送る代わりに、補助ツールvision_analyzeが画像を説明文に変換し、そのテキストが会話に注入される。この切り替えは設定不要で、Hermesが現在のモデルのvision対応状況を見て自動的に選ぶ。
Q5. image_gen.providerを一度選んだ後、別プロバイダのAPIキーを.envに追加すると何が起きますか。
自動的には切り替わらない。image_gen.providerは明示的な選択として固定されており、変更するにはhermes toolsで選び直す必要がある。選択済みプロバイダの鍵が無い状態で使おうとするとエラーになり、黙って別のプロバイダへフォールバックすることもない。
まとめ
- 情報を得るための3段階(web_search → web_extract → ブラウザ自動化)は、速さ・コストと引き換えに自由度が上がる関係にあり、軽い方から試して足りなければ一段重い方へ進む
- web_extractとbrowser_snapshotはどちらも要約ではなく決定的な文字数バジェットで長文を切り詰め、省略部分はキャッシュとread_fileで補える
- ブラウザ自動化は複数のローカル/クラウドバックエンドを持ち、アクセシビリティツリーと参照IDでページを操作する。実プロファイルブラウジングは強力だが隔離境界ではなく、同意に基づく機能として慎重に使う
- vision・画像生成・TTSはそれぞれ別のプロバイダ経由で動くマルチモーダル機能で、visionは追加費用が生じにくいのに対し画像生成・TTSの有料プロバイダは生成のたびに従量課金される
- 次の第12章では、Hermesが生成した実行の軌跡を学習データとして再利用するMLOps機能を俯瞰する