乐于分享
好东西不私藏

OpenClaw 手机客户端:来了,但,还没到开包即用.

OpenClaw 手机客户端:来了,但,还没到开包即用.

6 月 29 日晚上,我在刷推的时候看到了一条消息:OpenClaw 上线了 ios/安卓客户端。

OpenClaw 是我用了大半年的 AI 助手框架。简单说,它是一个跑在你自己电脑上的网关程序,把飞书、Telegram、微信这些聊天工具接到大语言模型上,让你在任何平台上都能跟自己的 AI 助手对话。

我每天用它管日程、搜资料、写文章、跑自动化。现在它终于有手机客户端了。我毫不犹豫地下载了。

说实话,这半年最让我抓狂的是通过 IM 跟 OpenClaw 交互时的那种「开盲盒」感。你发一句指令过去,它可能在飞书里吐一条回复,也可能跑完一整个自动化流程,但中间过程你根本看不见,只能干等。

手机客户端不一样,任务执行过程完全可视化,跟 自带的 WebUI 没啥两样。能看到 AI 正在干什么这件事,我等了大半年。。

然后,接下来的两个小时,成了我近期最折腾的技术排查现场。


第一个小时:沉默的终端

一切从一条命令开始。

按照官方文档的指引,手机和电脑在同一个 WiFi 下,应该可以通过 mDNS 协议自动发现彼此。不需要输 IP,不需要扫码,打开 App 自动就能连上。听起来很丝滑。

我打开 Mac mini 的终端,敲下设备发现命令 dns-sd -B _openclaw-gw._tcp local.,满怀期待地等待结果。

十秒。二十秒。三十秒。

终端保持沉默。没有设备名,没有 IP 地址,什么都没有。这不像「还没发现」,更像「根本没在广播」。

我跑去查 Gateway 的状态。果然,默认绑定地址是 127.0.0.1,只接受本机连接。局域网里的其他设备根本看不到它。mDNS 广播自然也不会工作。

这是一个典型的「默认安全」设计:宁可不通,也不要意外暴露。合理,但文档里并没有显著提醒你需要改这个配置。

改配置,把绑定地址从 loopback 切换到 lan,重启 Gateway。端口监听从 127.0.0.1:18789 变成了 *:18789,全接口开放。

再试设备发现。

还是沉默。

直到现在我也不确定 mDNS 为什么不广播。可能是 6.10 版本的 Bonjour 集成有问题,也可能需要某项我没找到的配置。总之,这条「最简单的路」没走通。


第二个小时:二维码、Setup Code 和 PythonQR

mDNS 走不通,好在文档里提到了另一种方式:Setup Code。

这是 OpenClaw 内置的配对机制,本质上是一段 base64 编码的 JSON,里面包含 Gateway 的 WebSocket 地址和一个一次性 bootstrap token。在终端跑 openclaw qr,会生成一个包含这段码的二维码。

但这里有两个小坑。

第一个坑:安卓客户端只支持扫码,不能手动输入 Setup Code。如果你是在无头服务器上跑 Gateway,没有显示器看二维码,就得自己想办法把二维码图片弄到手机上。

第二个坑:终端里输出的二维码是 ASCII 字符拼的。截图发到手机上,分辨率和对比度都不够,扫码识别率极低。

我最终用 Python 的 qrcode 库写了几行代码,生成了一张真正的 PNG 图片,传到手机上。扫描,连接。

「已连接。」

看到这两个字的时候,我长出了一口气。从开始到这一步,花了一个小时零七分钟。


第三个问题:出门怎么办

同 WiFi 连上之后,我测试了聊天、语音、操作审批,都能正常工作。体验其实很好,声音清晰,响应迅速,AI 助手还可以直接调用手机摄像头拍照。

但一个新问题立刻浮上来:如果我不在家呢?

同 WiFi 连接依赖局域网,一旦手机切到 5G 或别的 WiFi,连接就断了。要实现真正的随时随地访问,需要用 Tailscale 这样的组网工具,把不同网络的设备拉进同一个虚拟内网。

OpenClaw 官方支持 Tailscale Serve 模式。我在命令行输入启动命令,按下回车。

报错:tailscale serve/funnel requires gateway bind=loopback

原来 Tailscale Serve 本质上是一个反向代理,它需要 Gateway 绑定在本机回环地址上,自己来接管外部连接。但我刚才为了局域网直连,已经把绑定改成了 lan

两个模式互斥。你要么选同 WiFi 直连,要么选跨网络走 Tailscale,不能同时用。

最终我把配置切回 loopback,准备全面转向 Tailscale 方案。这意味着我得在 Mac mini 和手机上都装 Tailscale 客户端,登录同一个账号,让它们进入同一个 tailscale net。

折腾还在继续。但至少思路清楚了。

不过坦白说,我大概率会一直留在 bind=lan 模式。我的日常使用场景就是家里和办公室的局域网,没必要为「偶尔出门用一下」去折腾 Tailscale。

更何况 Tailscale 走外网中转,网络传输速率和稳定性都会打折扣。我经常让 OpenClaw 跑长任务、传截图、调用摄像头,丢包和延迟是我最不能接受的事。

本地直连虽然范围有限,但稳定性和速度是确定的。对一个要长时间干活的工具来说,确定性比可达性更重要。


2.2 星背后的故事

后来我去看了 Google Play 的评论区。OpenClaw 安卓客户端的评分是 2.2 星。

这个分数低得有点惨烈。

翻看评论,主要是两类吐槽:一类是「连不上」,跟我经历类似,mDNS 不发现、Setup Code 不知道怎么搞、文档不够清晰;另一类是 UI 粗糙、功能不稳定。

9to5Google 的报道更直接,指出安卓端的界面设计「半成品」感明显,状态栏都没适配好,OpenClaw 的标题被推到了时钟和通知图标后面。iOS 版本看起来打磨得好得多。

有人评论说这是他「用过的最烂的 App」,虽然夸张,但也能理解那种折腾两小时连不上的挫败感。

对于一个开源项目来说,跨平台客户端的打磨本就是最难的部分。


一个人的 AI 助手

折腾归折腾,当我终于配对成功、手机和 Gateway 稳定连接之后,我必须承认,体验确实还可以。

在飞书或 Telegram 上跟 AI 聊天,你只能发文字、图片。但手机客户端不一样,AI 助手能直接调用你的摄像头拍照、读取屏幕内容、获取定位、接收通知。

它变成了一个真正的设备级 AI 节点,不只是聊天窗口。

而且这一切都是本地优先的。你的数据不走云,不经过第三方服务器,完全归你自己控制。ChatGPT、Claude 这些给不了你这个。

OpenClaw 走的路很难。Local-first 架构意味着部署门槛天然就高,普通用户很难跨过「配对」这一关。

当 AI 助手真正住进你的口袋,而且完全归你掌控,那就是个人 AI 该有的样子。


写在最后

OpenClaw 的迭代速度一直不慢。从 4.1 到 6.10,三个月十多个大版本,每个版本都在大幅改进。mDNS 会修好,UI 会打磨,配对流程会简化。

今天的 2.2 星不代表明天的故事。

客户端来了,方向对了,剩下的交给时间。