相机捕获(智能体)
适用范围
在以下情况使用此页面:
- 在 iOS 节点或 macOS 上添加或修改相机捕获
- 扩展智能体可访问的 MEDIA 临时文件工作流
Clawdbot 为智能体工作流支持相机捕获:
- iOS 节点(通过网关配对):通过
node.invoke捕获照片(jpg)或短视频片段(mp4,可选音频)。 - Android 节点(通过网关配对):通过
node.invoke捕获照片(jpg)或短视频片段(mp4,可选音频)。 - macOS 应用(通过网关注为节点):通过
node.invoke捕获照片(jpg)或短视频片段(mp4,可选音频)。
所有相机访问都在用户控制的设置后面。
iOS 节点
用户设置(默认开启)
- iOS 设置选项卡 → 相机 → 允许相机(
camera.enabled)- 默认:开启(缺少密钥被视为启用)。
- 关闭时:
camera.*命令返回CAMERA_DISABLED。
命令(通过网关 node.invoke)
camera.list- 响应负载:
devices:{ id, name, position, deviceType }数组
- 响应负载:
camera.snap- 参数:
facing:front|back(默认:front)maxWidth:数字(可选;iOS 节点上默认1600)quality:0..1(可选;默认0.9)format:目前为jpgdelayMs:数字(可选;默认0)deviceId:字符串(可选;来自camera.list)
- 响应负载:
format: "jpg"base64: "<...>"width、height
- 负载保护:照片被重新压缩以将 base64 负载保持在 5 MB 以下。
- 参数:
camera.clip- 参数:
facing:front|back(默认:front)durationMs:数字(默认3000,限制为最大60000)includeAudio:布尔值(默认true)format:目前为mp4deviceId:字符串(可选;来自camera.list)
- 响应负载:
format: "mp4"base64: "<...>"durationMshasAudio
- 参数:
前台要求
像 canvas.* 一样,iOS 节点仅允许在前台使用 camera.* 命令。后台调用返回 NODE_BACKGROUND_UNAVAILABLE。
CLI 助手(临时文件 + MEDIA)
获取附件的最简单方法是通过 CLI 助手,它将解码的媒体写入临时文件并打印 MEDIA:<path>。
示例:
clawdbot nodes camera snap --node <id> # 默认:前置 + 后置(2 个 MEDIA 行)
clawdbot nodes camera snap --node <id> --facing front
clawdbot nodes camera clip --node <id> --duration 3000
clawdbot nodes camera clip --node <id> --no-audio注意事项:
nodes camera snap默认为两个朝向,为智能体提供两个视图。- 输出文件是临时的(在 OS 临时目录中),除非你构建自己的包装器。
Android 节点
用户设置(默认开启)
- Android 设置表 → 相机 → 允许相机(
camera.enabled)- 默认:开启(缺少密钥被视为启用)。
- 关闭时:
camera.*命令返回CAMERA_DISABLED。
权限
- Android 需要运行时权限:
CAMERA用于camera.snap和camera.clip。RECORD_AUDIO用于camera.clip(当includeAudio=true时)。
如果缺少权限,应用会在可能时提示;如果被拒绝,camera.* 请求失败并返回 *_PERMISSION_REQUIRED 错误。
前台要求
像 canvas.* 一样,Android 节点仅允许在前台使用 camera.* 命令。后台调用返回 NODE_BACKGROUND_UNAVAILABLE。
负载保护
照片被重新压缩以将 base64 负载保持在 5 MB 以下。
macOS 应用
用户设置(默认关闭)
macOS 伴侣应用公开一个复选框:
- 设置 → 通用 → 允许相机(
clawdbot.cameraEnabled)- 默认:关闭
- 关闭时:相机请求返回"相机被用户禁用"。
CLI 助手(node invoke)
使用主 clawdbot CLI 在 macOS 节点上调用相机命令。
示例:
clawdbot nodes camera list --node <id> # 列出相机 ID
clawdbot nodes camera snap --node <id> # 打印 MEDIA:<path>
clawdbot nodes camera snap --node <id> --max-width 1280
clawdbot nodes camera snap --node <id> --delay-ms 2000
clawdbot nodes camera snap --node <id> --device-id <id>
clawdbot nodes camera clip --node <id> --duration 10s # 打印 MEDIA:<path>
clawdbot nodes camera clip --node <id> --duration-ms 3000 # 打印 MEDIA:<path>(旧标志)
clawdbot nodes camera clip --node <id> --device-id <id>
clawdbot nodes camera clip --node <id> --no-audio注意事项:
clawdbot nodes camera snap默认为maxWidth=1600,除非被覆盖。- 在 macOS 上,
camera.snap在捕获之前等待delayMs(默认 2000ms)以进行预热/曝光稳定。 - 照片负载被重新压缩以将 base64 保持在 5 MB 以下。
安全 + 实用限制
- 相机和麦克风访问触发通常的 OS 权限提示(并且需要在 Info.plist 中使用字符串)。
- 视频片段有上限(目前
<= 60s),以避免过大的节点负载(base64 开销 + 消息限制)。
macOS 屏幕视频(操作系统级别)
对于屏幕视频(不是相机),请使用 macOS 伴侣:
clawdbot nodes screen record --node <id> --duration 10s --fps 15 # 打印 MEDIA:<path>注意事项:
- 需要 macOS 屏幕录制权限(TCC)。