OpenClawSkills
GitHub
平台 • 5 分钟阅读

Android 应用

Android 节点应用:连接手册 + Canvas/Chat/Camera

Tutorial.step

支持概览

- 角色:伴侣节点应用(Android 不承载 Gateway)。

- 是否需要 Gateway:需要(在 macOS、Linux 或 Windows(WSL2)上运行)。

- 安装参考:''Getting Started'' + ''Pairing''。

- Gateway 参考:''Runbook'' + ''Configuration''。

- 协议:''Gateway protocol''(节点与控制面)。

Tutorial.step

系统控制

系统级控制(launchd/systemd)发生在 Gateway 主机上。见 ''Gateway''。

Tutorial.step

连接手册(Runbook)

Android 节点应用 ⇄(mDNS/NSD + WebSocket)⇄ Gateway

Android 直接连接到 Gateway WebSocket(默认 ws://<host>:18789)并使用由 Gateway 管理的配对机制。

#

Tutorial.step

前置条件

- 你可以在"主控"机器上运行 Gateway。

- Android 设备/模拟器可以访问 gateway WebSocket:

- 同一 LAN,通过 mDNS/NSD 发现,或

- 同一 Tailscale tailnet,通过 Wide-Area Bonjour / unicast DNS-SD(见下文),或

- 手动填写 gateway host/port(兜底)

- 你可以在 gateway 机器上运行 CLI(openclaw)(或通过 SSH 使用)。

#

Tutorial.step

1)启动 Gateway

Bash
openclaw gateway --port 18789 --verbose

确认日志中出现类似:

- listening on ws://0.0.0.0:18789

对于仅 tailnet 的部署(例如 Vienna ⇄ London,推荐),把 gateway 绑定到 tailnet IP:

- 在 gateway 主机的 ~/.openclaw/openclaw.json 中设置 ~/.openclaw/openclaw.json。

- 重启 Gateway / macOS 菜单栏应用。

#

Tutorial.step

2)验证发现(可选)

在 gateway 机器上:

Bash
dns-sd -B _openclaw-gw._tcp local.

更多调试说明见 ''Bonjour''。

##

Tutorial.step

Tailnet(Vienna ⇄ London)通过 unicast DNS-SD 发现

Android 的 NSD/mDNS 发现无法跨网络。如果 Android 节点与 gateway 不在同一网络,但通过 Tailscale 连接,使用 Wide-Area Bonjour / unicast DNS-SD:

1. 在 gateway 主机上设置一个 DNS-SD zone(例如 openclaw.internal.),并发布 _openclaw-gw._tcp 记录。

2. 在 Tailscale 中为该域配置 split DNS,指向你的 DNS 服务器。

细节与 CoreDNS 示例见 ''Bonjour''。

#

Tutorial.step

3)从 Android 连接

在 Android 应用中:

- 应用通过 前台服务(常驻通知)保持与 gateway 的连接。

- 打开 Settings。

- 在 Discovered Gateways 中选择你的 gateway,然后点击 Connect。

- 若 mDNS 被阻断,使用 Advanced → Manual Gateway(host + port)并点击 Connect (Manual)。

首次配对成功后,Android 在启动时会自动尝试重连:

- 如果启用了手动 endpoint,则优先使用手动 endpoint;否则

- 尝试重连上一次发现到的 gateway(尽力而为)。

#

Tutorial.step

4)批准配对(CLI)

在 gateway 机器上:

Bash
openclaw nodes pending
openclaw nodes approve <requestId>

配对细节:''/gateway/pairing''。

#

Tutorial.step

5)验证节点已连接

- 节点状态:

- 通过 Gateway:

PlatformsAndroidPage step 10: P3

Tutorial.step

6)Chat 与历史同步

Android 节点的 Chat 页面使用 gateway 的 primary session key(main),因此聊天历史与回复可与 WebChat 等客户端共享:

- 历史:chat.history

- 发送:chat.send

- 推送更新(尽力而为):chat.subscribe → event:"chat"

#

Tutorial.step

7)Canvas + 摄像头

##

Tutorial.step

Gateway Canvas Host(推荐展示网页内容)

如果你希望节点展示真实的 HTML/CSS/JS(由 Agent 在磁盘上编辑),让节点连接到 Gateway canvas host。

注意:节点使用独立的 canvas host,端口为 canvasHost.port(默认 18793)。

1. 在 gateway 主机创建 ~/.openclaw/workspace/canvas/index.html。

2. 让节点跳转到它(LAN):

Tailnet (optional): If both devices are on Tailscale, use MagicDNS or tailnet IP instead of .local, e.g., http://<gateway-magicdns>:18793/__openclaw__/canvas/.

此服务将实时重载客户端注入 HTML,并在文件更改时自动刷新。A2UI 主机位于 http://<gateway-host>:18793/__openclaw__/a2ui/。

Canvas 命令(仅前台可用):

- canvas.eval、canvas.snapshot、canvas.navigate(使用 '{"url":""}' 或 '{"url":"/"}' 回到默认 scaffold)。canvas.snapshot 返回 '{ format, base64 }'(默认 format="jpeg")。

- A2UI:canvas.a2ui.push、canvas.a2ui.reset(旧别名 canvas.a2ui.pushJSONL 仍可用)

摄像头命令(仅前台可用;受权限控制):

- camera.snap(jpg)

- camera.clip(mp4)

参数与 CLI helper 见 ''Camera node''。