相机采集 (agent)
OpenClaw 支持 相机采集 用于 agent 工作流:- iOS node(通过 Gateway 配对):通过
node.invoke拍摄照片(jpg)或短视频(mp4,可选音频)。 - Android node(通过 Gateway 配对):通过
node.invoke拍摄照片(jpg)或短视频(mp4,可选音频)。 - macOS app(作为 Gateway 节点):通过
node.invoke拍摄照片(jpg)或短视频(mp4,可选音频)。
iOS node
用户设置(默认开启)
- iOS Settings 页 → Camera → Allow Camera(
camera.enabled)- 默认:开启(缺失键视为开启)。
- 关闭时:
camera.*命令返回CAMERA_DISABLED。
命令(通过 Gateway node.invoke)
-
camera.list- 响应 payload:
devices:数组{ id, name, position, deviceType }
- 响应 payload:
-
camera.snap- 参数:
facing:front|back(默认:front)maxWidth: number(可选;iOS node 默认1600)quality:0..1(可选;默认0.9)format: 当前为jpgdelayMs: number(可选;默认0)deviceId: string(可选;来自camera.list)
- 响应 payload:
format: "jpg"base64: "<...>"width,height
- Payload 限制:照片会重新压缩以确保 base64 payload < 5 MB。
- 参数:
-
camera.clip- 参数:
facing:front|back(默认:front)durationMs: number(默认3000,最大60000)includeAudio: boolean(默认true)format: 当前为mp4deviceId: string(可选;来自camera.list)
- 响应 payload:
format: "mp4"base64: "<...>"durationMshasAudio
- 参数:
前台要求
与canvas.* 类似,iOS node 仅允许在前台执行 camera.*。后台调用会返回 NODE_BACKGROUND_UNAVAILABLE。
CLI helper(临时文件 + MEDIA)
最简方式是使用 CLI helper,它会把解码后的媒体写入临时文件,并输出MEDIA:<path>。
示例:
nodes camera snap默认前后都拍,便于 agent 获得双视角。- 输出文件是临时文件(系统临时目录),除非你自己封装。
Android node
用户设置(默认开启)
- Android Settings 页 → Camera → Allow Camera(
camera.enabled)- 默认:开启(缺失键视为开启)。
- 关闭时:
camera.*命令返回CAMERA_DISABLED。
权限
- Android 需要运行时权限:
CAMERA用于camera.snap与camera.clip。RECORD_AUDIO用于camera.clip且includeAudio=true。
camera.* 请求会以 *_PERMISSION_REQUIRED 失败。
前台要求
与canvas.* 类似,Android node 仅允许在前台执行 camera.*。后台调用会返回 NODE_BACKGROUND_UNAVAILABLE。
Payload 限制
照片会重新压缩以确保 base64 payload < 5 MB。macOS app
用户设置(默认关闭)
macOS 伴侣应用提供一个复选框:- Settings → General → Allow Camera(
openclaw.cameraEnabled)- 默认:关闭
- 关闭时:相机请求返回“Camera disabled by user”。
CLI helper(node invoke)
使用主openclaw CLI 调用 macOS node 上的相机命令。
示例:
openclaw nodes camera snap默认maxWidth=1600,除非显式覆盖。- 在 macOS 上,
camera.snap在预热/曝光稳定后等待delayMs(默认 2000ms)再拍摄。 - 照片 payload 会重新压缩以保持 base64 < 5 MB。
安全性 + 实用限制
- 相机与麦克风访问会触发系统权限提示(并要求在 Info.plist 中声明)。
- 视频片段有上限(当前
<= 60s),避免 node payload 过大(base64 开销 + 消息限制)。
macOS 屏幕视频(系统级)
如果是屏幕视频(非相机),使用 macOS 伴侣:- 需要 macOS Screen Recording 权限(TCC)。