Захват с камеры
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.
Команды (через node.invoke Gateway)
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 (временные файлы + MEDIA)
Самый простой способ получить вложения — через помощник CLI, который записывает декодированные медиа во временный файл и выводит MEDIA:<путь>. Примеры:
openclaw nodes camera snap --node <id> # по умолчанию: и фронтальная, и задняя (2 строки MEDIA)
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.
Команды Android (через node.invoke Gateway)
camera.list- Полезная нагрузка ответа:
devices: массив{ id, name, position, deviceType }
- Полезная нагрузка ответа:
Ограничение полезной нагрузки
Фотографии пережимаются, чтобы размер полезной нагрузки base64 не превышал 5 МБ.
Приложение macOS
Пользовательская настройка (по умолчанию выключена)
Приложение-компаньон macOS предоставляет флажок:
- Настройки → Основные → Разрешить камеру (
openclaw.cameraEnabled)- По умолчанию: выключено
- Если выключено: запросы к камере возвращают "Камера отключена пользователем".
Помощник CLI (node invoke)
Используйте основной CLI openclaw для вызова команд камеры на узле macOS. Примеры:
openclaw nodes camera list --node <id> # список идентификаторов камер
openclaw nodes camera snap --node <id> # выводит MEDIA:<путь>
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 # выводит MEDIA:<путь>
openclaw nodes camera clip --node <id> --duration-ms 3000 # выводит MEDIA:<путь> (устаревший флаг)
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).
- Видеоклипы ограничены (в настоящее время
<= 60с), чтобы избежать перегрузки полезной нагрузки узла (накладные расходы base64 + ограничения сообщений).
Запись экрана macOS (на уровне ОС)
Для записи экрана (не камеры) используйте приложение-компаньон macOS:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # выводит MEDIA:<путь>
Примечания:
- Требуется разрешение Запись экрана macOS (TCC).