Nodes and media
Kameraaufnahme
OpenClaw unterstützt Kameraaufnahme für Agent-Workflows:
- iOS Node (über Gateway gekoppelt): Erfassen Sie ein Foto (
jpg) oder einen kurzen Videoclip (mp4, mit optionalem Audio) übernode.invoke. - Android Node (über Gateway gekoppelt): Erfassen Sie ein Foto (
jpg) oder einen kurzen Videoclip (mp4, mit optionalem Audio) übernode.invoke. - macOS-App (Node über Gateway): Erfassen Sie ein Foto (
jpg) oder einen kurzen Videoclip (mp4, mit optionalem Audio) übernode.invoke.
Jeder Kamerazugriff ist durch benutzergesteuerte Einstellungen geschützt.
iOS Node
Benutzereinstellung (standardmäßig ein)
- iOS-Einstellungen-Tab → Kamera → Kamera erlauben (
camera.enabled)- Standard: ein (ein fehlender Schlüssel wird als aktiviert behandelt).
- Wenn ausgeschaltet:
camera.*-Befehle gebenCAMERA_DISABLEDzurück.
Befehle (über Gateway node.invoke)
-
camera.list- Antwort-Payload:
devices: Array aus{ id, name, position, deviceType }
- Antwort-Payload:
-
camera.snap- Parameter:
facing:front|back(Standard:front)maxWidth: Zahl (optional; Standard1600auf der iOS Node)quality:0..1(optional; Standard0.9)format: derzeitjpgdelayMs: Zahl (optional; Standard0)deviceId: Zeichenfolge (optional; auscamera.list)
- Antwort-Payload:
format: "jpg"base64: "<...>"width,height
- Payload-Schutz: Fotos werden erneut komprimiert, damit der base64-Payload unter 5 MB bleibt.
- Parameter:
-
camera.clip- Parameter:
facing:front|back(Standard:front)durationMs: Zahl (Standard3000, auf maximal60000begrenzt)includeAudio: boolescher Wert (Standardtrue)format: derzeitmp4deviceId: Zeichenfolge (optional; auscamera.list)
- Antwort-Payload:
format: "mp4"base64: "<...>"durationMshasAudio
- Parameter:
Voraussetzung: Vordergrund
Wie canvas.* erlaubt die iOS Node camera.*-Befehle nur im Vordergrund. Aufrufe im Hintergrund geben NODE_BACKGROUND_UNAVAILABLE zurück.
CLI-Helfer
Der einfachste Weg, Mediendateien zu erhalten, ist der CLI-Helfer, der dekodierte Medien in eine temporäre Datei schreibt und den gespeicherten Pfad ausgibt.
Beispiele:
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-audioHinweise:
nodes camera snapverwendet standardmäßig beide Ausrichtungen, damit der Agent beide Ansichten erhält.- Ausgabedateien sind temporär (im temporären Verzeichnis des Betriebssystems), sofern Sie keinen eigenen Wrapper erstellen.
Android Node
Android-Benutzereinstellung (standardmäßig ein)
- Android-Einstellungsblatt → Kamera → Kamera erlauben (
camera.enabled)- Standard: ein (ein fehlender Schlüssel wird als aktiviert behandelt).
- Wenn ausgeschaltet:
camera.*-Befehle gebenCAMERA_DISABLEDzurück.
Berechtigungen
- Android erfordert Laufzeitberechtigungen:
CAMERAfür sowohlcamera.snapals auchcamera.clip.RECORD_AUDIOfürcamera.clip, wennincludeAudio=true.
Wenn Berechtigungen fehlen, fordert die App sie nach Möglichkeit an; wenn sie verweigert werden, schlagen camera.*-Anfragen mit einem
*_PERMISSION_REQUIRED-Fehler fehl.
Android-Voraussetzung: Vordergrund
Wie canvas.* erlaubt die Android Node camera.*-Befehle nur im Vordergrund. Aufrufe im Hintergrund geben NODE_BACKGROUND_UNAVAILABLE zurück.
Android-Befehle (über Gateway node.invoke)
camera.list- Antwort-Payload:
devices: Array aus{ id, name, position, deviceType }
- Antwort-Payload:
Payload-Schutz
Fotos werden erneut komprimiert, damit der base64-Payload unter 5 MB bleibt.
macOS-App
Benutzereinstellung (standardmäßig aus)
Die macOS-Begleit-App stellt ein Kontrollkästchen bereit:
- Einstellungen → Allgemein → Kamera erlauben (
openclaw.cameraEnabled)- Standard: aus
- Wenn ausgeschaltet: Kameraanfragen geben „Kamera vom Benutzer deaktiviert“ zurück.
CLI-Helfer (Node invoke)
Verwenden Sie die Haupt-CLI openclaw, um Kamerabefehle auf der macOS Node aufzurufen.
Beispiele:
openclaw nodes camera list --node <id> # list camera idsopenclaw nodes camera snap --node <id> # prints saved pathopenclaw 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 saved pathopenclaw nodes camera clip --node <id> --duration-ms 3000 # prints saved path (legacy flag)openclaw nodes camera clip --node <id> --device-id <id>openclaw nodes camera clip --node <id> --no-audioHinweise:
openclaw nodes camera snapverwendet standardmäßigmaxWidth=1600, sofern dies nicht überschrieben wird.- Unter macOS wartet
camera.snapnach dem Warm-up bzw. der BelichtungsstabilisierungdelayMs(Standard 2000 ms), bevor die Aufnahme erfolgt. - Foto-Payloads werden erneut komprimiert, damit base64 unter 5 MB bleibt.
Sicherheit + praktische Grenzen
- Kamera- und Mikrofonzugriff lösen die üblichen Berechtigungsaufforderungen des Betriebssystems aus (und erfordern Nutzungsbeschreibungen in Info.plist).
- Videoclips sind begrenzt (derzeit
<= 60s), um übergroße Node-Payloads zu vermeiden (base64-Overhead + Nachrichtenlimits).
macOS-Bildschirmvideo (auf Betriebssystemebene)
Für Bildschirm-Videos (nicht Kamera) verwenden Sie die macOS-Begleit-App:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints saved pathHinweise:
- Erfordert die macOS-Berechtigung Bildschirmaufnahme (TCC).