コンテンツにスキップ

チャネル

アーキテクチャとコード

チャネル

外部トランスポートがLifeOSAIエージェントに届く仕組み — 受信ディスパッチと共有の送信メッセージツール。

外部トランスポートがLifeOSAIエージェントに届く仕組み。上部の全画面ボタンをご利用いただくか、チャネル図を新しいタブで開く ↗

チャネルシステム

チャネルは、外部トランスポートがLifeOSAIエージェントと通信することを可能にします。

現在のチャネル構成:

  • WhatsAppプラグイン
  • Telegramプラグイン
  • チャネルレジストリ
  • チャネルセッションストア
  • 受信ディスパッチ
  • 送信メッセージツール

中心となる送信契約はチャネルメッセージツールです。Claude Codeはこれを mcp__channels__message として受け取ります。Pi Agentもランタイムツールパス配下に同等のツール実装を持ちます。

受信チャネルフロー

WhatsApp / Telegramの受信メッセージ
トランスポートプラグイン
チャネルレジストリが企業、エージェント、セッションを解決
チャネルディスパッチがシステムプロンプトとランタイムオプションを構築
ランタイムが回答をストリーム
ストリームシンクがトランスポート経由で返信を送信
チャネルセッションのメタデータが永続化

チャネルディスパッチャはトランスポート非依存です。WhatsAppとTelegramは配信動作が異なるため、それぞれ独自のストリームシンクを提供します。

  • Telegramはストリーミングされたメッセージをより自然に更新できます。
  • WhatsAppは通常バッファリングして最終メッセージを送信します。

チャネルから企業オーケストレーションへ

チャネルメッセージは次のいずれかとなり得ます。

  • エージェントとのダイレクトチャネル会話を継続する、または
  • メッセージが企業エージェントにマップされる場合、企業作業のウェイクアップを作成する。

ソースが channel の場合、ウェイクコンテキストはチャネルメタデータを保持すべきです。

  • チャネルチャットID
  • 送信者の電話番号またはセンダーID
  • 送信者の表示名
  • 受信メッセージ本文
  • チャネルエイリアス

ランタイムはこれを LIFEOSAI_* 環境変数として受け取り、エージェントは直接のトランスポート認証情報なしにソースを判断できます。

送信チャネルツール

送信ツールは意図的にランタイム間で共有されます。

エージェントランタイム
mcp__channels__message またはPiのチャネルツール
apps/api/src/channels/message-tool.ts
チャネルアクションランナー
トランスポートプラグイン
外部チャット

これにより、チャネル送信はモデルのプロンプトから切り離され、監査されたツールパスの中で実行されます。

次に読む