0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hermes Agent を読み解く — ツールシステム

連載「Hermes Agent を読み解く」第5回。

連載「Hermes Agent を読み解く」全10回

  • [第1回 全体像と読み方]
  • [第2回 コアの会話ループ]
  • [第3回 状態管理とコンパクション]
  • [第4回 記憶アーキテクチャと人格]
  • [第5回 ツールシステム](本記事)
  • [第6回 マルチエージェント並列]
  • [第7回 Kanban 永続タスクボード]
  • [第8回 接続層とインタフェース総覧]
  • [第9回 拡張運用]
  • [第10回 セキュリティと安全運用]

はじめに — 能力の棚卸し

ここまでで会話ループ・状態・記憶という「中枢」を見た。後半戦の入口として、エージェントの「手足」——ツールを棚卸しする。第1回で触れたとおり、tools/ 直下には 82 ファイルあるが、実際に呼べるツールは 71。今回はその 71 件を端折らず全部並べる。カタログとして手元に置けるようにするのが狙いだ。

1. 自己登録レジストリ

ツールは中央の名簿に手で登録されるのではない。各ツールモジュールが import される瞬間に registry.register(...) を呼んで自分を登録する——自己登録方式だ。

加えて、各ツールの可用性には 30 秒 TTL のキャッシュがかかる(tools/registry.py:121)。ツールが使えるかどうかの判定(check_fn)は資格情報や環境変数の有無を見るが、毎回評価すると重い。30 秒キャッシュで「直近の判定結果」を使い回す。

規模を改めて確定する。レジストリ登録ツールは 71tools/ 直下は 82 ファイル、再帰すると 99(承認・URL 安全チェックなどの非ツールモジュールを含む)。「82 ツール」は誤り、というのが第1回からの一貫した注意点だ。

2. どんなツールがあるか(全 71 カタログ)

レジストリ実測の 71 件をカテゴリ別に全件並べる。各ツールは check_fn で資格情報/環境が揃った時だけ有効になる(例: Home Assistant 系は HASS_TOKENx_search は xAI 認証)。

Web / 検索(3)

ツール 説明
web_search Web 検索。既定で最大 5 件(タイトル / URL / 説明)を返す
web_extract URL から本文を Markdown 抽出(PDF / arXiv も可)
x_search xAI の X(Twitter) 検索(投稿 / プロフィール / スレッド。現在の議論・反応向け、既定 off)

ビジョン / 生成(4)

ツール 説明
vision_analyze 画像を会話に読み込む(URL / ローカル / dataURL)。ネイティブ vision モデルで視認
video_analyze 動画(URL / ローカル)をマルチモーダルモデル(Gemini 等)で解析
image_generate テキストから高品質画像生成(バックエンド = FAL / OpenAI 等はユーザー設定)
video_generate テキスト / 画像から動画生成(スキーマは実行時に動的構築)

ターミナル / プロセス / ファイル(6)

ツール 説明
terminal シェルコマンド実行(Linux 環境、状態は通常永続)。cat / head / tail は使わず read_file を推奨
process terminal(background=true) の背景プロセス管理(list / poll / log 等)
read_file 行番号付きでファイル読取(ページング、cat / head / tail の代替)
write_file ファイル全置換書き込み(親ディレクトリ自動作成、echo / heredoc の代替)
patch ファイルの find-and-replace(9 戦略のファジー一致、sed / awk の代替)
search_files 内容検索 / ファイル名検索(ripgrep ベース、grep / find / ls の代替)

ブラウザ自動操作(12)

ツール 説明
browser_navigate URL へ遷移しセッション初期化(他 browser_* の前提)
browser_snapshot アクセシビリティツリーのテキスト snapshot(要素に @e1 等の ref ID)
browser_click ref ID で要素クリック
browser_type 入力欄に ref 指定でタイプ(先にクリア)
browser_scroll ページスクロール
browser_back 履歴を戻る
browser_press キー押下(Enter / Tab / ショートカット)
browser_get_images ページ内画像の URL / alt 一覧(vision 解析用)
browser_vision スクリーンショットで視覚的に確認
browser_console コンソール出力 / JS エラー取得。expression 指定時はページ文脈で JS 評価もできる
browser_cdp 生の Chrome DevTools Protocol コマンド(エスケープハッチ)
browser_dialog ネイティブダイアログ(alert / confirm / prompt)への応答

計画 / メモリ / セッション / 対話(4)

ツール 説明
todo セッション内タスクリスト管理(3 手順以上で推奨)
memory セッション横断の永続メモリ保存(将来ターンに注入。簡潔に保つ)
session_search ローカル SQLite の過去セッションを FTS5 検索(LLM 不使用)
clarify ユーザーへ確認質問(選択式 / 自由記述)

スキル(3)

ツール 説明
skills_list 利用可能スキル一覧(名前 + 説明)
skill_view スキル本文 / 付属スクリプト・テンプレートをロード
skill_manage スキルの作成 / 更新 / 削除(手続き的記憶。~/.hermes/skills

実行 / 委譲 / 推論(3)

ツール 説明
execute_code Hermes ツールを呼べる Python 実行(3+ ツール呼びの round trip 削減)
delegate_task 隔離コンテキストでサブエージェント生成(独自の会話 / 端末 / ツールセット)
mixture_of_agents 難問を複数フロンティア LLM で協調(5 API 呼び = 参照 4 + 集約 1)

音声 / スケジュール / 送信(3)

ツール 説明
text_to_speech テキスト → 音声(MEDIA: パスを返し、各プラットフォームが音声で配信)
cronjob cron ジョブ管理(create / list / update / pause / resume / remove / trigger)
send_message 接続済みメッセージングプラットフォームへ送信 / 宛先一覧

Kanban(9)

HERMES_KANBAN_TASK 設定時のみ有効になる、永続タスクボード用の作業ツール群(詳細は第7回)。

ツール 説明
kanban_show タスクの全状態(本文 / 担当 / 親ハンドオフ / 過去試行 / コメント / イベント)を読む
kanban_list タスク要約一覧(orchestrator がルーティング用に。担当 / 状態でフィルタ)
kanban_complete タスク完了 + 構造化ハンドオフ(summary / result / metadata)
kanban_block 人間入力待ちで blocked へ(reason をボードに表示)
kanban_heartbeat 長時間処理中の生存シグナル
kanban_comment スレッドへ恒久コメント追記
kanban_create 新タスク作成(現タスクの子にも)
kanban_link 親 → 子依存エッジ追加(親 done まで子は ready にならない)
kanban_unblock blocked を ready へ(orchestrator 限定)

スマートホーム(4, Home Assistant)

ツール 説明
ha_list_entities エンティティ一覧(domain / area でフィルタ)
ha_get_state 単一エンティティの詳細状態(属性込み)
ha_list_services 制御用サービス(アクション)一覧
ha_call_service サービス呼び出しでデバイス制御

Discord(2)

ツール 説明
discord サーバの読み取り / 参加(メンバー検索 / メッセージ取得 / スレッド作成)
discord_admin サーバ管理(チャンネル / ロール一覧、ピン、ロール付与)

Feishu / Lark(5)

ツール 説明
feishu_doc_read 文書の全文をプレーンテキストで読む
feishu_drive_list_comments 文書のコメント一覧
feishu_drive_list_comment_replies コメントスレッドの返信一覧
feishu_drive_reply_comment ローカル(引用テキスト)コメントへ返信
feishu_drive_add_comment 文書全体コメントの新規追加

Spotify(7)

ツール 説明
spotify_playback 再生制御 / 再生状態 / 最近再生
spotify_devices Connect デバイス一覧 / 再生転送
spotify_queue キュー確認 / 追加
spotify_search カタログ検索(曲 / アルバム / アーティスト / プレイリスト / 番組 / エピソード)
spotify_playlists プレイリストの一覧 / 閲覧 / 作成 / 更新 / 編集
spotify_albums アルバムのメタ / トラック取得
spotify_library 保存済みトラック / アルバムの一覧 / 保存 / 削除

Yuanbao 元宝(5)

ツール 説明
yb_query_group_info グループ(派 / Pai)の基本情報(名前 / オーナー / 人数)
yb_query_group_members グループメンバー照会(@メンション / Bot 検出用)
yb_send_dm グループ内ユーザーへ DM(メディア可、名前で解決)
yb_search_sticker 内蔵スタンプ(表情包)をキーワード検索
yb_send_sticker 内蔵スタンプ送信

デスクトップ(1)

ツール 説明
computer_use macOS デスクトップを背景操作(スクショ / マウス / キーボード / スクロール / ドラッグ。カーソル / フォーカスを奪わない)

合計は 71。内訳は Web 3 + ビジョン/生成 4 + 端末/ファイル 6 + ブラウザ 12 + 計画/対話 4 + スキル 3 + 実行/委譲 3 + 音声/スケジュール/送信 3 + Kanban 9 + HA 4 + Discord 2 + Feishu 5 + Spotify 7 + Yuanbao 5 + computer_use 1 = 71。

カタログを眺めて見えてくるのは、Hermes が「汎用コア + プラットフォーム別ツール束」という構造を取っていること。Web / ファイル / ブラウザ / 実行系がコアの汎用能力で、Discord / Feishu / Spotify / Yuanbao は特定サービス向けの束だ。後者は資格情報が無ければ check_fn で無効化され、71 件すべてが常に有効なわけではない。

3. ツールセットと分布

ツールは個別に有効化するだけでなく、ツールセットとしてまとめて扱える。TOOLSETS57 エントリ(機能系 33 + hermes-* サーフェス / プラットフォーム 24)。includes で他セットを合成でき、バッチ実行用には確率分布を持つ(学習データ生成で多様なツール構成をサンプリングするため。第9回)。全 57 の一覧は元マップ §4.2 を参照。

4. 承認ゲート

破壊的操作には承認ゲートがかかる。DANGEROUS_PATTERNSrm -rf / sudo / git の force 系などが登録され、これらにマッチするコマンドは承認を要求する。ハードライン(必ず止める)と、--yolo によるバイパス(全承認をスキップ)の二極があり、後者は第10回で「最大級のリスク」として扱う。

5. SSRF / パストラバーサル / サンドボックス

  • SSRF 対策: クラウドのメタデータ IP(169.254.169.254 など)を常時ブロック。URL を扱うツールが内部メタデータを盗まれる古典的攻撃を塞ぐ
  • パストラバーサル対策: Path.resolve() + relative_to() でワークスペース外への脱出を防ぐ
  • サンドボックス: execute_code から呼べる Hermes ツールは 7 種に制限。さらに timeout 300 秒 / 50 コール / 出力 50KB / 1 ツール結果 10KB の上限を持つ(code_execution_tool.py:61

execute_code は「Python から Hermes ツールを呼ぶ」強力な口だけに、呼べるツールを 7 種に絞り、実行時間・回数・出力量に天井を設けている。便利さと攻撃面のトレードオフを、上限値で殴って解決している格好だ。


次回はツールの中でも別格の 2 つ——delegate_taskmixture_of_agents、マルチエージェント並列を掘る。

対応マップ章: §4 / 行番号は hermes update でずれうる

クイックイタレート株式会社
IoT / 電力監視 / AI / 衛星・無線通信 / システムインテグレーション/
ローカル LLM・エージェント基盤に関するお問い合わせはお気軽にどうぞ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?