Kamera-Aufnahme (Agent)
OpenClaw unterstützt Kamera-Aufnahmen für Agent-Workflows:
- iOS Node (gekoppelt über Gateway): Nimm ein Foto (
jpg) oder einen kurzen Videoclip (mp4, mit optionalem Audio) übernode.invokeauf. - Android Node (gekoppelt über Gateway): Nimm ein Foto (
jpg) oder einen kurzen Videoclip (mp4, mit optionalem Audio) übernode.invokeauf. - macOS App (Node über Gateway): Nimm ein Foto (
jpg) oder einen kurzen Videoclip (mp4, mit optionalem Audio) übernode.invokeauf.
Der gesamte Kamera-Zugriff ist durch benutzerkontrollierte Einstellungen geschützt.
iOS Node
Benutzereinstellung (standardmäßig an)
- iOS Settings Tab → Camera → Allow Camera (
camera.enabled)- Standard: an (fehlender Schlüssel wird als aktiviert behandelt).
- Wenn aus:
camera.*-Befehle gebenCAMERA_DISABLEDzurück.
Befehle (über Gateway node.invoke)
-
camera.list- Response Payload:
devices: Array von{ id, name, position, deviceType }
- Response Payload:
-
camera.snap- Parameter:
facing:front|back(Standard:front)maxWidth: Zahl (optional; Standard1600auf dem iOS Node)quality:0..1(optional; Standard0.9)format: aktuelljpgdelayMs: Zahl (optional; Standard0)deviceId: String (optional; voncamera.list)
- Response Payload:
format: "jpg"base64: "<...>"width,height
- Payload Guard: Fotos werden neu komprimiert, um den base64-Payload unter 5 MB zu halten.
- Parameter:
-
camera.clip- Parameter:
facing:front|back(Standard:front)durationMs: Zahl (Standard3000, maximal60000)includeAudio: Boolean (Standardtrue)format: aktuellmp4deviceId: String (optional; voncamera.list)
- Response Payload:
format: "mp4"base64: "<...>"durationMshasAudio
- Parameter:
Vordergrund-Anforderung
Wie bei canvas.* erlaubt der iOS Node camera.*-Befehle nur im Vordergrund. Aufrufe im Hintergrund geben NODE_BACKGROUND_UNAVAILABLE zurück.
CLI Helper (Temp-Dateien + MEDIA)
Der einfachste Weg, um Anhänge zu bekommen, ist über den CLI Helper, der dekodierte Medien in eine Temp-Datei schreibt und MEDIA:<path> ausgibt.
Beispiele:
openclaw nodes camera snap --node <id> # Standard: beide Seiten front + back (2 MEDIA-Zeilen)
openclaw nodes camera snap --node <id> --facing front
openclaw nodes camera clip --node <id> --duration 3000
openclaw nodes camera clip --node <id> --no-audio
Hinweise:
nodes camera snapverwendet standardmäßig beide Kameraseiten, um dem Agent beide Ansichten zu geben.- Ausgabedateien sind temporär (im OS-Temp-Verzeichnis), außer du baust deinen eigenen Wrapper.
Android Node
Benutzereinstellung (standardmäßig an)
- Android Settings Sheet → Camera → Allow Camera (
camera.enabled)- Standard: an (fehlender Schlüssel wird als aktiviert behandelt).
- Wenn aus:
camera.*-Befehle gebenCAMERA_DISABLEDzurück.
Berechtigungen
- Android benötigt Runtime-Berechtigungen:
CAMERAfür sowohlcamera.snapals auchcamera.clip.RECORD_AUDIOfürcamera.clip, wennincludeAudio=true.
Falls Berechtigungen fehlen, fordert die App diese nach Möglichkeit an; bei Ablehnung schlagen camera.*-Anfragen mit einem *_PERMISSION_REQUIRED-Fehler fehl.
Vordergrund-Anforderung
Wie bei canvas.* erlaubt der Android Node camera.*-Befehle nur im Vordergrund. Aufrufe im Hintergrund geben NODE_BACKGROUND_UNAVAILABLE zurück.
Payload Guard
Fotos werden neu komprimiert, um den base64-Payload unter 5 MB zu halten.
macOS App
Benutzereinstellung (standardmäßig aus)
Die macOS Companion App bietet eine Checkbox:
- Settings → General → Allow Camera (
openclaw.cameraEnabled)- Standard: aus
- Wenn aus: Kamera-Anfragen geben “Camera disabled by user” zurück.
CLI Helper (Node Invoke)
Nutze die openclaw CLI, um Kamera-Befehle auf dem macOS Node auszuführen.
Beispiele:
openclaw nodes camera list --node <id> # Kamera-IDs auflisten
openclaw nodes camera snap --node <id> # gibt MEDIA:<path> aus
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 # gibt MEDIA:<path> aus
openclaw nodes camera clip --node <id> --duration-ms 3000 # gibt MEDIA:<path> aus (Legacy-Flag)
openclaw nodes camera clip --node <id> --device-id <id>
openclaw nodes camera clip --node <id> --no-audio
Hinweise:
openclaw nodes camera snapverwendet standardmäßigmaxWidth=1600, außer du überschreibst es.- Auf macOS wartet
camera.snapnach dem Warm-up/BelichtungsausgleichdelayMs(Standard 2000ms), bevor aufgenommen wird. - Foto-Payloads werden neu komprimiert, um base64 unter 5 MB zu halten.
Sicherheit + praktische Limits
- Kamera- und Mikrofon-Zugriff lösen die üblichen OS-Berechtigungsabfragen aus (und benötigen Usage Strings in Info.plist).
- Videoclips sind begrenzt (aktuell
<= 60s), um zu große Node-Payloads zu vermeiden (base64-Overhead + Nachrichtenlimits).
macOS Screen Video (OS-Level)
Für Bildschirm-Video (nicht Kamera) nutze die macOS Companion:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # gibt MEDIA:<path> aus
Hinweise:
- Benötigt macOS Screen Recording Berechtigung (TCC).