Hermes Agent 入門 — 初心者のためのハンズオンガイド|2026-09 版
第 11 章

ブラウザと Web — 検索・抽出・自動操作・マルチモーダル

Web 検索と本文抽出、ブラウザ自動化、vision・画像生成・TTS を1つのエージェントで使う

この章で分かること

これは何か

本章で扱う機能はどれも、CLIの専用サブコマンドではなくエージェントがモデルコールとして呼び出すツールという形で提供される。対話の中で「〜を調べて」「このページを開いて」「画像を作って」と頼むと、エージェントが状況に応じて次のツールを選ぶ。

どのバックエンドが動くかは、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つに分かれる。

最初の3つは「情報を得る」ための手段を、速さ・コスト・自由度で並べた段階になっている。迷ったら軽い方から試し、それで足りなければ一段重い方へ進めばよい。

不足時 不足時 web_search 検索結果のリンクを返す 速い・安い web_extract ページ本文を抽出 既定15,000字まで ブラウザ自動化 クリック・入力・スクショ 重い・状態を持つ
図 11-1 情報を知りたいだけならweb_searchとweb_extractで足り、ページを操作する必要があるときだけブラウザ自動化まで踏み込む。

vision・画像生成・TTSは向きが逆で、画像や音声を入力として理解する(vision)か、出力として作る(画像生成・TTS)かで分かれる——エージェントが「見る」のがvision、「描く」のが画像生成、「話す」のがTTSである。

仕組み① Web検索と抽出——バックエンドの多様性と文字数バジェット

web_searchとweb_extractは単一のバックエンド選択で動く、モデルコール可能な2つのツールである。既定はFirecrawlだが、実際には8種類のプロバイダから選べる。

プロバイダ環境変数検索抽出無料枠
Firecrawl(既定)FIRECRAWL_API_KEY(任意)✔✔500クレジット/月・鍵無しでも利用可
SearXNGSEARXNG_URL✔—無料(自前ホスト)
Brave SearchBRAVE_SEARCH_API_KEY✔—2,000クエリ/月
DDGS (DuckDuckGo)なし✔—無料
ExaEXA_API_KEY(任意)✔✔鍵無しでも利用可・鍵ありで1,000検索/月
ParallelPARALLEL_API_KEY(任意)✔✔鍵無しでも利用可
KeenableKEENABLE_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の呼び出しでいつでも続きを読める。「切り詰められて壊れた」のではなく、「読み切れなかった残りがどこにあるか」を毎回教えてくれる設計だと理解しておくとよい。

仕組み② ブラウザ自動化——バックエンドとアクセシビリティツリー

ブラウザ自動化は用途に応じて複数のバックエンドから選べる。

ページはアクセシビリティツリー(画面の見た目ではなく、要素の役割・ラベル・状態をテキストで表した構造)として表現され、クリック可能な要素には@e1・@e2のような参照IDが振られる。エージェントはピクセル座標ではなくこの参照IDでクリックや入力を行う。主要ツールは次のとおり。

単に情報を読みたいだけならweb_searchやweb_extractの方が速くて安い。ブラウザツールは、クリック・フォーム送信・動的コンテンツの確認など「操作」が必要なときに使う——これが図11-1のエスカレーションの実体である。

ツール呼び出し 描画・操作 snapshot browser_vision 解析結果をエージェントへ エージェント ツールを呼ぶ ブラウザ 選んだバックエンド Webページ 実際のサイト vision解析 画像を見て説明する
図 11-2 テキストで済むならbrowser_snapshotのアクセシビリティツリーが返り、見た目の確認が要るときだけbrowser_visionでスクリーンショットをAIに解析させてから結果がエージェントへ戻る。

仕組み③ 実プロファイルブラウジング——便利さと引き換えのリスク

既定のローカルブラウジングは、まっさらな使い捨てプロファイルで動く——エージェントはどこにもログインしていない。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(画像解析) 画面の説明・スクショ解析 追加費用なし 画像生成 FAL・OpenRouterなど 1枚ごとに従量課金 TTS(読み上げ) Edge・ElevenLabsなど11種 有料は従量課金
図 11-3 visionは既存の会話モデルか補助モデルで完結して追加費用が生じにくいのに対し、画像生成とTTSは専用プロバイダを経由し生成のたびに従量課金される。

vision — 画像を理解する

クリップボードの画像は/pasteコマンド(最も確実な明示的手段)でCLIに貼り付けられ、~/.hermes/images/にPNGとして保存される。貼った画像がどう処理されるかは、いま使っているモデルがvision対応かどうかで自動的に切り替わる。

この切り替えはユーザーが設定するものではなく、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キーを設定している場合は、そのプロバイダの利用枠を消費する。

  1. 対話セッションで、最近の出来事について尋ねる。
Nous ResearchのHermes Agentの最新リリースについて調べて。

エージェントはweb_searchを呼び、検索結果のタイトル・URL・スニペットを返す。

  1. 検索結果に出てきた特定のURLについて、本文をまとめて読ませる。
さっき出てきたリリースノートのページを丸ごと読んで要点をまとめて。

エージェントはweb_extractを呼び、ページの本文(既定で最大15,000文字)を取得して要約する。ページが長大な場合は本文の末尾に[TRUNCATED]という注記が付き、続きを読むためのread_file呼び出しが案内される——これはエラーではなく正常な切り詰めである。

ハンズオン 11-2 ブラウザでページを開き、スクリーンショットをvisionで解析する

この操作は指定した実在のWebサイトへ実際にアクセスする。クラウドバックエンド(Browserbase・Browser Use Cloud等)を設定している場合はセッション課金が発生する。ローカルバックエンドでも、browser_visionによるスクリーンショット解析は使用中のモデル(または補助vision モデル)のトークンを消費する。

  1. 対話セッションで、特定のページを開いて視覚的な内容を尋ねる。
https://github.com/NousResearch/hermes-agent を開いて、
トップページのスクリーンショットを見て何が書いてあるか教えて。

エージェントはbrowser_navigateでページへ移動し、必要に応じてbrowser_snapshotでアクセシビリティツリーを取得したうえで、視覚的な確認が要ると判断すればbrowser_visionでスクリーンショットを撮ってAIに解析させる。撮影した画像は~/.hermes/cache/screenshots/に保存され、24時間後に自動で消えるため後片付けは不要である。

ハンズオン 11-3 画像をクリップボードから貼り付けてvisionに読ませる

  1. スクリーンショットや画像をクリップボードにコピーする。
  2. 対話中に/pasteと入力してEnterを押す。
/paste

入力欄の上に[📎 Image #1]というバッジが表示され、画像が添付された状態になる。

  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で選び直す必要がある。選択済みプロバイダの鍵が無い状態で使おうとするとエラーになり、黙って別のプロバイダへフォールバックすることもない。

まとめ

参考リンク