WebChat (Gateway WebSocket UI)

현황: macOS/iOS SwiftUI 채팅 UI가 Gateway WebSocket에 직접 연결됩니다.

개요

  • 게이트웨이용 네이티브 채팅 UI입니다 (임베디드 브라우저나 로컬 정적 서버 없음).
  • 다른 채널과 동일한 세션 및 라우팅 규칙을 사용합니다.
  • 결정적 라우팅: 응답은 항상 WebChat으로 돌아갑니다.

빠른 시작

  1. 게이트웨이를 시작합니다.
  2. WebChat UI (macOS/iOS 앱) 또는 Control UI 채팅 탭을 엽니다.
  3. 게이트웨이 인증이 설정되어 있는지 확인합니다 (루프백에서도 기본적으로 필요).

작동 방식

  • UI는 Gateway WebSocket에 연결하여 chat.history, chat.send, chat.inject를 사용합니다.
  • chat.history는 안정성을 위해 크기가 제한됩니다: Gateway가 긴 텍스트 필드를 잘라내거나, 무거운 메타데이터를 생략하거나, 초과 크기 항목을 [chat.history omitted: message too large]로 대체할 수 있습니다.
  • chat.inject는 어시스턴트 노트를 트랜스크립트에 직접 추가하고 UI에 브로드캐스트합니다 (에이전트 실행 없음).
  • 중단된 실행은 부분적인 어시스턴트 출력을 UI에 계속 표시할 수 있습니다.
  • Gateway는 버퍼링된 출력이 있을 때 중단된 부분 어시스턴트 텍스트를 트랜스크립트 이력에 유지하고, 해당 항목에 중단 메타데이터를 표시합니다.
  • 이력은 항상 게이트웨이에서 가져옵니다 (로컬 파일 감시 없음).
  • 게이트웨이에 접근할 수 없으면 WebChat은 읽기 전용입니다.

Control UI 에이전트 도구 패널

  • Control UI /agents 도구 패널은 tools.catalog를 통해 런타임 카탈로그를 가져오고 각 도구를 core 또는 plugin:<id> (선택적 플러그인 도구의 경우 optional 추가)로 레이블링합니다.
  • tools.catalog를 사용할 수 없으면, 패널은 내장 정적 목록으로 폴백합니다.
  • 패널은 프로필 및 재정의 설정을 편집하지만, 유효한 런타임 접근은 여전히 정책 우선순위를 따릅니다 (allow/deny, 에이전트별 및 프로바이더/채널 재정의).

원격 사용

  • 원격 모드는 SSH/Tailscale을 통해 게이트웨이 WebSocket을 터널링합니다.
  • 별도의 WebChat 서버를 실행할 필요가 없습니다.

설정 참조 (WebChat)

전체 설정: 설정

채널 옵션:

  • 전용 webchat.* 블록은 없습니다. WebChat은 아래의 게이트웨이 엔드포인트 + 인증 설정을 사용합니다.

관련 전역 옵션:

  • gateway.port, gateway.bind: WebSocket 호스트/포트.
  • gateway.auth.mode, gateway.auth.token, gateway.auth.password: WebSocket 인증 (토큰/비밀번호).
  • gateway.auth.mode: "trusted-proxy": 브라우저 클라이언트용 리버스 프록시 인증 (신뢰할 수 있는 프록시 인증 참조).
  • gateway.remote.url, gateway.remote.token, gateway.remote.password: 원격 게이트웨이 대상.
  • session.*: 세션 저장소 및 메인 키 기본값.