Nodes and media
Chụp ảnh bằng camera
OpenClaw hỗ trợ chụp từ camera cho các quy trình tác tử trên các node iOS, Android và macOS đã ghép nối: chụp ảnh (jpg) hoặc quay một đoạn video ngắn (mp4, có thể kèm âm thanh) thông qua node.invoke của Gateway.
Mọi quyền truy cập camera đều được kiểm soát bằng một cài đặt do người dùng quản lý trên từng nền tảng.
Node iOS
Cài đặt người dùng trên iOS
- Thẻ iOS Settings → Camera → Allow Camera (
camera.enabled).- Mặc định: bật (khóa bị thiếu được coi là đã bật).
- Khi tắt: các lệnh
camera.*trả vềCAMERA_DISABLED.
Lệnh iOS (thông qua node.invoke của Gateway)
-
camera.list- Dữ liệu phản hồi:
devices— mảng gồm{ id, name, position, deviceType }.
- Dữ liệu phản hồi:
-
camera.snap- Tham số:
facing:front|back(mặc định:front)maxWidth: số (không bắt buộc; mặc định1600)quality:0..1(không bắt buộc; mặc định0.9, được giới hạn trong[0.05, 1.0])format: hiện làjpgdelayMs: số (không bắt buộc; mặc định0, được giới hạn nội bộ tối đa ở10000)deviceId: chuỗi (không bắt buộc; lấy từcamera.list)
- Dữ liệu phản hồi:
format: "jpg",base64,width,height. - Giới hạn dữ liệu: ảnh được nén lại để giữ dữ liệu mã hóa base64 dưới 5MB.
- Tham số:
-
camera.clip- Tham số:
facing:front|back(mặc định:front)durationMs: số (mặc định3000, được giới hạn trong[250, 60000])includeAudio: giá trị boolean (mặc địnhtrue)format: hiện làmp4deviceId: chuỗi (không bắt buộc; lấy từcamera.list)
- Dữ liệu phản hồi:
format: "mp4",base64,durationMs,hasAudio.
- Tham số:
Yêu cầu chạy ở tiền cảnh trên iOS
Tương tự canvas.*, node iOS chỉ cho phép các lệnh camera.* khi ứng dụng ở tiền cảnh. Các lệnh gọi trong nền trả về NODE_BACKGROUND_UNAVAILABLE.
Trình hỗ trợ CLI
Cách dễ nhất để lấy tệp phương tiện là dùng trình hỗ trợ CLI. Trình này ghi dữ liệu phương tiện đã giải mã vào một tệp tạm thời và in ra đường dẫn đã lưu.
openclaw nodes camera snap --node <id> # mặc định: cả camera trước + sau (2 dòng MEDIA)openclaw nodes camera snap --node <id> --facing frontopenclaw nodes camera clip --node <id> --duration 3000openclaw nodes camera clip --node <id> --no-audionodes camera snap mặc định dùng --facing both, chụp cả camera trước và sau để cung cấp cho tác tử cả hai góc nhìn; hãy truyền --device-id cùng một hướng camera cụ thể (both sẽ bị từ chối khi đặt --device-id). Các tệp đầu ra là tệp tạm thời (trong thư mục tạm của hệ điều hành), trừ khi bạn tự xây dựng trình bao bọc.
Node Android
Cài đặt người dùng trên Android
- Bảng Android Settings → Camera → Allow Camera (
camera.enabled).- Các bản cài đặt mới mặc định ở trạng thái tắt. Các bản cài đặt hiện có từ trước khi cài đặt này được bổ sung sẽ được chuyển sang trạng thái bật, để việc nâng cấp không âm thầm làm mất quyền truy cập camera vốn đang hoạt động.
- Khi tắt: các lệnh
camera.*trả vềCAMERA_DISABLED: enable Camera in Settings.
Quyền
CAMERAlà bắt buộc cho cảcamera.snapvàcamera.clip; quyền bị thiếu hoặc bị từ chối sẽ trả vềCAMERA_PERMISSION_REQUIRED.RECORD_AUDIOlà bắt buộc đối vớicamera.clipkhiincludeAudiolàtrue; quyền bị thiếu hoặc bị từ chối sẽ trả vềMIC_PERMISSION_REQUIRED.
Ứng dụng sẽ yêu cầu quyền khi chạy nếu có thể.
Yêu cầu chạy ở tiền cảnh trên Android
Tương tự canvas.*, node Android chỉ cho phép các lệnh camera.* khi ứng dụng ở tiền cảnh. Các lệnh gọi trong nền trả về NODE_BACKGROUND_UNAVAILABLE: command requires foreground.
Lệnh Android (thông qua node.invoke của Gateway)
-
camera.list- Dữ liệu phản hồi:
devices— mảng gồm{ id, name, position, deviceType }.
- Dữ liệu phản hồi:
-
camera.snap- Tham số:
facing(front|back, mặc địnhfront),quality(mặc định0.95, được giới hạn trong[0.1, 1.0]),maxWidth(mặc định1600),deviceId(không bắt buộc; mã không xác định sẽ thất bại vớiINVALID_REQUEST). - Dữ liệu phản hồi:
format: "jpg",base64,width,height. - Giới hạn dữ liệu: được nén lại để giữ base64 dưới 5MB (cùng giới hạn với iOS).
- Tham số:
-
camera.clip- Tham số:
facing(mặc địnhfront),durationMs(mặc định3000, được giới hạn trong[200, 60000]),includeAudio(mặc địnhtrue),deviceId(không bắt buộc). - Dữ liệu phản hồi:
format: "mp4",base64,durationMs,hasAudio. - Giới hạn dữ liệu: MP4 thô được giới hạn ở 18MB trước khi mã hóa base64; các đoạn video vượt quá kích thước sẽ thất bại với
PAYLOAD_TOO_LARGE(hãy giảmdurationMsrồi thử lại).
- Tham số:
Ứng dụng macOS
Cài đặt người dùng trên macOS
Ứng dụng đồng hành macOS cung cấp một hộp kiểm:
- Settings → General → Allow Camera (
openclaw.cameraEnabled).- Mặc định: tắt.
- Khi tắt: các yêu cầu camera trả về
CAMERA_DISABLED: enable Camera in Settings.
Trình hỗ trợ CLI (gọi node)
Dùng CLI openclaw chính để gọi các lệnh camera trên node macOS.
openclaw nodes camera list --node <id> # liệt kê mã cameraopenclaw nodes camera snap --node <id> # in đường dẫn đã lưuopenclaw 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 # in đường dẫn đã lưuopenclaw nodes camera clip --node <id> --duration-ms 3000 # in đường dẫn đã lưu (cờ cũ)openclaw nodes camera clip --node <id> --device-id <id>openclaw nodes camera clip --node <id> --no-audioopenclaw nodes camera snapmặc định dùngmaxWidth=1600, trừ khi bị ghi đè.camera.snapchờdelayMs(mặc định 2000ms, được giới hạn trong[0, 10000]) sau khi quá trình làm nóng và ổn định phơi sáng hoàn tất rồi mới chụp.- Dữ liệu ảnh được nén lại để giữ base64 dưới 5MB.
An toàn và giới hạn thực tế
- Quyền truy cập camera và micrô kích hoạt các lời nhắc cấp quyền thông thường của hệ điều hành (và yêu cầu các chuỗi mô tả mục đích sử dụng trong
Info.plist). - Các đoạn video được giới hạn ở 60 giây để tránh dữ liệu node quá lớn (chi phí bổ sung của base64 cộng với giới hạn tin nhắn).
Video màn hình macOS (cấp hệ điều hành)
Để quay video màn hình (không phải camera), hãy dùng ứng dụng đồng hành macOS:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # in đường dẫn đã lưuYêu cầu quyền Screen Recording của macOS (TCC).