Captura de cámara
Captura de cámara (agente)
Sección titulada «Captura de cámara (agente)»OpenClaw admite la captura de cámara para los flujos de trabajo del agente:
- Nodo iOS (emparejado a través de Gateway): capturar una foto (
jpg) o un videoclip corto (mp4, con audio opcional) a través denode.invoke. - Nodo Android (emparejado a través de Gateway): capturar una foto (
jpg) o un videoclip 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 videoclip corto (mp4, con audio opcional) a través denode.invoke.
Todo el acceso a la cámara está controlado por configuraciones controladas por el usuario.
Nodo iOS
Sección titulada «Nodo iOS»Configuración de usuario (activada por defecto)
Sección titulada «Configuración de usuario (activada por defecto)»- Pestaña Configuración de iOS → Cámara → Permitir cámara (
camera.enabled)- Predeterminado: activado (la clave faltante se trata como habilitada).
- 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)
- Carga útil de respuesta:
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 auxiliar 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 snaptiene como valor predeterminado ambas orientaciones para darle al agente ambas vistas.- Los archivos de salida son temporales (en el directorio temporal del sistema operativo) a menos que cree su propio contenedor.
Nodo Android
Sección titulada «Nodo Android»Configuración de usuario de Android (activada por defecto)
Sección titulada «Configuración de usuario de Android (activada por defecto)»- 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 deniegan, 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:
devices: matriz de{ id, name, position, deviceType }
- Respuesta de carga útil:
Protección de carga útil
Sección titulada «Protección de carga útil»Las fotos se recomprimen para mantener la carga útil base64 por debajo de 5 MB.
aplicación macOS
Sección titulada «aplicación macOS»Configuración de usuario (desactivada por defecto)
Sección titulada «Configuración de usuario (desactivada 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 cámara devuelven “Cámara desactivada por el usuario”.
Ayudante de CLI (invocación de nodo)
Sección titulada «Ayudante de CLI (invocación de nodo)»Use la CLI principal openclaw para invocar comandos de cámara en el nodo 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 snapusamaxWidth=1600de forma predeterminada a menos que se anule.- En macOS,
camera.snapesperadelayMs(predeterminado 2000 ms) 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 indicaciones de permiso habituales del sistema operativo (y requiere cadenas de uso en Info.plist).
- Los clips de video tienen un límite (actualmente
<= 60s) para evitar cargas útiles de nodo excesivamente grandes (sobrecarga de base64 + límites de mensajes).
video de pantalla macOS (nivel de sistema operativo)
Sección titulada «video de pantalla 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).