Captura de cámara
OpenClaw admite la captura de cámara para los flujos de trabajo de los agentes:
- Nodo iOS (emparejado a través de Gateway): capturar una foto (
jpg) o un clip de video corto (mp4, con audio opcional) a través denode.invoke. - Nodo Android (emparejado a través de Gateway): capturar una foto (
jpg) o un clip de video corto (mp4, con audio opcional) a través denode.invoke. - Aplicación macOS (nodo a través de Gateway): capturar una foto (
jpg) o un clip de video corto (mp4, con audio opcional) a través denode.invoke.
Todo el acceso a la cámara está controlado por ajustes controlados por el usuario.
Nodo iOS
Sección titulada «Nodo iOS»Ajuste de usuario (activado por defecto)
Sección titulada «Ajuste de usuario (activado por defecto)»- Pestaña Ajustes de iOS → Cámara → Permitir cámara (
camera.enabled)- Predeterminado: activado (la falta de clave se trata como habilitado).
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED.
Comandos (vía Gateway node.invoke)
Sección titulada «Comandos (vía Gateway node.invoke)»-
camera.list- Payload de respuesta:
devices: matriz de{ id, name, position, deviceType }
- Payload de respuesta:
-
camera.snap- Parámetros:
facing:front|back(predeterminado:front)maxWidth: número (opcional; predeterminado1600en el nodo iOS)quality:0..1(opcional; predeterminado0.9)format: actualmentejpgdelayMs: número (opcional; predeterminado0)deviceId: cadena (opcional; decamera.list)
- Payload de respuesta:
format: "jpg"base64: "<...>"width,height
- Protección de carga útil: las fotos se recomprimen para mantener la carga útil base64 por debajo de 5 MB.
- Parámetros:
-
camera.clip- Parámetros:
facing:front|back(predeterminado:front)durationMs: número (predeterminado3000, limitado a un máximo de60000)includeAudio: booleano (predeterminadotrue)format: actualmentemp4deviceId: cadena (opcional; decamera.list)
- Respuesta de carga útil:
format: "mp4"base64: "<...>"durationMshasAudio
- Parámetros:
Requisito de primer plano
Sección titulada «Requisito de primer plano»Al igual que canvas.*, el nodo iOS solo permite comandos camera.* en primer plano. Las invocaciones en segundo plano devuelven NODE_BACKGROUND_UNAVAILABLE.
Auxiliar de CLI (archivos temporales + MEDIA)
Sección titulada «Auxiliar de CLI (archivos temporales + MEDIA)»La forma más fácil de obtener archivos adjuntos es a través del asistente de CLI, que escribe los medios decodificados en un archivo temporal e imprime MEDIA:<path>.
Ejemplos:
openclaw nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)openclaw nodes camera snap --node <id> --facing frontopenclaw nodes camera clip --node <id> --duration 3000openclaw nodes camera clip --node <id> --no-audioNotas:
nodes camera snapse predetermina en ambas orientaciones para darle al agente ambas vistas.- Los archivos de salida son temporales (en el directorio temporal del SO) a menos que cree su propio contenedor.
Nodo Android
Sección titulada «Nodo Android»Configuración de usuario de Android (activado de forma predeterminada)
Sección titulada «Configuración de usuario de Android (activado de forma predeterminada)»- Hoja de configuración de Android → Cámara → Permitir cámara (
camera.enabled)- Predeterminado: activado (la clave faltante se trata como habilitada).
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED.
Permisos
Sección titulada «Permisos»- Android requiere permisos en tiempo de ejecución:
CAMERAtanto paracamera.snapcomo paracamera.clip.RECORD_AUDIOparacamera.clipcuandoincludeAudio=true.
Si faltan permisos, la aplicación solicitará cuando sea posible; si se deniega, las solicitudes camera.* fallan con un
error *_PERMISSION_REQUIRED.
Requisito de primer plano de Android
Sección titulada «Requisito de primer plano de Android»Al igual que canvas.*, el nodo Android solo permite comandos camera.* en primer plano. Las invocaciones en segundo plano devuelven NODE_BACKGROUND_UNAVAILABLE.
Comandos de Android (vía Gateway node.invoke)
Sección titulada «Comandos de Android (vía Gateway node.invoke)»camera.list- Respuesta de carga útil (payload):
devices: matriz de{ id, name, position, deviceType }
- Respuesta de carga útil (payload):
Protección de carga útil (Payload guard)
Sección titulada «Protección de carga útil (Payload guard)»Las fotos se recomprimen para mantener la carga útil en base64 por debajo de 5 MB.
Aplicación macOS
Sección titulada «Aplicación macOS»Configuración de usuario (desactivado por defecto)
Sección titulada «Configuración de usuario (desactivado por defecto)»La aplicación complementaria de macOS expone una casilla de verificación:
- Configuración → General → Permitir cámara (
openclaw.cameraEnabled)- Predeterminado: desactivado
- Cuando está desactivado: las solicitudes de la cámara devuelven “Cámara desactivada por el usuario”.
Auxiliar de CLI (invocación de nodo)
Sección titulada «Auxiliar de CLI (invocación de nodo)»Utilice la CLI principal openclaw para invocar comandos de cámara en el nodo de macOS.
Ejemplos:
openclaw nodes camera list --node <id> # list camera idsopenclaw nodes camera snap --node <id> # prints MEDIA:<path>openclaw nodes camera snap --node <id> --max-width 1280openclaw nodes camera snap --node <id> --delay-ms 2000openclaw nodes camera snap --node <id> --device-id <id>openclaw nodes camera clip --node <id> --duration 10s # prints MEDIA:<path>openclaw nodes camera clip --node <id> --duration-ms 3000 # prints MEDIA:<path> (legacy flag)openclaw nodes camera clip --node <id> --device-id <id>openclaw nodes camera clip --node <id> --no-audioNotas:
openclaw nodes camera snappor defecto esmaxWidth=1600a menos que se anule.- En macOS,
camera.snapesperadelayMs(predeterminado 2000ms) después del calentamiento/ajuste de exposición antes de capturar. - Las cargas útiles de las fotos se recomprimen para mantener base64 por debajo de 5 MB.
Límites de seguridad y prácticos
Sección titulada «Límites de seguridad y prácticos»- El acceso a la cámara y al micrófono activa las solicitudes de permisos habituales del sistema operativo (y requiere cadenas de uso en Info.plist).
- Los videoclips están limitados (actualmente
<= 60s) para evitar cargas útiles de nodos demasiado grandes (sobrecarga de base64 + límites de mensajes).
Video de pantalla de macOS (nivel de sistema operativo)
Sección titulada «Video de pantalla de macOS (nivel de sistema operativo)»Para video de pantalla (no de cámara), use el complemento de macOS:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints MEDIA:<path>Notas:
- Requiere el permiso de Grabación de pantalla de macOS (TCC).