tools.media المشترك، وترتيب البدائل، والتكامل مع مسار معالجة الرد.
آلية العمل
1
جمع المرفقات
اجمع المرفقات الواردة (
MediaPaths وMediaUrls وMediaTypes).2
الاختيار لكل قدرة
لكل قدرة مفعّلة (الصور/الصوت/الفيديو)، حدّد المرفقات وفق سياسة
attachments (الافتراضي: المرفق الأول فقط).3
اختيار نموذج
اختر أول إدخال نموذج مؤهل (الحجم + القدرة + توفر المصادقة).
4
الرجوع إلى البديل عند الفشل
إذا أعاد نموذج خطأ، أو انتهت مهلته، أو تجاوزت الوسائط
maxBytes، فجرّب الإدخال التالي.5
التطبيق عند النجاح
تصبح
Body كتلة [Image] أو [Audio] أو [Video]. يعيّن الصوت أيضًا {{Transcript}}؛ ويستخدم تحليل الأوامر نص التعليق التوضيحي عند توفره، وإلا فيستخدم النص المنسوخ. تُحفظ التعليقات التوضيحية بصيغة User text: داخل الكتلة.التكوين
يحتويtools.media على قائمة نماذج مشتركة بالإضافة إلى تجاوزات لكل قدرة:
image/audio/video):
توضع الخيارات الخاصة بـ Deepgram ضمن
providerOptions.deepgram (الحقل ذو المستوى الأعلى deepgram: { detectLanguage, punctuate, smartFormat } مهمل، لكنه لا يزال مقروءًا).
إدخالات النماذج
كل إدخال فيmodels[] هو إدخال مزوّد (افتراضيًا) أو إدخال CLI:
- إدخال مزوّد
- إدخال CLI
بيانات اعتماد المزوّد
يستخدم فهم الوسائط عبر المزوّد آلية حل المصادقة نفسها المستخدمة في استدعاءات النماذج العادية: ملفات تعريف المصادقة، ثم متغيرات البيئة، ثمmodels.providers.<providerId>.apiKey. لا تقبل إدخالات tools.media.*.models[] حقل apiKey مضمنًا.
القواعد والسلوك
- تتجاوز الوسائط التي تتخطى
maxBytesذلك النموذج وتجرّب النموذج التالي. - تُعامل الملفات الصوتية التي يقل حجمها عن 1024 بايت على أنها فارغة/تالفة، ويجري تخطيها قبل النسخ؛ ويحصل الوكيل بدلًا منها على نص نائب حتمي.
- إذا كان نموذج الصور الأساسي النشط يدعم الرؤية أصلًا، يتخطى OpenClaw كتلة ملخص
[Image]ويمرر الصورة الأصلية مباشرةً إلى النموذج. يُعد MiniMax استثناءً: توجّهminimaxوminimax-cnوminimax-portalوminimax-portal-cnدائمًا فهم الصور عبر مزوّد الوسائطMiniMax-VL-01المملوك للـPlugin، حتى إذا ادّعت بيانات تعريف محادثة MiniMax M2.x القديمة دعم إدخال الصور (لا تُعامل إلاMiniMax-M3والإصدارات اللاحقة على أنها تدعم الرؤية أصلًا). - إذا كان نموذج Gateway/WebChat الأساسي نصيًا فقط، تُحفظ مرفقات الصور كمراجع
media://inbound/*مُرحّلة، بحيث تظل أدوات الصور/PDF أو نموذج صور مكوّن قادرة على فحصها بدلًا من فقدان المرفق. - يشغّل الأمر الصريح
openclaw infer image describe --file <path> --model <provider/model>(الاسم البديل:openclaw capability image describe) ذلك المزوّد/النموذج الداعم للصور مباشرةً، بما في ذلك مراجع Ollama مثلollama/qwen2.5vl:7bعند تكوين نموذج مطابق يدعم الصور ضمنmodels.providers.ollama.models[]. - إذا لم تكن
<capability>.enabledمساوية لـfalseولم تُكوّن أي نماذج، يجرّب OpenClaw نموذج الرد النشط عندما يدعم مزوّده القدرة.
الاكتشاف التلقائي (افتراضي)
عندما لا تكونtools.media.<capability>.enabled مساوية لـfalse ولم تُكوّن أي نماذج، يجرّب OpenClaw الخيارات التالية بالترتيب ويتوقف عند أول خيار يعمل:
1
نموذج الصور المكوّن (للصور فقط)
مراجع النموذج الأساسي/البديل في
agents.defaults.imageModel، ما لم يكن نموذج الرد النشط يدعم الرؤية أصلًا. فضّل مراجع provider/model؛ ولا تُؤهّل المراجع المجردة إلا من إدخالات نماذج المزوّد المكوّنة والداعمة للصور عندما تكون المطابقة فريدة.2
نموذج الرد النشط
نموذج الرد النشط، عندما يدعم مزوّده القدرة.
3
مصادقة المزوّد (للصوت فقط، قبل أدوات CLI المحلية)
تُجرّب إدخالات
models.providers.* المكوّنة التي تدعم الصوت قبل أدوات CLI المحلية. ترتيب أولوية المزوّدين المضمّنين (تُحسم حالات التعادل أبجديًا بحسب معرّف المزوّد): Groq/OpenAI → xAI → Deepgram → OpenRouter → Google/SenseAudio → Deepinfra/ElevenLabs → Mistral.4
أدوات CLI المحلية (للصوت فقط)
تصبح الملفات التنفيذية المحلية الجاهزة قائمة بدائل مرتبة:
- يأتي
whisper-cliأولًا فقط بعد أن يلاحظ استدعاء نموذج سابق في العملية الحالية استخدام Metal أو CUDA sherpa-onnx-offlineالافتراضي لوحدة المعالجة المركزية (يتطلبSHERPA_ONNX_MODEL_DIRمعtokens.txt/encoder.onnx/decoder.onnx/joiner.onnx)whisper-cliعندما يكون التسريع ممكنًا في البناء فحسب أو لم يُلاحظparakeet-mlxعلى Apple Silicon (يدعم MLX، مع عدم ملاحظة استخدام الجهاز)whisper(واجهة CLI بلغة Python؛ تستخدم نموذجturboافتراضيًا، وتُنزّله تلقائيًا)
5
مصادقة المزوّد (للصور/الفيديو)
تُجرّب إدخالات
models.providers.* المكوّنة التي تدعم القدرة قبل ترتيب البدائل المضمّن. يسجّل مزوّدو التكوين المخصصون للصور فقط، والذين لديهم نموذج يدعم الصور، أنفسهم تلقائيًا لفهم الوسائط حتى عندما لا يكونوا Plugin مورّد مضمّنًا.ترتيب أولوية المزوّدين المضمّنين (تُحسم حالات التعادل أبجديًا بحسب معرّف المزوّد):- الصور: Anthropic/OpenAI → Google → MiniMax → Deepinfra → MiniMax Portal → Z.AI
- الفيديو: Google → Qwen → Moonshot
6
واجهة Antigravity CLI (للصور/الفيديو فقط)
أول ملف تنفيذي مثبت من
agy أو antigravity (يمكن التجاوز باستخدام OPENCLAW_ANTIGRAVITY_CLI)، ويُشغّل في بيئة معزولة مقيدة بدليل الوسائط.يُنفّذ اكتشاف الملفات التنفيذية بأفضل جهد عبر macOS/Linux/Windows؛ تأكد من وجود CLI ضمن
PATH (يُوسّع ~)، أو عيّن إدخال نموذج CLI صريحًا بمسار أمر كامل.دعم الوكيل (استدعاءات مزوّدي الصوت/الفيديو)
يحترم فهم الصوت والفيديو المستند إلى المزوّد متغيرات بيئة الوكيل القياسية للاتصالات الصادرة، بما في ذلك قواعد التجاوزNO_PROXY/no_proxy: HTTPS_PROXY وHTTP_PROXY وALL_PROXY وhttps_proxy وhttp_proxy وall_proxy. تكون للمتغيرات ذات الأحرف الصغيرة أولوية على نظيراتها ذات الأحرف الكبيرة. إذا لم يُعيّن أي منها، يستخدم فهم الوسائط اتصالًا صادرًا مباشرًا؛ وإذا كانت قيمة الوكيل غير صالحة، يسجّل OpenClaw تحذيرًا ويعود إلى الجلب المباشر. لا يمر فهم الصور عبر مسار الوكيل هذا.
القدرات
عيّنcapabilities في إدخال models[] لتقييده بأنواع وسائط محددة. بالنسبة إلى القوائم المشتركة، يستنتج OpenClaw القيم الافتراضية لكل مزوّد مضمّن:
بالنسبة إلى إدخالات CLI، عيّن
capabilities صراحةً لتجنب المطابقات غير المتوقعة؛ وإذا حُذفت، يصبح الإدخال مؤهلًا لكل قائمة إمكانات يظهر فيها.
مصفوفة دعم المزوّدين
ملاحظة MiniMax: يأتي فهم الصور في
minimax وminimax-cn وminimax-portal وminimax-portal-cn دائمًا من مزوّد الوسائط MiniMax-VL-01 المملوك للـ Plugin، حتى إذا زعمت بيانات دردشة MiniMax M2.x القديمة دعم إدخال الصور.إرشادات اختيار النموذج
- فضّل أقوى نموذج من الجيل الحالي لكل إمكانية وسائط عندما تكون الجودة والسلامة مهمتين.
- بالنسبة إلى الوكلاء المزوّدين بأدوات والذين يتعاملون مع مدخلات غير موثوقة، تجنب نماذج الوسائط الأقدم أو الأضعف.
- احتفظ بخيار احتياطي واحد على الأقل لكل إمكانية لضمان التوافر (نموذج عالي الجودة + نموذج أسرع أو أقل تكلفة).
- تساعد خيارات CLI الاحتياطية (
whisper-cliوwhisperوgemini) عندما تكون واجهات المزوّدين البرمجية غير متاحة. - أوضاع إخراج الملفات المعروفة هي المرجع الحاسم: إذا كان ملف النص المنسوخ المستنتج فارغًا أو مفقودًا، فلن يُنتج أي نص منسوخ بدلًا من الرجوع إلى مخرجات تقدم CLI.
parakeet-mlx: استخدم--output-format txt(أوall) مع--output-dirوقالب الإخراج الافتراضي{filename}. تُحترم أيضًا متغيرات البيئةPARAKEET_OUTPUT_FORMATوPARAKEET_OUTPUT_TEMPLATEالخاصة بالمشروع الأصلي. يقرأ OpenClaw الملف<output-dir>/<media-basename>.txt؛ ويستمر تنسيقsrtالافتراضي والتنسيقات الأخرى وقوالب الإخراج المخصصة في استخدام stdout.
سياسة المرفقات
يتحكمattachments الخاص بكل إمكانية في المرفقات التي تتم معالجتها:
"first" | "all"
افتراضي:"first"
عالج أول مرفق محدد فقط، أو عالجها كلها.
number
افتراضي:"1"
حدد الحد الأقصى لعدد المرفقات التي تتم معالجتها.
"first" | "last" | "path" | "url"
تفضيل الاختيار بين المرفقات المرشحة.
mode: "all"، تُوسم المخرجات بـ [الصورة 1/2] و[الصوت 2/2] وما إلى ذلك.
استخراج مرفقات الملفات
- يُغلَّف نص الملف المستخرج بوصفه محتوى خارجيًا غير موثوق قبل إلحاقه بموجّه الوسائط، باستخدام علامات حدود مثل
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>إضافةً إلى سطر البيانات الوصفيةSource: External. - يحذف هذا المسار عمدًا لافتة
SECURITY NOTICE:الطويلة للحفاظ على قِصر موجّه الوسائط؛ وتظل علامات الحدود والبيانات الوصفية مطبقة. - يحصل الملف الذي لا يحتوي على نص قابل للاستخراج على
[لا يوجد نص قابل للاستخراج]. - إذا لجأ ملف PDF إلى صور الصفحات المعروضة، يمرر OpenClaw تلك الصور إلى نماذج الرد التي تدعم الرؤية، ويُبقي العنصر النائب
[تم عرض محتوى PDF على هيئة صور]في كتلة الملف.
أمثلة الإعداد
- النماذج المشتركة + التجاوزات
- الصوت + الفيديو فقط
- الصورة فقط
- إدخال واحد متعدد الوسائط
مخرجات الحالة
عند تشغيل فهم الوسائط، يتضمن/status سطر ملخص لكل إمكانية:
openclaw capability audio providers. تعرض الصفوف المحلية الفائز الاحتياطي المحلي بصورة منفصلة عن اختيار المزوّد العام، والجاهزية، وحقول الخلفية المنفصلة التي توضح القادر والمطلوب والمُلاحظ. يتوفر الاختيار المحلي نفسه أيضًا بوصفه نتيجة معلوماتية من doctor:
ملاحظات
- يتم الفهم وفق أفضل جهد ممكن. ولا تمنع الأخطاء إرسال الردود.
- تظل المرفقات تُمرَّر إلى النماذج حتى عندما يكون الفهم معطلًا.
- استخدم
scopeلتقييد مواضع تشغيل الفهم (على سبيل المثال، في الرسائل المباشرة فقط).