Kameraaufnahme (Agent)
OpenClaw unterstützt Kameraaufnahmen für Agenten-Workflows:- iOS-Node (über Gateway gekoppelt): Aufnahme eines Fotos (
jpg) oder eines kurzen Videoclips (mp4, optional mit Audio) übernode.invoke. - Android-Node (über Gateway gekoppelt): Aufnahme eines Fotos (
jpg) oder eines kurzen Videoclips (mp4, optional mit Audio) übernode.invoke. - macOS-App (Node über Gateway): Aufnahme eines Fotos (
jpg) oder eines kurzen Videoclips (mp4, optional mit Audio) übernode.invoke.
iOS-Node
Benutzereinstellung (standardmäßig an)
- iOS-Einstellungs-Tab → Kamera → Kamera erlauben (
camera.enabled)- Standard: an (fehlender Schlüssel gilt als aktiviert).
- Wenn aus:
camera.*-Befehle gebenCAMERA_DISABLEDzurück.
Befehle (über Gateway node.invoke)
-
camera.list- Antwort-Payload:
devices: Array von{ id, name, position, deviceType }
- Antwort-Payload:
-
camera.snap- Parameter:
facing:front|back(Standard:front)maxWidth: number (optional; Standard1600auf dem iOS-Node)quality:0..1(optional; Standard0.9)format: derzeitjpgdelayMs: number (optional; Standard0)deviceId: string (optional; auscamera.list)
- Antwort-Payload:
format: "jpg"base64: "<...>"width,height
- Payload-Schutz: Fotos werden neu komprimiert, um das Base64-Payload unter 5 MB zu halten.
- Parameter:
-
camera.clip- Parameter:
facing:front|back(Standard:front)durationMs: number (Standard3000, begrenzt auf maximal60000)includeAudio: boolean (Standardtrue)format: derzeitmp4deviceId: string (optional; auscamera.list)
- Antwort-Payload:
format: "mp4"base64: "<...>"durationMshasAudio
- Parameter:
Vordergrundanforderung
Wiecanvas.* erlaubt der iOS-Node camera.*-Befehle nur im Vordergrund. Aufrufe im Hintergrund geben NODE_BACKGROUND_UNAVAILABLE zurück.
CLI-Helfer (Temporärdateien + MEDIA)
Der einfachste Weg, Anhänge zu erhalten, ist über den CLI-Helfer, der dekodierte Medien in eine Temporärdatei schreibt undMEDIA:<path> ausgibt.
Beispiele:
nodes camera snapist standardmäßig beide Ausrichtungen, um dem Agenten beide Ansichten zu geben.- Ausgabedateien sind temporär (im OS-Temp-Verzeichnis), sofern Sie keinen eigenen Wrapper erstellen.
Android-Node
Android-Benutzereinstellung (standardmäßig an)
- Android-Einstellungsblatt → Kamera → Kamera erlauben (
camera.enabled)- Standard: an (fehlender Schlüssel gilt als aktiviert).
- Wenn aus:
camera.*-Befehle gebenCAMERA_DISABLEDzurück.
Berechtigungen
- Android erfordert Laufzeitberechtigungen:
CAMERAfür sowohlcamera.snapals auchcamera.clip.RECORD_AUDIOfürcamera.clip, wennincludeAudio=true.
camera.*-Anfragen mit einem
*_PERMISSION_REQUIRED-Fehler fehl.
Android-Vordergrundanforderung
Wiecanvas.* erlaubt der Android-Node camera.*-Befehle nur im Vordergrund. Aufrufe im Hintergrund geben NODE_BACKGROUND_UNAVAILABLE zurück.
Payload-Schutz
Fotos werden neu komprimiert, um das Base64-Payload unter 5 MB zu halten.macOS-App
Benutzereinstellung (standardmäßig aus)
Die macOS-Companion-App stellt ein Kontrollkästchen bereit:- Einstellungen → Allgemein → Kamera erlauben (
openclaw.cameraEnabled)- Standard: aus
- Wenn aus: Kameraanfragen geben „Camera disabled by user“ zurück.
CLI-Helfer (Node-Aufruf)
Verwenden Sie die Haupt-CLIopenclaw, um Kamerabefehle auf dem macOS-Node aufzurufen.
Beispiele:
openclaw nodes camera snapist standardmäßigmaxWidth=1600, sofern nicht überschrieben.- Unter macOS wartet
camera.snapnach dem Warm-up/Abklingen der BelichtungdelayMs(Standard 2000 ms), bevor aufgenommen wird. - Foto-Payloads werden neu komprimiert, um Base64 unter 5 MB zu halten.
Sicherheit + praktische Grenzen
- Kamera- und Mikrofonzugriff lösen die üblichen Betriebssystem-Berechtigungsabfragen aus (und erfordern Usage-Strings in der Info.plist).
- Videoclips sind begrenzt (derzeit
<= 60s), um übergroße Node-Payloads zu vermeiden (Base64-Overhead + Nachrichtenlimits).
macOS-Bildschirmvideo (auf Betriebssystemebene)
Für Bildschirm-Video (nicht Kamera) verwenden Sie die macOS-Companion-App:- Erfordert die macOS-Berechtigung Screen Recording (TCC).