Skip to content

ゲートウェイコア

源码版本v2026.7.20

職務

ゲートウェイは agent と外部世界の橋:各プラットフォーム(Telegram/Discord/Slack/Signal/微信…)からのメッセージを受け取り、統一 MessageEvent に変換して agent に渡し、agent のストリーミング出力を各プラットフォームの送信アクションに変換する。gateway/run.py がこの層のメインプロセス(GatewayRunner)で、アダプタ、セッション、ストリーミング消費、配信台帳、hooks、cron 心拍など複数のサブシステムを協調させる。

主要ファイル

データフロー

  1. main()(gateway/run.py:22965) が GatewayRunner を起動する。
  2. _start_one_profile_adapter:9389 がプラットフォームアダプタを順に起動(プラットフォームアダプタ参照)。
  3. アダプタがプラットフォーム生イベントを受け取り、統一 MessageEvent に変換(gateway/platforms/base.py:1759 参照)。
  4. _handle_message(gateway/run.py:9947) がディスパッチ:認可チェック、セッション解析、slash コマンドルーティング、または _handle_message_with_agent(gateway/run.py:11956) に渡す。
  5. 後者は agent の run_conversation:588 を呼び、ストリーミングコールバックを GatewayStreamConsumer:83 に接続する。
  6. ストリーミング出力は消費器経由でプラットフォームメッセージを段階的に編集する。最終状態は delivery_ledger が記帳し、クラッシュ時にも最終返信を失わない。
  7. 巡回と cron 心拍はバックグラウンドで 60s 周期で走る(gateway/run.py:22246 / gateway/run.py:22335)。

まとめ

ゲートウェイコアは「イベントバス + ストリーミング橋渡し」:統一 MessageEvent 抽象でプラットフォーム差異を隠し、GatewayStreamConsumer が同期 agent コールバックを非同期プラットフォーム配信に橋渡し、delivery_ledger が最終状態を落とさない。agent とは疎結合——agent はループを回すことだけを考え、配信の詳細はすべてゲートウェイが担う。

非公式コミュニティ学習サイト。MIT ライセンスの NousResearch/hermes-agent ソースに基づく。