難易度:中級 · 所要時間:約 20 分 · 得られるもの:Hermes の全プラットフォーム接続に必要な中核設定を習得
「同じ AI アシスタントを、Telegram・飛書・企業用Wechat のそれぞれで動かしつつ、しかも一度だけデプロイできるのでは?」と考えたことはありませんか?Hermes Agent なら、それが可能です。
これは Nous Research がオープンソースで提供する、自走・自己進化型の AI Agent です。最大の特長の一つは、全プラットフォーム対応のメッセージ・ゲートウェイ(メッセージ中継)を内蔵していること。サーバー上でプロセスを 1 つ起動するだけで、Telegram、Discord、Slack、飛書、企業用Wechat、Signal、WhatsApp など 10+ のメッセージ・プラットフォームに同時接続できます。メッセージは自動的にルーティングされ、記憶はプラットフォーム間で共有。設定は 1 回で済み、以後ずっと有効です。
この記事では、最もよく使う 3 つのプラットフォーム――Telegram、飛書( Lark )、企業用Wechat――をすべて接続していきます。
対象読者
この記事は以下の開発者に向いています:
- Linux/コマンドラインの基礎があり、サーバー上で AI Agent をセルフホストしたい人
- 複数プラットフォームへのメッセージ接続を必要とする個人開発者、または小規模チーム
- Hermes Agent を OpenClaw の代替案として評価しているチーム
TIP
もし LLM API Key をまだ持っていないなら、Defapi の利用をおすすめします。Defapi では Claude Opus 4.6 の入力が $2.5/出力が $12.5(100万トークンあたり)で、公式価格の半額です。費用対効果が非常に高いです。対応している API プロトコルの詳細は Defapi Claude ドキュメント を確認してください。
コア依存関係と環境
| 依存 | 説明 |
|---|---|
| Python | 3.11+(インストールスクリプトが自動で処理) |
| OS | Linux(Ubuntu 22.04+)、macOS、または WSL2 |
| メッセージ・プラットフォームのアカウント | Telegram Bot Token/飛書の企業内製アプリ/企業用Wechat |
| LLM API Key | 推奨:Defapi(Claude Opus 4.6 が半額) |
| Docker | 任意。v0.6.0 で公式がコンテナデプロイに対応 |
WARNING
Windows ネイティブは非対応です。WSL2 をインストールしてから、WSL2 のターミナル内で作業してください。
完全なプロジェクト構成
hermes-agent/
├── scripts/
│ └── install.sh # ワンストップのインストールスクリプト
└── ~/.hermes/ # メイン設定ディレクトリ(インストール後に自動生成)
├── config.yaml # コア設定(モデル、ツールセット)
├── .env # API Keys(Git にコミットしない!)
├── skills/ # スキルディレクトリ
├── memory/ # 永続化メモリ
├── sessions/ # 会話履歴(FTS5 による全文検索)
└── gateway/ # ゲートウェイ設定(各プラットフォームごとに独立した YAML)
├── telegram.yaml
├── feishu.yaml
└── wecom.yaml
手順(ステップごと)
ステップ 1:Hermes Agent をワンストップでインストール
Linux/macOS/WSL2 では、公式のインストールスクリプトを実行します:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
インストールスクリプトが Python、Node.js、そしてすべての依存関係を自動的に処理し、最後まで手動の介入は不要です。インストール完了後に shell をリロード:
source ~/.bashrc # bash ユーザー
source ~/.zshrc # zsh ユーザー
インストールが成功したか確認:
hermes doctor
TIP
hermes doctor は環境の問題(Python バージョン、API Key、ネットワーク疎通、ツール依存など)を自動診断します。初回実行では、まず一度通すことを強くおすすめします。
ステップ 2:LLM Provider を設定(Defapi に接続)
次に、Hermes に「どこで大規模言語モデルを探すか」を伝えます。.env ファイルに API Key を書き込みます:
hermes config set ANTHROPIC_API_KEY <your-defapi-key>
Defapi は Anthropic の v1/messages インターフェースのプロトコルに互換です。Hermes はそのまま接続できます。加えて、hermes model コマンドで対話式にモデルと Provider を選択することも可能です:
hermes model
# 交互選択:
# 1. Nous Portal
# 2. OpenRouter (200+ モデル)
# 3. OpenAI
# 4. Defapi / カスタムエンドポイント
# 5. その他...
Defapi を使う場合は、対話メニューでカスタムエンドポイント(Custom)を選び、以下を入力します:
API Endpoint: https://api.defapi.org
Model: anthropic/claude-opus-4.6
WARNING
.env ファイルには API Key が含まれているため、絶対に Git リポジトリにコミットしないでください。Docker でデプロイする場合は、環境変数か Docker Secrets を使って注入し、Dockerfile に直接書くのは避けてください。
ステップ 3:最初のプラットフォームを接続(Telegram Bot)
Telegram は Bot API が公開されているため、企業認証が不要で、最も検証しやすいプラットフォームです。
3.1 Bot を作成
Telegram で @BotFather を開き、/newbot を送信。案内に従って Bot を命名し、BOT_TOKEN を取得します。形式は 123456789:ABCdefGHIjklMNOpqrsTUVwxyz のようになります。
3.2 Hermes ゲートウェイの設定
hermes gateway setup
# telegram を選択し、対話設定に進みます
または、手動で ~/.hermes/gateway/telegram.yaml を作成:
platform: telegram
enabled: true
bot_token: "123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
# アクセス制御:特定ユーザーのみ許可
allowed_users:
- your_telegram_username
# セキュリティ設定
require_approval_for_dangerous_tools: true
3.3 検証
ゲートウェイを起動したら、Bot にメッセージを送ります:
hermes gateway start
# もしくはバックグラウンド実行:
hermes gateway start --daemon
Telegram で Bot に /new を送ると、ウェルカムメッセージが返ってくるはずです。例えば「こんにちは」といった日本語のメッセージを送って、AI が応答するか確認してください。
TIP
Bot が反応しない場合は、次を確認:hermes gateway status で実行状態を確認し、hermes logs で最新ログを確認します。よくある原因は Bot Token の入力ミス、またはポート競合です。
ステップ 4:飛書(Lark)の企業アプリを接続
飛書の接続は少しだけ複雑で、飛書のオープンプラットフォームで企業内製アプリを作成する必要があります。
4.1 飛書オープンプラットフォームでアプリを作成
- 飛書オープンプラットフォーム を開き、企業内製アプリを作成
- 「証明書と基本情報」で
App IDとApp Secretを取得 - 「ロボット」機能を有効化
4.2 イベント購読の設定
アプリの「イベント購読」で:
- リクエスト先 URL を
https://你的域名/gateway/feishu/webhookに設定 - イベント:
im.message.receive_v1(メッセージ受信)を選択
WARNING
飛書では、コールバック URL がインターネット上からアクセス可能な HTTPS アドレスであることが求められます。サーバーにグローバルなドメインがない場合は、ngrok で一時的に社内ネットワークを外部に公開できます:ngrok http 8080。生成された HTTPS アドレスを飛書側に入力してください。
4.3 アプリを企業にインストール
「バージョン管理と公開」でバージョンを作成して公開しないと、Bot がメッセージを受け取れません。
4.4 Hermes ゲートウェイの設定
hermes gateway setup
# feishu を選択し、対話で App ID と App Secret を入力
手動で ~/.hermes/gateway/feishu.yaml を編集:
platform: feishu
enabled: true
app_id: "cli_xxxxxxxxxxxxxx"
app_secret: "xxxxxxxxxxxxxxxxxxxx"
verification_token: "your_verification_token"
# メッセージ暗号化(任意だが推奨)
encrypt_key: "your_encrypt_key"
# 許可するチャットとユーザー
allowed_chats: []
require_mention: false
4.5 検証
飛書で Bot にメッセージ /new を送って、反応があるか確認します。飛書のメッセージ形式は Telegram と異なりますが、Bot はリッチテキストのメッセージカードに対応しており、Hermes が自動的に適応します。
ステップ 5:企業用Wechat(WeCom)を接続
企業用Wechat も飛書と同様に、コールバック Webhook モードで接続します。
5.1 企業用Wechat 管理画面でアプリを作成
- 企業用Wechat 管理画面 にログイン
- 「アプリ管理」→「アプリを作成」→「企業内製」を選択
AgentId、Secret、および企業の CorpId を取得- 「企業トラストIP」をサーバーの IP に設定
5.2 メッセージ受信の設定
アプリの設定で「メッセージ受信」モードを有効化:
URLをhttps://你的域名/gateway/wecom/webhookに設定- 「互換モード」または「イベントモード」を選択
5.3 Hermes ゲートウェイの設定
# ~/.hermes/gateway/wecom.yaml
platform: wecom
enabled: true
corp_id: "wwxxxxxxxxxxxxxx"
agent_id: "1000001"
corp_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
encrypt_mode: "safe" # セキュリティモードでは encoding_aes_key の設定が必要
encoding_aes_key: "your_32_char_aes_key"
5.4 検証
企業用Wechat であなたのアプリを見つけ、メッセージを送って動作確認します。
TIP
企業用Wechat は IP ホワイトリストの要求が厳格です。クラウドサーバー(DigitalOcean、Hetzner など)にデプロイする場合は、管理画面でサーバーのグローバル IP を信頼 IP リストに必ず追加してください。追加しないと、企業用Wechat からのメッセージが直接拒否されます。
ステップ 6:ゲートウェイを起動し、3 つのプラットフォームを一度に稼働
すべてのプラットフォーム設定が完了したら、次のコマンドでゲートウェイを起動します:
hermes gateway start
Hermes は ~/.hermes/gateway/ 配下の有効化済みプラットフォームすべての設定を自動で読み込み、すべてのアダプタを並行して起動します。あるプラットフォームの起動に失敗しても(たとえば Token の誤りなど)、他のプラットフォームの通常稼働には影響しません。
hermes gateway status で各プラットフォームの稼働状況を確認:
Platform Status Users Messages
telegram ● online 3 142
feishu ● online 7 89
wecom ● online 2 15
Ctrl+C でゲートウェイを停止するか、--daemon でバックグラウンド実行します:
hermes gateway start --daemon
ステップ 7:複数プラットフォームのメッセージ検証
これで、3 つのプラットフォームそれぞれで Bot にメッセージを送ってテストできます:
# Telegram
/new
こんにちは、自己紹介してみてください
# 飛書
/new
あなたは誰?
# 企業用Wechat
/new
私に何ができる?
3 つの端末での応答は完全に一致し、記憶は共有されます――Telegram で話した内容は、飛書や企業用Wechat でもすべて分かります。これこそが Hermes の最も核心的な価値です:1 回の設定で、全プラットフォームで統一された体験。
TIP
もし各プラットフォームで異なる Agent インスタンス(異なるモデル、異なるスキルセット)を動かしたい場合は、Hermes v0.6.0 の追加機能である Profiles 機能が使えます:hermes -p telegram profile create。その後、各 profile で異なるモデルやプラットフォームを設定します。Profile 間は完全に隔離され、互いに影響しません。
よくある問題の切り分け
1. Telegram Bot がメッセージを受け取れない
症状: Bot がまったく反応せず、ログにも何も記録されません。
切り分け手順:
# 1. Token が正しいか確認
hermes config get telegram.bot_token
# 2. ポートが占有されていないか確認
ss -tlnp | grep 8080
# 3. webhook モードを使っている場合は Telegram Bot API の設定を確認
# Webhook URL はインターネット上からアクセス可能である必要があります。ローカル開発では ngrok でトンネル
ngrok http 8080
# 4. webhook をリセット(古い webhook が残っていて詰まることがあります)
curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/deleteWebhook"
2. 飛書のコールバック検証に失敗
症状: 飛書オープンプラットフォームに「コールバック URL の検証に失敗」と表示される。
切り分け手順:
# 1. 公開 URL がアクセス可能か確認
curl -X GET "https://your-domain.com/gateway/feishu/webhook"
# 2. 飛書の署名検証を確認
# 飛書は AES 暗号化メッセージを使用するため、encrypt_key はバックエンド設定と一致している必要があります
# Hermes のログを確認:
hermes logs --platform feishu
WARNING
飛書の暗号化モード(encrypt_mode)は、バックエンド設定と一致している必要があります。一方でバックエンドで「セキュアモード」を選んでいる場合は、Hermes 側の設定でも encrypt_mode: safe と、それに対応する encoding_aes_key を必ず入力してください。
3. 企業用Wechat のメッセージが応答しない
症状: メッセージを送ったのにまったく返信がなく、ログにも記録がありません。
切り分け手順:
# 1. CorpId / AgentId / Secret が正しいか確認
# 2. 最重要:IP ホワイトリストを確認
# 企業用Wechat は API を呼び出すサーバーの IP が信頼 IP リストに含まれている必要があります
# 3. AccessToken を取得してテスト
curl "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wwxxx&corpsecret=secret"
# もし "errmsg": "ip not in whitelist" が返るなら、IP が加白されていないことを示します
4. モデルが応答しない
症状: Bot がメッセージは受け取るが、AI が返答せず「thinking」のままになる。
切り分け手順:
# 1. API Key が有効かテスト
curl -X POST "https://api.defapi.org/api/v1/messages" \
-H "Authorization: Bearer <your-key>" \
-H "Content-Type: application/json" \
-d '{"model":"anthropic/claude-opus-4.6","messages":[{"role":"user","content":"hi"}],"max_tokens":10}'
# 2. モデル設定を確認
hermes config get model
# 3. fallback_providers(推奨設定)を確認
# ~/.hermes/config.yaml にバックアップ Provider を追加:
fallback_providers:
- provider: openrouter
api_key: "${OPENROUTER_API_KEY}"
TIP
Defapi 以外に、少なくとも 1 つバックアップ Provider を設定することをおすすめします。Hermes v0.6.0 は fallback_providers のチェーン呼び出しに対応しており、主 Provider がタイムアウトしたりエラーを返した場合に自動でバックアップへ切り替え、Agent が落ちないようにします。
5. ツール実行でエラーが出る
症状: Bot が「この操作を実行できません」と返信する。
切り分け手順:
# 1. 現在有効になっているツールセットを確認
hermes tools
# 2. 必要なツールセットを有効化
hermes tools enable web_search
hermes tools enable terminal
# 3. 危険なコマンドは手動確認が必要
# 設定を確認:
hermes config get approval_required
# true にすると、すべての危険コマンドであなたの手動承認が必要になります
6. 複数プラットフォーム間の並行競合
症状: あるプラットフォームでメッセージを受け取った後、他のプラットフォームが反応しない。
切り分け手順:
Hermes v0.6.0 の token-lock 機構により、2 つのプラットフォームインスタンスが同じ Bot Token を使って競合するのを防げます。ただし、複数のマシンで同じ Bot の複数インスタンスを動かしている場合、この問題が起きます。
# Hermes のゲートウェイインスタンスが 1 つだけ稼働していることを確認
ps aux | grep hermes
pkill -f hermes-agent
# その後、再起動
hermes gateway start
TIP
Profiles 機能を使うと、各プラットフォームで完全に独立した Hermes インスタンスを動かせます。各 profile には独自の設定ディレクトリ、メモリ、セッションがあり、profile 間は完全に隔離されるため、チーム内の別メンバーがそれぞれ自分の Bot を使う用途に適しています。
追加の読み物/発展の方向性
OpenClaw からの移行
すでに OpenClaw を使っている場合、Hermes は公式の移行ツールを提供しており、SOUL.md、MEMORY.md、Skills、API Keys、そしてメッセージプラットフォームの設定を自動で取り込めます:
hermes claw migrate # インタラクティブな完全移行
hermes claw migrate --dry-run # 先にプレビュー
hermes claw migrate --preset user-data # 機密情報は移行しない
MCP Server モード
Hermes v0.6.0 では MCP Server 機能が追加されており、1 つのコマンドで Hermes を外部に向けてツールとして公開できます:
hermes mcp serve
# stdio と Streamable HTTP の 2 種類の転送プロトコルをサポート
接続後、Cursor、VS Code、Zed などの IDE は MCP プロトコルを通じて Hermes のすべてのツールと対話機能を呼び出せます。
カスタムスキルシステム
Hermes の Skills システムは、自然言語の説明から自動的にスキルを作成できます。もちろん手動で書くことも可能です:
# 既存スキルを確認
hermes skills
# Skills Hub(コミュニティのスキル市場)を閲覧
/skills
# agentskills.io からコミュニティスキルをインストール
Cron の定期タスク
自然言語で定期タスクを設定すると、Hermes が自動実行し、結果を任意のプラットフォームへプッシュします:
# 毎日 8:00 に天気レポートを Telegram へ送信
/cron "Every day at 8am, summarize today's weather and send to me" --platform telegram
結び
Hermes Agent の全プラットフォーム対応ゲートウェイ設計はとても洗練されています――設定は 1 つだけ管理すれば、同じ Agent インスタンスを任意の複数メッセージプラットフォームで動かせます。記憶はプラットフォーム間で共有され、設定は一度で完了。複数の独立 Bot を個別に動かすよりも、リソース消費も大幅に抑えられます。
もしあなたがまだ OpenClaw を使っている、あるいは「本当に戦える」オープンソースの AI Agent を探しているのであれば、Hermes は 20 分試す価値があります。Defapi の半額の Claude Opus 4.6 と組み合わせれば、月額コストを元の 50% まで圧縮でき、体験も一切割り引かれません。