VPN07

2026年OpenClaw移动节点全解:nodes voicecall Android iOS接入命令完整问答

2026-02-20 阅读约14分钟 移动节点 语音功能

本文说明:OpenClaw 的 Nodes(节点)系统让你的手机(Android/iOS)成为 AI Agent 的延伸——Agent 可以通过节点远程操控手机执行命令、截图、调用摄像头。而 voicecall 插件则让 Agent 能主动拨打语音电话。本文深度解析 nodesvoicecall 等所有相关命令,覆盖配对、调用、排错所有场景。

一、OpenClaw Nodes 架构概览

📱
Node(节点)
手机/远程设备,提供本地能力
🔗
Gateway(网关)
统一管理,路由调度所有节点
🤖
Agent(代理)
通过网关远程调用节点能力

💡 Nodes 能做什么?

通过 Node 接入,Agent 可以在你的手机上:执行 Shell 命令(system.run)、拍照/截图(camera)、读写本地文件、触发系统级操作。iOS 和 Android 客户端 App 充当 Node Host,通过 WebSocket 连接到 Gateway。

iOS
Node App
Android
Node App
macOS
Companion
Headless
服务器Node

二、openclaw nodes 列表与状态命令详解

openclaw nodes [list|status|pending] 节点查看

Q:openclaw nodes list 显示什么信息?怎么看节点是否在线?

输出分为两张表:Pending(待审批)Paired(已配对)。Paired 表中每行显示节点ID、名称、IP地址、平台(iOS/Android/macOS)、Last Connect(最后连接时间)。Last Connect 显示"just now"或"2m ago"等表示在线;显示"1h ago"以上说明节点当前未连接。

Q:--connected 参数和 --last-connected 有什么区别?

openclaw nodes list --connected 只显示当前活跃连接的节点(实时在线);openclaw nodes list --last-connected 24h 显示最近24小时内连接过的节点(包括断开的)。前者用于确认节点是否可调用,后者用于查看历史活跃节点。

Q:openclaw nodes status 和 nodes list 有何不同?

nodes status 显示更精简的摘要视图,重点展示连接状态(Connected/Disconnected)和最近活跃时间,适合快速确认节点健康状态。nodes list 则包含更多字段(ID、名称、IP、系统版本等),适合管理多节点时的详细对比。

Q:nodes pending 命令有什么用?

显示等待审批的节点配对请求列表。当新设备(手机App)扫码/输入 Gateway URL 后,会出现在 Pending 列表,需要管理员手动运行 openclaw nodes approve <requestId> 审批后才能正式接入。这是安全机制,防止陌生设备接入你的 Gateway。

Q:怎么批准手机节点的配对申请?

步骤:1. 手机 App 中输入 Gateway 地址,点击"配对";2. 运行 openclaw nodes pending 看到请求ID;3. 运行 openclaw nodes approve <requestId> 批准。批准后节点进入 Paired 列表,Agent 就可以调用该节点的能力了。

三、openclaw nodes invoke 与 run 命令详解

openclaw nodes invoke / nodes run 节点调用

Q:nodes invoke 和 nodes run 的核心区别是什么?

nodes invoke 是底层 RPC 调用,需要指定 --command(节点能力名,如 system.run)和 --params(JSON 参数),直接调用节点暴露的功能。nodes run 则是高层封装,模拟 Agent 的 exec 行为(含权限检查和 Approvals 机制),用于运行 Shell 命令更安全方便。

Q:如何通过 CLI 在手机节点上执行 Shell 命令?

使用 openclaw nodes run --node <节点ID或名称> --raw "命令字符串"。例如查看手机存储:openclaw nodes run --node my-iphone --raw "df -h"。--raw 参数直接传入 Shell 字符串(macOS/Linux 用 /bin/sh -lc,Windows 用 cmd.exe /c)。

Q:--invoke-timeout 应该设置多大?超时怎么办?

默认超时是 15000ms(invoke)或 30000ms(run)。对于耗时任务(如大文件处理),可以设置 --invoke-timeout 120000(120秒)。如果网络不稳定导致频繁超时,建议配合 VPN07 的 1000Mbps 千兆网络——延迟从 200ms 降至 20ms 以内,超时率降低 90%+。

Q:--idempotency-key 是做什么的?什么场景需要它?

幂等键确保同一个命令在网络重试时不会被执行两次。当网络不稳定时,命令可能因超时被重发,带 idempotency-key 的请求如果之前已成功,Gateway 直接返回之前的结果而不重复执行。适合需要幂等性的操作(如转账、删除文件等危险操作)。

Q:如何指定节点?--node 参数支持哪些格式?

--node 支持四种格式:节点ID(完整)、节点名称(配对时设定的名字,如 my-iphone)、IP地址(192.168.1.100)、ID 前缀(ID 的前几位)。最方便的是用名称,建议配对时给每台设备取有意义的名字(如 work-phonehome-mac)。

Q:--needs-screen-recording 参数什么时候用?

当节点命令需要截图或录制屏幕时加上此参数,OpenClaw 会在执行前检查节点是否具有屏幕录制权限,如果没有则返回错误(而非静默失败)。iOS/macOS 上截图前必须在系统设置中授予屏幕录制权限给 OpenClaw App。

💡 实战:通过 Agent 远程操控手机节点

# 查看所有在线节点
openclaw nodes list --connected
# 在名为 my-iphone 的节点上执行命令
openclaw nodes run --node my-iphone --raw "ls ~/Documents"
# 直接调用节点能力(拍照)
openclaw nodes invoke --node my-iphone \
  --command camera.capture \
  --params '{"quality":"high"}'
# 带幂等键的调用
openclaw nodes invoke --node my-iphone \
  --command system.run \
  --params '{"cmd":"git pull"}' \
  --idempotency-key "pull-2026-02-20"

四、Android 与 iOS 节点接入实战 Q&A

Android Android 节点配置

Q:Android App 如何连接到我的 Gateway?

安装 OpenClaw Android App → 打开 App → 点击"连接 Gateway" → 输入你的 Gateway 地址(如 http://192.168.1.100:18789)→ 输入 Gateway Token(在 ~/.openclaw/openclaw.json 中的 gateway.token 字段)→ 点击配对。然后在 CLI 运行 openclaw nodes approve <requestId>

Q:Android 节点支持哪些能力(Capabilities)?

Android 节点支持:system.run(执行 Shell 命令)、camera.capture(拍照)、audio.record(录音)、location.get(获取位置)、media.gallery(访问相册)。不同 App 版本支持的能力可能有差异,使用 openclaw nodes invoke --node <id> --command capabilities.list 查看该节点完整能力列表。

iOS iOS 节点配置

Q:iOS 节点与 macOS Companion App 有什么区别?

macOS Companion App 功能更完整(包含完整文件系统访问、浏览器控制、屏幕录制),而 iOS 节点受 iOS 沙盒限制,主要提供摄像头、麦克风、位置等传感器能力和有限的文件操作。如果你的 Gateway 跑在 Mac 上,macOS Companion 就是最强大的"本机节点"。

Q:iOS 节点的 Canvas 功能是什么?

Canvas 是 iOS/macOS App 的可视化展示面板,Agent 可以通过 Canvas 在手机屏幕上显示富文本内容、图表、自定义 UI。例如 Agent 完成任务后,把结果图表直接推送显示在你手机的 OpenClaw App 界面上,无需打开聊天就能看到执行结果。

Q:iOS 节点断线重连后还需要重新 approve 吗?

不需要。一旦节点配对成功(approve),配对信息会持久化存储。手机重启、App 关闭、网络切换后,只要重新打开 App 并联网,节点会自动重新连接到 Gateway,无需再次审批。节点 ID 保持不变,Gateway 自动识别。

五、openclaw voicecall 命令详解

前提:voicecall 是插件命令,需要先安装 voice-call 插件(openclaw plugins install voice-call)并配置 Twilio 或其他语音服务 API Key 后才能使用。

openclaw voicecall [call|status|continue|end|expose] 语音通话

Q:voicecall call 如何让 Agent 给我打电话?

命令格式:openclaw voicecall call --to "+8613800138000" --message "你好,这是自动通知" --mode notify。--mode 支持:notify(单向通知,读完挂断)、interactive(双向对话,可以语音回复)。需要配置好 Twilio 号码,Agent 拨出的号码会显示为你配置的 Twilio 号。

Q:voicecall status 怎么查看通话状态?

运行 openclaw voicecall status --call-id <通话ID>。通话 ID 在 call 命令发起后返回,显示当前状态:queued(排队中)、ringing(响铃中)、in-progress(通话中)、completed(已完成)、failed(失败)。通话中使用 status 可实时监控对话进度。

Q:voicecall continue 的作用是什么?

在通话进行中,向对方继续说话:openclaw voicecall continue --call-id <id> --message "还有问题请说"。Agent 会通过 TTS(文字转语音)将新消息实时播报给对方。适合多步骤交互场景(如:先播报问题,等对方按键回应后,再 continue 播报下一步)。

Q:voicecall end 和通话自然结束有什么区别?

openclaw voicecall end --call-id <id> 是主动强制挂断(相当于程序侧挂机)。通话自然结束是指对方挂断或消息播报完毕后自动结束。主动 end 会立即终止通话,适合检测到异常(如对方不接听超过30秒)时的清理操作。

Q:voicecall expose 命令有什么用?Funnel 和 Serve 的区别?

voicecall 需要 Webhook URL 接收 Twilio 回调。expose --mode serve 使用 Tailscale Serve 暴露内网 Webhook(仅 Tailnet 内可访问,更安全);expose --mode funnel 使用 Tailscale Funnel 暴露到公网(Twilio 可以回调)。推荐优先用 Serve + Tailscale,仅在无 Tailscale 时使用 Funnel。

Q:voicecall unexpose 什么时候运行?

通话测试完成后,运行 openclaw voicecall unexpose 关闭 Webhook 暴露,停止 Tailscale Serve/Funnel 隧道。长期不用时务必 unexpose,减少不必要的端口暴露,降低安全风险。

📞 常见使用场景

  • • Agent 完成重要任务后语音通知你
  • • 服务器异常报警自动拨号
  • • 定时语音播报今日日程
  • • 交互式语音问卷收集

⚠️ 常见问题

  • • Webhook 无法接收:检查 expose 是否运行
  • • 通话延迟高:换 VPN07 节点降低延迟
  • • TTS 声音奇怪:更换 ElevenLabs 配置
  • • 通话立即失败:检查 Twilio 余额

六、节点常见问题排错 Q&A

⚠️ Q:nodes invoke 返回 "node not found" 怎么办?

排查步骤:1. 运行 openclaw nodes list 确认节点已配对;2. 检查节点是否在线(Last Connect 时间);3. 确认 --node 参数拼写正确(名称区分大小写);4. 如果节点离线,打开手机 App 重新连接。

⚠️ Q:invoke 超时但手机上命令已执行,怎么避免重复执行?

使用 --idempotency-key 参数(如当天日期+任务名),Gateway 会保存已成功的结果,重试时直接返回之前结果而不重复执行。这是节点调用的最佳实践。

⚠️ Q:手机 App 连接 Gateway 提示 "connection refused"?

可能原因:1. Gateway 未启动(运行 openclaw gateway status);2. 手机和电脑不在同一网络;3. 防火墙拦截了 18789 端口;4. 用了错误的 IP(记得用局域网 IP,不是 localhost)。如果手机在外网需要访问,配合 VPN07 建立安全隧道是最简单的解决方案。

💡 Q:如何让 Agent 自动选择最近的节点执行任务?

在配置文件中设置 tools.exec.node 为默认节点名称,这样 nodes run 不需要每次指定 --node。如果有多个节点,可以通过 Agent 的 agents.list[].tools.exec.node 为不同 Agent 分配不同节点,实现真正的多设备协同。

七、节点网络优化:为什么 1000Mbps 很重要

1000Mbps
VPN07带宽
70+
国家节点
¥9/月
超低月费
30天
退款保障

🚀 OpenClaw 节点调用为什么需要稳定网络?

每次 nodes invoke 都是一次实时 RPC 调用,需要:Gateway → VPN 通道 → 手机节点 全程低延迟。当节点在境外(如日本服务器)时,不稳定的国际连接会导致调用超时、WebSocket 断连。

VPN07 的 1000Mbps 千兆带宽 + 70+ 国家节点,让 Gateway 到各地节点的延迟稳定在 30ms 以内,voicecall 的语音 Webhook 响应更实时,实测调用成功率从 73% 提升至 99%+。

节点调用需要稳定的低延迟网络
VPN07 — 1000Mbps,十年稳定

OpenClaw nodes invoke 每次调用都需要 Gateway 与手机节点实时通信,voicecall 的语音 Webhook 更对延迟极为敏感。VPN07 提供 1000Mbps 千兆带宽和遍布 70+ 国家的节点,让你的 OpenClaw 节点在任何地方都能稳定响应,再也不用担心调用超时。十年运营经验,¥9/月,30天退款保障。

¥9/月
超低月费
1000Mbps
千兆带宽
70+国家
全球节点
30天
无理由退款
月费¥9 · 运营十年
免费试用 VPN07