Skip to main content

Android 应用(节点)

支持快照

  • 角色:伴随节点应用(Android 不承载网关)。
  • 需要网关:是(运行在 macOS、Linux 或通过 WSL2 的 Windows 上)。
  • 安装:快速开始 + 配对
  • 网关:运行手册 + 配置

系统控制

系统控制(launchd/systemd)运行在网关主机上。请参见 网关

连接运行手册

Android 节点应用 ⇄ (mDNS/NSD + WebSocket) ⇄ 网关 Android 直接连接至网关 WebSocket(默认 ws://<host>:18789),使用设备配对(role: node)。

前提条件

  • 你可以在“主控”机器上运行网关。
  • Android 设备/模拟器能够访问网关 WebSocket:
    • 在同一局域网且支持 mDNS/NSD,或者
    • 在同一 Tailscale tailnet,使用宽域 Bonjour / 单播 DNS-SD(见下文),或者
    • 手动设置网关主机/端口(备选)
  • 你可以在网关机器上(或通过 SSH)运行 CLI(openclaw)。

1) 启动网关

openclaw gateway --port 18789 --verbose
在日志中确认看到类似:
  • listening on ws://0.0.0.0:18789
对于仅 tailnet 的配置(推荐用于 Vienna ⇄ London),请绑定网关到 tailnet IP:
  • 在网关主机的 ~/.openclaw/openclaw.json 设置 gateway.bind: "tailnet"
  • 重启网关 / macOS 菜单栏应用。

2) 验证发现(可选)

从网关机器执行:
dns-sd -B _openclaw-gw._tcp local.
更多调试说明请参阅:Bonjour

通过单播 DNS-SD 实现 Tailnet(Vienna ⇄ London)发现

Android 的 NSD/mDNS 发现不能跨网络。如果你的 Android 节点和网关在不同网络,但通过 Tailscale 连接,请使用宽域 Bonjour / 单播 DNS-SD:
  1. 在网关主机上设置一个 DNS-SD 区域(示例为 openclaw.internal.),并发布 _openclaw-gw._tcp 记录。
  2. 配置 Tailscale 分割 DNS,针对你选择的域名指向该 DNS 服务器。
详情和 CoreDNS 配置示例请见:Bonjour

3) 从 Android 连接

在 Android 应用中:
  • 应用通过 前台服务(持续通知)保持网关连接活跃。
  • 打开 连接 标签。
  • 使用 设置码手动 模式。
  • 若发现被阻止,使用 高级控制 中的手动主机/端口(及需要时的 TLS/token/密码)。
首次配对成功后,Android 会在启动时自动重连:
  • 手动端点(若启用),否则
  • 上一次发现的网关(尽力而为)。

4) 批准配对(CLI)

在网关机器上:
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
配对详情:配对

5) 验证节点已连接

  • 通过节点状态:
    openclaw nodes status
    
  • 通过网关:
    openclaw gateway call node.list --params "{}"
    

6) 聊天 + 历史

Android 聊天标签支持会话选择(默认 main,还有其他存在的会话):
  • 历史:chat.history
  • 发送:chat.send
  • 推送更新(尽力而为):chat.subscribeevent:"chat"

7) 画布 + 屏幕 + 相机

网关画布主机(推荐用于网页内容)

如果你希望节点显示可由代理编辑盘上的真实 HTML/CSS/JS,可将节点指向网关画布主机。 注意:节点从网关 HTTP 服务器加载画布(与 gateway.port 端口相同,默认 18789)。
  1. 在网关主机上创建 ~/.openclaw/workspace/canvas/index.html
  2. 让节点导航至该地址(局域网):
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__openclaw__/canvas/"}'
Tailnet(可选):若双方设备都在 Tailscale,使用 MagicDNS 名称或 tailnet IP 代替 .local,如 http://<gateway-magicdns>:18789/__openclaw__/canvas/ 该服务器会向 HTML 注入实时重载客户端,并在文件变更时自动刷新。 A2UI 主机位于 http://<gateway-host>:18789/__openclaw__/a2ui/ 画布命令(仅前台):
  • canvas.evalcanvas.snapshotcanvas.navigate(使用 {"url":""}{"url":"/"} 返回默认脚手架)。canvas.snapshot 返回 { format, base64 }(默认 format="jpeg")。
  • A2UI:canvas.a2ui.pushcanvas.a2ui.resetcanvas.a2ui.pushJSONL 为旧别名)
相机命令(仅前台;需授权):
  • camera.snap(jpg)
  • camera.clip(mp4)
参数和 CLI 辅助参见:摄像头节点 屏幕命令:
  • screen.record(mp4;仅前台)

8) 语音 + 扩展的 Android 命令界面

  • 语音:Android 在语音标签中采用单一麦克风开启/关闭流程,支持转录捕获及 TTS 播放(配置时使用 ElevenLabs,系统语音合成为后备)。
  • 语音唤醒/对话模式开关现已从 Android UX/运行时移除。
  • 额外的 Android 命令家族(可用性取决设备和权限):
    • device.statusdevice.infodevice.permissionsdevice.health
    • notifications.listnotifications.actions
    • photos.latest
    • contacts.searchcontacts.add
    • calendar.eventscalendar.add
    • motion.activitymotion.pedometer
    • app.update