Nodes and media
Съемка камерой
OpenClaw поддерживает захват с камеры для рабочих процессов агентов:
- узел iOS (сопряженный через Gateway): захват фото (
jpg) или короткого видеоклипа (mp4, с необязательным аудио) черезnode.invoke. - узел Android (сопряженный через Gateway): захват фото (
jpg) или короткого видеоклипа (mp4, с необязательным аудио) черезnode.invoke. - приложение macOS (узел через Gateway): захват фото (
jpg) или короткого видеоклипа (mp4, с необязательным аудио) черезnode.invoke.
Весь доступ к камере ограничен настройками, управляемыми пользователем.
Узел iOS
Пользовательская настройка (по умолчанию включена)
- Вкладка iOS Settings → Camera → Allow Camera (
camera.enabled)- По умолчанию: включено (отсутствующий ключ считается включенным).
- Если выключено: команды
camera.*возвращаютCAMERA_DISABLED.
Команды (через Gateway node.invoke)
-
camera.list- Полезная нагрузка ответа:
devices: массив{ id, name, position, deviceType }
- Полезная нагрузка ответа:
-
camera.snap- Параметры:
facing:front|back(по умолчанию:front)maxWidth: число (необязательно; по умолчанию1600на узле iOS)quality:0..1(необязательно; по умолчанию0.9)format: сейчасjpgdelayMs: число (необязательно; по умолчанию0)deviceId: строка (необязательно; изcamera.list)
- Полезная нагрузка ответа:
format: "jpg"base64: "<...>"width,height
- Ограничение полезной нагрузки: фотографии повторно сжимаются, чтобы удерживать полезную нагрузку base64 меньше 5 МБ.
- Параметры:
-
camera.clip- Параметры:
facing:front|back(по умолчанию:front)durationMs: число (по умолчанию3000, ограничивается максимумом60000)includeAudio: boolean (по умолчаниюtrue)format: сейчасmp4deviceId: строка (необязательно; изcamera.list)
- Полезная нагрузка ответа:
format: "mp4"base64: "<...>"durationMshasAudio
- Параметры:
Требование переднего плана
Как и canvas.*, узел iOS разрешает команды camera.* только на переднем плане. Вызовы в фоне возвращают NODE_BACKGROUND_UNAVAILABLE.
Помощник CLI
Самый простой способ получить медиафайлы — использовать помощник CLI, который записывает декодированные медиа во временный файл и выводит сохраненный путь.
Примеры:
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-audioПримечания:
nodes camera snapпо умолчанию использует оба направления, чтобы дать агенту оба вида.- Выходные файлы временные (в каталоге временных файлов ОС), если вы не создадите собственную обертку.
Узел Android
Пользовательская настройка Android (по умолчанию включена)
- Лист Android Settings → Camera → Allow Camera (
camera.enabled)- По умолчанию: включено (отсутствующий ключ считается включенным).
- Если выключено: команды
camera.*возвращаютCAMERA_DISABLED.
Разрешения
- Android требует разрешения времени выполнения:
CAMERAдляcamera.snapиcamera.clip.RECORD_AUDIOдляcamera.clip, когдаincludeAudio=true.
Если разрешений нет, приложение по возможности покажет запрос; если доступ отклонен, запросы camera.* завершаются ошибкой
*_PERMISSION_REQUIRED.
Требование переднего плана Android
Как и canvas.*, узел Android разрешает команды camera.* только на переднем плане. Вызовы в фоне возвращают NODE_BACKGROUND_UNAVAILABLE.
Команды Android (через Gateway node.invoke)
camera.list- Полезная нагрузка ответа:
devices: массив{ id, name, position, deviceType }
- Полезная нагрузка ответа:
Ограничение полезной нагрузки
Фотографии повторно сжимаются, чтобы удерживать полезную нагрузку base64 меньше 5 МБ.
Приложение macOS
Пользовательская настройка (по умолчанию выключена)
Сопутствующее приложение macOS предоставляет флажок:
- Settings → General → Allow Camera (
openclaw.cameraEnabled)- По умолчанию: выключено
- Если выключено: запросы камеры возвращают "Камера отключена пользователем".
Помощник CLI (вызов узла)
Используйте основной CLI openclaw, чтобы вызывать команды камеры на узле macOS.
Примеры:
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-audioПримечания:
openclaw nodes camera snapпо умолчанию используетmaxWidth=1600, если значение не переопределено.- В macOS
camera.snapожидаетdelayMs(по умолчанию 2000 мс) после прогрева/стабилизации экспозиции перед захватом. - Полезные нагрузки фотографий повторно сжимаются, чтобы удерживать base64 меньше 5 МБ.
Безопасность + практические ограничения
- Доступ к камере и микрофону вызывает обычные запросы разрешений ОС (и требует строки использования в Info.plist).
- Видеоклипы ограничены (сейчас
<= 60s), чтобы избежать слишком больших полезных нагрузок узла (накладные расходы base64 + ограничения сообщений).
Видео экрана macOS (на уровне ОС)
Для видео экрана (не камеры) используйте сопутствующее приложение macOS:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints saved pathПримечания:
- Требуется разрешение macOS Screen Recording (TCC).