التقاط الكاميرا (الوكيل)
يدعم OpenClaw التقاط الكاميرا لسير عمل الوكيل:- عُقدة iOS (مقترنة عبر Gateway): التقاط صورة (
jpg) أو مقطع فيديو قصير (mp4، مع صوت اختياري) عبرnode.invoke. - عُقدة Android (مقترنة عبر Gateway): التقاط صورة (
jpg) أو مقطع فيديو قصير (mp4، مع صوت اختياري) عبرnode.invoke. - تطبيق macOS (عُقدة عبر Gateway): التقاط صورة (
jpg) أو مقطع فيديو قصير (mp4، مع صوت اختياري) عبرnode.invoke.
عُقدة iOS
إعداد المستخدم (مفعّل افتراضيًا)
- علامة تبويب إعدادات iOS → Camera → Allow Camera (
camera.enabled)- الافتراضي: مفعّل (يُعدّ المفتاح المفقود مفعّلًا).
- عند الإيقاف: تُرجع أوامر
camera.*الخطأCAMERA_DISABLED.
الأوامر (عبر Gateway node.invoke)
-
camera.list- حمولة الاستجابة:
devices: مصفوفة من{ id, name, position, deviceType }
- حمولة الاستجابة:
-
camera.snap- Params:
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 ميغابايت.
- Params:
-
camera.clip- Params:
facing:front|back(الافتراضي:front)durationMs: رقم (الافتراضي3000، ومقيد بحد أقصى60000)includeAudio: قيمة منطقية (الافتراضيtrue)format: حاليًاmp4deviceId: سلسلة (اختياري؛ منcamera.list)
- حمولة الاستجابة:
format: "mp4"base64: "<...>"durationMshasAudio
- Params:
متطلب الواجهة الأمامية
مثلcanvas.*، تسمح عُقدة iOS بأوامر camera.* فقط في الواجهة الأمامية. تُرجع الاستدعاءات في الخلفية NODE_BACKGROUND_UNAVAILABLE.
مساعد CLI (ملفات مؤقتة + MEDIA)
أسهل طريقة للحصول على المرفقات هي عبر مساعد CLI، الذي يكتب الوسائط المفككة إلى ملف مؤقت ويطبعMEDIA:<path>.
أمثلة:
nodes camera snapيكون افتراضيًا كلا الاتجاهين لإتاحة العرضين للوكيل.- ملفات الإخراج مؤقتة (في دليل الملفات المؤقتة لنظام التشغيل) ما لم تُنشئ غلافك الخاص.
عُقدة Android
إعداد المستخدم في Android (مفعّل افتراضيًا)
- ورقة إعدادات Android → Camera → Allow Camera (
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.
حارس الحمولة
تُعاد ضغط الصور للحفاظ على حمولة base64 دون 5 ميغابايت.تطبيق macOS
إعداد المستخدم (مُعطّل افتراضيًا)
يعرض التطبيق المُرافِق لنظام macOS مربع اختيار:- الإعدادات → عام → السماح بالكاميرا (
openclaw.cameraEnabled)- الافتراضي: مُعطّل
- عند الإيقاف: تُرجع طلبات الكاميرا «Camera disabled by user».
مساعد CLI (استدعاء العُقدة)
استخدم CLI الرئيسيopenclaw لاستدعاء أوامر الكاميرا على عُقدة macOS.
أمثلة:
openclaw nodes camera snapيكون افتراضيًاmaxWidth=1600ما لم يتم تجاوزه.- على macOS، ينتظر
camera.snapمدةdelayMs(الافتراضي 2000 مللي ثانية) بعد الإحماء/استقرار التعريض قبل الالتقاط. - تُعاد ضغط حمولات الصور للحفاظ على base64 دون 5 ميغابايت.
السلامة + الحدود العملية
- يؤدي الوصول إلى الكاميرا والميكروفون إلى ظهور مطالبات أذونات نظام التشغيل المعتادة (ويتطلب سلاسل الاستخدام في Info.plist).
- يتم تحديد سقف لمقاطع الفيديو (حاليًا
<= 60s) لتجنب حمولات عُقد كبيرة الحجم (عبء base64 + حدود الرسائل).
فيديو شاشة macOS (على مستوى النظام)
لفيديو الشاشة (وليس الكاميرا)، استخدم التطبيق المُرافِق لنظام macOS:- يتطلب إذن Screen Recording في macOS (TCC).