WebChat(Gateway WebSocket UI)
状态:macOS/iOS SwiftUI 聊天 UI 直接与 Gateway WebSocket 通信。
是什么
- 面向 Gateway 的原生聊天 UI(没有嵌入式浏览器,也没有本地静态服务器)。
- 使用与其他频道相同的会话和路由规则。
- 确定性路由:回复始终回到 WebChat。
快速上手
- 启动 gateway。
- 打开 WebChat UI(macOS/iOS 应用)或控制面板的聊天标签页。
- 确保 gateway 认证已配置(默认必需,即使在回环地址上)。
工作原理
- UI 连接到 Gateway WebSocket,使用
chat.history、chat.send和chat.inject。 chat.history有大小限制以保障稳定性:Gateway 可能截断长文本字段、省略大块元数据,并用[chat.history omitted: message too large]替换超大条目。chat.inject直接向对话记录追加一条助手备注并广播到 UI(不触发 agent 运行)。- 中止的运行仍可在 UI 中保留部分助手输出。
- Gateway 在有缓冲输出时将中止的部分助手文本持久化到对话历史,并用中止元数据标记这些条目。
- 历史始终从 gateway 获取(不监听本地文件)。
- 如果 gateway 不可达,WebChat 进入只读模式。
控制面板 Agent 工具面板
- 控制面板的
/agents工具面板通过tools.catalog获取运行时目录,并将每个工具标记为core或plugin:<id>(可选插件工具标记optional)。 - 如果
tools.catalog不可用,面板回退到内置的静态列表。 - 面板编辑配置文件和覆盖配置,但实际运行时的访问权限仍然遵循策略优先级(
allow/deny、按 agent 和 provider/频道覆盖)。
远程使用
- 远程模式通过 SSH/Tailscale 隧道传输 gateway WebSocket。
- 不需要运行单独的 WebChat 服务器。
配置参考(WebChat)
完整配置:配置
频道选项:
- 没有专门的
webchat.*配置块。WebChat 使用下面的 gateway 端点 + 认证设置。
相关全局选项:
gateway.port、gateway.bind:WebSocket 主机/端口。gateway.auth.mode、gateway.auth.token、gateway.auth.password:WebSocket 认证(token/密码)。gateway.auth.mode: "trusted-proxy":浏览器客户端的反向代理认证(见 受信代理认证)。gateway.remote.url、gateway.remote.token、gateway.remote.password:远程 gateway 目标。session.*:会话存储和主键默认值。