Captura de cámara (agente)
OpenClaw admite captura de cámara para flujos de trabajo del agente:- Nodo iOS (emparejado vía Gateway): capturar una foto (
jpg) o un clip de video corto (mp4, con audio opcional) mediantenode.invoke. - Nodo Android (emparejado vía Gateway): capturar una foto (
jpg) o un clip de video corto (mp4, con audio opcional) mediantenode.invoke. - App macOS (nodo vía Gateway): capturar una foto (
jpg) o un clip de video corto (mp4, con audio opcional) mediantenode.invoke.
Nodo iOS
Configuración del usuario (activada por defecto)
- Pestaña de Ajustes de iOS → Cámara → Permitir cámara (
camera.enabled)- Valor predeterminado: activado (una clave ausente se trata como habilitada).
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED.
Comandos (vía Gateway node.invoke)
-
camera.list- Carga útil de la respuesta:
devices: arreglo de{ id, name, position, deviceType }
- Carga útil de la 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 la respuesta:
format: "jpg"base64: "<...>"width,height
- Protección de carga útil: las fotos se recomprimen para mantener la carga 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 la 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.
Ayudante de la CLI (archivos temporales + MEDIA)
La forma más sencilla de obtener adjuntos es mediante el ayudante de la CLI, que escribe los medios decodificados en un archivo temporal e imprimeMEDIA:<path>.
Ejemplos:
nodes camera snapse establece de forma predeterminada en ambas orientaciones para dar al agente ambas vistas.- Los archivos de salida son temporales (en el directorio temporal del sistema operativo) a menos que construya su propio envoltorio.
Nodo Android
Configuración del usuario en Android (activada por defecto)
- Hoja de Ajustes de Android → Cámara → Permitir cámara (
camera.enabled)- Valor 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:
CAMERAtanto paracamera.snapcomo paracamera.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.
Protección de carga útil
Las fotos se recomprimen para mantener la carga base64 por debajo de 5 MB.App macOS
Configuración del usuario (desactivada por defecto)
La app complementaria de macOS expone una casilla:- Ajustes → General → Permitir cámara (
openclaw.cameraEnabled)- Valor predeterminado: desactivado
- Cuando está desactivado: las solicitudes de cámara devuelven “Cámara deshabilitada por el usuario”.
Ayudante de la CLI (invocación del nodo)
Use la CLI principalopenclaw para invocar comandos de cámara en el nodo macOS.
Ejemplos:
openclaw nodes camera snapse establece de forma predeterminada enmaxWidth=1600salvo que se anule.- En macOS,
camera.snapesperadelayMs(predeterminado 2000 ms) después de la preparación/estabilización de la exposición antes de capturar. - Las cargas de fotos se recomprimen para mantener base64 por debajo de 5 MB.
Seguridad + límites prácticos
- El acceso a la cámara y al micrófono activa los avisos habituales de permisos del SO (y requiere cadenas de uso en Info.plist).
- Los clips de video están limitados (actualmente
<= 60s) para evitar cargas de nodo sobredimensionadas (sobrecarga base64 + límites de mensajes).
Video de pantalla en macOS (nivel del SO)
Para video de pantalla (no de cámara), use el complemento de macOS:- Requiere el permiso de macOS Grabación de pantalla (TCC).