Hermes Agent: プラットフォームメッセージとマルチプラットフォーム接続
最終更新:2026-08-31
マルチプラットフォーム接続はHermesのコミュニケーション能力です。1つのエージェントがTelegram、Discord、Slackで同時にサービスを提供し、まるで分身が複数あるかのようです。
💡 ヒント: Hermesのプラットフォーム接続は単純なメッセージ転送ではなく、各プラットフォームで完全なメモリとスキルを維持し、メッセージフォーマットを自動的に適合させます。
📋 前提知識: 第3課 設定ファイル
1. 学ぶ内容
| # | 内容 |
|---|---|
| ❶ | 対応プラットフォーム一覧 |
| ❷ | 各プラットフォームの接続設定 |
| ❸ | メッセージ処理フロー |
| ❹ | プラットフォーム特性の適応 |
| ❺ | マルチプラットフォームメッセージルーティング |
2. ストーリー
(1) 課題:プラットフォームごとに別のAIを使う必要がある
BobはTelegramで同僚とチャットし、Slackで仕事をし、Discordでコミュニティに参加しています。各プラットフォームにそれぞれのBotがあり、メモリは共有されず、スキルも共有されません。
(2) 解決策:1つのエージェント、全プラットフォーム対応
AliceのHermes Agentはすべてのプラットフォームに同時に接続しています:
BASH
# 1つのHermes、3つの入口
Telegram: @AliceHermesBot
Slack: Hermes App
Discord: Hermes#1234
# メモリとスキルは完全に共有
Slackで「コードレビューして」と言う
→ Telegramで「さっきのレビューの続き」と言う
→ エージェントは同じことを指していると理解
3. 対応プラットフォーム
| プラットフォーム | タイプ | メッセージフォーマット | ファイル対応 | グループ |
|---|---|---|---|---|
| Telegram | Bot | Markdown | ✅ 画像/ファイル | ✅ |
| Discord | Bot | Markdown | ✅ 画像/添付 | ✅ |
| Slack | App | mrkdwn | ✅ ファイル | ✅ チャンネル |
| Business | プレーンテキスト | ✅ 画像/ドキュメント | ❌ | |
| Signal | Bot | プレーンテキスト | ✅ 画像 | ✅ |
| Twitter/X | Bot | プレーンテキスト | ✅ 画像 | ❌ |
| IMAP/SMTP | HTML/テキスト | ✅ 添付 | ❌ | |
| Web Chat | 自社製 | Markdown | ✅ ドラッグアップロード | ✅ |
| CLI | ターミナル | ANSI | ❌ | ❌ |
| VS Code | 拡張 | Markdown | ✅ ワークスペース | ❌ |
| REST API | HTTP | JSON | ✅ Base64 | ❌ |
| n8n | ワークフロー | JSON | ✅ | ✅ |
| Home Assistant | スマートホーム | プレーンテキスト | ❌ | ❌ |
| Custom | カスタム | 設定可能 | 設定可能 | 設定可能 |
4. プラットフォーム接続設定
(1) Telegram
YAML
# ~/.hermes/config.yaml
platforms:
telegram:
enabled: true
token: "${TELEGRAM_BOT_TOKEN}"
# メッセージ設定
parse_mode: "MarkdownV2"
max_message_length: 4096
# 権限制御
allowed_users:
- 123456789 # Telegram User ID
allowed_chats:
- -1001234567890 # Group Chat ID
# 機能スイッチ
features:
voice_messages: true # 音声メッセージ受信
photos: true # 画像受信
files: true # ファイル受信
inline_queries: true # インラインクエリ
BASH
# Telegram Botの作成
# 1. @BotFatherでBotを作成、Tokenを取得
# 2. Hermesに設定
hermes config set platforms.telegram.token "your-token"
hermes platform start telegram
(2) Discord
YAML
platforms:
discord:
enabled: true
token: "${DISCORD_BOT_TOKEN}"
# サーバー設定
guilds:
- id: "123456789"
channels: ["general", "dev", "ai-help"]
# 権限
allowed_roles:
- "Developer"
- "Admin"
# 機能
features:
slash_commands: true
thread_support: true
reactions: true
embeds: true
(3) Slack
YAML
platforms:
slack:
enabled: true
bot_token: "${SLACK_BOT_TOKEN}"
app_token: "${SLACK_APP_TOKEN}"
# ワークスペース
workspace: "my-team"
# チャンネル
channels:
- "general"
- "dev-help"
- "ai-assistant"
# 機能
features:
app_mentions: true
direct_messages: true
thread_replies: true
file_sharing: true
(4) WhatsApp
YAML
platforms:
whatsapp:
enabled: true
phone_number_id: "${WHATSAPP_PHONE_ID}"
access_token: "${WHATSAPP_TOKEN}"
verify_token: "${WHATSAPP_VERIFY_TOKEN}"
# Webhook
webhook_url: "https://your-domain.com/webhook/whatsapp"
5. メッセージ処理フロー
(1) 統一メッセージパイプライン
graph LR
A[Telegram] --> M[メッセージパイプライン]
B[Discord] --> M
C[Slack] --> M
D[WhatsApp] --> M
M --> P[メッセージ解析]
P --> Q[権限チェック]
Q --> R[メモリ検索]
R --> S[スキルマッチング]
S --> T[LLM推論]
T --> U[ツール呼び出し]
U --> V[応答生成]
V --> W[フォーマット適応]
W --> A2[Telegram]
W --> B2[Discord]
W --> C2[Slack]
W --> D2[WhatsApp]
(2) メッセージフォーマット適応
| プラットフォーム | コードブロック | 画像 | 長いメッセージの処理 |
|---|---|---|---|
| Telegram | ```markdown | 個別送信 | 複数セグメントに分割 |
| Discord | ```markdown | 埋め込み | 分割+続き |
| Slack | ```mrkdwn | Block | スレッドに分割 |
| フォーマットなし | 個別送信 | 複数セグメントに分割 | |
| HTML | インライン/添付 | 1通のメール |
6. プラットフォーム特性の適応
(1) 音声メッセージ処理
BASH
# Telegram: ユーザーが音声送信 → STT → Agent処理 → TTS → 音声返信
# 自動ワークフロー:
ユーザー: [音声メッセージ 0:15]
Agent: [voice_stt] → "北京の今日の天気はどう?"
[web_search] → 天気を検索
[voice_tts] → [音声メッセージ 0:08] "北京は今日晴れ、26度"
(2) グループ会話
YAML
# グループ設定
platforms:
discord:
group_behavior:
trigger: "mention" # @Hermesでトリガー
listen: false # 全メッセージを監視しない
prefix: "!" # !コマンドでトリガー
respond_to_replies: true # Agentメッセージへの返信でトリガー
7. マルチプラットフォームメッセージルーティング
(1) クロスプラットフォームメモリ
BASH
# Slackで会話を開始
Slack: me: auth.pyをレビューして
Agent: 3つのセキュリティ問題を発見...
# Telegramで継続
Telegram: me: さっきのレビュー結果、もっと詳しく
Agent: [クロスプラットフォームメモリ検索]
auth.pyのレビュー、3つの問題はそれぞれ...
(2) メッセージルーティングルール
YAML
routing:
# プラットフォーム別ルーティング
platform_rules:
telegram:
model: "gpt-4o-mini" # 軽量モデル、コスト節約
personality: "friendly" # カジュアルなトーン
slack:
model: "gpt-4o" # 仕事用、高品質
personality: "professional" # プロフェッショナルなトーン
discord:
model: "gpt-4o" # コミュニティ用
personality: "creative" # クリエイティブなトーン
❓ よくある質問
Q 同時にいくつのプラットフォームに接続できますか?
A 制限なし。15以上のプラットフォームを同時に実行しても問題ありません。各プラットフォームは独立スレッドです。
Q クロスプラットフォームのメッセージ遅延は大きいですか?
A メモリ検索は100ms未満で、体験に影響しません。応答時間はモデル推論に依存します。
Q プラットフォームごとに異なるペルソナを設定できますか?
A はい。ルーティングルールで各プラットフォームのトーン、モデル、スキルを設定できます。
Q グループで全員に返信してしまうのを防ぐには?
A トリガー方法を設定:@メンションまたは特定プレフィックス(例:!hermes)。デフォルトでは直接トリガーされたメッセージにのみ返信します。
Q WhatsAppにはどんな制限がありますか?
A WhatsApp Business APIにはメッセージ頻度制限(24時間以内に最大1000通)があり、Meta Business認証が必要です。
Q 各プラットフォームの状態を監視するには?
A
hermes platform statusで全プラットフォームの接続状態とメッセージ統計を確認できます。📖 まとめ
- 15以上のプラットフォーム連携:Telegram、Discord、Slack、WhatsApp、Signalなど
- 統一メッセージパイプライン:受信 → 解析 → 権限 → メモリ → スキル → 応答 → 適応
- クロスプラットフォームメモリ:どのプラットフォームの会話も同じメモリ空間に
- プラットフォーム特性適応:音声、グループ、長いメッセージ、フォーマット変換
- ルーティングルール:異なるプラットフォームで異なるモデルとペルソナを使用可能
📝 練習問題
- 基本(⭐): TelegramまたはDiscordプラットフォームに接続し、1回の会話を完了し、メッセージの送受信が正常であることを確認してください。
- 中級(⭐⭐): 2つのプラットフォームに同時接続し、1つのプラットフォームで会話を開始し、もう1つのプラットフォームで継続し、クロスプラットフォームメモリを確認してください。
- 上級(⭐⭐⭐): マルチプラットフォームルーティングルールを設定し、仕事用プラットフォーム(Slack)はプロフェッショナルモード、ソーシャルプラットフォーム(Discord)はクリエイティブモードを実現してください。