Android 应用(Node)
功能概览
- 角色:配套 node 应用(Android 不托管 Gateway)。
- Gateway 要求:必需(在 macOS、Linux 或 Windows via WSL2 上运行)。
- 安装:快速开始 + 配对。
- Gateway:运行手册 + 配置。
- 协议:Gateway 协议(nodes + 控制平面)。
系统控制
系统控制(launchd/systemd)运行在 Gateway 主机上。参见 Gateway。
连接指南
Android node 应用 ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway
Android 直接连接到 Gateway WebSocket(默认 ws://<host>:18789)并使用 Gateway 管理的 Pairing。
前置条件
- 你可以在”主”机器上运行 Gateway。
- Android 设备/模拟器可以访问 Gateway WebSocket:
- 同一局域网,支持 mDNS/NSD,或
- 同一 Tailscale tailnet,使用 Wide-Area Bonjour / unicast DNS-SD(见下文),或
- 手动指定 Gateway 主机/端口(备用方案)
- 你可以在 Gateway 机器上运行 CLI(
openclaw)(或通过 SSH)。
1) 启动 Gateway
openclaw gateway --port 18789 --verbose
在日志中确认你看到类似这样的内容:
listening on ws://0.0.0.0:18789
对于仅 tailnet 的设置(推荐用于 Vienna ⇄ London),将 Gateway 绑定到 tailnet IP:
- 在 Gateway 主机的
~/.openclaw/openclaw.json中设置gateway.bind: "tailnet"。 - 重启 Gateway / macOS 菜单栏应用。
2) 验证发现(可选)
在 Gateway 机器上:
dns-sd -B _openclaw-gw._tcp local.
更多调试说明:Bonjour。
Tailnet(Vienna ⇄ London)通过 unicast DNS-SD 发现
Android NSD/mDNS 发现无法跨网络。如果你的 Android node 和 Gateway 在不同网络但通过 Tailscale 连接,使用 Wide-Area Bonjour / unicast DNS-SD:
- 在 Gateway 主机上设置 DNS-SD 区域(例如
openclaw.internal.)并发布_openclaw-gw._tcp记录。 - 配置 Tailscale split DNS,将你选择的域名指向该 DNS 服务器。
详细信息和 CoreDNS 配置示例:Bonjour。
3) 从 Android 连接
在 Android 应用中:
- 应用通过前台服务(持久通知)保持与 Gateway 的连接。
- 打开 Settings。
- 在 Discovered Gateways 下,选择你的 Gateway 并点击 Connect。
- 如果 mDNS 被阻止,使用 Advanced → Manual Gateway(主机 + 端口)并点击 Connect (Manual)。
首次成功配对后,Android 会在启动时自动重连:
- 手动端点(如果启用),否则
- 最后发现的 Gateway(尽力而为)。
4) 批准配对(CLI)
在 Gateway 机器上:
openclaw nodes pending
openclaw nodes approve <requestId>
配对详情:Gateway 配对。
5) 验证 node 已连接
- 通过 nodes 状态:
openclaw nodes status - 通过 Gateway:
openclaw gateway call node.list --params "{}"
6) 聊天 + 历史记录
Android node 的聊天界面使用 Gateway 的主 Session 键(main),因此历史记录和回复与 WebChat 和其他客户端共享:
- 历史记录:
chat.history - 发送:
chat.send - 推送更新(尽力而为):
chat.subscribe→event:"chat"
7) Canvas + 相机
Gateway Canvas Host(推荐用于 Web 内容)
如果你想让 node 显示 Agent 可以在磁盘上编辑的真实 HTML/CSS/JS,将 node 指向 Gateway Canvas host。
注意:nodes 使用 canvasHost.port 上的独立 Canvas host(默认 18793)。
-
在 Gateway 主机上创建
~/.openclaw/workspace/canvas/index.html。 -
导航 node 到它(局域网):
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18793/__openclaw__/canvas/"}'
Tailnet(可选):如果两个设备都在 Tailscale 上,使用 MagicDNS 名称或 tailnet IP 代替 .local,例如 http://<gateway-magicdns>:18793/__openclaw__/canvas/。
此服务器会向 HTML 注入实时重载客户端,并在文件更改时重新加载。
A2UI host 位于 http://<gateway-host>:18793/__openclaw__/a2ui/。
Canvas 命令(仅前台):
canvas.eval、canvas.snapshot、canvas.navigate(使用{"url":""}或{"url":"/"}返回默认脚手架)。canvas.snapshot返回{ format, base64 }(默认format="jpeg")。- A2UI:
canvas.a2ui.push、canvas.a2ui.reset(canvas.a2ui.pushJSONL旧版别名)
相机命令(仅前台;需要权限):
camera.snap(jpg)camera.clip(mp4)
参数和 CLI 辅助工具详见 Camera node。