ゲートウェイコア
源码版本v2026.7.20
職務
ゲートウェイは agent と外部世界の橋:各プラットフォーム(Telegram/Discord/Slack/Signal/微信…)からのメッセージを受け取り、統一 MessageEvent に変換して agent に渡し、agent のストリーミング出力を各プラットフォームの送信アクションに変換する。gateway/run.py がこの層のメインプロセス(GatewayRunner)で、アダプタ、セッション、ストリーミング消費、配信台帳、hooks、cron 心拍など複数のサブシステムを協調させる。
主要ファイル
class GatewayRunner:3029— ゲートウェイメインクラス、認可/Kanban/Slash 能力をミックスイン_handle_message:9947— 入站メッセージディスパッチ入口_handle_message_with_agent:11956— メッセージを agent に渡して一往復実行_start_one_profile_adapter / _start_secondary:9389-9947— 各 profile のプラットフォームアダプタを起動_start_stream_consumer:21218— ストリーミング消費器を起動_start_gateway_housekeeping:22246— 周期巡回(60s)_start_cron_ticker:22335— cron 心拍(60s)def main:22965— ゲートウェイプロセス入口例外と秘匿化:276-340—_gateway_loop_exception_handler/_redact_gateway_user_facing_secretsPlatformEntry:39-162— プラットフォーム登録項目データクラスclass PlatformRegistry:162-260— レジストリ(register / register_deferred / unregister)
データフロー
main()(gateway/run.py:22965) がGatewayRunnerを起動する。_start_one_profile_adapter:9389がプラットフォームアダプタを順に起動(プラットフォームアダプタ参照)。- アダプタがプラットフォーム生イベントを受け取り、統一
MessageEventに変換(gateway/platforms/base.py:1759参照)。 _handle_message(gateway/run.py:9947) がディスパッチ:認可チェック、セッション解析、slash コマンドルーティング、または_handle_message_with_agent(gateway/run.py:11956) に渡す。- 後者は agent の
run_conversation:588を呼び、ストリーミングコールバックをGatewayStreamConsumer:83に接続する。 - ストリーミング出力は消費器経由でプラットフォームメッセージを段階的に編集する。最終状態は
delivery_ledgerが記帳し、クラッシュ時にも最終返信を失わない。 - 巡回と cron 心拍はバックグラウンドで 60s 周期で走る(
gateway/run.py:22246/gateway/run.py:22335)。
まとめ
ゲートウェイコアは「イベントバス + ストリーミング橋渡し」:統一 MessageEvent 抽象でプラットフォーム差異を隠し、GatewayStreamConsumer が同期 agent コールバックを非同期プラットフォーム配信に橋渡し、delivery_ledger が最終状態を落とさない。agent とは疎結合——agent はループを回すことだけを考え、配信の詳細はすべてゲートウェイが担う。