Hermes Agent: プラグイン
最終更新:2026-08-31
プラグインはHermes Agentの拡張インターフェースです。組み込み機能が足りない?プラグインをインストールするだけ。Jira、Notion、Figmaに接続したい?既製のプラグインがあります。
💡 ヒント: プラグインはカスタムツールより高次の拡張方式です。1つのプラグインは複数のツール、スキル、さらには完全なサブシステムを含むことができます。Hermesプラグインマーケットには豊富なコミュニティプラグインがあります。
📋 前提知識: 第8課 ツールとツールセット
1. 学ぶ内容
| # | 内容 |
|---|---|
| ❶ | プラグインシステムアーキテクチャ |
| ❷ | プラグインのインストールと管理 |
| ❸ | 主要プラグインの紹介 |
| ❹ | カスタムプラグイン開発 |
| ❺ | プラグインのセキュリティと権限 |
2. ストーリー
(1) 課題:組み込みツールでは足りない
BobはJiraに接続してチケットを確認し、Notionでメモを取り、Figmaでデザインを見る必要がある。組み込みツールにはこれらの連携がない。
(2) 解決策:プラグインのインストール、ワンクリック拡張
BASH
# Jiraプラグインのインストール
hermes plugin install hermes-plugin-jira
# Notionプラグインのインストール
hermes plugin install hermes-plugin-notion
# そのまま会話で使用可能
me: PROJ-123のステータスを確認して
Agent: [Jira Plugin] PROJ-123: In Progress, 優先度 High
3. プラグインシステムアーキテクチャ
(1) プラグイン構造
hermes-plugin-jira/
├── manifest.yaml # プラグインマニフェスト
├── tools/ # プラグインが提供するツール
│ ├── jira_search.py
│ ├── jira_create.py
│ └── jira_update.py
├── skills/ # プラグインが提供するスキル
│ └── sprint-review.yaml
├── templates/ # 出力テンプレート
└── config.yaml # プラグイン設定
(2) プラグインマニフェスト
YAML
# manifest.yaml
name: "hermes-plugin-jira"
version: "1.2.0"
description: "Jira integration for Hermes Agent"
author: "community"
license: "MIT"
dependencies:
hermes_version: ">=1.0.0"
python_packages:
- "jira>=3.5.0"
tools:
- name: "jira_search"
description: "Search Jira issues"
category: "communication"
- name: "jira_create"
description: "Create Jira issue"
category: "communication"
- name: "jira_update"
description: "Update Jira issue"
category: "communication"
skills:
- name: "sprint-review"
description: "Generate sprint review report"
permissions:
- network: ["*.atlassian.net"]
- filesystem: []
- env_vars: ["JIRA_URL", "JIRA_TOKEN"]
4. プラグインのインストールと管理
(1) プラグインのインストール
BASH
# プラグインマーケットからインストール
hermes plugin install hermes-plugin-jira
# Gitリポジトリからインストール
hermes plugin install git+https://github.com/user/hermes-plugin-jira
# ローカルパスからインストール
hermes plugin install ./my-plugin
# 特定バージョンのインストール
hermes plugin install hermes-plugin-jira@1.2.0
(2) 管理コマンド
BASH
# インストール済みプラグイン一覧
hermes plugin list
# 出力例:
# ┌─────────────────────┬─────────┬──────────┬─────────┐
# │ Plugin │ Version │ Status │ Tools │
# ├─────────────────────┼─────────┼──────────┼─────────┤
# │ jira │ 1.2.0 │ ✅ Active│ 3 │
# │ notion │ 0.9.1 │ ✅ Active│ 4 │
# │ figma │ 0.5.0 │ ⏸️ Paused│ 2 │
# └─────────────────────┴─────────┴──────────┴─────────┘
# プラグインの更新
hermes plugin update jira
# プラグインの無効化(アンインストールなし)
hermes plugin pause figma
# プラグインの有効化
hermes plugin resume figma
# プラグインのアンインストール
hermes plugin uninstall figma
5. 主要プラグイン
| プラグイン | 機能 | ツール数 |
|---|---|---|
| jira | Jiraチケット管理 | 3 |
| notion | Notionページ/データベース操作 | 4 |
| figma | Figmaデザイン閲覧 | 2 |
| github | GitHub PR/Issue/Repo操作 | 6 |
| gitlab | GitLab CI/CD操作 | 5 |
| aws | AWSサービス操作 | 8 |
| docker | Dockerコンテナ管理 | 4 |
| kubernetes | K8sクラスタ操作 | 6 |
| google-calendar | Googleカレンダー | 3 |
| slack-advanced | Slack高度機能 | 5 |
| pandas | データ分析拡張 | 4 |
| database | マルチデータベース対応 | 5 |
(1) GitHubプラグインの例
BASH
# インストール
hermes plugin install hermes-plugin-github
# 設定
hermes config set plugins.github.token "${GITHUB_TOKEN}"
hermes config set plugins.github.default_repo "myorg/myrepo"
# 使用
me: レビュー待ちのPRをリストアップ
Agent: [GitHub Plugin] レビュー待ちPR 3件:
- #42: Fix auth flow (alice, 2h ago)
- #43: Add rate limiting (bob, 5h ago)
- #44: Update dependencies (carol, 1d ago)
6. カスタムプラグイン開発
(1) 最小プラグイン
PYTHON
# my_plugin/tools/hello.py
from hermes import Tool, ToolResult
class HelloTool(Tool):
name = "hello"
description = "Say hello to someone"
category = "custom"
parameters = {
"name": {"type": "str", "required": True}
}
def execute(self, name: str) -> ToolResult:
return ToolResult(
success=True,
data={"message": f"Hello, {name}!"},
summary=f"Greeted {name}"
)
YAML
# my_plugin/manifest.yaml
name: "my-plugin"
version: "0.1.0"
description: "My custom plugin"
author: "me"
tools:
- name: "hello"
description: "Say hello"
category: "custom"
permissions:
- network: []
- filesystem: []
(2) 完全なプラグイン開発
PYTHON
# stock-plugin/tools/stock_query.py
from hermes import Tool, ToolResult
import httpx
class StockQueryTool(Tool):
name = "stock_query"
description = "Query stock price and metrics"
category = "finance"
parameters = {
"symbol": {
"type": "str",
"required": True,
"description": "Stock symbol (e.g., AAPL)"
},
"metric": {
"type": "str",
"required": False,
"default": "price",
"enum": ["price", "pe", "volume", "market_cap"]
}
}
def execute(self, symbol: str, metric: str = "price") -> ToolResult:
api_key = self.get_env("STOCK_API_KEY")
response = httpx.get(
f"https://api.stock.com/quote",
params={"symbol": symbol, "apikey": api_key}
)
data = response.json()
return ToolResult(
success=True,
data=data,
summary=f"{symbol} {metric}: {data.get(metric, 'N/A')}"
)
7. プラグインのセキュリティと権限
(1) 権限モデル
| 権限 | 説明 | 例 |
|---|---|---|
network |
アクセスを許可するドメイン | ["*.atlassian.net"] |
filesystem |
アクセスを許可するパス | ["~/projects"] |
env_vars |
必要な環境変数 | ["JIRA_TOKEN"] |
tools |
呼び出し可能な組み込みツール | ["fs_read"] |
subprocess |
コマンド実行を許可するか | false |
(2) セキュリティレビュー
BASH
# インストール前にプラグイン権限をレビュー
hermes plugin audit hermes-plugin-xxx
# 出力例:
# ⚠️ 権限レビュー:
# - network: *.example.com ✅
# - filesystem: /tmp ⚠️ (範囲制限を推奨)
# - subprocess: true ❌ (無効化またはコードレビューを推奨)
# - env_vars: API_KEY ✅
❓ よくある質問
Q プラグインマーケットには何個のプラグインがありますか?
A コミュニティが50以上のプラグインを保守しており、プロジェクト管理、クラウドサービス、データベース、デザインツールなどをカバー。
Q プラグインはパフォーマンスに影響しますか?
A インストール済みで未使用のプラグインは影響ゼロ。呼び出された時のみリソースを消費。
Q プラグインとカスタムツールの違いは?
A プラグインはパッケージ化された拡張パック(ツール+スキル+設定+テンプレート)。カスタムツールは単一ツール。プラグインの方が完全で共有可能。
Q 同種のプラグインを複数同時にインストールできますか?
A はい。ただしツール名の競合が発生する可能性があります。必要なもののみ有効にすることを推奨。
Q プラグインをマーケットに公開するには?
A プラグイン開発仕様に従い、hermes-pluginsリポジトリにPRを提出。レビュー通過後に公開。
Q プラグインの更新で既存設定が壊れますか?
A セマンティックバージョニングに従い、マイナーアップデートは後方互換。メジャーアップデートには破壊的変更がある可能性あり、事前に通知されます。
📖 まとめ
- プラグイン = ツール + スキル + 設定 + テンプレートのパッケージ化拡張パック
- インストール方式:マーケット、Git、ローカルパス
- 50以上のコミュニティプラグインがJira/Notion/GitHub/AWSなどをカバー
- カスタムプラグイン:Python Toolクラス+YAMLマニフェスト
- 権限モデルでネットワーク、ファイル、環境変数、サブプロセスアクセスを制御
📝 練習問題
- 基本(⭐): コミュニティプラグイン(例:GitHub)をインストールし、基本操作を1回完了し、機能が正常であることを確認してください。
- 中級(⭐⭐): シンプルなカスタムプラグイン(1-2ツール)を開発し、Hermesにインストールしてテストしてください。
- 上級(⭐⭐⭐): 完全なプラグイン(ツール、スキル、設定込み)を開発し、チームに共有し、他の人がインストール後すぐに使えるようにしてください。