Capture par caméra
OpenClaw prend en charge la capture par caméra pour les flux de travail des agents :
- Nœud iOS (appairé via Gateway) : capture une photo (
jpg) ou un court clip vidéo (mp4, avec audio optionnel) vianode.invoke. - Nœud Android (appairé via Gateway) : capture une photo (
jpg) ou un court clip vidéo (mp4, avec audio optionnel) vianode.invoke. - Application macOS (nœud via Gateway) : capture une photo (
jpg) ou un court clip vidéo (mp4, avec audio optionnel) vianode.invoke.
Tous les accès à la caméra sont contrôlés par des paramètres gérés par l'utilisateur.
Nœud iOS
Paramètre utilisateur (activé par défaut)
- Onglet Paramètres iOS → Caméra → Autoriser la caméra (
camera.enabled)- Par défaut : activé (l'absence de clé est traitée comme activée).
- Lorsque désactivé : les commandes
camera.*renvoientCAMERA_DISABLED.
Commandes (via node.invoke de Gateway)
camera.list- Charge utile de réponse :
devices: tableau de{ id, name, position, deviceType }
- Charge utile de réponse :
camera.snap- Paramètres :
facing:front|back(par défaut :front)maxWidth: nombre (optionnel ; par défaut1600sur le nœud iOS)quality:0..1(optionnel ; par défaut0.9)format: actuellementjpgdelayMs: nombre (optionnel ; par défaut0)deviceId: chaîne (optionnel ; provenant decamera.list)
- Charge utile de réponse :
format: "jpg"base64: "<...>"width,height
- Garde-fou de charge utile : les photos sont recompressées pour maintenir la charge utile base64 sous 5 Mo.
- Paramètres :
camera.clip- Paramètres :
facing:front|back(par défaut :front)durationMs: nombre (par défaut3000, limité à un maximum de60000)includeAudio: booléen (par défauttrue)format: actuellementmp4deviceId: chaîne (optionnel ; provenant decamera.list)
- Charge utile de réponse :
format: "mp4"base64: "<...>"durationMshasAudio
- Paramètres :
Exigence de premier plan
Comme canvas.*, le nœud iOS n'autorise les commandes camera.* qu'en premier plan. Les invocations en arrière-plan renvoient NODE_BACKGROUND_UNAVAILABLE.
Assistant CLI (fichiers temporaires + MEDIA)
Le moyen le plus simple d'obtenir des pièces jointes est via l'assistant CLI, qui écrit les médias décodés dans un fichier temporaire et affiche MEDIA:<chemin>. Exemples :
openclaw nodes camera snap --node <id> # par défaut : avant + arrière (2 lignes MEDIA)
openclaw nodes camera snap --node <id> --facing front
openclaw nodes camera clip --node <id> --duration 3000
openclaw nodes camera clip --node <id> --no-audio
Notes :
nodes camera snaputilise par défaut les deux orientations pour donner à l'agent les deux vues.- Les fichiers de sortie sont temporaires (dans le répertoire temporaire du système d'exploitation) sauf si vous créez votre propre wrapper.
Nœud Android
Paramètre utilisateur Android (activé par défaut)
- Fenêtre Paramètres Android → Caméra → Autoriser la caméra (
camera.enabled)- Par défaut : activé (l'absence de clé est traitée comme activée).
- Lorsque désactivé : les commandes
camera.*renvoientCAMERA_DISABLED.
Permissions
- Android nécessite des permissions d'exécution :
CAMERApourcamera.snapetcamera.clip.RECORD_AUDIOpourcamera.cliplorsqueincludeAudio=true.
Si les permissions sont manquantes, l'application demandera quand cela est possible ; si elles sont refusées, les requêtes camera.* échouent avec une erreur *_PERMISSION_REQUIRED.
Exigence de premier plan Android
Comme canvas.*, le nœud Android n'autorise les commandes camera.* qu'en premier plan. Les invocations en arrière-plan renvoient NODE_BACKGROUND_UNAVAILABLE.
Commandes Android (via node.invoke de Gateway)
camera.list- Charge utile de réponse :
devices: tableau de{ id, name, position, deviceType }
- Charge utile de réponse :
Garde-fou de charge utile
Les photos sont recompressées pour maintenir la charge utile base64 sous 5 Mo.
Application macOS
Paramètre utilisateur (désactivé par défaut)
L'application compagnon macOS expose une case à cocher :
- Paramètres → Général → Autoriser la caméra (
openclaw.cameraEnabled)- Par défaut : désactivé
- Lorsque désactivé : les requêtes caméra renvoient "Caméra désactivée par l'utilisateur".
Assistant CLI (node invoke)
Utilisez le CLI principal openclaw pour invoquer les commandes caméra sur le nœud macOS. Exemples :
openclaw nodes camera list --node <id> # lister les identifiants de caméra
openclaw nodes camera snap --node <id> # affiche MEDIA:<chemin>
openclaw nodes camera snap --node <id> --max-width 1280
openclaw nodes camera snap --node <id> --delay-ms 2000
openclaw nodes camera snap --node <id> --device-id <id>
openclaw nodes camera clip --node <id> --duration 10s # affiche MEDIA:<chemin>
openclaw nodes camera clip --node <id> --duration-ms 3000 # affiche MEDIA:<chemin> (option héritée)
openclaw nodes camera clip --node <id> --device-id <id>
openclaw nodes camera clip --node <id> --no-audio
Notes :
openclaw nodes camera snaputilise par défautmaxWidth=1600sauf indication contraire.- Sur macOS,
camera.snapattenddelayMs(par défaut 2000ms) après la stabilisation de la mise en route/de l'exposition avant de capturer. - Les charges utiles des photos sont recompressées pour maintenir la base64 sous 5 Mo.
Sécurité + limites pratiques
- L'accès à la caméra et au microphone déclenche les invites de permission habituelles du système d'exploitation (et nécessite des chaînes d'utilisation dans Info.plist).
- Les clips vidéo sont limités (actuellement
<= 60s) pour éviter des charges utiles de nœud trop volumineuses (surcharge base64 + limites de messages).
Vidéo d'écran macOS (niveau système)
Pour la vidéo d'écran (pas de la caméra), utilisez l'application compagnon macOS :
openclaw nodes screen record --node <id> --duration 10s --fps 15 # affiche MEDIA:<chemin>
Notes :
- Nécessite la permission Enregistrement d'écran macOS (TCC).