--- summary: "CLI 小部件面板、相机、屏幕、位置、SMS 和设备数据的帮助程序" read_when: - "从节点捕获照片、剪辑或屏幕录制" - "从节点读取位置、SMS 或设备数据" - "在 Mac 上呈现托管小部件" title: "Node 设备命令" sidebarTitle: "设备命令" --- ## macOS 小部件面板 ```bash openclaw nodes canvas present --node openclaw nodes canvas hide --node openclaw nodes canvas navigate "/__openclaw__/canvas/documents//index.html" --node ``` 注意: - `canvas present` 接受现有的可选目标加上 `--x/--y/--width/--height` 放置参数。 - `canvas navigate` 接受托管小部件文档路径或应用程序本地画布 URL。 macOS 应用程序通过其当前范围的 Canvas 功能 URL 解析托管路径。 - 面向代理的路径是 [`show_widget`](/tools/show-widget) 和 `presentation.target: "node_panel"`;使用 CLI 帮助程序进行直接操作员控制。 - A2UI 在 [ 会话仪表板 ](/web/dashboards) 上呈现,而不是通过节点 Canvas 命令。 ## 照片 + 视频(节点摄像头) 照片(`jpg`): ```bash openclaw nodes camera list --node openclaw nodes camera snap --node # default: one node-selected photo openclaw nodes camera snap --node --facing front openclaw nodes camera snap --node --facing both # front then back (2 saved paths) openclaw nodes camera snap --node --device-id --max-width 1200 --quality 0.9 --delay-ms 2000 ``` 视频片段(`mp4`): ```bash openclaw nodes camera clip --node --duration 10s openclaw nodes camera clip --node --duration 3000 --no-audio ``` 注意: - 对于`camera.*`,该节点必须是**前台**(后台调用返回`NODE_BACKGROUND_UNAVAILABLE`)。 - 节点会限制片段时长,以保持 base64 负载可管理(关于各平台的具体限制,请参见 [摄像头捕获](/nodes/camera))。`nodes` 代理工具在转发调用前也会将请求的 `durationMs` 上限设为 300000(5 分钟);节点本身会应用更严格的限制。 - 在可能的情况下,Android 会提示请求 `CAMERA`/`RECORD_AUDIO` 权限;如果权限被拒绝,将失败并返回 `*_PERMISSION_REQUIRED`。 ## 屏幕录制(节点) 受支持的节点会暴露 `screen.record`(mp4)。示例: ```bash openclaw nodes screen record --node --duration 10s --fps 10 openclaw nodes screen record --node --duration 10s --fps 10 --no-audio ``` 注意: - `screen.record` 的可用性取决于节点平台。 - `nodes` 代理工具会将请求的 `durationMs` 上限限制为 300000(5 分钟);节点可能会施加更严格的限制,以约束返回的负载大小。 - `--no-audio` 会在受支持的平台上禁用麦克风采集。 - 当可用多个屏幕时,使用 `--screen ` 选择显示器(0 = 主屏幕)。 ## 位置(节点) 当在设置中启用位置时,节点会公开 `location.get`。 CLI 辅助命令: ```bash openclaw nodes location get --node openclaw nodes location get --node --accuracy precise --max-age 15000 --location-timeout 10000 ``` 注意: - 位置默认处于**关闭**状态。 - “始终”需要系统权限;后台获取尽力而为。 - 响应包括lat/lon、精度(米)和时间戳。 - 完整parameter/response形状和错误代码:[定位命令](/nodes/location-command)。 ## SMS(Android 节点) 当用户授予 **SMS** 权限并且设备支持电话时,Android 节点可以公开 `sms.send` 和 `sms.search`。默认情况下,这两个命令都是危险的:网关操作员还必须将它们添加到 `gateway.nodes.commands.allow` 才能调用(请参阅 [ 命令策略 ](/nodes/command-policy#command-policy))。 对于只读的 SMS 搜索,请在 `openclaw.json` 中显式启用: ```json5 { gateway: { nodes: { commands: { allow: ["sms.search"] }, }, }, } ``` 仅在节点也应能够发送消息时,单独添加 `sms.send`。Android 权限和 Gateway 命令授权是相互独立的;授予电话权限不会修改 Gateway 策略。 低级调用: ```bash openclaw nodes invoke --node --command sms.send --params '{"to":"+15555550123","message":"Hello from OpenClaw"}' ``` 注意: - `sms.search` 可以在授予 `READ_SMS` 之前声明,因此一次调用可能会返回权限诊断;读取消息仍然需要该 Android 权限。 - 仅支持 Wi-Fi、没有电话功能的设备不会公布 `sms.send`。 - `requires explicit gateway.nodes.commands.allow opt-in` 错误表示手机已经声明了该命令,但 Gateway 操作员尚未授权。 ## 设备和个人数据命令 iOS和Android节点默认通告多个只读数据命令(参见[命令策略](/nodes/command-policy#command-policy)表); Android还暴露了一个由自己的应用内设置控制的更大的家庭。仅在操作员启用与 `--share-installed-apps` 的已安装应用程序共享后,macOS 或无头 mac TypeScript 节点主机才会通告 `device.apps`。 可用族: - `device.status`, `device.info` — iOS, Android, Windows. - `device.permissions`、`device.health` — 仅 Android。 - `device.apps` — Android、macOS 和无头 mac 节点。Android 需要在设置中启用已安装应用共享,并默认返回启动器可见的应用。TypeScript 节点宿主默认关闭共享,并接受 `query`、`limit` 和 `includeSystem`;macOS 结果包含 `label`、`bundleId`、`path` 和 `system`。 - `notifications.list`、`notifications.actions` — 仅 Android。 - `photos.latest` — iOS, Android. - `contacts.search` — iOS、Android(默认只读);`contacts.add` 是危险操作,需要 `gateway.nodes.commands.allow`。 - `calendar.events` — iOS、Android(默认只读);`calendar.add` 是危险操作,需要 `gateway.nodes.commands.allow`。 - `reminders.list` — iOS、Android(默认只读);`reminders.add` 是危险操作,需要 `gateway.nodes.commands.allow`。 - `callLog.search` — 仅 Android。 - `motion.activity`、`motion.pedometer` — iOS、Android;由可用传感器能力控制。 `nodes` 代理工具的 `invoke` 操作接受 `invokeTimeoutMs` 进行节点调用。除非明确设置 `timeoutMs`,否则网关传输会收到该预算加上 30 秒的转发和响应时间。 示例调用: ```bash openclaw nodes invoke --node --command device.status --params '{}' openclaw nodes invoke --node --command device.apps --params '{"limit":10}' openclaw nodes invoke --node --command notifications.list --params '{}' openclaw nodes invoke --node --command photos.latest --params '{"limit":1}' ```