Hermes AgentのSlack連携で使えるチャンネルごとのプロンプト機能

AI

はじめに

個人的にHermes Agentを使い始めてから、日常的なタスク処理がずいぶん変わりました。特にSlack連携を設定して以来、チャット上でそのまま「調べてきて」「まとめて」といった指示が通るようになり、日常のワークフローにAIエージェントが自然に溶け込んでいます。

ただ、Slackには複数のチャンネルがあります。調査を依頼したいチャンネル、コードレビューを頼みたいチャンネル、日次の株式ブリーフィングが届くチャンネル——それぞれ用途が違うのに、エージェントに対して「今はこのモードで動いてほしい」と毎回伝えるのは面倒です。

そこで重宝しているのが、チャンネルごとのプロンプト機能です。特定のSlackチャンネルにメッセージが届いたとき、あらかじめ決めておいた指示(システムプロンプトやスキル)を自動で注入できる機能で、チャンネルの用途に合わせてエージェントの振る舞いをカスタマイズできます。

本記事では、Hermes AgentのSlack連携で使えるこの機能の設定方法と、具体的なユースケースを紹介します。なお、Hermes Agentのインストールや基本的なSlack連携の設定については他の記事に譲り、本記事では機能の活用に焦点を絞ります。


Hermes Agentとは

本題に入る前に、Hermes Agentについて簡単に説明します。

Hermes Agent は、Nous Researchが開発しているオープンソースのAIエージェントフレームワークです。ターミナル上で動作し、Slack・Telegram・Discordなど10以上のメッセージングプラットフォームと連携できます。Claude CodeやOpenAI Codexと同じカテゴリの「自律型エージェント」で、ツール呼び出しによってシステムを操作しながらタスクを実行します。

特徴的なのは次の点です。

  • スキルによる自己改善: エージェントが経験から学び、再利用可能な手順(スキル)として知識を蓄積します
  • セッションをまたいだ記憶: ユーザーの好みや環境情報を記憶し、次回以降のセッションに活かします
  • マルチプラットフォームゲートウェイ: 同じエージェントがSlack・Telegram・Discordなど複数のプラットフォームで動作します
  • プロバイダー非依存: OpenRouter・Anthropic・OpenAIなど20以上のプロバイダーを切り替えて利用できます

特に最近はAI周りの流動性が高い中で、プロバイダー非依存の設計は安心感があります。

インストール方法や初期設定については 公式ドキュメント や他の記事を参照してください。


チャンネルごとのプロンプト機能とは

Hermes AgentをSlackに連携した場合、デフォルトではどのチャンネルでも同じ振る舞いをします。しかし、チャンネルによっては「このチャンネルでは常にこういう文脈で動いてほしい」という要件があります。

Hermesはこれに対応するために2つの機能を提供しています。

機能 設定キー 注入タイミング 用途
チャンネルプロンプト channel_prompts 毎回のターンに注入(履歴に残らない) 一時的な役割・制約・口調の指定
スキルバインディング channel_skill_bindings セッション開始時に注入(履歴に残る) 専門知識・ワークフローの事前ロード

どちらも ~/.hermes/config.yamlslack: セクションに設定します。


channel_prompts の使い方

設定方法

slack:
  channel_prompts:
    "C01RESEARCH": |
      あなたは研究アシスタントです。学術的な情報源、
      引用、簡潔な要約に焦点を当ててください。
    "C02ENGINEERING": |
      コードレビューモードで動作してください。
      エッジケースとパフォーマンスへの影響を重視してください。
    "C03STOCK": |
      あなたは日本株の投資アシスタントです。
      東証上場銘柄を対象に、ファンダメンタル分析を重視した回答をしてください。
      数値はすべて日本円で表示し、根拠を明示してください。

キーはSlackのチャンネルID(チャンネルの「詳細」→「About」→スクロール下部で確認できます)です。

動作の仕組み

channel_prompts で設定したプロンプトは、エフェメラル(一時的)なシステムプロンプトとして毎ターンに注入されます。会話履歴には残らないため、設定を変更すれば次のメッセージから即座に反映されます。config.yaml を書き換えてゲートウェイを再起動するだけで、既存のセッションにも適用されます。


channel_skill_bindings の使い方

設定方法

slack:
  channel_skill_bindings:
    # 自分とのDMチャンネル — 料理レシピ提案機能を常に有効化
    - id: "D0ATH9TQ0G6"
      skills:
        - recipe-suggestions
    # 調査チャンネル — arXiv検索と計画立案スキルを同時にロード
    - id: "C01RESEARCH"
      skills:
        - arxiv
        - writing-plans
    # サポートチャンネル — 単一スキルの短縮記法
    - id: "C02SUPPORT"
      skill: hubspot-on-demand

動作の仕組み

channel_skill_bindings は、セッション開始時にスキルの内容をユーザーメッセージとして注入します。channel_prompts との違いは「セッション履歴に残る」点です。

  • スキルはセッション開始時(新規セッション、または自動リセット後)にロードされます
  • /new コマンドで新セッションを開始することで、変更後の設定を反映できます
  • スレッドメッセージは親チャンネルのバインディングを継承します

2つの機能を組み合わせる

channel_promptschannel_skill_bindings は組み合わせて使うことで効果が倍増します。

slack:
  channel_prompts:
    "C01RESEARCH": |
      回答は必ず日本語で。
      論文を引用する際はDOIまたはarXivリンクを必ず付けてください。
      推測で答えず、「不確かですが」を明示してください。

  channel_skill_bindings:
    - id: "C01RESEARCH"
      skills:
        - arxiv
        - writing-plans

この設定では、C01RESEARCH チャンネルに対して: 1. セッション開始時arxivwriting-plans スキルがロードされ、論文検索や計画立案の手順が注入される 2. 毎ターンに「日本語で回答・DOIリンク必須・不確かさの明示」という制約が注入される

スキルが提供する「できること(how)」と、プロンプトが規定する「振る舞い(tone/constraint)」を分離して管理できるため、メンテナンスしやすくなります。


具体的なユースケース

ユースケース1: 株式調査チャンネル

日本株の個人投資家として、日常的に銘柄調査をSlack上で行いたい場合の設定例です。

slack:
  channel_prompts:
    "C03STOCK": |
      あなたは日本株専門の投資アシスタントです。
      - 東証上場銘柄を前提として回答してください
      - ファンダメンタル指標(PER・PBR・ROE・配当利回り)を重視してください
      - 投資判断の最終決定はユーザー自身が行う旨を回答の末尾に添えてください
      - 数値は円・%で統一し、根拠となるソースを明示してください

このチャンネルに「7203 トヨタの直近の業績を教えて」と送るだけで、毎回「投資アシスタントとして」という文脈が自動で設定されます。

ユースケース2: エンジニアリングチャンネル

コードレビューや技術的な質問を集約するチャンネルです。

slack:
  channel_prompts:
    "C02ENGINEERING": |
      コードレビュアーとして振る舞ってください。
      - パフォーマンス・セキュリティ・可読性の3軸で評価してください
      - 問題点を指摘する際は、代替案を必ず提示してください
      - コードブロックを使い、具体的な修正例を示してください

  channel_skill_bindings:
    - id: "C02ENGINEERING"
      skills:
        - requesting-code-review

requesting-code-review スキルによりセキュリティスキャンや品質チェックの手順が事前ロードされ、さらにプロンプトで「コードレビュアーとして」という役割が固定されます。

ユースケース3: 日次ブリーフィング受信チャンネル

筆者が実際に運用している構成で、毎朝cronジョブで株式ブリーフィングが届くチャンネルです。ここへのメッセージには「ブリーフィングの内容について質問する」という文脈が暗黙に共有されています。

slack:
  channel_prompts:
    "C0B4SL0EFRQ": |
      このチャンネルには毎朝の株式ブリーフィングが届きます。
      ユーザーからの質問は、直前のブリーフィングの内容に関するものと解釈してください。
      銘柄コード・株価・指数については最新情報をweb検索で補完してください。

ブリーフィングの内容を起点に「この銘柄もっと詳しく」「今日のポジション見直し案を出して」といった自然な会話ができるようになります。


チャンネルIDの調べ方

チャンネルIDはSlackのUIから確認できます。

  1. 対象チャンネルを開く
  2. チャンネル名をクリックして「詳細」を開く
  3. 「About」タブを選択
  4. 一番下までスクロールすると「チャンネルID」が表示される(例: C0B4SL0EFRQ

DMのIDは D から始まり、グループチャンネルIDは C から始まります。


ハマったポイント

設定変更が反映されない

channel_prompts は毎ターン注入されるため、config.yaml を変更してゲートウェイを再起動すれば即座に反映されます。一方、channel_skill_bindings はセッション開始時にのみ注入されます。変更後に効果を確認するには、Slackで /new コマンドを送って新セッションを開始する必要があります。

channel_promptsは英語でも日本語でも動く

プロンプトの言語は問いません。日本語で記述したプロンプトも正しく機能します。ただし、「日本語で回答してください」という指示をプロンプト内に含める場合、モデルによっては英語を優先することがあるため、日本語での応答を固定したい場合は明示的に指示を入れる方が確実です。

スキル名はローカルにインストール済みのものを指定

channel_skill_bindings で指定するスキル名は、hermes skills list で確認できるインストール済みのスキル名と一致している必要があります。存在しないスキル名を指定した場合はサイレントに無視されるため、設定後に /new コマンドでセッションを開始し、スキルが正しくロードされていることを確認することをおすすめします。


まとめ

Hermes AgentのSlack連携で使えるチャンネルごとのプロンプト機能(channel_prompts / channel_skill_bindings)について紹介しました。

  • channel_prompts: 毎ターンにエフェメラルなシステムプロンプトを注入。設定変更が即時反映されるため、チャンネルの「役割」「制約」「口調」の固定に向いています
  • channel_skill_bindings: セッション開始時にスキルをロード。専門的なワークフローや知識が必要なチャンネルに向いています

両者を組み合わせることで、スキル(できること)とプロンプト(振る舞い)を分けて管理でき、設定のメンテナンス性も上がります。

実際に運用してみて感じたのは、「毎回コンテキストを説明する手間」がなくなることの効果の大きさです。特に用途が固定されているチャンネル(株式調査・コードレビューなど)では、チャンネルに入るだけでエージェントが適切なモードに切り替わる体験は、日常の使い勝手を大きく向上させます。まだ設定していない方は、ぜひ試してみてください。

コメント

タイトルとURLをコピーしました