Discord — AI in Your Server
Discord — AI in Your Server — easy-to-understand guide based on official docs
Discord — サーバーにAIを
Hermes AgentをDiscordサーバーに導入したい? 良い選択です。このガイドでは、招待後のHermesの動作から、完全なセットアップ手順、そして重要な新しいヘルスチェック機能まで、知っておくべきことをすべて説明します。
まずは楽しい部分から始めましょう:DiscordでHermesと実際にチャットするのがどんな感じか、です。
サーバー内でのHermesの動作
Hermesは、すべてに返信するだけの単純なボットではありません。いつ、どこで話すかを賢く判断します。内訳は以下の通りです:
| コンテキスト | 動作 |
|---|---|
| ダイレクトメッセージ | Hermesはすべてのメッセージに返信します。@メンションは不要です。各DMはそれぞれ独立したプライベートセッションを持ちます。 |
| サーバーチャンネル | デフォルトでは、Hermesは@メンションされたときだけ応答します。それ以外は沈黙を保ちます。 |
| フリーレスポンスチャンネル | タグ付けなしでチャットできるチャンネルが欲しいですか? それをDISCORD_FREE_RESPONSE_CHANNELSに追加すれば、Hermesはすべてのメッセージにインラインで返信します。 |
| スレッド | Hermesは同じスレッド内で返信します。スレッドまたはその親チャンネルがフリーレスポンスでない限り、メンションルールが適用されます。 |
| 共有チャンネル | デフォルトでは、Hermesは同じチャンネル内でもユーザーごとに会話履歴を分離します。#researchでAliceとBobが話していても、それぞれ独立したセッションが得られます。 |
| 他人へのメンションを含むメッセージ | 誰かがHermes以外のユーザーに@メンションした場合、ボットはデフォルトで沈黙を保ちます。自分宛てではない会話に割り込むことはありません。 |
プロのヒント: 人々がただ入力するだけで回答を得られる、専用のボットヘルプチャンネルが欲しいですか? そのチャンネルをDISCORD_FREE_RESPONSE_CHANNELSに追加すれば完了です。
ゲートウェイモデル:単なるWebhookではない
ここで重要なことをお伝えします:Discord上のHermesは、定型文を返すだけの単純なWebhookではありません。すべてのメッセージは完全なパイプラインを通過します:
- 認可チェック(
DISCORD_ALLOWED_USERS) - メンション / フリーレスポンスチェック
- セッションの検索
- セッショントランスクリプトの読み込み
- 完全なエージェント実行 — ツール、メモリ、スラッシュコマンド
- Discordへの応答の送信
つまり、すべての返信はスクリプト化された応答ではなく、Hermesの完全なインテリジェンスに支えられているのです。
セッション:誰が何を共有するのか?
デフォルトでは、Hermesは会話を分離します:
- 各DMは独自のセッションを取得
- 各スレッドは独自のセッションネームスペースを取得
- 共有チャンネル内の各ユーザーは独自のセッションを取得
これはconfig.yamlで制御されます:
group_sessions_per_user: true
部屋全体で1つの共有会話にしたい場合(コラボレーションスペースに便利)は、falseに設定します:
group_sessions_per_user: false
ただし注意: 共有セッションは、コンテキストの共有とトークンコストの共有を意味します。ある人の長くてツールを多用するタスクが、全員のコンテキストを肥大化させる可能性があります。また、実行中に誰かが割り込むと、部屋全体を混乱させる可能性があります。
割り込みと並行処理
ユーザーごとのセッション(デフォルト)では、Aliceは自分のリクエストに割り込んでも、同じチャンネルでのBobの会話に影響を与えません。Bobは自分の履歴を保持し、Aliceも自分の履歴を保持し、誰も互いの領域を侵害しません。
共有セッションでは、部屋全体が1つの「実行中エージェント」スロットを共有します。異なる人からのフォローアップメッセージは、互いに割り込んだり、後ろで待機したりできます。コラボレーションには楽しいですが、混乱する可能性もあります。
新機能:ゲートウェイWebSocketヘルスチェック
ここで、知っておく価値のある最近の改善点を紹介します。DiscordにはRESTとゲートウェイWebSocketという2つの異なるトランスポートがあります。REST呼び出しが成功しても、ボットがリアルタイムイベントをまだ受信できるとは限りません。
Hermesは現在、以下をチェックすることでゲートウェイの健全性を監視しています:
- レディ状態
- クライアント/ソケットのクローズ状態
- ソケットのオープン状態
- ハートビートACKの経過時間
- ハートビートのレイテンシ
設定された回数だけ不健全なサンプルが検出されると、アダプターは再試行可能な致命的イベントを発行し、クリーンに再接続します。無限の再接続ループはありません。
しきい値はconfig.yamlで設定します:
discord:
websocket_liveness_interval_seconds: 15
websocket_liveness_failure_threshold: 2
websocket_heartbeat_ack_max_age_seconds: 60
websocket_max_latency_seconds: 30
注:以前のliveness_interval_secondsとliveness_failure_thresholdという名前は互換性エイリアスとして引き続き機能しますが、もはやRESTプロービングを意味するものではありません。
ステップ1:Discordアプリケーションを作成する
- Discord Developer Portalにアクセスしてサインインします。
- 右上隅のNew Applicationをクリックします。
- アプリケーションに名前を付け(例:「Hermes Agent」)、Developer Terms of Serviceに同意します。
- Createをクリックします。
General Informationページが表示されます。Application IDをメモしておいてください — 招待URLの作成に必要です。
ステップ2:ボットを作成する
- 左サイドバーでBotをクリックします。
- Discordがアプリケーション用のボットユーザーを自動的に作成します。必要に応じてユーザー名をカスタマイズします。
- Authorization Flowで、Public BotをONに設定します — Discord提供の招待リンクに必要です。
これで基盤が完成です。ここから、ボットトークンを取得し、環境変数を設定し、Hermesをサーバーに招待します。気が付けば、あなたのAIアシスタントがDiscord内で、チャット、ツールの使用、コンテキストの記憶をすべてリアルタイムで実行できるようになっているでしょう。
📖 公式ドキュメント
この記事は Hermes Agent の公式ドキュメントに基づいています:公式ドキュメント › user-guide/messaging/discord