Camera capture(agent)
OpenClawは、エージェントworkflow向けにcamera captureをサポートしています。- iOS node(Gateway経由でpair):
node.invokeを通じて写真(jpg)または短い動画クリップ(mp4、任意でaudio付き)を撮影できます。 - Android node(Gateway経由でpair):
node.invokeを通じて写真(jpg)または短い動画クリップ(mp4、任意でaudio付き)を撮影できます。 - macOS app(Gateway経由のnode):
node.invokeを通じて写真(jpg)または短い動画クリップ(mp4、任意でaudio付き)を撮影できます。
iOS node
ユーザー設定(デフォルトでオン)
- iOS Settingsタブ → Camera → Allow Camera (
camera.enabled)- デフォルト: on(キーが存在しない場合は有効として扱われます)。
- オフ時:
camera.*コマンドはCAMERA_DISABLEDを返します。
コマンド(Gateway node.invoke 経由)
-
camera.list- レスポンスpayload:
devices:{ id, name, position, deviceType }の配列
- レスポンスpayload:
-
camera.snap- Params:
facing:front|back(デフォルト:front)maxWidth: number(任意。iOS nodeでのデフォルトは1600)quality:0..1(任意。デフォルトは0.9)format: 現在はjpgdelayMs: number(任意。デフォルトは0)deviceId: string(任意。camera.listから取得)
- レスポンスpayload:
format: "jpg"base64: "<...>"width,height
- Payload guard: 写真は、base64 payloadが5 MB未満に収まるよう再圧縮されます。
- Params:
-
camera.clip- Params:
facing:front|back(デフォルト:front)durationMs: number(デフォルト3000、最大60000にclamp)includeAudio: boolean(デフォルトtrue)format: 現在はmp4deviceId: string(任意。camera.listから取得)
- レスポンスpayload:
format: "mp4"base64: "<...>"durationMshasAudio
- Params:
フォアグラウンド要件
canvas.* と同様に、iOS nodeはforegroundでのみ camera.* コマンドを許可します。backgroundからの呼び出しは NODE_BACKGROUND_UNAVAILABLE を返します。
CLI helper(一時ファイル + MEDIA)
attachmentを取得する最も簡単な方法はCLI helperを使うことです。これはデコードしたmediaを一時ファイルへ書き出し、MEDIA:<path> を出力します。
例:
nodes camera snapはデフォルトで両方の向きを対象にし、エージェントへ両方の視点を渡します。- 独自のwrapperを作らない限り、出力ファイルは一時ファイルです(OSの一時ディレクトリ内)。
Android node
Androidのユーザー設定(デフォルトでオン)
- Android Settingsシート → Camera → Allow Camera (
camera.enabled)- デフォルト: on(キーが存在しない場合は有効として扱われます)。
- オフ時:
camera.*コマンドはCAMERA_DISABLEDを返します。
権限
- Androidではランタイム権限が必要です。
camera.snapとcamera.clipの両方にCAMERA。includeAudio=trueのcamera.clipにはRECORD_AUDIO。
camera.* リクエストは
*_PERMISSION_REQUIRED エラーで失敗します。
Androidのフォアグラウンド要件
canvas.* と同様に、Android nodeはforegroundでのみ camera.* コマンドを許可します。backgroundからの呼び出しは NODE_BACKGROUND_UNAVAILABLE を返します。
Androidコマンド(Gateway node.invoke 経由)
camera.list- レスポンスpayload:
devices:{ id, name, position, deviceType }の配列
- レスポンスpayload:
Payload guard
写真は、base64 payloadが5 MB未満に収まるよう再圧縮されます。macOS app
ユーザー設定(デフォルトでオフ)
macOS companion appにはチェックボックスがあります。- Settings → General → Allow Camera (
openclaw.cameraEnabled)- デフォルト: off
- オフ時: cameraリクエストは「Camera disabled by user」を返します。
CLI helper(node invoke)
macOS nodeでcameraコマンドを呼び出すには、メインのopenclaw CLIを使います。
例:
openclaw nodes camera snapは、上書きされない限りデフォルトでmaxWidth=1600を使います。- macOSでは、
camera.snapはwarm-up/exposureが落ち着いた後、撮影前にdelayMs(デフォルト 2000ms)待機します。 - 写真payloadは、base64が5 MB未満に収まるよう再圧縮されます。
安全性と実用上の制限
- cameraとmicrophoneへのアクセスでは、通常のOS権限プロンプトが表示されます(また、Info.plist内のusage stringも必要です)。
- 動画クリップは、node payloadの肥大化(base64のオーバーヘッド + メッセージ制限)を避けるため、上限があります(現在は
<= 60s)。
macOS screen video(OSレベル)
cameraではなく screen videoには、macOS companionを使います。- macOSのScreen Recording権限(TCC)が必要です。