Skip to content

ツールシステム ToolRegistry

源码版本v2026.7.20

職務

Tool は agent が呼べる原子関数(ターミナル、ブラウザ、ファイル、MCP、スキル呼び出し……)。ToolRegistry はモジュールインポート時に AST 走査で tools/*.py のツールを自動発見して登録し、name → ToolEntry のルックアップテーブルを主ループのツールディスパッチに供給する。ツールは静的——スキルの「進化可能」と対照的。

主要ファイル

データフロー

  1. 起動期 init_agent:276 が toolsets 設定をトリガーする。
  2. discover_builtin_tools:67tools/ ディレクトリを走査し、AST で各モジュールが registry.register を呼ぶか判定(tools/registry.py:30)。
  3. 該当モジュールがインポートされ、モジュールレベルの registry.register(...) が実行されて ToolEntryregistry シングルトン:765 に書き込まれる。
  4. 主ループは毎ラウンド、有効な toolsets に対応する ToolEntry.schema を provider へ送る tools フィールドに集める。
  5. provider が tool_call を返す → 主ループは get_entry(name)(tools/registry.py:274) で handler を探して実行 → 結果を tool_result:798 でラップして戻す。

まとめ

ツールシステムの核は「インポート即登録」——AST 走査で手動のリスト管理を回避し、新規ツールは tools/register を呼ぶファイルを置くだけ。registry シングルトンが唯一の真実の情報源で、主ループは読むだけ。スキルとの違い:ツールは固定関数、スキルは学習ループで書き換え可能なフロー。

非公式コミュニティ学習サイト。MIT ライセンスの NousResearch/hermes-agent ソースに基づく。