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 ✅ ファイル ✅ チャンネル
WhatsApp Business プレーンテキスト ✅ 画像/ドキュメント
Signal Bot プレーンテキスト ✅ 画像
Twitter/X Bot プレーンテキスト ✅ 画像
Email 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) 統一メッセージパイプライン

100%
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 スレッドに分割
WhatsApp フォーマットなし 個別送信 複数セグメントに分割
Email 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で全プラットフォームの接続状態とメッセージ統計を確認できます。

📖 まとめ


📝 練習問題

  1. 基本(⭐): TelegramまたはDiscordプラットフォームに接続し、1回の会話を完了し、メッセージの送受信が正常であることを確認してください。
  2. 中級(⭐⭐): 2つのプラットフォームに同時接続し、1つのプラットフォームで会話を開始し、もう1つのプラットフォームで継続し、クロスプラットフォームメモリを確認してください。
  3. 上級(⭐⭐⭐): マルチプラットフォームルーティングルールを設定し、仕事用プラットフォーム(Slack)はプロフェッショナルモード、ソーシャルプラットフォーム(Discord)はクリエイティブモードを実現してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%