2026年7月25日土曜日

20260716‗メイドのアイコンに釣られてhermes-agentを触ってみたら、沼にハマった話

メイドのアイコンに釣られてHermes Agentを触ってみたら、沼にハマった話(要約編)

きっかけ

家ではGemini、エンタメ用途ではGrok、会社ではCopilot、複雑な仕事はClaude。気づけば用途ごとにAIを使い分ける生活になっていた。

でもふと思う。この「どのAIをどう使うか」を判断して橋渡ししているのは結局自分(人間)で、それこそが一番のボトルネックなのではないか。だったら、その繋ぎ役ごと自己改善型のAIエージェントに任せてしまうのが本来の姿なのでは——。

そんな折にSNSで話題になっていた「OpenClaw」を覗いてみたものの、正直難しくてよく分からなかった。代わりに目に留まったのが、同じ自律型AIエージェントである「Hermes Agent」のメイドのアイコンだった。

深い理由はない。「これは俺でもいけるのでは」と、なんとなくそう思っただけだ。個人的にも仕事柄も、AIを単体でAPI経由で使う必要は特にない。それでも、APIを介して外部サービスを横断的につなぐ今の潮流を、一度自分の手で experience しておきたいという気持ちもあった。

そういうわけで、旧型ノートPC(Panasonic CF-LX6)にUbuntu Serverを入れ、Hermes AgentをDiscord Bot経由で動かす、という個人プロジェクトが始まった。

つまずいたポイント

環境構築自体はスムーズだった。しかし本番、Discordで@HermesBot2にメンションを送っても一切反応がないという壁にぶつかった。厄介だったのは、/helpや/statusのようなスラッシュコマンドは正常に動いていたこと。「疎通はしているのに、会話だけ無視される」という一番混乱するタイプの不具合だった。

疑って、潰していった項目は以下の通り。

  • Discord Developer PortalのIntent設定(Message Content・Server Members)

  • チャンネルのBotロール権限(View Channel / Read Message History / Add Reactions)

  • サーバーのDNS疎通

  • Discord Gatewayのセッションキャッシュ(stop→startしても内部的にセッションが使い回されていた)

これらは全部「シロ」だった。ゲートウェイは正常に稼働し、DMを送ると普通に反応する。つまり原因はサーバー側でも権限側でもなく、Discordクライアント上でのメンションの打ち方そのものにあった。

真因:メンションは「クリックして確定」しないと本物にならない

@HermesBot2とキーボードで打っても、その後に出てくるオートコンプリートの候補をクリックやTab/Enterで確定しない限り、それは見た目こそメンションでも、実体は「ただの文字列」でしかない。Hermes Agentは本物のメンショントークンが含まれるメッセージにしか反応しない仕様だったため、ずっと「メンションしたつもり」で空振りしていた、というのがオチだった。

メンバー一覧からBot名を右クリックして「メンション」を選ぶ、という方法で送ったところ、一発で反応した。

もう一つ気づいたこと:メンション=タスク投入

無事に会話できるようになった後、動作確認のつもりで送った短い一言(「テスト」的な内容)が、Hermesにとっては「実行すべきタスク」として解釈されることが分かった。Hermesは1会話ターンあたり最大90回(既定値)まで思考・ツール呼び出しを繰り返せる仕様で、内容が曖昧な場合は待機状態になるだけで済んだが、これがもし有料のAPIプロバイダーだったら、テストのつもりの一言で地味にコストが発生しかねない。無料枠(OpenRouterのfreeモデル)だったので実害はなかったが、覚えておく価値のある注意点だと思う。

日本語で喋らせる

最後に、応答を日本語化する設定も試した。~/.hermes/config.yamlのdisplay.languageはCLIの定型メッセージしか翻訳せず、エージェント自身の応答は対象外。代わりにSOUL.md(エージェントの人格設定ファイル)に「常に日本語で応答すること」と一文書き足すことで、狙い通り日本語での会話ができるようになった。無料枠モデルゆえか、一度だけ文脈と無関係な文字列が混ざる出力があったが、単発のブレで、再送信したら自然な日本語に戻った。

まとめ

Hermes AgentのDiscord連携でハマったら、まず疑うべき順番はこうだ。

  1. Discord Developer PortalのIntent設定

  2. チャンネルの権限

  3. メンションを本当に「本物」として確定させているか(見落としがち)

  4. それでもダメならDNS・セッションキャッシュ・ゲートウェイの稼働状況

そして無事に会話できるようになったら、有料プロバイダーへの切り替え時は「メンション=タスク投入」というコスト面のリスクも頭の片隅に置いておくといい。

Written with StackEdit.

0 件のコメント:

コメントを投稿