プラグインシステム
源码版本v2026.7.20
職務
プラグインは Hermes の拡張骨格:provider profile、プラットフォームアダプタ、context engine、cron provider、記憶バックエンド、ブラウザ、画像/動画生成……すべてがプラグイン機構で接入される。plugins/ は PluginContext(登録入口)+ ユーティリティ関数を提供し、各プラグインのサブディレクトリはドメイン別に自己完結する。ToolRegistry/PlatformRegistry と協調し、プラグインは「宣言して登録する」だけ、レジストリが「照合とスケジュール」を担う。
主要ファイル
plugins/__init__.py—PluginContext、登録入口(register_platform、register_providerなど)plugin_utils.py— プラグイン共用ユーティリティmodel-providers/— LLM provider profile(Providers参照)platforms/— Telegram/Discord/Slack などのプラットフォームアダプタ(プラットフォームアダプタ参照)context_engine/— コンテキストエンジン拡張cron_providers/— cron スケジュールバックエンドmemory/— 記憶バックエンドbrowser//web/— ブラウザと Web 能力image_gen//video_gen/— マルチモーダル生成observability//security-guidance/— 可観測性とセキュリティ
データフロー
- 起動期
init_agent(agent/agent_init.py:276) がプラグイン発見をトリガーする。 - 各プラグインのサブディレクトリがインポートされ、モジュールレベルのコードが
PluginContextの登録メソッドを呼ぶ:- model-provider →
register_provider:53 - platform →
platform_registry.register:231 - ツール →
registry.register:365(名前空間ポリシー経由)
- model-provider →
- レジストリ(シングルトン)が照合の真実の情報源となり、主ループとゲートウェイはレジストリだけを読み、個別プラグインに直接依存しない。
- プラグインはホットプラグ可能:外すには
unregisterだけで、レジストリが優先度と上書きを処理する。
まとめ
プラグイン = 「サブディレクトリ + 登録」。provider、プラットフォーム、ツール、記憶、cron、マルチモーダルといったすべての横断能力が同じ登録骨格を通るので、コアループは安定を保てる。新機能の追加 = プラグインサブディレクトリを一つ作って登録するだけで、agent 主幹には触れない。