SlackをHermes Agentのネイティブ窓口にするManifestを整える


SlackをHermes Agentのネイティブ窓口にするManifestを整える

Slackを普段の作業場所にしていると、Hermes Agentも同じ画面から呼び出したくなる。単なる通知ならWebhookでも足りるが、DM、チャンネル、スレッド、slash command、ファイル添付まで扱うには、Slack App側の権限とイベント購読を正しくそろえる必要がある。今回はHermes AgentのSlack用Manifestをプロジェクトに固定し、再作成できる構成とテストを追加した。

実際に行ったことと確認結果

手元の実装では、Hermes Agent公式CLIでAgent view対応のSlack App Manifestを生成し、プロジェクト内に保存した。READMEには、Slackの「From a manifest」からAppを作る手順、Bot TokenとApp-Level Tokenを取得する手順、Hermes Gatewayへ秘密値を登録する手順、再起動後の疎通確認をまとめた。

Manifestには、Socket Mode、Messages Tab、bot user、Hermesの主要slash command、OAuth scope、DM・公開チャンネル・プライベートチャンネル・グループDM向けのevent購読を含めた。実トークンやワークスペース固有IDはManifestに入れず、秘密値はGatewayセットアップで扱う方針にした。

確認として、`python -m unittest tests.test_slack_manifest -v` を実行し、5件すべて成功した。テストでは、Socket ModeとAgent view、Messages Tab、主要コマンド、必要なscopeとevent購読、Manifestに実トークンが混入していないことを検査している。

仕組みの流れ

1. Hermes CLIでSlack用Manifestを生成する。
2. 生成物をプロジェクトに保存し、READMEから参照する。
3. Slack管理画面でManifestを貼り付けてAppを作成する。
4. SlackでBot TokenとApp-Level Tokenを発行する。
5. Hermes Gatewayに秘密値と許可ユーザーを登録する。
6. Gatewayを再起動し、DMと招待済みチャンネルで疎通を確認する。
7. Manifestの重要条件を単体テストで固定する。

画面操作だけでSlack Appを作ると、あとで「どのscopeを入れたか」が曖昧になりやすい。Manifestをコードとして残すことで、別ワークスペースへの再適用や復旧時にも差分を追いやすくなる。

再現手順

公開例ではパスと秘密値を一般化している。

“`bash
cd /path/to/project
hermes slack manifest –agent-view –write slack-app-manifest.json
python -m unittest tests.test_slack_manifest -v
“`

Slack管理画面でCreate an App → From a manifestを選び、生成したJSONを貼り付ける。App作成後、Bot TokenとApp-Level Tokenを取得し、Hermes側へ登録する。

“`bash
hermes gateway setup
hermes gateway restart
hermes gateway status
“`

Slackでは、まずHermesへDMを送り、次に使いたいチャンネルへAppを招待してからメンションする。scopeやeventを変更した場合は、Slack Appを再インストールしてから再確認する。

失敗しやすい点と安全策

チャンネルで反応しない場合は、event購読、履歴系scope、App招待、再インストールのいずれかが抜けていることが多い。Hermes公式ドキュメントでも、DMだけでなくチャンネルやグループDMを扱うには対応するmessage eventと履歴scopeが必要だと説明されている。

安全面では、許可ユーザーを必ずSlack Member IDで制限する。Bot Token、App Token、チャンネルID、ワークスペース固有IDは記事やGitへ残さず、例では`YOUR_SLACK_BOT_TOKEN`、`YOUR_SLACK_APP_TOKEN`、`YOUR_SLACK_MEMBER_ID`のようなプレースホルダーに置き換える。Manifestテストは構成の抜けを見つけるもので、Slack側の実インストール完了までは保証しない。

再現チェックリスト

  • [ ] ManifestをHermes CLIから生成し、プロジェクトに保存した。
  • [ ] Socket Mode、Messages Tab、slash command、event購読を確認した。
  • [ ] 必要なOAuth scopeを確認した。
  • [ ] 実トークンや固有IDをManifestや記事へ残していない。
  • [ ] scopeやevent変更後にSlack Appを再インストールした。
  • [ ] Gatewayを再起動し、DMと招待済みチャンネルで確認した。
  • [ ] Manifestの単体テストが成功している。

公式一次情報

  • [Hermes Agent: Slack Setup](https://hermes-agent.nousresearch.com/docs/user-guide/messaging/slack)
  • [Slack Developer Docs: Using Socket Mode](https://docs.slack.dev/apis/events-api/using-socket-mode/)
  • [Slack Developer Docs: App manifest reference](https://docs.slack.dev/reference/app-manifest/)
  • [Slack Developer Docs: assistant:write scope](https://docs.slack.dev/reference/scopes/assistant.write/)

Back to top