WebChat 是 OpenClaw 内置的原生聊天界面——不是嵌入浏览器,不需要本地静态服务器,直接连接到 Gateway WebSocket,体验与 Telegram/Discord 频道一致。
什么是 WebChat?
WebChat 是 OpenClaw macOS/iOS SwiftUI 应用的内置聊天 UI,具有以下特点:
原生 UI,非 Web 页面:直接与 Gateway WebSocket 通信,无需独立 HTTP 服务器
与其他频道一致的路由:使用相同的会话和路由规则,回复始终返回到 WebChat
确定性路由:发出的消息总是回到 WebChat,不会出现跨频道混乱
快速启动
- 启动 Gateway:
openclaw gateway start-
打开 macOS/iOS 应用,进入 WebChat 界面,或在 Control UI 的 Chat 标签访问
-
确保 Gateway 认证已配置(默认情况下即使在 loopback 连接也需要认证)
工作原理
WebChat UI 通过三个 WebSocket 消息与 Gateway 交互:
chat.history:获取历史对话,Gateway 可能会截断过大的记录(用 [chat.history omitted: message too large] 替代),确保 UI 稳定性
chat.send:发送新消息,触发 Agent 运行
chat.inject:直接向对话追加 assistant 消息(不触发 Agent 运行),立即广播到 UI
中断和历史记录
中断的运行:如果你在 Agent 运行中途中断,已生成的部分输出仍然可见
历史持久化:Gateway 会将中断时已缓冲的部分输出持久化到对话历史,并用 abort 元数据标记这些条目
历史来源:历史始终从 Gateway 获取,不依赖本地文件——如果 Gateway 无法访问,WebChat 变为只读模式
工具面板(Control UI)
Control UI 的 /agents 工具面板功能:
- 通过
tools.catalog获取运行时工具目录 - 每个工具标记为
core(核心)或plugin:<id>(插件提供) - 可选工具额外标记
optional - 如果
tools.catalog不可用,回退到内置静态工具列表 - 编辑工具 Profile 和覆盖配置(实际运行权限仍遵循
allow/deny策略)
远程使用
WebChat 不需要单独的 WebChat 服务器——远程模式下直接通过 SSH 隧道或 Tailscale 访问 Gateway WebSocket:
# 建立 SSH 隧道
ssh -N -L 18789:127.0.0.1:18789 user@gateway-host
# WebChat 连接到
ws://127.0.0.1:18789macOS 用户推荐:使用应用的「Remote over SSH」模式,自动管理隧道,WebChat 和健康检查无缝工作。
相关配置项
WebChat 没有独立的 webchat.* 配置块,复用 Gateway 端点和认证设置:
连接配置
gateway.port:WebSocket 端口(默认 18789)gateway.bind:绑定地址(loopback/lan/tailnet 等)
认证配置
gateway.auth.mode:认证模式gateway.auth.token:Token 认证gateway.auth.password:密码认证gateway.auth.mode: "trusted-proxy":反向代理认证(适合浏览器客户端)
远程配置
gateway.remote.url:远程 Gateway 的 WebSocket 地址gateway.remote.token:远程认证 Token
会话配置
session.*:会话存储和主 Key 默认值
WebChat vs 其他访问方式
WebChat(macOS/iOS App):最流畅的本地/远程体验,原生 UI,自动处理重连
Control UI(浏览器):功能更全,有工具面板、日志、配置编辑器,适合管理操作
TUI(终端):命令行环境首选,SSH 会话中使用
频道(Telegram/Discord 等):日常使用的主要入口,随身携带
原文:WebChat - OpenClaw | 来源:OpenClaw 官方文档