Захват камеры (агент)¶
OpenClaw поддерживает захват камеры для агентских рабочих процессов:
- iOS-узел (сопряжён через Gateway (шлюз)): захват фото (
jpg) или короткого видеоклипа (mp4, с необязательным аудио) черезnode.invoke. - Android-узел (сопряжён через Gateway (шлюз)): захват фото (
jpg) или короткого видеоклипа (mp4, с необязательным аудио) черезnode.invoke. - Приложение для macOS (узел через Gateway (шлюз)): захват фото (
jpg) или короткого видеоклипа (mp4, с необязательным аудио) черезnode.invoke.
Весь доступ к камере ограничен настройками, контролируемыми пользователем.
iOS-узел¶
Пользовательская настройка (по умолчанию включено)¶
- Вкладка «Настройки» iOS → Камера → Разрешить камеру (
camera.enabled) - По умолчанию: включено (отсутствующий ключ считается включённым).
- При выключении: команды
camera.*возвращаютCAMERA_DISABLED.
Команды (через Gateway node.invoke)¶
camera.list-
Полезная нагрузка ответа:
devices: массив{ id, name, position, deviceType }
-
camera.snap - Параметры:
facing:front|back(по умолчанию:front)maxWidth: number (необязательно; по умолчанию1600на iOS-узле)quality:0..1(необязательно; по умолчанию0.9)format: в настоящее времяjpgdelayMs: number (необязательно; по умолчанию0)deviceId: string (необязательно; изcamera.list)
- Полезная нагрузка ответа:
format: "jpg"base64: "<...>"width,height
-
Ограничение полезной нагрузки: фотографии перекодируются, чтобы удерживать полезную нагрузку base64 ниже 5 МБ.
-
camera.clip - Параметры:
facing:front|back(по умолчанию:front)durationMs: number (по умолчанию3000, с ограничением до максимума60000)includeAudio: boolean (по умолчаниюtrue)format: в настоящее времяmp4deviceId: string (необязательно; изcamera.list)
- Полезная нагрузка ответа:
format: "mp4"base64: "<...>"durationMshasAudio
Требование переднего плана¶
Как и canvas.*, iOS-узел разрешает команды camera.* только в переднем плане. Вызовы в фоне возвращают NODE_BACKGROUND_UNAVAILABLE.
Помощник CLI (временные файлы + MEDIA)¶
Самый простой способ получить вложения — использовать помощник CLI, который записывает декодированное медиа во временный файл и выводит MEDIA:<path>.
Примеры:
openclaw nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)
openclaw nodes camera snap --node <id> --facing front
openclaw nodes camera clip --node <id> --duration 3000
openclaw nodes camera clip --node <id> --no-audio
Примечания:
nodes camera snapпо умолчанию использует обе камеры, чтобы предоставить агенту оба вида.- Выходные файлы являются временными (в каталоге временных файлов ОС), если вы не создадите собственную обёртку.
Android-узел¶
Пользовательская настройка Android (по умолчанию включено)¶
- Лист настроек Android → Камера → Разрешить камеру (
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.
Защита от нагрузки¶
Фотографии перекодируются, чтобы удерживать полезную нагрузку base64 ниже 5 МБ.
Приложение для macOS¶
Пользовательская настройка (по умолчанию выключено)¶
Сопутствующее приложение macOS предоставляет флажок:
- Настройки → Общие → Разрешить камеру (
openclaw.cameraEnabled) - По умолчанию: выключено
- При выключении: запросы к камере возвращают «Camera disabled by user».
Помощник CLI (вызов узла)¶
Используйте основной CLI openclaw для вызова команд камеры на узле macOS.
Примеры:
openclaw nodes camera list --node <id> # list camera ids
openclaw nodes camera snap --node <id> # prints MEDIA:<path>
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 # prints MEDIA:<path>
openclaw nodes camera clip --node <id> --duration-ms 3000 # prints MEDIA:<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 MEDIA:<path>
Примечания:
- Требуется разрешение macOS Screen Recording (TCC).