相機擷取
OpenClaw 支援代理工作流程的 相機擷取:
- iOS 節點(透過 Gateway 配對):透過
node.invoke擷取 照片 (jpg) 或 短片 (mp4,可選音訊)。 - Android 節點(透過 Gateway 配對):透過
node.invoke擷取 照片 (jpg) 或 短片 (mp4,可選音訊)。 - macOS 應用程式(透過 Gateway 的節點):透過
node.invoke擷取 照片 (jpg) 或 短片 (mp4,可選音訊)。
所有相機存取皆受限於 使用者控制的設定。
iOS 節點
Section titled “iOS 節點”使用者設定(預設為開啟)
Section titled “使用者設定(預設為開啟)”- iOS 設定分頁 → 相機 → 允許相機 (
camera.enabled)- 預設值:開啟(缺少鍵值視為已啟用)。
- 當關閉時:
camera.*指令會回傳CAMERA_DISABLED。
指令(透過 Gateway node.invoke)
Section titled “指令(透過 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
- Payload 防護:照片會重新壓縮,以將 base64 payload 保持在 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。
CLI 助手 (暫存檔案 + MEDIA)
Section titled “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 frontopenclaw nodes camera clip --node <id> --duration 3000openclaw nodes camera clip --node <id> --no-audio備註:
nodes camera snap預設為 both (雙向) 面向,以提供代理程式兩種視角。- 輸出檔案是暫時的 (位於 OS 暫存目錄中),除非您建立自己的包裝程式。
Android 節點
Section titled “Android 節點”Android 使用者設定 (預設開啟)
Section titled “Android 使用者設定 (預設開啟)”- Android Settings sheet → Camera → Allow Camera (
camera.enabled)- 預設:on (缺少索引鍵會視為已啟用)。
- 關閉時:
camera.*指令會傳回CAMERA_DISABLED。
- Android 需要執行階段權限:
CAMERA用於camera.snap和camera.clip兩者。- 當
includeAudio=true時,camera.clip需要RECORD_AUDIO。
如果缺少權限,應用程式會盡可能提示;如果被拒絕,camera.* 請求會失敗並出現
*_PERMISSION_REQUIRED 錯誤。
Android 前景要求
Section titled “Android 前景要求”與 canvas.* 類似,Android 節點僅允許在前景執行 camera.* 指令。背景呼叫會傳回 NODE_BACKGROUND_UNAVAILABLE。
Android 指令(透過 Gateway node.invoke)
Section titled “Android 指令(透過 Gateway node.invoke)”camera.list- 回應承載:
devices:{ id, name, position, deviceType }的陣列
- 回應承載:
照片會經過重新壓縮,以將 base64 承載保持在 5 MB 以下。
macOS 應用程式
Section titled “macOS 應用程式”使用者設定(預設關閉)
Section titled “使用者設定(預設關閉)”macOS 配套應用程式提供了一個核取方塊:
- Settings → General → Allow Camera (
openclaw.cameraEnabled)- 預設值:關閉
- 關閉時:相機請求會返回「使用者已停用相機」。
CLI 助手 (node invoke)
Section titled “CLI 助手 (node invoke)”使用主要的 openclaw CLI 在 macOS 節點上叫用相機指令。
範例:
openclaw nodes camera list --node <id> # list camera idsopenclaw nodes camera snap --node <id> # prints MEDIA:<path>openclaw 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 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(預設 2000ms)再進行擷取。 - 照片承載會經過重新壓縮,以將 base64 保持在 5 MB 以下。
安全性與實際限制
Section titled “安全性與實際限制”- 存取相機和麥克風會觸發標準的 OS 權限提示(並且需要在 Info.plist 中加入使用說明字串)。
- 影片片段會受到上限限制(目前為
<= 60s),以避免節點承載過大(base64 開銷 + 訊息限制)。
macOS 螢幕影片(OS 層級)
Section titled “macOS 螢幕影片(OS 層級)”若是 螢幕 影片(非相機),請使用 macOS 配套應用程式:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints MEDIA:<path>備註:
- 需要 macOS Screen Recording 權限 (TCC)。