カメラキャプチャ(エージェント)¶
OpenClaw は、エージェントのワークフロー向けに カメラキャプチャ をサポートします。
- iOS ノード(Gateway(ゲートウェイ)経由でペアリング):
node.invokeにより 写真(jpg)または 短い動画クリップ(mp4、任意で音声付き)をキャプチャします。 - Android ノード(Gateway(ゲートウェイ)経由でペアリング):
node.invokeにより 写真(jpg)または 短い動画クリップ(mp4、任意で音声付き)をキャプチャします。 - macOS アプリ(Gateway(ゲートウェイ)経由のノード):
node.invokeにより 写真(jpg)または 短い動画クリップ(mp4、任意で音声付き)をキャプチャします。
すべてのカメラアクセスは ユーザーが制御する設定 によって制限されます。
iOS ノード¶
ユーザー設定(既定でオン)¶
- iOS 設定タブ → 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:number(任意;iOS ノードでは既定1600)quality:0..1(任意;既定0.9)format:現在はjpgdelayMs:number(任意;既定0)deviceId:string(任意;camera.listから)
- レスポンスペイロード:
format: "jpg"base64: "<...>"width、height
-
ペイロードガード:写真は、base64 ペイロードが 5 MB 未満になるよう再圧縮されます。
-
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 を返します。 バックグラウンドでの呼び出しは 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は、エージェントに両方の視点を提供するため、既定で 両方 の向きになります。- 出力ファイルは、独自のラッパーを構築しない限り、一時的(OS の一時ディレクトリ内)です。
Android ノード¶
Android ユーザー設定(既定でオン)¶
- Android 設定シート → Camera → Allow Camera(
camera.enabled) - 既定値:オン(キーが存在しない場合は有効として扱われます)。
- オフの場合:
camera.*コマンドはCAMERA_DISABLEDを返します。
権限¶
- Android では実行時権限が必要です。
CAMERA:camera.snapとcamera.clipの両方に必要です。RECORD_AUDIO:includeAudio=trueの場合にcamera.clipに必要です。
権限が不足している場合、可能であればアプリがプロンプトを表示します。拒否された場合、camera.* リクエストは *_PERMISSION_REQUIRED エラーで失敗します。
Android のフォアグラウンド要件¶
canvas.* と同様に、Android ノードは フォアグラウンド でのみ camera.* コマンドを許可します。バックグラウンドからの呼び出しは NODE_BACKGROUND_UNAVAILABLE を返します。 バックグラウンドでの呼び出しは NODE_BACKGROUND_UNAVAILABLE を返します。
ペイロードガード¶
写真は、base64 ペイロードが 5 MB 未満になるよう再圧縮されます。
macOS アプリ¶
ユーザー設定(既定でオフ)¶
macOS コンパニオンアプリはチェックボックスを提供します。
- Settings → General → Allow Camera(
openclaw.cameraEnabled) - 既定値:オフ
- オフの場合:カメラ要求は「Camera disabled by user」を返します。
CLI ヘルパー(ノード呼び出し)¶
メインの openclaw CLI を使用して、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 ms)待機してからキャプチャします。 - 写真のペイロードは、base64 が 5 MB 未満になるよう再圧縮されます。
安全性 + 実用上の制限¶
- カメラおよびマイクへのアクセスは、通常の OS 権限プロンプトをトリガーします(Info.plist に使用目的の文字列が必要です)。
- 動画クリップは、ノードのペイロードが過大にならないよう(base64 のオーバーヘッド + メッセージ制限)、上限(現在は
<= 60s)が設定されています。
macOS 画面動画(OS レベル)¶
カメラではなく 画面 動画については、macOS コンパニオンを使用してください。
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints MEDIA:<path>
注記:
- macOS の Screen Recording 権限(TCC)が必要です。