Hermes Agent ツール集

ツールは Hermes Agent が外部世界とやり取りする唯一のチャネルです。ファイルの読み書き、コマンドの実行、ウェブ検索、画像生成など、すべての機能はツールを通じて公開されます。

Hermes には 70 以上のツールが組み込まれており、28 のツール集に分かれています。この章では、各ツール集の主要ツール、パラメータ、ベストプラクティスを一つずつ解説します。


ツールシステムアーキテクチャ

具体的なツールの詳細に入る前に、まずツールの構成方法を理解しましょう。

Hermes は 3 層構造でツールを管理します:

工具(Tool)          ← 单个可调用函数,如 read_file、web_search
  └── 工具集(Toolset)   ← 相关工具的逻辑分组,如 file、web
        └── 平台配置        ← 哪个平台加载哪些工具集

重要な設計:ツールセットを無効にすると、その中のツールはシステムプロンプトから完全に消えます。呼び出せないだけでなく、Agent はそれらの存在をまったく知りません。これにより Token を節約し、Agent が使うべきでないツールを誤用するのを防ぎます。

ツールセットを管理する方法:

# TUI 交互式管理(推荐)
hermes tools

# 命令行管理
hermes tools list                # 列出所有工具及启用状态
hermes tools enable browser      # 启用指定工具集
hermes tools disable audio       # 禁用指定工具集

config.yaml で設定します:

# 文件路径:~/.hermes/config.yaml
# 按平台指定启用的工具集
platform_toolsets:
  cli:
    - hermes-cli         # CLI 核心工具集
    - file
    - terminal
    - web
    - memory
    - skills

デスクトップ版では、左側のスキルとツールメニュー:

ダッシュボードでもツールを管理できます。左側のスキルメニュー内:


ファイルとシステムツール集

この種のツールセットにより、Agent はローカルファイルシステムの操作、コマンドの実行、プロセスの管理ができます。

file — ファイル操作

最も基本的なツールセットで、Agent のほぼすべてのタスクがファイルの読み書きにこれを利用します。

ツール機能主要パラメータ
read_fileファイル内容の読み取りfile_path(必須)、offset(開始行)、limit(行数上限)
write_fileファイルの作成または上書きfile_path(必須)、content(必須)
edit_fileファイル内のテキストを正確に置換file_path、old_string、new_string、replace_all
list_dirディレクトリ内容の一覧表示path(必須)、recursive(再帰するかどうか)
search_filesファイル名パターンで検索pattern(必須、glob 対応)、path(検索ルートディレクトリ)
search_contentファイル内容からテキストを検索pattern(必須、正規表現対応)、path、file_types

edit_file の動作原理:正確な部分文字列マッチングを使用して変更位置を特定します。Agent が old_string(ファイル内に実際に存在するテキスト)を提供すると、ツールがそれを見つけて new_string に置き換えます。old_string が複数箇所にマッチする場合は、replace_all: true を設定してすべての出現箇所を置換します。

edit_file は Agent が最もよく使うファイル変更方法です。old_string が見つからない場合、操作はエラーで失敗し、ファイルを誤って上書きしないため、write_file よりも安全です。

terminal — Shell コマンド実行

Agent が指定されたバックエンド環境で Shell コマンドを実行できるようにします。

ツール機能主要パラメータ
run_command単一の Shell コマンドを実行command(必須)、workdir(作業ディレクトリ)、timeout(タイムアウトミリ秒)
run_script複数行の Shell スクリプトを実行script(必須、複数行のスクリプト内容)、workdir、timeout

コマンドは設定されたターミナルバックエンドで実行されます。local(ローカル)、docker(コンテナ)、ssh(リモート)など。

実行結果には stdout、stderr、終了コードが含まれ、Agent はこれらの情報からコマンドが成功したかどうかを判断できます。

code — サンドボックスコード実行

分離されたサンドボックスでコードスニペットを実行します。Python、JavaScript、Bash をサポートします。

ツール機能主要パラメータ
execute_codeサンドボックスでコードを実行language(python/js/bash)、code(必須)、timeout

terminal との違い:code ツールは独立したサンドボックスで実行され、ファイルシステムにアクセスできません(明示的にマウントしない限り)。アルゴリズム検証やデータ処理など、ファイル操作を必要としないコードの実行に適しています。

computer — デスクトップ GUI 自動化

デスクトップ環境のマウス、キーボード、スクリーンショットを制御します。

ツール機能
screenshot画面または指定領域をキャプチャ
click指定座標でマウスをクリック
typeキーボード入力をシミュレートしてテキストを入力
scrollマウスホイールをスクロール
move指定座標にマウスを移動

computer ツールセットは主に GUI アプリケーションのテストと自動化操作に使用されます。使用シナリオがデスクトップアプリケーションに関係ない場合は、Token を節約するために無効にできます。


ネットワークとコンテンツツール集

この種のツールセットにより、Agent はインターネット検索、ウェブページコンテンツの抽出、ブラウザ操作の自動化ができます。

web — ウェブ検索とコンテンツ抽出

Agent が外部情報を取得するための主要なチャネルです。

ツール機能主要パラメータ
web_searchインターネットコンテンツを検索query(必須)、num_results(結果数)
web_extract指定された URL の本文コンテンツを抽出url(必須)、extract_mode(auto/text/markdown)

web_search は検索結果リスト(タイトル + URL + 要約)を返します。Agent は通常、最初に検索し、興味のあるページに対して web_extract を呼び出して詳細なコンテンツを取得します。

使用するには検索 API の設定が必要です。複数のプロバイダーをサポートしています:

例

# ファイルパス:~/.hermes/config.yaml
# ウェブ検索バックエンドを設定
web
:
  search_provider
: firecrawl    # または brave、serpapi、tavily
  # .env で対応する API キーを設定
  # FIRECRAWL_API_KEY=fc-...
  # または BRAVE_API_KEY=BS...

browser — ブラウザ自動化

完全なブラウザ制御機能。ナビゲーション、クリック、フォーム入力、スクリーンショットなど、人間のようにウェブページを操作できます。

ツール機能主要パラメータ
navigate指定された URL にナビゲートurl(必須)
clickページ要素をクリックselector(CSS セレクターまたはテキスト記述)
fill_formフォームフィールドに入力fields(フィールド名から値へのマッピング)
screenshot現在のページをキャプチャfull_page(全ページスクリーンショットかどうか)
extractページの構造化データを抽出selector、format(json/text)
execute_jsページ内で JavaScript を実行code(必須)

browser ツールセットには Playwright またはクラウドブラウザバックエンドのサポートが必要です。

browser ツールセットはブラウザインスタンスを起動するため、追加のリソースを消費します。ウェブページのテキストコンテンツを抽出するだけであれば、browser extract ではなく web_extract を優先的に使用してください。前者は軽量な HTTP リクエストですが、後者は完全なブラウザを起動する必要があります。

vision — 画像分析

Agent に画像コンテンツを「理解」させます。

ツール機能主要パラメータ
analyze_image画像内容を分析して説明を生成するimage_path または image_url(必須)、question(オプション、画像に対する特定の質問)
describe_image画像の詳細なテキスト説明を生成するimage_path または image_url(必須)

vision ツールは画像を視覚対応の LLM(claude-sonnet-4-6、gpt-4o など)に送信し、モデルが画像内容を認識して説明します。

audio — オーディオ処理

音声からテキストへの変換と、テキストから音声への変換。

ツール機能主要パラメータ
transcribe音声ファイルをテキストに変換するaudio_path(必須)、language(オプション)
ttsテキストを音声ファイルに変換するtext(必須)、voice(音色選択)、provider

Agent 能力ツール集

この種のツールセットは Agent 自身の状態(記憶、スキル、サブ Agent 連携)を管理します。

memory — メモリ管理

永続記憶の読み書きと、セッションをまたぐ履歴の検索。

ツール機能主要パラメータ
memory永続記憶の管理(追加・削除・変更)action(add/replace/remove)、target(memory/user)、content
session_search履歴セッションの全文検索query(必須、FTS5 構文対応)

memory ツールに read 操作はありません。永続記憶はセッション起動時にシステムプロンプトへ注入されているため、Agent が追加で読み取る必要はありません。

skills — スキル管理

再利用可能なワークフロースキルの読み込みと管理。

ツール機能主要パラメータ
skills_listインストール済みの全スキルとその説明を一覧表示するなし(セッション起動時に自動呼び出し)
skill_viewスキルの完全な内容を読み込むname(必須)、path(オプション、references サブファイルを読み込む)
skill_manageスキルファイルの作成・変更・削除action、name、content

delegation — 子 Agent 委任

サブ Agent を生成してタスクを並行実行します。

ツール機能主要パラメータ
spawn_agent単一のサブ Agent を作成してタスクを実行するprompt(必須)、model(オプション)
spawn_parallel複数のサブ Agent を並行作成するtasks(必須、タスクリスト)

サブ Agent は独立したコンテキストウィンドウを持ち、メイン Agent の会話履歴を汚染しません。実行完了後は結果の要約を返します。

kanban — マルチ Agent カンバン

構造化されたマルチ Agent 協調システムで、明示的な有効化が必要です(all/* でも自動的には有効になりません)。

ツール機能
task_createかんばんに新しいタスクを作成する
task_updateタスクステータスを更新する(todo/in_progress/done)
task_listテナントのすべてのタスクを一覧表示する
task_assignタスクを指定したワーカー Agent に割り当てる

Kanban はマルチ Profile 連携の中核メカニズムです。1 つのオーケストレーター Profile がタスクを作成し、複数のワーカー Profile が引き取って実行します。これには複数の Profile のゲートウェイが同時に稼働している必要があります。


メディア制作ツール集

この種のツールセットは通常、Nous Portal のサブスクリプションまたは対応するサードパーティ API キーが必要です。

image_gen — AI画像生成

テキスト説明に基づいて画像を生成し、9 種類のモデルに対応しています。

ツール機能主要パラメータ
generate_imageプロンプトに基づいて画像を生成するprompt(必須)、model(flux/gpt-image/ideogram など)、size、style

tts — テキスト音声変換

audio ツールセットとは独立した TTS 機能で、より豊富なプロバイダー選択肢を提供します。

ツール機能
text_to_speechテキストを音声ファイルに変換する
list_voices利用可能な音声音色を一覧表示する

カスタムツール集

既存のツールセットを組み合わせて、プロジェクト専用のカスタムツールセットを定義できます:

例

# ファイルパス:~/.hermes/config.yaml
# プロジェクト専用のツールセット組み合わせを定義
custom_toolsets
:
 # データサイエンスプロジェクトに必要なツール
  data-science
:
   - file
    - terminal
    - code
    - web

  # 純粋な執筆プロジェクトはファイル操作のみ
  writing
:
   - file
    - web
    - memory

  # 運用プロジェクトは端末 + ファイルが必要で、ブラウザは不要
  devops
:
   - file
    - terminal
    - memory

使用時は--toolsetsパラメータで指定します:

例

# 起動時にカスタムツールセットを使用
hermes --toolsets data-science chat

# または Profile 設定でデフォルトに設定
coder config set toolsets data-science

ツール呼び出しフロー

ツール呼び出しの完全なフローを理解すると、Agent の動作の理解と問題のトラブルシューティングに役立ちます。

完全なツール呼び出しは以下の手順で実行されます:

  1. LLM が応答生成時にツールの呼び出しを決定し、ツール名とパラメータを出力する
  2. tool_request Middleware が実行される(パラメータを変更できる)
  3. 承認チェック——ツールが危険な操作の場合は、approvals.mode に応じて確認を表示するかどうかを決定する
  4. ツールが実際に実行される
  5. tool_execution Middleware が実行される(結果を変更できる)
  6. post_tool_call Hook がテレメトリデータを記録する
  7. 実行結果が LLM に返され、LLM が応答の生成を続ける

Middleware がツールパラメータを変更した場合、変更後のパラメータが承認と実際の実行の入力になります。Middleware で実行をショートサーキットした場合(カスタム結果を返した場合)、実際のツールは実行されません。


ツール使用統計

どのツールが頻繁に使用されているかを把握すると、ツールセット設定と Token 消費の最適化に役立ちます。

セッション内で今回のセッションのツール呼び出し統計を確認します:

例

# 今回のセッションのツール使用統計を確認
/usage

# 出力例:
# Token 使用量: 入力 12,340 | 出力 5,678 | 合計 18,018
# ツール呼び出し: read_file (15回) | edit_file (8回) |
# terminal (3回) | web_search (2回)

バッチ処理シナリオでは、statistics.json ファイルにより詳細な統計が記録されます:

例

// ファイルパス:data/my_first_run/statistics.json
{
  "total_tool_calls": 1523,
  "tools": {
    "read_file": {"count": 520, "success": 510, "failure": 10},
    "edit_file": {"count": 380, "success": 375, "failure": 5},
    "terminal": {"count": 290, "success": 270, "failure": 20},
    "web_search": {"count": 180, "success": 178, "failure": 2}
  },
  "avg_tool_calls_per_turn": 2.4,
  "most_common_tool_sequence": [
    "read_file", "edit_file", "terminal"
  ]
}
その他の拡張