WebChat(Gateway WebSocket UI)

現在の状況: macOS/iOS の SwiftUI チャット UI は Gateway WebSocket に直接通信します。

概要

  • Gateway 向けのネイティブチャット UI です(埋め込みブラウザやローカル静的サーバーは不要)。
  • 他のチャンネルと同じセッションとルーティングルールを使用します。
  • 確定的ルーティング: 返信は常に WebChat に戻ります。

クイックスタート

  1. Gateway を起動します。
  2. WebChat UI(macOS/iOS アプリ)または Control UI のチャットタブを開きます。
  3. Gateway 認証が設定されていることを確認してください(ループバックでもデフォルトで必須)。

動作の仕組み

  • UI は Gateway WebSocket に接続し、chat.historychat.sendchat.inject を使用します。
  • chat.history は安定性のため制限されています。Gateway は長いテキストフィールドの切り詰め、重いメタデータの省略、サイズ超過エントリの [chat.history omitted: message too large] への置換を行うことがあります。
  • chat.inject はアシスタントノートをトランスクリプトに直接追加し、UI にブロードキャストします(エージェント実行なし)。
  • 中止された実行でも部分的なアシスタント出力を UI に表示できます。
  • バッファリングされた出力がある場合、Gateway は中止された部分的なアシスタントテキストをトランスクリプト履歴に永続化し、中止メタデータでマークします。
  • 履歴は常に Gateway から取得されます(ローカルファイルの監視はありません)。
  • Gateway に到達できない場合、WebChat は読み取り専用になります。

Control UI のエージェントツールパネル

  • Control UI の /agents ツールパネルは tools.catalog 経由でランタイムカタログを取得し、各ツールに core または plugin:<id>(オプションのプラグインツールには optional)のラベルを付けます。
  • tools.catalog が利用できない場合、パネルはビルトインの静的リストにフォールバックします。
  • パネルはプロファイルとオーバーライド設定を編集しますが、有効なランタイムアクセスはポリシー優先順位(allow/deny、エージェントごとやプロバイダ/チャンネルのオーバーライド)に従います。

リモート利用

  • リモートモードは Gateway WebSocket を SSH/Tailscale 経由でトンネリングします。
  • 別途 WebChat サーバーを実行する必要はありません。

設定リファレンス(WebChat)

完全な設定: 設定

チャンネルオプション:

  • 専用の webchat.* ブロックはありません。WebChat は以下の Gateway エンドポイント + 認証設定を使用します。

関連するグローバルオプション:

  • gateway.portgateway.bind: WebSocket のホスト/ポート。
  • gateway.auth.modegateway.auth.tokengateway.auth.password: WebSocket 認証(トークン/パスワード)。
  • gateway.auth.mode: "trusted-proxy": ブラウザクライアント向けリバースプロキシ認証(Trusted Proxy Auth を参照)。
  • gateway.remote.urlgateway.remote.tokengateway.remote.password: リモート Gateway ターゲット。
  • session.*: セッションストレージとメインキーのデフォルト。