WebChat 是 OpenClaw macOS 菜单栏应用中嵌入的原生 SwiftUI 聊天界面。它连接到网关,默认使用所选代理的主会话(带会话切换器可切换到其他会话)。
连接模式
- 本地模式:直接连接到本地网关 WebSocket
- 远程模式:通过 SSH 转发网关控制端口,并使用该隧道作为数据平面
启动和调试
启动方式
- 手动:Lobster 菜单 → "打开聊天"
- 自动打开(用于测试):
dist/OpenClaw.app/Contents/MacOS/OpenClaw --webchat
查看日志
./scripts/clawlog.sh
子系统:bot.molt,类别:WebChatSwiftUI
工作原理
数据平面
WebChat 使用网关 WebSocket 方法和事件:
- 方法:
chat.history- 获取聊天历史chat.send- 发送消息chat.abort- 中止当前请求chat.inject- 注入消息
- 事件:
chat- 聊天消息更新agent- 代理状态变化presence- 在线状态tick- 心跳health- 健康检查
会话管理
默认使用主会话(main,或当作用域为全局时使用 global)。UI 可以在会话之间切换。入门向导使用专用会话以保持首次运行设置的独立性。
安全边界
远程模式仅通过 SSH 转发网关 WebSocket 控制端口。
已知限制
UI 针对聊天会话优化(不是完整的浏览器沙箱)。
功能特性
- 实时消息:通过 WebSocket 实时接收和发送消息
- 会话切换:在不同聊天会话之间切换
- 消息历史:查看完整的聊天历史记录
- 富文本支持:支持 Markdown 格式和代码块
- 媒体支持:显示图片和其他媒体内容
- 状态指示:显示代理在线状态和输入指示器
使用技巧
- 快捷键:使用键盘快捷键快速访问 WebChat
- 多会话:同时管理多个对话上下文
- 历史搜索:在聊天历史中搜索特定内容
- 消息操作:复制、删除或重新发送消息
故障排除
- 连接失败:
- 本地模式:检查网关是否运行(
openclaw status) - 远程模式:验证 SSH 连接和端口转发
- 本地模式:检查网关是否运行(
- 消息未发送:检查网关健康状态和 WebSocket 连接
- 会话加载失败:确认会话 ID 有效且代理已配置
- 界面卡顿:检查日志中的错误信息
WebSocket 连接
WebChat 要求与网关建立健康的 WebSocket 连接:
- 本地模式:默认端口 18789
- 远程模式:通过 SSH 隧道转发的端口
- 直连模式:配置的网关 URL(ws:// 或 wss://)
WebChat 优势
WebChat 提供了原生 macOS 体验,与菜单栏应用无缝集成,无需切换到浏览器即可与 OpenClaw 代理交互。
入门向导集成
首次运行时,WebChat 会自动使用专用会话进行入门设置:
- 引导用户完成初始配置
- 设置代理和提供商
- 配置权限和偏好设置
- 与主聊天会话分离,保持设置流程清晰