WebChat(Gateway WebSocket UI)

状态:macOS/iOS SwiftUI 聊天 UI 直接与 Gateway WebSocket 通信。

是什么

  • 面向 Gateway 的原生聊天 UI(没有嵌入式浏览器,也没有本地静态服务器)。
  • 使用与其他频道相同的会话和路由规则。
  • 确定性路由:回复始终回到 WebChat。

快速上手

  1. 启动 gateway。
  2. 打开 WebChat UI(macOS/iOS 应用)或控制面板的聊天标签页。
  3. 确保 gateway 认证已配置(默认必需,即使在回环地址上)。

工作原理

  • UI 连接到 Gateway WebSocket,使用 chat.historychat.sendchat.inject
  • chat.history 有大小限制以保障稳定性:Gateway 可能截断长文本字段、省略大块元数据,并用 [chat.history omitted: message too large] 替换超大条目。
  • chat.inject 直接向对话记录追加一条助手备注并广播到 UI(不触发 agent 运行)。
  • 中止的运行仍可在 UI 中保留部分助手输出。
  • Gateway 在有缓冲输出时将中止的部分助手文本持久化到对话历史,并用中止元数据标记这些条目。
  • 历史始终从 gateway 获取(不监听本地文件)。
  • 如果 gateway 不可达,WebChat 进入只读模式。

控制面板 Agent 工具面板

  • 控制面板的 /agents 工具面板通过 tools.catalog 获取运行时目录,并将每个工具标记为 coreplugin:<id>(可选插件工具标记 optional)。
  • 如果 tools.catalog 不可用,面板回退到内置的静态列表。
  • 面板编辑配置文件和覆盖配置,但实际运行时的访问权限仍然遵循策略优先级(allow/deny、按 agent 和 provider/频道覆盖)。

远程使用

  • 远程模式通过 SSH/Tailscale 隧道传输 gateway WebSocket。
  • 不需要运行单独的 WebChat 服务器。

配置参考(WebChat)

完整配置:配置

频道选项:

  • 没有专门的 webchat.* 配置块。WebChat 使用下面的 gateway 端点 + 认证设置。

相关全局选项:

  • gateway.portgateway.bind:WebSocket 主机/端口。
  • gateway.auth.modegateway.auth.tokengateway.auth.password:WebSocket 认证(token/密码)。
  • gateway.auth.mode: "trusted-proxy":浏览器客户端的反向代理认证(见 受信代理认证)。
  • gateway.remote.urlgateway.remote.tokengateway.remote.password:远程 gateway 目标。
  • session.*:会话存储和主键默认值。