Captura de cámara (agente)
OpenClaw admite captura de cámara para flujos de trabajo del agente:- Nodo iOS (emparejado mediante Gateway): captura una foto (
jpg) o un clip de video corto (mp4, con audio opcional) mediantenode.invoke. - Nodo Android (emparejado mediante Gateway): captura una foto (
jpg) o un clip de video corto (mp4, con audio opcional) mediantenode.invoke. - App de macOS (nodo mediante Gateway): captura una foto (
jpg) o un clip de video corto (mp4, con audio opcional) mediantenode.invoke.
Nodo iOS
Configuración de usuario (activada de forma predeterminada)
- Pestaña de Settings de iOS → Camera → Allow Camera (
camera.enabled)- Predeterminado: activado (una clave ausente se trata como habilitada).
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED.
Comandos (mediante Gateway node.invoke)
-
camera.list- Carga útil de respuesta:
devices: matriz de{ id, name, position, deviceType }
- Carga útil 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)
- Carga útil 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)
- Carga útil de respuesta:
format: "mp4"base64: "<...>"durationMshasAudio
- Parámetros:
Requisito de primer plano
Al igual quecanvas.*, el nodo iOS solo permite comandos camera.* en primer plano. Las invocaciones en segundo plano devuelven NODE_BACKGROUND_UNAVAILABLE.
Helper de CLI (archivos temporales + MEDIA)
La forma más sencilla de obtener archivos adjuntos es mediante el helper de CLI, que escribe el archivo multimedia decodificado en un archivo temporal e imprimeMEDIA:<path>.
Ejemplos:
nodes camera snapusa de forma predeterminada ambas orientaciones para dar al agente ambas vistas.- Los archivos de salida son temporales (en el directorio temporal del sistema operativo) a menos que construyas tu propio wrapper.
Nodo Android
Configuración de usuario de Android (activada de forma predeterminada)
- Hoja de Settings de Android → Camera → Allow Camera (
camera.enabled)- Predeterminado: activado (una clave ausente se trata como habilitada).
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED.
Permisos
- Android requiere permisos en tiempo de ejecución:
CAMERAparacamera.snapycamera.clip.RECORD_AUDIOparacamera.clipcuandoincludeAudio=true.
camera.* fallan con un error
*_PERMISSION_REQUIRED.
Requisito de primer plano en Android
Al igual quecanvas.*, el nodo Android solo permite comandos camera.* en primer plano. Las invocaciones en segundo plano devuelven NODE_BACKGROUND_UNAVAILABLE.
Comandos de Android (mediante Gateway node.invoke)
camera.list- Carga útil de respuesta:
devices: matriz de{ id, name, position, deviceType }
- Carga útil de respuesta:
Protección de carga útil
Las fotos se recomprimen para mantener la carga útil base64 por debajo de 5 MB.App de macOS
Configuración de usuario (desactivada de forma predeterminada)
La app complementaria de macOS expone una casilla de verificación:- Settings → General → Allow Camera (
openclaw.cameraEnabled)- Predeterminado: desactivado
- Cuando está desactivado: las solicitudes de cámara devuelven “Camera disabled by user”.
Helper de CLI (node invoke)
Usa la CLI principal deopenclaw para invocar comandos de cámara en el nodo macOS.
Ejemplos:
openclaw nodes camera snapusa de forma predeterminadamaxWidth=1600, salvo que se anule.- En macOS,
camera.snapesperadelayMs(predeterminado 2000ms) después del calentamiento/estabilización de la exposición antes de capturar. - Las cargas útiles de fotos se recomprimen para mantener el base64 por debajo de 5 MB.
Seguridad + límites prácticos
- El acceso a cámara y micrófono activa los prompts habituales de permisos del sistema operativo (y requiere cadenas de uso en
Info.plist). - Los clips de video están limitados (actualmente
<= 60s) para evitar cargas útiles de nodo demasiado grandes (sobrecarga de base64 + límites de mensajes).
Video de pantalla de macOS (a nivel del sistema operativo)
Para video de pantalla (no de cámara), usa el complemento de macOS:- Requiere el permiso de macOS Screen Recording (TCC).