Nodes and media
التقاط الصور بالكاميرا
يدعم 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.
الأوامر (عبر Gateway node.invoke)
-
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: قيمة منطقية (الافتراضيtrue)format: حاليًاmp4deviceId: سلسلة نصية (اختياري؛ منcamera.list)
- حمولة الاستجابة:
format: "mp4"base64: "<...>"durationMshasAudio
- المعاملات:
متطلب العمل في الواجهة
مثل canvas.*، تسمح عقدة iOS بأوامر camera.* فقط في الواجهة. تعيد الاستدعاءات في الخلفية 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افتراضيًا على كلتا الجهتين لتزويد الوكيل بكلتا الرؤيتين. - تكون ملفات الإخراج مؤقتة (في دليل الملفات المؤقتة لنظام التشغيل) ما لم تُنشئ الغلاف الخاص بك.
عقدة 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 (عبر Gateway node.invoke)
camera.list- حمولة الاستجابة:
devices: مصفوفة من{ id, name, position, deviceType }
- حمولة الاستجابة:
حارس الحمولة
يُعاد ضغط الصور لإبقاء حمولة base64 دون 5 ميجابايت.
تطبيق macOS
إعداد المستخدم (معطّل افتراضيًا)
يعرض تطبيق macOS المرافق مربع اختيار:
- الإعدادات → عام → السماح بالكاميرا (
openclaw.cameraEnabled)- الافتراضي: معطّل
- عند التعطيل: تعيد طلبات الكاميرا "عطّل المستخدم الكاميرا".
مساعد CLI (استدعاء العقدة)
استخدم CLI الرئيسي لـ openclaw لاستدعاء أوامر الكاميرا على عقدة 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(الافتراضي 2000ms) بعد الاستعداد واستقرار التعريض قبل الالتقاط. - يُعاد ضغط حمولات الصور لإبقاء base64 دون 5 ميجابايت.
السلامة + الحدود العملية
- يؤدي الوصول إلى الكاميرا والميكروفون إلى ظهور مطالبات أذونات نظام التشغيل المعتادة (ويتطلب سلاسل استخدام في Info.plist).
- تُحدَّد مقاطع الفيديو بحد أقصى (حاليًا
<= 60s) لتجنب حمولات العقدة كبيرة الحجم (زيادة base64 + حدود الرسائل).
فيديو شاشة macOS (على مستوى نظام التشغيل)
لفيديو الشاشة (وليس الكاميرا)، استخدم تطبيق macOS المرافق:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints MEDIA:<path>
ملاحظات:
- يتطلب إذن تسجيل الشاشة في macOS (TCC).