chore(i18n): refresh ar translations
This commit is contained in:
parent
8f309ba6a0
commit
6b52660c66
File diff suppressed because it is too large
Load Diff
174
docs/ar/help/gpt54-codex-agentic-parity-maintainers.md
Normal file
174
docs/ar/help/gpt54-codex-agentic-parity-maintainers.md
Normal file
@ -0,0 +1,174 @@
|
||||
---
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T15:15:51Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 910bcf7668becf182ef48185b43728bf2fa69629d6d50189d47d47b06f807a9e
|
||||
source_path: help/gpt54-codex-agentic-parity-maintainers.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# ملاحظات الصيانة لتكافؤ GPT-5.4 / Codex
|
||||
|
||||
تشرح هذه الملاحظة كيفية مراجعة برنامج تكافؤ GPT-5.4 / Codex بوصفه أربع وحدات دمج، من دون فقدان البنية الأصلية ذات العقود الستة.
|
||||
|
||||
## وحدات الدمج
|
||||
|
||||
### طلب السحب A: التنفيذ الصارم القائم على الوكلاء
|
||||
|
||||
يشمل:
|
||||
|
||||
- `executionContract`
|
||||
- المتابعة في نفس الدور مع إعطاء الأولوية لـ GPT-5
|
||||
- `update_plan` كتتبّع غير نهائي للتقدم
|
||||
- حالات التعذر الصريحة بدلًا من التوقفات الصامتة المعتمدة على الخطة فقط
|
||||
|
||||
لا يشمل:
|
||||
|
||||
- تصنيف فشل المصادقة/بيئة التشغيل
|
||||
- الصدق في الأذونات
|
||||
- إعادة تصميم إعادة التشغيل/الاستئناف
|
||||
- قياس التكافؤ
|
||||
|
||||
### طلب السحب B: الصدق في بيئة التشغيل
|
||||
|
||||
يشمل:
|
||||
|
||||
- صحة نطاق Codex OAuth
|
||||
- التصنيف المطبوع لفشل المزوّد/بيئة التشغيل
|
||||
- الصدق في إتاحة `/elevated full` وأسباب التعذر
|
||||
|
||||
لا يشمل:
|
||||
|
||||
- توحيد مخطط الأدوات
|
||||
- حالة إعادة التشغيل/الحيوية
|
||||
- بوابة القياس
|
||||
|
||||
### طلب السحب C: صحة التنفيذ
|
||||
|
||||
يشمل:
|
||||
|
||||
- توافق الأدوات المملوكة للمزوّد مع OpenAI/Codex
|
||||
- التعامل الصارم مع المخطط الخالي من المعلمات
|
||||
- إظهار حالات إعادة التشغيل غير الصالحة
|
||||
- إظهار حالة المهام الطويلة عند التوقف المؤقت أو التعذر أو الهجر
|
||||
|
||||
لا يشمل:
|
||||
|
||||
- الاستئناف الذي يقرره النظام ذاتيًا
|
||||
- سلوك لهجة Codex العامة خارج خطافات المزوّد
|
||||
- بوابة القياس
|
||||
|
||||
### طلب السحب D: أداة اختبار التكافؤ
|
||||
|
||||
يشمل:
|
||||
|
||||
- الحزمة الأولى من السيناريوهات لـ GPT-5.4 مقابل Opus 4.6
|
||||
- توثيق التكافؤ
|
||||
- تقرير التكافؤ وآليات بوابة الإصدار
|
||||
|
||||
لا يشمل:
|
||||
|
||||
- تغييرات سلوك بيئة التشغيل خارج QA-lab
|
||||
- محاكاة المصادقة/الوكيل/DNS داخل أداة الاختبار
|
||||
|
||||
## الربط بالعقود الستة الأصلية
|
||||
|
||||
| العقد الأصلي | وحدة الدمج |
|
||||
| ----------------------------------------- | ---------- |
|
||||
| صحة النقل/المصادقة لدى المزوّد | طلب السحب B |
|
||||
| توافق عقد الأداة/المخطط | طلب السحب C |
|
||||
| التنفيذ في نفس الدور | طلب السحب A |
|
||||
| الصدق في الأذونات | طلب السحب B |
|
||||
| صحة إعادة التشغيل/الاستئناف/الحيوية | طلب السحب C |
|
||||
| بوابة القياس/الإصدار | طلب السحب D |
|
||||
|
||||
## ترتيب المراجعة
|
||||
|
||||
1. طلب السحب A
|
||||
2. طلب السحب B
|
||||
3. طلب السحب C
|
||||
4. طلب السحب D
|
||||
|
||||
طلب السحب D هو طبقة الإثبات. يجب ألا يكون سببًا في تأخير طلبات السحب الخاصة بصحة بيئة التشغيل.
|
||||
|
||||
## ما الذي يجب البحث عنه
|
||||
|
||||
### طلب السحب A
|
||||
|
||||
- تشغيلات GPT-5 تنفذ أو تفشل بشكل مغلق بدلًا من التوقف عند التعليق
|
||||
- لم يعد `update_plan` يبدو وكأنه تقدم بحد ذاته
|
||||
- يظل السلوك مع إعطاء الأولوية لـ GPT-5 وضمن نطاق embedded-Pi
|
||||
|
||||
### طلب السحب B
|
||||
|
||||
- لم تعد حالات فشل المصادقة/الوكيل/بيئة التشغيل تنهار في معالجة عامة من نوع "فشل النموذج"
|
||||
- لا يتم وصف `/elevated full` بأنه متاح إلا عندما يكون متاحًا فعلًا
|
||||
- تكون أسباب التعذر مرئية لكل من النموذج وبيئة التشغيل المواجهة للمستخدم
|
||||
|
||||
### طلب السحب C
|
||||
|
||||
- يعمل تسجيل الأدوات الصارم في OpenAI/Codex بطريقة متوقعة
|
||||
- لا تفشل الأدوات الخالية من المعلمات في فحوصات المخطط الصارمة
|
||||
- تحافظ نتائج إعادة التشغيل والضغط على حالة حيوية صادقة
|
||||
|
||||
### طلب السحب D
|
||||
|
||||
- تكون حزمة السيناريوهات مفهومة وقابلة لإعادة الإنتاج
|
||||
- تتضمن الحزمة مسار أمان إعادة تشغيل متحوّل، وليس تدفقات للقراءة فقط
|
||||
- تكون التقارير قابلة للقراءة من قبل البشر والأتمتة
|
||||
- تكون ادعاءات التكافؤ مدعومة بالأدلة وليست قصصية
|
||||
|
||||
المخرجات المتوقعة من طلب السحب D:
|
||||
|
||||
- `qa-suite-report.md` / `qa-suite-summary.json` لكل تشغيل نموذج
|
||||
- `qa-agentic-parity-report.md` مع مقارنة مجمعة وعلى مستوى السيناريو
|
||||
- `qa-agentic-parity-summary.json` مع قرار مقروء آليًا
|
||||
|
||||
## بوابة الإصدار
|
||||
|
||||
لا تدّعِ وجود تكافؤ أو تفوق لـ GPT-5.4 على Opus 4.6 حتى:
|
||||
|
||||
- يتم دمج طلبات السحب A وB وC
|
||||
- يشغّل طلب السحب D حزمة التكافؤ الأولى بنجاح كامل
|
||||
- تظل مجموعات انحدار الصدق في بيئة التشغيل خضراء
|
||||
- يُظهر تقرير التكافؤ عدم وجود حالات نجاح زائف وعدم وجود تراجع في سلوك التوقف
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["PR A-C merged"] --> B["Run GPT-5.4 parity pack"]
|
||||
A --> C["Run Opus 4.6 parity pack"]
|
||||
B --> D["qa-suite-summary.json"]
|
||||
C --> E["qa-suite-summary.json"]
|
||||
D --> F["qa parity-report"]
|
||||
E --> F
|
||||
F --> G["Markdown report + JSON verdict"]
|
||||
G --> H{"Pass?"}
|
||||
H -- "yes" --> I["Parity claim allowed"]
|
||||
H -- "no" --> J["Keep runtime fixes / review loop open"]
|
||||
```
|
||||
|
||||
أداة اختبار التكافؤ ليست مصدر الأدلة الوحيد. أبقِ هذا الفصل واضحًا في المراجعة:
|
||||
|
||||
- يملك طلب السحب D المقارنة القائمة على السيناريو بين GPT-5.4 وOpus 4.6
|
||||
- وما تزال المجموعات الحتمية في طلب السحب B هي المالكة لأدلة المصادقة/الوكيل/DNS وصدق الوصول الكامل
|
||||
|
||||
## خريطة الهدف إلى الدليل
|
||||
|
||||
| عنصر بوابة الإكمال | المالك الأساسي | مخرج المراجعة |
|
||||
| ---------------------------------------- | -------------- | ------------------------------------------------------------------- |
|
||||
| عدم وجود توقفات تعتمد على الخطة فقط | طلب السحب A | اختبارات بيئة التشغيل الصارمة القائمة على الوكلاء و`approval-turn-tool-followthrough` |
|
||||
| عدم وجود تقدم زائف أو إتمام أداة زائف | طلب السحب A + D | عدد حالات النجاح الزائف في التكافؤ مع تفاصيل التقرير على مستوى السيناريو |
|
||||
| عدم وجود إرشادات خاطئة حول `/elevated full` | طلب السحب B | مجموعات الصدق الحتمية في بيئة التشغيل |
|
||||
| بقاء إخفاقات إعادة التشغيل/الحيوية صريحة | طلب السحب C + D | مجموعات lifecycle/replay بالإضافة إلى `compaction-retry-mutating-tool` |
|
||||
| أن يطابق GPT-5.4 أو يتفوق على Opus 4.6 | طلب السحب D | `qa-agentic-parity-report.md` و`qa-agentic-parity-summary.json` |
|
||||
|
||||
## صياغة مختصرة للمراجع: قبل مقابل بعد
|
||||
|
||||
| المشكلة المرئية للمستخدم سابقًا | إشارة المراجعة لاحقًا |
|
||||
| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| كان GPT-5.4 يتوقف بعد التخطيط | يُظهر طلب السحب A سلوكًا ينفذ أو يتعذر بدلًا من الاكتمال القائم على التعليق فقط |
|
||||
| بدا استخدام الأدوات هشًا مع مخططات OpenAI/Codex الصارمة | يحافظ طلب السحب C على إمكانية التنبؤ بتسجيل الأدوات واستدعائها من دون معلمات |
|
||||
| كانت تلميحات `/elevated full` مضللة أحيانًا | يربط طلب السحب B الإرشاد بقدرة بيئة التشغيل الفعلية وأسباب التعذر |
|
||||
| كان يمكن أن تختفي المهام الطويلة داخل غموض إعادة التشغيل/الضغط | يُصدر طلب السحب C حالات صريحة للتوقف المؤقت والتعذر والهجر وإعادة التشغيل غير الصالحة |
|
||||
| كانت ادعاءات التكافؤ قصصية | يُنتج طلب السحب D تقريرًا بالإضافة إلى قرار JSON مع التغطية نفسها للسيناريوهات على كلا النموذجين |
|
||||
229
docs/ar/help/gpt54-codex-agentic-parity.md
Normal file
229
docs/ar/help/gpt54-codex-agentic-parity.md
Normal file
@ -0,0 +1,229 @@
|
||||
---
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T15:15:51Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 7ee6b925b8a0f8843693cea9d50b40544657b5fb8a9e0860e2ff5badb273acb6
|
||||
source_path: help/gpt54-codex-agentic-parity.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# التكافؤ الوكيلي بين GPT-5.4 / Codex في OpenClaw
|
||||
|
||||
كان OpenClaw يعمل بالفعل بشكل جيد مع النماذج الرائدة التي تستخدم الأدوات، لكن نماذج GPT-5.4 وCodex-style كانت لا تزال أقل أداءً في بعض الجوانب العملية:
|
||||
|
||||
- كان يمكنها التوقف بعد التخطيط بدلًا من تنفيذ العمل
|
||||
- كان يمكنها استخدام مخططات أدوات OpenAI/Codex الصارمة بشكل غير صحيح
|
||||
- كان يمكنها طلب `/elevated full` حتى عندما يكون الوصول الكامل مستحيلًا
|
||||
- كان يمكنها فقدان حالة المهام طويلة التشغيل أثناء إعادة التشغيل أو الضغط
|
||||
- كانت ادعاءات التكافؤ مقارنةً بـ Claude Opus 4.6 تستند إلى روايات فردية بدلًا من سيناريوهات قابلة للتكرار
|
||||
|
||||
يعالج برنامج التكافؤ هذا هذه الفجوات عبر أربع شرائح قابلة للمراجعة.
|
||||
|
||||
## ما الذي تغيّر
|
||||
|
||||
### طلب السحب A: تنفيذ strict-agentic
|
||||
|
||||
تضيف هذه الشريحة عقد تنفيذ `strict-agentic` اختياريًا لتشغيلات Pi GPT-5 المضمّنة.
|
||||
|
||||
عند تفعيله، يتوقف OpenClaw عن قبول الأدوار التي تحتوي على خطة فقط باعتبارها إكمالًا “جيدًا بما يكفي”. إذا اكتفى النموذج بقول ما ينوي فعله ولم يستخدم الأدوات فعليًا أو يحرز تقدمًا، يعيد OpenClaw المحاولة بتوجيه ينص على التنفيذ الفوري، ثم يفشل بشكل مغلق مع حالة تعطّل صريحة بدلًا من إنهاء المهمة بصمت.
|
||||
|
||||
ويحسّن ذلك تجربة GPT-5.4 بشكل خاص في الحالات التالية:
|
||||
|
||||
- المتابعات القصيرة مثل “حسنًا افعل ذلك”
|
||||
- مهام البرمجة حيث تكون الخطوة الأولى واضحة
|
||||
- التدفقات التي يجب أن يكون فيها `update_plan` لتتبع التقدم بدلًا من كونه نصًا حشوًا
|
||||
|
||||
### طلب السحب B: صدق وقت التشغيل
|
||||
|
||||
تجعل هذه الشريحة OpenClaw يقول الحقيقة بشأن أمرين:
|
||||
|
||||
- سبب فشل استدعاء المزوّد/وقت التشغيل
|
||||
- ما إذا كان `/elevated full` متاحًا فعلًا
|
||||
|
||||
وهذا يعني أن GPT-5.4 يحصل على إشارات أفضل من وقت التشغيل بشأن نقص النطاق، وإخفاقات تحديث المصادقة، وإخفاقات المصادقة عبر HTML 403، ومشكلات الوكيل، وأعطال DNS أو المهلات، وأوضاع الوصول الكامل المحجوبة. ويصبح النموذج أقل عرضة لاختلاق معالجة خاطئة أو الاستمرار في طلب وضع أذونات لا يستطيع وقت التشغيل توفيره.
|
||||
|
||||
### طلب السحب C: صحة التنفيذ
|
||||
|
||||
تحسّن هذه الشريحة نوعين من الصحة:
|
||||
|
||||
- توافق مخططات الأدوات المملوكة للمزوّد مع OpenAI/Codex
|
||||
- إظهار إعادة التشغيل وحيوية المهام الطويلة
|
||||
|
||||
يقلل عمل التوافق مع الأدوات من الاحتكاك المتعلق بالمخططات عند تسجيل أدوات OpenAI/Codex الصارمة، خصوصًا حول الأدوات التي لا تحتوي على معلمات وتوقعات الجذر الصارمة من نوع object. أما عمل إعادة التشغيل/الحيوية فيجعل المهام طويلة التشغيل أكثر قابلية للملاحظة، بحيث تصبح الحالات المتوقفة مؤقتًا، والمحجوبة، والمتروكة مرئية بدلًا من أن تختفي داخل نص فشل عام.
|
||||
|
||||
### طلب السحب D: حزمة التكافؤ
|
||||
|
||||
تضيف هذه الشريحة أول حزمة تكافؤ من QA-lab حتى يمكن اختبار GPT-5.4 وOpus 4.6 عبر السيناريوهات نفسها ومقارنتهما باستخدام أدلة مشتركة.
|
||||
|
||||
تمثل حزمة التكافؤ طبقة الإثبات. وهي لا تغيّر سلوك وقت التشغيل بحد ذاتها.
|
||||
|
||||
بعد أن يصبح لديك عنصران من `qa-suite-summary.json`، أنشئ مقارنة بوابة الإصدار باستخدام:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa parity-report \
|
||||
--repo-root . \
|
||||
--candidate-summary .artifacts/qa-e2e/gpt54/qa-suite-summary.json \
|
||||
--baseline-summary .artifacts/qa-e2e/opus46/qa-suite-summary.json \
|
||||
--output-dir .artifacts/qa-e2e/parity
|
||||
```
|
||||
|
||||
يكتب هذا الأمر ما يلي:
|
||||
|
||||
- تقرير Markdown قابل للقراءة البشرية
|
||||
- حكم JSON قابل للقراءة آليًا
|
||||
- نتيجة بوابة صريحة `pass` / `fail`
|
||||
|
||||
## لماذا يحسّن هذا GPT-5.4 عمليًا
|
||||
|
||||
قبل هذا العمل، كان يمكن أن يبدو GPT-5.4 على OpenClaw أقل وكالية من Opus في جلسات البرمجة الفعلية لأن وقت التشغيل كان يتسامح مع سلوكيات تضر نماذج GPT-5-style بشكل خاص:
|
||||
|
||||
- أدوار تعتمد على التعليق فقط
|
||||
- احتكاك في المخططات حول الأدوات
|
||||
- ملاحظات أذونات غامضة
|
||||
- أعطال صامتة في إعادة التشغيل أو الضغط
|
||||
|
||||
الهدف ليس جعل GPT-5.4 يقلّد Opus. بل الهدف هو منح GPT-5.4 عقد وقت تشغيل يكافئ التقدم الحقيقي، ويوفر دلالات أنظف للأدوات والأذونات، ويحوّل أوضاع الفشل إلى حالات صريحة قابلة للقراءة آليًا وبشريًا.
|
||||
|
||||
وهذا يغيّر تجربة المستخدم من:
|
||||
|
||||
- “كان لدى النموذج خطة جيدة لكنه توقّف”
|
||||
|
||||
إلى:
|
||||
|
||||
- “إما أن النموذج نفّذ، أو أن OpenClaw أظهر السبب الدقيق الذي منعه من ذلك”
|
||||
|
||||
## قبل وبعد لمستخدمي GPT-5.4
|
||||
|
||||
| قبل هذا البرنامج | بعد طلبات السحب A-D |
|
||||
| -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
|
||||
| كان يمكن لـ GPT-5.4 أن يتوقف بعد خطة معقولة من دون اتخاذ خطوة الأداة التالية | يحوّل طلب السحب A حالة “خطة فقط” إلى “نفّذ الآن أو أظهر حالة تعطّل محجوبة” |
|
||||
| كان يمكن لمخططات الأدوات الصارمة أن ترفض الأدوات الخالية من المعلمات أو ذات شكل OpenAI/Codex بطرق مربكة | يجعل طلب السحب C تسجيل الأدوات المملوكة للمزوّد واستدعاءها أكثر قابلية للتنبؤ |
|
||||
| كان يمكن أن تكون إرشادات `/elevated full` غامضة أو خاطئة في بيئات التشغيل المحجوبة | يمنح طلب السحب B كلًا من GPT-5.4 والمستخدم تلميحات صادقة عن وقت التشغيل والأذونات |
|
||||
| كان يمكن أن تبدو أعطال إعادة التشغيل أو الضغط وكأن المهمة اختفت بصمت | يُظهر طلب السحب C نتائج التوقف المؤقت، والحجب، والتخلي، وبطلان إعادة التشغيل بشكل صريح |
|
||||
| كانت عبارة “GPT-5.4 أسوأ من Opus” في الغالب روايات فردية | يحوّل طلب السحب D ذلك إلى حزمة السيناريوهات نفسها، والمقاييس نفسها، وبوابة نجاح/فشل صارمة |
|
||||
|
||||
## البنية المعمارية
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["طلب المستخدم"] --> B["وقت تشغيل Pi المضمّن"]
|
||||
B --> C["عقد تنفيذ strict-agentic"]
|
||||
B --> D["توافق الأدوات المملوكة للمزوّد"]
|
||||
B --> E["صدق وقت التشغيل"]
|
||||
B --> F["إعادة التشغيل وحالة الحيوية"]
|
||||
C --> G["استدعاء أداة أو حالة تعطّل محجوبة صريحة"]
|
||||
D --> G
|
||||
E --> G
|
||||
F --> G
|
||||
G --> H["حزمة تكافؤ QA-lab"]
|
||||
H --> I["تقرير السيناريو وبوابة التكافؤ"]
|
||||
```
|
||||
|
||||
## تدفق الإصدار
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["شرائح وقت التشغيل المدمجة (طلبات السحب A-C)"] --> B["تشغيل حزمة تكافؤ GPT-5.4"]
|
||||
A --> C["تشغيل حزمة تكافؤ Opus 4.6"]
|
||||
B --> D["qa-suite-summary.json"]
|
||||
C --> E["qa-suite-summary.json"]
|
||||
D --> F["openclaw qa parity-report"]
|
||||
E --> F
|
||||
F --> G["qa-agentic-parity-report.md"]
|
||||
F --> H["qa-agentic-parity-summary.json"]
|
||||
H --> I{"هل اجتازت البوابة؟"}
|
||||
I -- "نعم" --> J["ادعاء تكافؤ مدعوم بالأدلة"]
|
||||
I -- "لا" --> K["الإبقاء على حلقة وقت التشغيل/المراجعة مفتوحة"]
|
||||
```
|
||||
|
||||
## حزمة السيناريوهات
|
||||
|
||||
تغطي حزمة التكافؤ للموجة الأولى حاليًا خمسة سيناريوهات:
|
||||
|
||||
### `approval-turn-tool-followthrough`
|
||||
|
||||
يتحقق من أن النموذج لا يتوقف عند “سأفعل ذلك” بعد موافقة قصيرة. يجب أن يتخذ أول إجراء ملموس في الدور نفسه.
|
||||
|
||||
### `model-switch-tool-continuity`
|
||||
|
||||
يتحقق من أن العمل القائم على الأدوات يظل متماسكًا عبر حدود تبديل النموذج/وقت التشغيل بدلًا من أن يعاد ضبطه إلى تعليق أو أن يفقد سياق التنفيذ.
|
||||
|
||||
### `source-docs-discovery-report`
|
||||
|
||||
يتحقق من أن النموذج يستطيع قراءة المصدر والوثائق، وتجميع النتائج، ومواصلة المهمة بشكل وكيلي بدلًا من إنتاج ملخص سطحي والتوقف مبكرًا.
|
||||
|
||||
### `image-understanding-attachment`
|
||||
|
||||
يتحقق من أن المهام المختلطة التي تتضمن مرفقات تبقى قابلة للتنفيذ ولا تنهار إلى سرد غامض.
|
||||
|
||||
### `compaction-retry-mutating-tool`
|
||||
|
||||
يتحقق من أن مهمة تتضمن كتابة تعديلية حقيقية تُبقي عدم أمان إعادة التشغيل صريحًا بدلًا من أن تبدو آمنة لإعادة التشغيل بهدوء إذا تعرّض التشغيل للضغط أو أُعيدت المحاولة أو فُقدت حالة الرد تحت الضغط.
|
||||
|
||||
## مصفوفة السيناريوهات
|
||||
|
||||
| السيناريو | ما الذي يختبره | السلوك الجيد من GPT-5.4 | إشارة الفشل |
|
||||
| ----------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- |
|
||||
| `approval-turn-tool-followthrough` | أدوار الموافقة القصيرة بعد خطة | يبدأ أول إجراء أداة ملموس فورًا بدلًا من إعادة صياغة النية | متابعة بخطة فقط، أو دون نشاط أدوات، أو دور محجوب دون مانع حقيقي |
|
||||
| `model-switch-tool-continuity` | تبديل وقت التشغيل/النموذج أثناء استخدام الأدوات | يحافظ على سياق المهمة ويواصل التنفيذ بشكل متماسك | يعاد ضبطه إلى تعليق، أو يفقد سياق الأدوات، أو يتوقف بعد التبديل |
|
||||
| `source-docs-discovery-report` | قراءة المصدر + التجميع + الإجراء | يعثر على المصادر، ويستخدم الأدوات، وينتج تقريرًا مفيدًا دون تعثر | ملخص سطحي، أو غياب عمل الأدوات، أو توقف في دور غير مكتمل |
|
||||
| `image-understanding-attachment` | عمل وكيلي مدفوع بالمرفقات | يفسر المرفق، ويربطه بالأدوات، ويواصل المهمة | سرد غامض، أو تجاهل المرفق، أو عدم وجود إجراء تالٍ ملموس |
|
||||
| `compaction-retry-mutating-tool` | عمل تعديلي تحت ضغط الضغط | ينفذ كتابة حقيقية ويُبقي عدم أمان إعادة التشغيل صريحًا بعد الأثر الجانبي | تحدث كتابة تعديل، لكن يُفهم ضمنًا أن إعادة التشغيل آمنة، أو يكون ذلك مفقودًا أو متناقضًا |
|
||||
|
||||
## بوابة الإصدار
|
||||
|
||||
لا يمكن اعتبار GPT-5.4 عند مستوى التكافؤ أو أفضل إلا عندما يجتاز وقت التشغيل المدمج حزمة التكافؤ وانحدارات صدق وقت التشغيل في الوقت نفسه.
|
||||
|
||||
النتائج المطلوبة:
|
||||
|
||||
- عدم وجود تعثر عند خطة فقط عندما يكون إجراء الأداة التالي واضحًا
|
||||
- عدم وجود إكمال مزيف من دون تنفيذ حقيقي
|
||||
- عدم وجود إرشادات خاطئة بشأن `/elevated full`
|
||||
- عدم وجود تخلٍ صامت عن إعادة التشغيل أو الضغط
|
||||
- مقاييس حزمة التكافؤ تكون على الأقل بقوة خط الأساس المتفق عليه لـ Opus 4.6
|
||||
|
||||
بالنسبة إلى حزمة الموجة الأولى، تقارن البوابة ما يلي:
|
||||
|
||||
- معدل الإكمال
|
||||
- معدل التوقف غير المقصود
|
||||
- معدل استدعاء الأدوات الصحيح
|
||||
- عدد النجاحات المزيفة
|
||||
|
||||
ينقسم دليل التكافؤ عمدًا إلى طبقتين:
|
||||
|
||||
- يثبت طلب السحب D سلوك GPT-5.4 مقابل Opus 4.6 في السيناريوهات نفسها باستخدام QA-lab
|
||||
- وتثبت المجموعات الحتمية في طلب السحب B صدق المصادقة والوكيل وDNS و`/elevated full` خارج الحزمة
|
||||
|
||||
## مصفوفة الهدف إلى الدليل
|
||||
|
||||
| عنصر بوابة الإكمال | طلب السحب المالك | مصدر الدليل | إشارة النجاح |
|
||||
| ------------------------------------------------------ | ---------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
||||
| لم يعد GPT-5.4 يتعثر بعد التخطيط | PR A | `approval-turn-tool-followthrough` بالإضافة إلى مجموعات وقت تشغيل PR A | تؤدي أدوار الموافقة إلى عمل حقيقي أو إلى حالة تعطّل محجوبة صريحة |
|
||||
| لم يعد GPT-5.4 يزيف التقدم أو إكمال الأداة المزيف | PR A + PR D | نتائج سيناريوهات تقرير التكافؤ وعدد النجاحات المزيفة | عدم وجود نتائج نجاح مشبوهة وعدم وجود إكمال قائم على التعليق فقط |
|
||||
| لم يعد GPT-5.4 يعطي إرشادات `/elevated full` خاطئة | PR B | مجموعات الصدق الحتمية | تبقى أسباب الحجب وتلميحات الوصول الكامل دقيقة وفق وقت التشغيل |
|
||||
| تبقى أعطال إعادة التشغيل/الحيوية صريحة | PR C + PR D | مجموعات دورة الحياة/إعادة التشغيل في PR C بالإضافة إلى `compaction-retry-mutating-tool` | يُبقي العمل التعديلي عدم أمان إعادة التشغيل صريحًا بدلًا من أن يختفي بصمت |
|
||||
| يطابق GPT-5.4 أو يتفوق على Opus 4.6 في المقاييس المتفق عليها | PR D | `qa-agentic-parity-report.md` و`qa-agentic-parity-summary.json` | التغطية نفسها للسيناريوهات وعدم وجود تراجع في الإكمال أو سلوك التوقف أو صحة استخدام الأدوات |
|
||||
|
||||
## كيفية قراءة حكم التكافؤ
|
||||
|
||||
استخدم الحكم الموجود في `qa-agentic-parity-summary.json` باعتباره القرار النهائي القابل للقراءة آليًا لحزمة التكافؤ الخاصة بالموجة الأولى.
|
||||
|
||||
- تعني `pass` أن GPT-5.4 غطّى السيناريوهات نفسها التي غطاها Opus 4.6 ولم يتراجع في المقاييس التجميعية المتفق عليها.
|
||||
- تعني `fail` أن بوابة صارمة واحدة على الأقل قد تعثرت: إكمال أضعف، أو توقفات غير مقصودة أسوأ، أو استخدام صحيح أضعف للأدوات، أو أي حالة نجاح مزيف، أو تغطية سيناريوهات غير متطابقة.
|
||||
- لا تُعد “مشكلة CI مشتركة/أساسية” بحد ذاتها نتيجة تكافؤ. إذا كان ضجيج CI خارج PR D يحجب تشغيلًا ما، فيجب أن ينتظر الحكم تنفيذًا نظيفًا لوقت تشغيل مدمج بدلًا من استنتاجه من سجلات مرحلة الفرع.
|
||||
- لا تزال دقة المصادقة والوكيل وDNS و`/elevated full` تأتي من المجموعات الحتمية في PR B، لذلك يحتاج ادعاء الإصدار النهائي إلى الأمرين معًا: حكم تكافؤ ناجح من PR D وتغطية صدق خضراء من PR B.
|
||||
|
||||
## من الذي ينبغي له تفعيل `strict-agentic`
|
||||
|
||||
استخدم `strict-agentic` عندما:
|
||||
|
||||
- يُتوقع من الوكيل أن يتصرف فورًا عندما تكون الخطوة التالية واضحة
|
||||
- تكون نماذج GPT-5.4 أو نماذج Codex-family هي وقت التشغيل الأساسي
|
||||
- تفضّل الحالات المحجوبة الصريحة على الردود التي تقتصر على التلخيص “المفيد”
|
||||
|
||||
أبقِ العقد الافتراضي عندما:
|
||||
|
||||
- تريد السلوك الأرخى الحالي
|
||||
- لا تستخدم نماذج GPT-5-family
|
||||
- تختبر المطالبات بدلًا من فرض وقت التشغيل
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,75 +1,80 @@
|
||||
---
|
||||
read_when:
|
||||
- أنت تقوم ببناء plugin لـ OpenClaw.
|
||||
- تحتاج إلى إصدار مخطط إعدادات plugin أو تصحيح أخطاء التحقق من صحة plugin.
|
||||
summary: بيان plugin + متطلبات JSON schema (التحقق الصارم من صحة الإعدادات)
|
||||
title: بيان plugin
|
||||
- أنت تقوم ببناء مكون إضافي لـ OpenClaw
|
||||
- تحتاج إلى توفير مخطط لتكوين المكون الإضافي أو تصحيح أخطاء التحقق من صحة المكون الإضافي
|
||||
summary: متطلبات بيان المكون الإضافي + مخطط JSON (تحقق صارم من صحة التكوين)
|
||||
title: بيان المكون الإضافي
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T02:46:07Z"
|
||||
generated_at: "2026-04-11T15:16:00Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 6b254c121d1eb5ea19adbd4148243cf47339c960442ab1ca0e0bfd52e0154c88
|
||||
source_hash: 42d454b560a8f6bf714c5d782f34216be1216d83d0a319d08d7349332c91a9e4
|
||||
source_path: plugins/manifest.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# بيان plugin (`openclaw.plugin.json`)
|
||||
# بيان المكون الإضافي (`openclaw.plugin.json`)
|
||||
|
||||
هذه الصفحة مخصصة فقط لـ **بيان OpenClaw الأصلي لـ plugin**.
|
||||
هذه الصفحة مخصصة لـ **بيان المكون الإضافي الأصلي في OpenClaw** فقط.
|
||||
|
||||
للتنسيقات المتوافقة للحزم، راجع [حزم plugin](/ar/plugins/bundles).
|
||||
للاطلاع على تخطيطات الحزم المتوافقة، راجع [حزم المكونات الإضافية](/ar/plugins/bundles).
|
||||
|
||||
تستخدم تنسيقات الحزم المتوافقة ملفات بيان مختلفة:
|
||||
|
||||
- حزمة Codex: `.codex-plugin/plugin.json`
|
||||
- حزمة Claude: `.claude-plugin/plugin.json` أو تخطيط مكونات Claude
|
||||
الافتراضي من دون بيان
|
||||
- حزمة Claude: `.claude-plugin/plugin.json` أو تخطيط مكونات Claude الافتراضي
|
||||
بدون بيان
|
||||
- حزمة Cursor: `.cursor-plugin/plugin.json`
|
||||
|
||||
يكتشف OpenClaw تلك التخطيطات المتوافقة للحزم تلقائيًا أيضًا، لكنها لا تُتحقق
|
||||
مقارنتها بمخطط `openclaw.plugin.json` الموضح هنا.
|
||||
مقابل مخطط `openclaw.plugin.json` الموضح هنا.
|
||||
|
||||
بالنسبة إلى الحزم المتوافقة، يقرأ OpenClaw حاليًا بيانات الحزمة الوصفية بالإضافة إلى
|
||||
جذور Skills المعلنة، وجذور أوامر Claude، وقيم `settings.json` الافتراضية في حزمة Claude،
|
||||
وقيم LSP الافتراضية في حزمة Claude، وحزم hooks المدعومة عندما يطابق التخطيط
|
||||
جذور Skills المعلنة، وجذور أوامر Claude، والقيم الافتراضية لملف `settings.json` في حزمة Claude،
|
||||
والقيم الافتراضية لـ Claude bundle LSP، وحزم hooks المدعومة عندما يطابق التخطيط
|
||||
توقعات وقت تشغيل OpenClaw.
|
||||
|
||||
يجب على كل plugin أصلي في OpenClaw **أن** يوفّر ملف `openclaw.plugin.json` في
|
||||
**جذر plugin**. يستخدم OpenClaw هذا البيان للتحقق من صحة الإعدادات
|
||||
**من دون تنفيذ كود plugin**. وتُعامل البيانات المفقودة أو غير الصالحة على أنها
|
||||
أخطاء plugin وتمنع التحقق من صحة الإعدادات.
|
||||
يجب على كل مكون إضافي أصلي في OpenClaw **أن يتضمن** ملف `openclaw.plugin.json` في
|
||||
**جذر المكون الإضافي**. يستخدم OpenClaw هذا البيان للتحقق من صحة التكوين
|
||||
**من دون تنفيذ كود المكون الإضافي**. تُعامل البيانات المفقودة أو غير الصالحة على أنها
|
||||
أخطاء في المكون الإضافي وتمنع التحقق من صحة التكوين.
|
||||
|
||||
راجع الدليل الكامل لنظام plugin: [Plugins](/ar/tools/plugin).
|
||||
وبالنسبة إلى نموذج الإمكانات الأصلي والإرشادات الحالية للتوافق الخارجي:
|
||||
[نموذج الإمكانات](/ar/plugins/architecture#public-capability-model).
|
||||
راجع الدليل الكامل لنظام المكونات الإضافية: [المكونات الإضافية](/ar/tools/plugin).
|
||||
وللاطلاع على نموذج القدرات الأصلي وإرشادات التوافق الخارجي الحالية:
|
||||
[نموذج القدرات](/ar/plugins/architecture#public-capability-model).
|
||||
|
||||
## ما الذي يفعله هذا الملف
|
||||
|
||||
`openclaw.plugin.json` هو البيانات الوصفية التي يقرؤها OpenClaw قبل أن يحمّل
|
||||
كود plugin الخاص بك.
|
||||
`openclaw.plugin.json` هو البيانات الوصفية التي يقرأها OpenClaw قبل أن يحمّل
|
||||
كود المكون الإضافي الخاص بك.
|
||||
|
||||
استخدمه من أجل:
|
||||
|
||||
- هوية plugin
|
||||
- التحقق من صحة الإعدادات
|
||||
- بيانات المصادقة والإعداد الأولي التي يجب أن تكون متاحة من دون تشغيل وقت تشغيل plugin
|
||||
- بيانات الأسماء المستعارة والتمكين التلقائي التي يجب أن تُحل قبل تحميل وقت تشغيل plugin
|
||||
- بيانات ملكية عائلة النماذج المختصرة التي ينبغي أن تفعّل
|
||||
plugin تلقائيًا قبل تحميل وقت التشغيل
|
||||
- لقطات ثابتة لملكية الإمكانات تُستخدم في توافق الحزم والتغطية التعاقدية
|
||||
- بيانات إعدادات خاصة بالقنوات ينبغي دمجها في أسطح الفهرسة والتحقق
|
||||
- هوية المكون الإضافي
|
||||
- التحقق من صحة التكوين
|
||||
- بيانات التعريف الخاصة بالمصادقة والإعداد الأولي التي يجب أن تكون متاحة من دون تشغيل
|
||||
وقت تشغيل المكون الإضافي
|
||||
- تلميحات تفعيل منخفضة التكلفة يمكن لأسطح control-plane فحصها قبل تحميل وقت التشغيل
|
||||
- واصفات إعداد منخفضة التكلفة يمكن لأسطح الإعداد/التهيئة الأولية فحصها قبل
|
||||
تحميل وقت التشغيل
|
||||
- بيانات تعريف الأسماء المستعارة والتمكين التلقائي التي يجب حلها قبل تحميل وقت تشغيل
|
||||
المكون الإضافي
|
||||
- بيانات تعريف مختصرة لملكية عائلة النماذج ينبغي أن تفعّل
|
||||
المكون الإضافي تلقائيًا قبل تحميل وقت التشغيل
|
||||
- لقطات ثابتة لملكية القدرات تُستخدم في ربط التوافق المضمّن وتغطية العقود
|
||||
- بيانات تعريف تكوين خاصة بالقنوات ينبغي دمجها في أسطح الفهرسة والتحقق
|
||||
من دون تحميل وقت التشغيل
|
||||
- تلميحات UI للإعدادات
|
||||
- تلميحات واجهة المستخدم للتكوين
|
||||
|
||||
لا تستخدمه من أجل:
|
||||
|
||||
- تسجيل سلوك وقت التشغيل
|
||||
- تعريف نقاط إدخال الكود
|
||||
- بيانات تثبيت npm
|
||||
- تعريف نقاط دخول الكود
|
||||
- بيانات تعريف تثبيت npm
|
||||
|
||||
هذه تنتمي إلى كود plugin الخاص بك و`package.json`.
|
||||
هذه تنتمي إلى كود المكون الإضافي الخاص بك و`package.json`.
|
||||
|
||||
## مثال أدنى
|
||||
## مثال بسيط
|
||||
|
||||
```json
|
||||
{
|
||||
@ -82,13 +87,13 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
## مثال موسع
|
||||
## مثال غني
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "openrouter",
|
||||
"name": "OpenRouter",
|
||||
"description": "plugin مزود OpenRouter",
|
||||
"description": "OpenRouter provider plugin",
|
||||
"version": "1.0.0",
|
||||
"providers": ["openrouter"],
|
||||
"modelSupport": {
|
||||
@ -109,19 +114,19 @@ x-i18n:
|
||||
"provider": "openrouter",
|
||||
"method": "api-key",
|
||||
"choiceId": "openrouter-api-key",
|
||||
"choiceLabel": "مفتاح API لـ OpenRouter",
|
||||
"choiceLabel": "OpenRouter API key",
|
||||
"groupId": "openrouter",
|
||||
"groupLabel": "OpenRouter",
|
||||
"optionKey": "openrouterApiKey",
|
||||
"cliFlag": "--openrouter-api-key",
|
||||
"cliOption": "--openrouter-api-key <key>",
|
||||
"cliDescription": "مفتاح API لـ OpenRouter",
|
||||
"cliDescription": "OpenRouter API key",
|
||||
"onboardingScopes": ["text-inference"]
|
||||
}
|
||||
],
|
||||
"uiHints": {
|
||||
"apiKey": {
|
||||
"label": "مفتاح API",
|
||||
"label": "API key",
|
||||
"placeholder": "sk-or-v1-...",
|
||||
"sensitive": true
|
||||
}
|
||||
@ -140,60 +145,62 @@ x-i18n:
|
||||
|
||||
## مرجع الحقول ذات المستوى الأعلى
|
||||
|
||||
| الحقل | مطلوب | النوع | معناه |
|
||||
| ----------------------------------- | ------ | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | نعم | `string` | معرّف plugin الأساسي. وهذا هو المعرّف المستخدم في `plugins.entries.<id>`. |
|
||||
| `configSchema` | نعم | `object` | JSON Schema مضمن لإعدادات هذا plugin. |
|
||||
| `enabledByDefault` | لا | `true` | يحدد أن plugin المجمّع مفعّل افتراضيًا. احذف هذا الحقل، أو اضبطه على أي قيمة غير `true`، للإبقاء على plugin معطلًا افتراضيًا. |
|
||||
| `legacyPluginIds` | لا | `string[]` | معرّفات قديمة تُطبّع إلى معرّف plugin الأساسي هذا. |
|
||||
| `autoEnableWhenConfiguredProviders` | لا | `string[]` | معرّفات المزودات التي يجب أن تفعّل هذا plugin تلقائيًا عندما تشير إليها المصادقة أو الإعدادات أو مراجع النماذج. |
|
||||
| `kind` | لا | `"memory"` \| `"context-engine"` | يعلن نوع plugin حصريًا يُستخدم بواسطة `plugins.slots.*`. |
|
||||
| `channels` | لا | `string[]` | معرّفات القنوات التي يملكها هذا plugin. تُستخدم للاكتشاف والتحقق من صحة الإعدادات. |
|
||||
| `providers` | لا | `string[]` | معرّفات المزودات التي يملكها هذا plugin. |
|
||||
| `modelSupport` | لا | `object` | بيانات وصفية مختصرة لعائلات النماذج يملكها البيان وتُستخدم لتحميل plugin تلقائيًا قبل وقت التشغيل. |
|
||||
| `cliBackends` | لا | `string[]` | معرّفات الواجهات الخلفية للاستدلال في CLI التي يملكها هذا plugin. وتُستخدم للتفعيل التلقائي عند بدء التشغيل من مراجع الإعدادات الصريحة. |
|
||||
| `commandAliases` | لا | `object[]` | أسماء الأوامر التي يملكها هذا plugin والتي ينبغي أن تنتج إعدادات خاصة بالـ plugin وتشخيصات CLI قبل تحميل وقت التشغيل. |
|
||||
| `providerAuthEnvVars` | لا | `Record<string, string[]>` | بيانات وصفية بسيطة لمتغيرات بيئة مصادقة المزود يمكن لـ OpenClaw فحصها من دون تحميل كود plugin. |
|
||||
| `providerAuthAliases` | لا | `Record<string, string>` | معرّفات مزودات ينبغي أن تعيد استخدام معرّف مزود آخر للبحث عن المصادقة، مثل مزود coding يشارك مفتاح API الأساسي وملفات تعريف المصادقة الخاصة بالمزود الأساسي. |
|
||||
| `channelEnvVars` | لا | `Record<string, string[]>` | بيانات وصفية بسيطة لمتغيرات بيئة القنوات يمكن لـ OpenClaw فحصها من دون تحميل كود plugin. استخدم هذا للإعداد المعتمد على البيئة للقنوات أو أسطح المصادقة التي ينبغي أن تراها أدوات البدء/الإعداد العامة. |
|
||||
| `providerAuthChoices` | لا | `object[]` | بيانات وصفية بسيطة لخيارات المصادقة لمحددات الإعداد الأولي، وحل المزود المفضل، وربط أعلام CLI البسيطة. |
|
||||
| `contracts` | لا | `object` | لقطة ثابتة لإمكانات الحزم للتعرف على الكلام، والنسخ الفوري، والصوت الفوري، وفهم الوسائط، وتوليد الصور، وتوليد الموسيقى، وتوليد الفيديو، وweb-fetch، وweb search، وملكية الأدوات. |
|
||||
| `channelConfigs` | لا | `Record<string, object>` | بيانات وصفية لإعدادات القنوات يملكها البيان وتُدمج في أسطح الاكتشاف والتحقق قبل تحميل وقت التشغيل. |
|
||||
| `skills` | لا | `string[]` | أدلة Skills المطلوب تحميلها، نسبةً إلى جذر plugin. |
|
||||
| `name` | لا | `string` | اسم plugin قابل للقراءة البشرية. |
|
||||
| `description` | لا | `string` | ملخص قصير يظهر في أسطح plugin. |
|
||||
| `version` | لا | `string` | إصدار plugin معلوماتي. |
|
||||
| `uiHints` | لا | `Record<string, object>` | تسميات UI، وعناصر نائبة، وتلميحات الحساسية لحقول الإعدادات. |
|
||||
| الحقل | مطلوب | النوع | ما الذي يعنيه |
|
||||
| ----------------------------------- | ------ | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | نعم | `string` | المعرّف الأساسي للمكون الإضافي. هذا هو المعرّف المستخدم في `plugins.entries.<id>`. |
|
||||
| `configSchema` | نعم | `object` | مخطط JSON مضمن لتكوين هذا المكون الإضافي. |
|
||||
| `enabledByDefault` | لا | `true` | يحدد مكونًا إضافيًا مضمّنًا على أنه مفعّل افتراضيًا. احذف هذا الحقل، أو عيّن أي قيمة غير `true`، لترك المكون الإضافي معطلًا افتراضيًا. |
|
||||
| `legacyPluginIds` | لا | `string[]` | معرّفات قديمة تُطبَّع إلى هذا المعرّف الأساسي للمكون الإضافي. |
|
||||
| `autoEnableWhenConfiguredProviders` | لا | `string[]` | معرّفات الموفرين التي يجب أن تفعّل هذا المكون الإضافي تلقائيًا عندما تشير المصادقة أو التكوين أو مراجع النماذج إليها. |
|
||||
| `kind` | لا | `"memory"` \| `"context-engine"` | يعلن نوع مكون إضافي حصريًا يُستخدم بواسطة `plugins.slots.*`. |
|
||||
| `channels` | لا | `string[]` | معرّفات القنوات المملوكة لهذا المكون الإضافي. تُستخدم للاكتشاف والتحقق من صحة التكوين. |
|
||||
| `providers` | لا | `string[]` | معرّفات الموفرين المملوكة لهذا المكون الإضافي. |
|
||||
| `modelSupport` | لا | `object` | بيانات تعريف مختصرة مملوكة للبيان لعائلة النماذج، وتُستخدم لتحميل المكون الإضافي تلقائيًا قبل وقت التشغيل. |
|
||||
| `cliBackends` | لا | `string[]` | معرّفات الواجهات الخلفية للاستدلال في CLI المملوكة لهذا المكون الإضافي. تُستخدم للتفعيل التلقائي عند بدء التشغيل انطلاقًا من مراجع التكوين الصريحة. |
|
||||
| `commandAliases` | لا | `object[]` | أسماء الأوامر المملوكة لهذا المكون الإضافي والتي ينبغي أن تُنتج تشخيصات واعية بالمكون الإضافي للتكوين وCLI قبل تحميل وقت التشغيل. |
|
||||
| `providerAuthEnvVars` | لا | `Record<string, string[]>` | بيانات تعريف منخفضة التكلفة لمتغيرات البيئة الخاصة بمصادقة الموفر، ويمكن لـ OpenClaw فحصها من دون تحميل كود المكون الإضافي. |
|
||||
| `providerAuthAliases` | لا | `Record<string, string>` | معرّفات موفرين يجب أن تعيد استخدام معرّف موفر آخر للبحث عن المصادقة، مثل موفر برمجة يشارك مفتاح API الأساسي وملفات تعريف المصادقة الخاصة بالموفر الأساسي. |
|
||||
| `channelEnvVars` | لا | `Record<string, string[]>` | بيانات تعريف منخفضة التكلفة لمتغيرات بيئة القنوات، ويمكن لـ OpenClaw فحصها من دون تحميل كود المكون الإضافي. استخدم هذا لأسطح إعداد القنوات أو المصادقة المعتمدة على متغيرات البيئة والتي ينبغي أن تراها أدوات البدء/التكوين العامة. |
|
||||
| `providerAuthChoices` | لا | `object[]` | بيانات تعريف منخفضة التكلفة لخيارات المصادقة لمحددات الإعداد الأولي، وحل الموفر المفضل، وربط أعلام CLI البسيط. |
|
||||
| `activation` | لا | `object` | تلميحات تفعيل منخفضة التكلفة للتحميل المُحفَّز بواسطة الموفر أو الأمر أو القناة أو المسار أو القدرة. بيانات تعريف فقط؛ لا يزال وقت تشغيل المكون الإضافي يملك السلوك الفعلي. |
|
||||
| `setup` | لا | `object` | واصفات إعداد/تهيئة أولية منخفضة التكلفة يمكن لأسطح الاكتشاف والإعداد فحصها من دون تحميل وقت تشغيل المكون الإضافي. |
|
||||
| `contracts` | لا | `object` | لقطة ثابتة للقدرات المضمّنة من أجل speech، وrealtime transcription، وrealtime voice، وmedia-understanding، وimage-generation، وmusic-generation، وvideo-generation، وweb-fetch، وweb search، وملكية الأدوات. |
|
||||
| `channelConfigs` | لا | `Record<string, object>` | بيانات تعريف تكوين القنوات المملوكة للبيان والمُدمجة في أسطح الاكتشاف والتحقق من الصحة قبل تحميل وقت التشغيل. |
|
||||
| `skills` | لا | `string[]` | أدلة Skills التي سيتم تحميلها، نسبةً إلى جذر المكون الإضافي. |
|
||||
| `name` | لا | `string` | اسم مقروء بشريًا للمكون الإضافي. |
|
||||
| `description` | لا | `string` | ملخص قصير يظهر في أسطح المكونات الإضافية. |
|
||||
| `version` | لا | `string` | إصدار معلوماتي للمكون الإضافي. |
|
||||
| `uiHints` | لا | `Record<string, object>` | تسميات واجهة المستخدم والعناصر النائبة وتلميحات الحساسية لحقول التكوين. |
|
||||
|
||||
## مرجع `providerAuthChoices`
|
||||
|
||||
يصف كل إدخال في `providerAuthChoices` خيارًا واحدًا للإعداد الأولي أو المصادقة.
|
||||
يقرأ OpenClaw هذا قبل تحميل وقت تشغيل المزود.
|
||||
يقرأ OpenClaw هذا قبل تحميل وقت تشغيل الموفر.
|
||||
|
||||
| الحقل | مطلوب | النوع | معناه |
|
||||
| --------------------- | ------ | ----------------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
||||
| `provider` | نعم | `string` | معرّف المزود الذي ينتمي إليه هذا الخيار. |
|
||||
| `method` | نعم | `string` | معرّف طريقة المصادقة المطلوب التوجيه إليها. |
|
||||
| `choiceId` | نعم | `string` | معرّف ثابت لخيار المصادقة تستخدمه عمليات الإعداد الأولي وCLI. |
|
||||
| `choiceLabel` | لا | `string` | تسمية موجهة للمستخدم. وإذا حُذفت، يعود OpenClaw إلى `choiceId`. |
|
||||
| `choiceHint` | لا | `string` | نص مساعد قصير للمحدد. |
|
||||
| `assistantPriority` | لا | `number` | القيم الأقل تُرتَّب أولًا في المحددات التفاعلية التي يقودها المساعد. |
|
||||
| `assistantVisibility` | لا | `"visible"` \| `"manual-only"` | إخفاء الخيار من محددات المساعد مع الاستمرار في السماح باختياره يدويًا عبر CLI. |
|
||||
| `deprecatedChoiceIds` | لا | `string[]` | معرّفات خيارات قديمة ينبغي إعادة توجيه المستخدمين منها إلى هذا الخيار البديل. |
|
||||
| `groupId` | لا | `string` | معرّف مجموعة اختياري لتجميع الخيارات المرتبطة. |
|
||||
| `groupLabel` | لا | `string` | تسمية موجهة للمستخدم لتلك المجموعة. |
|
||||
| `groupHint` | لا | `string` | نص مساعد قصير للمجموعة. |
|
||||
| `optionKey` | لا | `string` | مفتاح خيار داخلي لتدفقات المصادقة البسيطة ذات العلم الواحد. |
|
||||
| `cliFlag` | لا | `string` | اسم علم CLI، مثل `--openrouter-api-key`. |
|
||||
| `cliOption` | لا | `string` | الشكل الكامل لخيار CLI، مثل `--openrouter-api-key <key>`. |
|
||||
| `cliDescription` | لا | `string` | الوصف المستخدم في تعليمات CLI. |
|
||||
| `onboardingScopes` | لا | `Array<"text-inference" \| "image-generation">` | أسطح الإعداد الأولي التي ينبغي أن يظهر فيها هذا الخيار. وإذا حُذفت، تكون القيمة الافتراضية `["text-inference"]`. |
|
||||
| الحقل | مطلوب | النوع | ما الذي يعنيه |
|
||||
| --------------------- | ------ | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
|
||||
| `provider` | نعم | `string` | معرّف الموفر الذي ينتمي إليه هذا الخيار. |
|
||||
| `method` | نعم | `string` | معرّف أسلوب المصادقة الذي سيتم التوجيه إليه. |
|
||||
| `choiceId` | نعم | `string` | معرّف ثابت لخيار المصادقة يُستخدم بواسطة تدفقات الإعداد الأولي وCLI. |
|
||||
| `choiceLabel` | لا | `string` | تسمية موجهة للمستخدم. إذا حُذفت، يعود OpenClaw إلى `choiceId`. |
|
||||
| `choiceHint` | لا | `string` | نص مساعد قصير للمحدد. |
|
||||
| `assistantPriority` | لا | `number` | تُرتَّب القيم الأقل أولًا في المحددات التفاعلية التي يقودها المساعد. |
|
||||
| `assistantVisibility` | لا | `"visible"` \| `"manual-only"` | يُخفي الخيار من محددات المساعد مع الاستمرار في السماح بالاختيار اليدوي عبر CLI. |
|
||||
| `deprecatedChoiceIds` | لا | `string[]` | معرّفات خيارات قديمة ينبغي أن تعيد توجيه المستخدمين إلى هذا الخيار البديل. |
|
||||
| `groupId` | لا | `string` | معرّف مجموعة اختياري لتجميع الخيارات المرتبطة. |
|
||||
| `groupLabel` | لا | `string` | تسمية موجهة للمستخدم لتلك المجموعة. |
|
||||
| `groupHint` | لا | `string` | نص مساعد قصير للمجموعة. |
|
||||
| `optionKey` | لا | `string` | مفتاح خيار داخلي لتدفقات المصادقة البسيطة ذات العلم الواحد. |
|
||||
| `cliFlag` | لا | `string` | اسم علم CLI، مثل `--openrouter-api-key`. |
|
||||
| `cliOption` | لا | `string` | صيغة خيار CLI الكاملة، مثل `--openrouter-api-key <key>`. |
|
||||
| `cliDescription` | لا | `string` | الوصف المستخدم في تعليمات CLI. |
|
||||
| `onboardingScopes` | لا | `Array<"text-inference" \| "image-generation">` | أسطح الإعداد الأولي التي ينبغي أن يظهر فيها هذا الخيار. إذا حُذفت، فالقيمة الافتراضية هي `["text-inference"]`. |
|
||||
|
||||
## مرجع `commandAliases`
|
||||
|
||||
استخدم `commandAliases` عندما يملك plugin اسم أمر وقت تشغيل قد
|
||||
يضعه المستخدمون بالخطأ في `plugins.allow` أو يحاولون تشغيله كأمر CLI رئيسي. يستخدم OpenClaw
|
||||
هذه البيانات الوصفية للتشخيصات من دون استيراد كود وقت تشغيل plugin.
|
||||
استخدم `commandAliases` عندما يملك المكون الإضافي اسم أمر وقت تشغيل قد يضعه المستخدمون
|
||||
عن طريق الخطأ في `plugins.allow` أو يحاولون تشغيله كأمر CLI جذري. يستخدم OpenClaw
|
||||
هذه البيانات الوصفية للتشخيصات من دون استيراد كود وقت تشغيل المكون الإضافي.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -207,22 +214,93 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
| الحقل | مطلوب | النوع | معناه |
|
||||
| ------------ | ------ | ----------------- | ---------------------------------------------------------------------- |
|
||||
| `name` | نعم | `string` | اسم الأمر الذي ينتمي إلى هذا plugin. |
|
||||
| `kind` | لا | `"runtime-slash"` | يحدد الاسم المستعار على أنه أمر slash في الدردشة وليس أمر CLI رئيسيًا. |
|
||||
| `cliCommand` | لا | `string` | أمر CLI رئيسي ذي صلة لاقتراحه في عمليات CLI، إن وُجد. |
|
||||
| الحقل | مطلوب | النوع | ما الذي يعنيه |
|
||||
| ------------ | ------ | ------------------ | ---------------------------------------------------------------------------- |
|
||||
| `name` | نعم | `string` | اسم الأمر الذي ينتمي إلى هذا المكون الإضافي. |
|
||||
| `kind` | لا | `"runtime-slash"` | يحدد الاسم المستعار على أنه أمر slash في الدردشة بدلًا من أمر CLI جذري. |
|
||||
| `cliCommand` | لا | `string` | أمر CLI جذري ذي صلة يُقترح لعمليات CLI، إذا كان موجودًا. |
|
||||
|
||||
## مرجع `activation`
|
||||
|
||||
استخدم `activation` عندما يمكن للمكون الإضافي أن يعلن بتكلفة منخفضة عن أحداث control-plane
|
||||
التي ينبغي أن تفعّله لاحقًا.
|
||||
|
||||
هذه الكتلة هي بيانات تعريف فقط. وهي لا تسجل سلوك وقت التشغيل، ولا
|
||||
تحل محل `register(...)` أو `setupEntry` أو نقاط دخول وقت التشغيل/المكون الإضافي الأخرى.
|
||||
|
||||
```json
|
||||
{
|
||||
"activation": {
|
||||
"onProviders": ["openai"],
|
||||
"onCommands": ["models"],
|
||||
"onChannels": ["web"],
|
||||
"onRoutes": ["gateway-webhook"],
|
||||
"onCapabilities": ["provider", "tool"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| الحقل | مطلوب | النوع | ما الذي يعنيه |
|
||||
| ---------------- | ------ | ----------------------------------------------------- | ------------------------------------------------------------- |
|
||||
| `onProviders` | لا | `string[]` | معرّفات الموفرين التي ينبغي أن تفعّل هذا المكون الإضافي عند طلبها. |
|
||||
| `onCommands` | لا | `string[]` | معرّفات الأوامر التي ينبغي أن تفعّل هذا المكون الإضافي. |
|
||||
| `onChannels` | لا | `string[]` | معرّفات القنوات التي ينبغي أن تفعّل هذا المكون الإضافي. |
|
||||
| `onRoutes` | لا | `string[]` | أنواع المسارات التي ينبغي أن تفعّل هذا المكون الإضافي. |
|
||||
| `onCapabilities` | لا | `Array<"provider" \| "channel" \| "tool" \| "hook">` | تلميحات قدرات عامة تُستخدم في تخطيط التفعيل ضمن control-plane. |
|
||||
|
||||
## مرجع `setup`
|
||||
|
||||
استخدم `setup` عندما تحتاج أسطح الإعداد والتهيئة الأولية إلى بيانات تعريف منخفضة التكلفة
|
||||
مملوكة للمكون الإضافي قبل تحميل وقت التشغيل.
|
||||
|
||||
```json
|
||||
{
|
||||
"setup": {
|
||||
"providers": [
|
||||
{
|
||||
"id": "openai",
|
||||
"authMethods": ["api-key"],
|
||||
"envVars": ["OPENAI_API_KEY"]
|
||||
}
|
||||
],
|
||||
"cliBackends": ["openai-cli"],
|
||||
"configMigrations": ["legacy-openai-auth"],
|
||||
"requiresRuntime": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
يبقى `cliBackends` على المستوى الأعلى صالحًا ويستمر في وصف الواجهات الخلفية للاستدلال في CLI.
|
||||
أما `setup.cliBackends` فهو سطح الواصفات الخاص بالإعداد من أجل
|
||||
تدفقات control-plane/الإعداد التي ينبغي أن تظل بيانات تعريف فقط.
|
||||
|
||||
### مرجع `setup.providers`
|
||||
|
||||
| الحقل | مطلوب | النوع | ما الذي يعنيه |
|
||||
| ------------- | ------ | ----------- | ------------------------------------------------------------------------------------ |
|
||||
| `id` | نعم | `string` | معرّف الموفر الذي يُعرَض أثناء الإعداد أو التهيئة الأولية. |
|
||||
| `authMethods` | لا | `string[]` | معرّفات أساليب الإعداد/المصادقة التي يدعمها هذا الموفر من دون تحميل وقت التشغيل الكامل. |
|
||||
| `envVars` | لا | `string[]` | متغيرات البيئة التي يمكن لأسطح الإعداد/الحالة العامة التحقق منها قبل تحميل وقت تشغيل المكون الإضافي. |
|
||||
|
||||
### حقول `setup`
|
||||
|
||||
| الحقل | مطلوب | النوع | ما الذي يعنيه |
|
||||
| ------------------ | ------ | ----------- | ---------------------------------------------------------------------------- |
|
||||
| `providers` | لا | `object[]` | واصفات إعداد الموفر المعروضة أثناء الإعداد والتهيئة الأولية. |
|
||||
| `cliBackends` | لا | `string[]` | معرّفات الواجهات الخلفية المتاحة وقت الإعداد من دون تفعيل وقت التشغيل الكامل. |
|
||||
| `configMigrations` | لا | `string[]` | معرّفات ترحيل التكوين المملوكة لسطح إعداد هذا المكون الإضافي. |
|
||||
| `requiresRuntime` | لا | `boolean` | ما إذا كان الإعداد لا يزال يحتاج إلى تنفيذ وقت تشغيل المكون الإضافي بعد البحث عن الواصفات. |
|
||||
|
||||
## مرجع `uiHints`
|
||||
|
||||
`uiHints` عبارة عن خريطة من أسماء حقول الإعدادات إلى تلميحات عرض صغيرة.
|
||||
`uiHints` هو خريطة من أسماء حقول التكوين إلى تلميحات عرض صغيرة.
|
||||
|
||||
```json
|
||||
{
|
||||
"uiHints": {
|
||||
"apiKey": {
|
||||
"label": "مفتاح API",
|
||||
"help": "يُستخدم لطلبات OpenRouter",
|
||||
"label": "API key",
|
||||
"help": "Used for OpenRouter requests",
|
||||
"placeholder": "sk-or-v1-...",
|
||||
"sensitive": true
|
||||
}
|
||||
@ -232,19 +310,19 @@ x-i18n:
|
||||
|
||||
يمكن أن يتضمن كل تلميح حقل ما يلي:
|
||||
|
||||
| الحقل | النوع | معناه |
|
||||
| ------------- | ---------- | -------------------------------------- |
|
||||
| `label` | `string` | تسمية الحقل الموجهة للمستخدم. |
|
||||
| `help` | `string` | نص مساعد قصير. |
|
||||
| `tags` | `string[]` | وسوم UI اختيارية. |
|
||||
| `advanced` | `boolean` | يحدد الحقل على أنه متقدم. |
|
||||
| `sensitive` | `boolean` | يحدد الحقل على أنه سري أو حساس. |
|
||||
| `placeholder` | `string` | نص العنصر النائب لمدخلات النماذج. |
|
||||
| الحقل | النوع | ما الذي يعنيه |
|
||||
| ------------- | ----------- | -------------------------------------- |
|
||||
| `label` | `string` | تسمية الحقل الموجهة للمستخدم. |
|
||||
| `help` | `string` | نص مساعد قصير. |
|
||||
| `tags` | `string[]` | وسوم واجهة مستخدم اختيارية. |
|
||||
| `advanced` | `boolean` | يحدد الحقل على أنه متقدم. |
|
||||
| `sensitive` | `boolean` | يحدد الحقل على أنه سري أو حساس. |
|
||||
| `placeholder` | `string` | نص العنصر النائب لمدخلات النماذج. |
|
||||
|
||||
## مرجع `contracts`
|
||||
|
||||
استخدم `contracts` فقط لبيانات ملكية الإمكانات الثابتة التي يستطيع OpenClaw
|
||||
قراءتها من دون استيراد وقت تشغيل plugin.
|
||||
استخدم `contracts` فقط لبيانات تعريف ملكية القدرات الثابتة التي يمكن لـ OpenClaw
|
||||
قراءتها من دون استيراد وقت تشغيل المكون الإضافي.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -264,21 +342,21 @@ x-i18n:
|
||||
|
||||
كل قائمة اختيارية:
|
||||
|
||||
| الحقل | النوع | معناه |
|
||||
| -------------------------------- | ---------- | --------------------------------------------------------- |
|
||||
| `speechProviders` | `string[]` | معرّفات مزودي الكلام التي يملكها هذا plugin. |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | معرّفات مزودي النسخ الفوري التي يملكها هذا plugin. |
|
||||
| `realtimeVoiceProviders` | `string[]` | معرّفات مزودي الصوت الفوري التي يملكها هذا plugin. |
|
||||
| `mediaUnderstandingProviders` | `string[]` | معرّفات مزودي فهم الوسائط التي يملكها هذا plugin. |
|
||||
| `imageGenerationProviders` | `string[]` | معرّفات مزودي توليد الصور التي يملكها هذا plugin. |
|
||||
| `videoGenerationProviders` | `string[]` | معرّفات مزودي توليد الفيديو التي يملكها هذا plugin. |
|
||||
| `webFetchProviders` | `string[]` | معرّفات مزودي web-fetch التي يملكها هذا plugin. |
|
||||
| `webSearchProviders` | `string[]` | معرّفات مزودي web search التي يملكها هذا plugin. |
|
||||
| `tools` | `string[]` | أسماء أدوات الوكيل التي يملكها هذا plugin لفحوصات العقود المجمعة. |
|
||||
| الحقل | النوع | ما الذي يعنيه |
|
||||
| -------------------------------- | ----------- | -------------------------------------------------------------- |
|
||||
| `speechProviders` | `string[]` | معرّفات موفري speech التي يملكها هذا المكون الإضافي. |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | معرّفات موفري realtime transcription التي يملكها هذا المكون الإضافي. |
|
||||
| `realtimeVoiceProviders` | `string[]` | معرّفات موفري realtime voice التي يملكها هذا المكون الإضافي. |
|
||||
| `mediaUnderstandingProviders` | `string[]` | معرّفات موفري media-understanding التي يملكها هذا المكون الإضافي. |
|
||||
| `imageGenerationProviders` | `string[]` | معرّفات موفري image-generation التي يملكها هذا المكون الإضافي. |
|
||||
| `videoGenerationProviders` | `string[]` | معرّفات موفري video-generation التي يملكها هذا المكون الإضافي. |
|
||||
| `webFetchProviders` | `string[]` | معرّفات موفري web-fetch التي يملكها هذا المكون الإضافي. |
|
||||
| `webSearchProviders` | `string[]` | معرّفات موفري web search التي يملكها هذا المكون الإضافي. |
|
||||
| `tools` | `string[]` | أسماء أدوات الوكيل التي يملكها هذا المكون الإضافي من أجل فحوصات العقد المضمّنة. |
|
||||
|
||||
## مرجع `channelConfigs`
|
||||
|
||||
استخدم `channelConfigs` عندما يحتاج plugin قناة إلى بيانات إعدادات بسيطة قبل
|
||||
استخدم `channelConfigs` عندما يحتاج مكون إضافي للقنوات إلى بيانات تعريف تكوين منخفضة التكلفة قبل
|
||||
تحميل وقت التشغيل.
|
||||
|
||||
```json
|
||||
@ -294,33 +372,33 @@ x-i18n:
|
||||
},
|
||||
"uiHints": {
|
||||
"homeserverUrl": {
|
||||
"label": "عنوان URL للخادم المنزلي",
|
||||
"label": "Homeserver URL",
|
||||
"placeholder": "https://matrix.example.com"
|
||||
}
|
||||
},
|
||||
"label": "Matrix",
|
||||
"description": "اتصال Matrix homeserver",
|
||||
"description": "Matrix homeserver connection",
|
||||
"preferOver": ["matrix-legacy"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
يمكن أن يتضمن كل إدخال قناة ما يلي:
|
||||
يمكن أن يتضمن كل إدخال قناة:
|
||||
|
||||
| الحقل | النوع | معناه |
|
||||
| ------------- | ------------------------ | ------------------------------------------------------------------------------------ |
|
||||
| `schema` | `object` | JSON Schema لـ `channels.<id>`. وهو مطلوب لكل إدخال إعدادات قناة مُعلن عنه. |
|
||||
| `uiHints` | `Record<string, object>` | تسميات UI وعناصر نائبة وتلميحات حساسية اختيارية لهذا القسم من إعدادات القناة. |
|
||||
| `label` | `string` | تسمية القناة المدمجة في أسطح المحدد والفحص عندما لا تكون بيانات وقت التشغيل جاهزة. |
|
||||
| `description` | `string` | وصف قصير للقناة لأسطح الفحص والفهرس. |
|
||||
| `preferOver` | `string[]` | معرّفات plugin قديمة أو أقل أولوية ينبغي أن تتفوق عليها هذه القناة في أسطح الاختيار. |
|
||||
| الحقل | النوع | ما الذي يعنيه |
|
||||
| ------------- | ------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| `schema` | `object` | مخطط JSON لـ `channels.<id>`. وهو مطلوب لكل إدخال تكوين قناة مُعلن. |
|
||||
| `uiHints` | `Record<string, object>` | تسميات واجهة مستخدم/عناصر نائبة/تلميحات حساسية اختيارية لذلك القسم من تكوين القناة. |
|
||||
| `label` | `string` | تسمية القناة المدمجة في أسطح المحدد والفحص عندما لا تكون بيانات وقت التشغيل الوصفية جاهزة. |
|
||||
| `description` | `string` | وصف قصير للقناة لأسطح الفحص والفهرس. |
|
||||
| `preferOver` | `string[]` | معرّفات مكونات إضافية قديمة أو أقل أولوية ينبغي أن تتفوق عليها هذه القناة في أسطح الاختيار. |
|
||||
|
||||
## مرجع `modelSupport`
|
||||
|
||||
استخدم `modelSupport` عندما ينبغي لـ OpenClaw استنتاج plugin المزود الخاص بك من
|
||||
معرّفات النماذج المختصرة مثل `gpt-5.4` أو `claude-sonnet-4.6` قبل تحميل
|
||||
وقت تشغيل plugin.
|
||||
استخدم `modelSupport` عندما ينبغي لـ OpenClaw أن يستنتج مكون الموفر الإضافي الخاص بك من
|
||||
معرّفات النماذج المختصرة مثل `gpt-5.4` أو `claude-sonnet-4.6` قبل تحميل وقت تشغيل
|
||||
المكون الإضافي.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -333,74 +411,73 @@ x-i18n:
|
||||
|
||||
يطبق OpenClaw ترتيب الأولوية التالي:
|
||||
|
||||
- تستخدم مراجع `provider/model` الصريحة بيانات البيان الوصفية `providers` الخاصة بالمالك
|
||||
- تستخدم مراجع `provider/model` الصريحة بيانات تعريف `providers` المملوكة في البيان
|
||||
- تتفوق `modelPatterns` على `modelPrefixes`
|
||||
- إذا طابق كل من plugin غير مجمّع وplugin مجمّع، فإن plugin
|
||||
غير المجمّع يفوز
|
||||
- يتم تجاهل أي غموض متبقٍ إلى أن يحدد المستخدم أو الإعدادات مزودًا
|
||||
- إذا طابق كل من مكون إضافي غير مضمّن ومكون إضافي مضمّن، فإن المكون الإضافي
|
||||
غير المضمّن يفوز
|
||||
- يُتجاهل أي غموض متبقٍ حتى يحدد المستخدم أو التكوين موفرًا
|
||||
|
||||
الحقول:
|
||||
|
||||
| الحقل | النوع | معناه |
|
||||
| --------------- | ---------- | -------------------------------------------------------------------------- |
|
||||
| `modelPrefixes` | `string[]` | بادئات تتم مطابقتها باستخدام `startsWith` مع معرّفات النماذج المختصرة. |
|
||||
| `modelPatterns` | `string[]` | مصادر Regex تتم مطابقتها مع معرّفات النماذج المختصرة بعد إزالة لاحقة الملف الشخصي. |
|
||||
| الحقل | النوع | ما الذي يعنيه |
|
||||
| --------------- | ----------- | -------------------------------------------------------------------------------- |
|
||||
| `modelPrefixes` | `string[]` | بادئات تُطابق باستخدام `startsWith` مع معرّفات النماذج المختصرة. |
|
||||
| `modelPatterns` | `string[]` | مصادر Regex تُطابق مع معرّفات النماذج المختصرة بعد إزالة لاحقة ملف التعريف. |
|
||||
|
||||
أصبحت مفاتيح الإمكانات القديمة ذات المستوى الأعلى مهملة. استخدم `openclaw doctor --fix`
|
||||
لنقل `speechProviders` و`realtimeTranscriptionProviders`،
|
||||
مفاتيح القدرات القديمة ذات المستوى الأعلى أصبحت مهملة. استخدم `openclaw doctor --fix` من أجل
|
||||
نقل `speechProviders` و`realtimeTranscriptionProviders`،
|
||||
و`realtimeVoiceProviders` و`mediaUnderstandingProviders`،
|
||||
و`imageGenerationProviders` و`videoGenerationProviders`،
|
||||
و`webFetchProviders` و`webSearchProviders` إلى `contracts`؛
|
||||
إذ لم يعد تحميل البيان العادي يعامل تلك الحقول ذات المستوى الأعلى على أنها
|
||||
ملكية للإمكانات.
|
||||
و`webFetchProviders` و`webSearchProviders` إلى `contracts`؛ إذ لم يعد
|
||||
تحميل البيان العادي يتعامل مع تلك الحقول ذات المستوى الأعلى على أنها
|
||||
ملكية قدرات.
|
||||
|
||||
## البيان مقابل `package.json`
|
||||
|
||||
يخدم الملفان غرضين مختلفين:
|
||||
يؤدي الملفان وظيفتين مختلفتين:
|
||||
|
||||
| الملف | استخدمه من أجل |
|
||||
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.plugin.json` | الاكتشاف، والتحقق من صحة الإعدادات، وبيانات خيارات المصادقة، وتلميحات UI التي يجب أن تكون موجودة قبل تشغيل كود plugin |
|
||||
| `package.json` | بيانات npm الوصفية، وتثبيت التبعيات، وكتلة `openclaw` المستخدمة لنقاط الإدخال، أو بوابات التثبيت، أو الإعداد، أو بيانات الفهرس |
|
||||
| الملف | استخدمه من أجل |
|
||||
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `openclaw.plugin.json` | الاكتشاف، والتحقق من صحة التكوين، وبيانات تعريف خيارات المصادقة، وتلميحات واجهة المستخدم التي يجب أن تكون موجودة قبل تشغيل كود المكون الإضافي |
|
||||
| `package.json` | بيانات npm الوصفية، وتثبيت التبعيات، وكتلة `openclaw` المستخدمة لنقاط الدخول، وحظر التثبيت، والإعداد، أو بيانات تعريف الفهرس |
|
||||
|
||||
إذا لم تكن متأكدًا من مكان انتماء جزء من البيانات الوصفية، فاستخدم هذه القاعدة:
|
||||
إذا لم تكن متأكدًا من مكان وضع جزء من البيانات الوصفية، فاستخدم هذه القاعدة:
|
||||
|
||||
- إذا كان يجب على OpenClaw معرفته قبل تحميل كود plugin، فضعه في `openclaw.plugin.json`
|
||||
- إذا كان يتعلق بالتغليف، أو ملفات الإدخال، أو سلوك تثبيت npm، فضعه في `package.json`
|
||||
- إذا كان يجب على OpenClaw معرفته قبل تحميل كود المكون الإضافي، فضعه في `openclaw.plugin.json`
|
||||
- إذا كان متعلقًا بالتغليف، أو ملفات الدخول، أو سلوك تثبيت npm، فضعه في `package.json`
|
||||
|
||||
### حقول `package.json` التي تؤثر في الاكتشاف
|
||||
|
||||
توجد بعض بيانات plugin الوصفية المقصودة قبل وقت التشغيل في `package.json` ضمن
|
||||
توجد بعض بيانات تعريف المكونات الإضافية قبل وقت التشغيل عمدًا في `package.json` ضمن
|
||||
كتلة `openclaw` بدلًا من `openclaw.plugin.json`.
|
||||
|
||||
أمثلة مهمة:
|
||||
|
||||
| الحقل | معناه |
|
||||
| الحقل | ما الذي يعنيه |
|
||||
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.extensions` | يعرّف نقاط إدخال plugin الأصلية. |
|
||||
| `openclaw.setupEntry` | نقطة إدخال خفيفة مخصصة للإعداد فقط وتُستخدم أثناء الإعداد الأولي وبدء تشغيل القنوات المؤجل. |
|
||||
| `openclaw.channel` | بيانات وصفية خفيفة لفهرس القنوات مثل التسميات، ومسارات الوثائق، والأسماء المستعارة، ونصوص الاختيار. |
|
||||
| `openclaw.channel.configuredState` | بيانات وصفية خفيفة لفاحص الحالة المهيأة يمكنها الإجابة عن سؤال "هل يوجد إعداد قائم يعتمد فقط على البيئة؟" من دون تحميل وقت تشغيل القناة الكامل. |
|
||||
| `openclaw.channel.persistedAuthState` | بيانات وصفية خفيفة لفاحص المصادقة المحفوظة يمكنها الإجابة عن سؤال "هل يوجد أي تسجيل دخول قائم بالفعل؟" من دون تحميل وقت تشغيل القناة الكامل. |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | تلميحات التثبيت/التحديث لـ plugins المجمعة والمنشورة خارجيًا. |
|
||||
| `openclaw.install.defaultChoice` | مسار التثبيت المفضل عندما تتوفر عدة مصادر للتثبيت. |
|
||||
| `openclaw.install.minHostVersion` | الحد الأدنى لإصدار مضيف OpenClaw المدعوم، باستخدام حد أدنى semver مثل `>=2026.3.22`. |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | يسمح بمسار استرداد ضيق لإعادة تثبيت plugin مجمّع عندما تكون الإعدادات غير صالحة. |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | يتيح تحميل أسطح القنوات الخاصة بالإعداد فقط قبل plugin القناة الكامل أثناء بدء التشغيل. |
|
||||
| `openclaw.extensions` | يعرّف نقاط دخول المكونات الإضافية الأصلية. |
|
||||
| `openclaw.setupEntry` | نقطة دخول خفيفة مخصصة للإعداد فقط تُستخدم أثناء التهيئة الأولية وبدء تشغيل القنوات المؤجل. |
|
||||
| `openclaw.channel` | بيانات تعريف خفيفة لفهرس القنوات مثل التسميات، ومسارات الوثائق، والأسماء المستعارة، ونصوص الاختيار. |
|
||||
| `openclaw.channel.configuredState` | بيانات تعريف خفيفة لفاحص حالة التكوين يمكنها الإجابة عن سؤال "هل يوجد إعداد يعتمد على env فقط بالفعل؟" من دون تحميل وقت تشغيل القناة الكامل. |
|
||||
| `openclaw.channel.persistedAuthState` | بيانات تعريف خفيفة لفاحص المصادقة المحفوظة يمكنها الإجابة عن سؤال "هل يوجد أي تسجيل دخول بالفعل؟" من دون تحميل وقت تشغيل القناة الكامل. |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | تلميحات التثبيت/التحديث للمكونات الإضافية المضمّنة والمنشورة خارجيًا. |
|
||||
| `openclaw.install.defaultChoice` | مسار التثبيت المفضل عند توفر عدة مصادر تثبيت. |
|
||||
| `openclaw.install.minHostVersion` | الحد الأدنى المدعوم من إصدار مضيف OpenClaw، باستخدام حد أدنى semver مثل `>=2026.3.22`. |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | يسمح بمسار استرداد ضيق لإعادة تثبيت المكونات الإضافية المضمّنة عندما يكون التكوين غير صالح. |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | يتيح تحميل أسطح القنوات المخصصة للإعداد فقط قبل المكون الإضافي الكامل للقناة أثناء بدء التشغيل. |
|
||||
|
||||
يتم فرض `openclaw.install.minHostVersion` أثناء التثبيت وتحميل
|
||||
سجل البيانات. وتُرفض القيم غير الصالحة؛ أما القيم الأحدث ولكن الصالحة فتجعل
|
||||
plugin يُتخطى على المضيفين الأقدم.
|
||||
يُفرض `openclaw.install.minHostVersion` أثناء التثبيت وتحميل سجل
|
||||
البيان. تُرفض القيم غير الصالحة؛ أما القيم الأحدث ولكن الصالحة فتتجاوز
|
||||
المكون الإضافي على المضيفين الأقدم.
|
||||
|
||||
إن `openclaw.install.allowInvalidConfigRecovery` ضيق النطاق عمدًا. فهو
|
||||
لا يجعل الإعدادات المعطلة العشوائية قابلة للتثبيت. واليوم لا يسمح إلا لعمليات التثبيت
|
||||
بالتعافي من إخفاقات ترقية محددة في pluginات المجمعة القديمة، مثل مسار plugin مجمّع
|
||||
مفقود أو إدخال `channels.<id>` قديم لذلك
|
||||
plugin المجمّع نفسه. أما أخطاء الإعدادات غير المرتبطة فما تزال تمنع التثبيت وتوجه المشغلين
|
||||
إلى `openclaw doctor --fix`.
|
||||
لا يجعل التكوينات المعطوبة التعسفية قابلة للتثبيت. في الوقت الحالي، لا يسمح إلا لتدفقات التثبيت
|
||||
بالتعافي من حالات فشل معينة قديمة لترقية المكونات الإضافية المضمّنة، مثل
|
||||
مسار مكون إضافي مضمّن مفقود أو إدخال `channels.<id>` قديم لذلك
|
||||
المكون الإضافي المضمّن نفسه. وما تزال أخطاء التكوين غير المرتبطة تمنع التثبيت وتوجه
|
||||
المشغلين إلى `openclaw doctor --fix`.
|
||||
|
||||
إن `openclaw.channel.persistedAuthState` هو بيانات وصفية للحزمة لوحدة
|
||||
فاحص صغيرة:
|
||||
إن `openclaw.channel.persistedAuthState` هو بيانات تعريف الحزمة لوحدة فاحص صغيرة:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -416,12 +493,13 @@ plugin المجمّع نفسه. أما أخطاء الإعدادات غير ال
|
||||
}
|
||||
```
|
||||
|
||||
استخدمه عندما تحتاج تدفقات الإعداد أو doctor أو الحالة المهيأة إلى
|
||||
فحص مصادقة بسيط بنعم/لا قبل تحميل plugin القناة الكامل. يجب أن يكون التصدير المستهدف
|
||||
دالة صغيرة تقرأ الحالة المحفوظة فقط؛ ولا توجهه عبر شريط وقت تشغيل القناة الكامل.
|
||||
استخدمه عندما تحتاج تدفقات الإعداد أو doctor أو حالة التكوين إلى
|
||||
تحقق رخيص بنعم/لا من المصادقة قبل تحميل المكون الإضافي الكامل للقناة. يجب أن يكون
|
||||
التصدير الهدف دالة صغيرة تقرأ الحالة المحفوظة فقط؛ لا توجهه عبر شريط
|
||||
وقت تشغيل القناة الكامل.
|
||||
|
||||
يتبع `openclaw.channel.configuredState` الشكل نفسه لفحوصات الحالة المهيأة
|
||||
البسيطة المعتمدة فقط على البيئة:
|
||||
يتبع `openclaw.channel.configuredState` البنية نفسها من أجل فحوصات حالة التكوين
|
||||
الرخيصة المعتمدة على env فقط:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -437,65 +515,65 @@ plugin المجمّع نفسه. أما أخطاء الإعدادات غير ال
|
||||
}
|
||||
```
|
||||
|
||||
استخدمه عندما تستطيع قناة ما تحديد الحالة المهيأة من البيئة أو من مدخلات صغيرة أخرى
|
||||
غير مرتبطة بوقت التشغيل. وإذا كان الفحص يحتاج إلى حل كامل للإعدادات أو إلى
|
||||
وقت تشغيل القناة الفعلي، فأبقِ هذا المنطق في hook
|
||||
`config.hasConfiguredState` الخاصة بـ plugin بدلًا من ذلك.
|
||||
استخدمه عندما تتمكن قناة من الإجابة عن حالة التكوين من env أو من مدخلات صغيرة
|
||||
أخرى غير وقت التشغيل. وإذا كان الفحص يحتاج إلى حل التكوين الكامل أو إلى
|
||||
وقت تشغيل القناة الحقيقي، فأبقِ هذا المنطق في hook
|
||||
`config.hasConfiguredState` الخاص بالمكون الإضافي بدلًا من ذلك.
|
||||
|
||||
## متطلبات JSON Schema
|
||||
## متطلبات مخطط JSON
|
||||
|
||||
- **يجب على كل plugin أن يوفّر JSON Schema**، حتى إذا كان لا يقبل أي إعدادات.
|
||||
- يُقبل مخطط فارغ (مثلًا `{ "type": "object", "additionalProperties": false }`).
|
||||
- يتم التحقق من المخططات وقت قراءة/كتابة الإعدادات، وليس وقت التشغيل.
|
||||
- **يجب على كل مكون إضافي أن يتضمن مخطط JSON**، حتى إذا كان لا يقبل أي تكوين.
|
||||
- يُقبل مخطط فارغ (على سبيل المثال، `{ "type": "object", "additionalProperties": false }`).
|
||||
- يتم التحقق من المخططات عند قراءة/كتابة التكوين، وليس أثناء وقت التشغيل.
|
||||
|
||||
## سلوك التحقق
|
||||
|
||||
- تُعد مفاتيح `channels.*` غير المعروفة **أخطاء**، إلا إذا كان معرّف القناة مُعلنًا من خلال
|
||||
بيان plugin.
|
||||
- تُعد مفاتيح `channels.*` غير المعروفة **أخطاء**، ما لم يكن معرّف القناة معلنًا بواسطة
|
||||
بيان مكون إضافي.
|
||||
- يجب أن تشير `plugins.entries.<id>` و`plugins.allow` و`plugins.deny` و`plugins.slots.*`
|
||||
إلى معرّفات plugin **قابلة للاكتشاف**. وتُعد المعرّفات غير المعروفة **أخطاء**.
|
||||
- إذا كان plugin مثبتًا ولكن بيانه أو مخططه معطّلًا أو مفقودًا،
|
||||
يفشل التحقق ويبلّغ Doctor عن خطأ plugin.
|
||||
- إذا وُجدت إعدادات plugin لكن plugin **معطّل**، فسيتم الاحتفاظ بالإعدادات
|
||||
وسيظهر **تحذير** في Doctor + السجلات.
|
||||
إلى معرّفات مكونات إضافية **قابلة للاكتشاف**. تُعد المعرّفات غير المعروفة **أخطاء**.
|
||||
- إذا كان المكون الإضافي مثبتًا لكن بيانه أو مخططه معطوبًا أو مفقودًا،
|
||||
يفشل التحقق ويبلغ Doctor عن خطأ المكون الإضافي.
|
||||
- إذا كان تكوين المكون الإضافي موجودًا لكن المكون الإضافي **معطل**، فيُحتفظ بالتكوين
|
||||
وتظهر **تحذيرات** في Doctor + السجلات.
|
||||
|
||||
راجع [مرجع الإعدادات](/ar/gateway/configuration) للحصول على مخطط `plugins.*` الكامل.
|
||||
راجع [مرجع التكوين](/ar/gateway/configuration) للاطلاع على مخطط `plugins.*` الكامل.
|
||||
|
||||
## ملاحظات
|
||||
|
||||
- البيان **مطلوب لـ plugins OpenClaw الأصلية**، بما في ذلك التحميلات المحلية من نظام الملفات.
|
||||
- ما يزال وقت التشغيل يحمّل وحدة plugin بشكل منفصل؛ والبيان مخصص فقط لـ
|
||||
الاكتشاف + التحقق.
|
||||
- تُحلل البيانات الأصلية باستخدام JSON5، لذلك تُقبل التعليقات والفواصل اللاحقة
|
||||
والمفاتيح غير المقتبسة ما دامت القيمة النهائية لا تزال كائنًا.
|
||||
- لا يقرأ محمل البيان إلا حقول البيان الموثقة. تجنب إضافة
|
||||
- البيان **مطلوب للمكونات الإضافية الأصلية في OpenClaw**، بما في ذلك التحميلات المحلية من نظام الملفات.
|
||||
- ما يزال وقت التشغيل يحمّل وحدة المكون الإضافي بشكل منفصل؛ البيان مخصص فقط
|
||||
للاكتشاف + التحقق.
|
||||
- تُحلَّل البيانات الأصلية باستخدام JSON5، لذا تُقبل التعليقات والفواصل اللاحقة والمفاتيح
|
||||
غير الموضوعة بين علامتي اقتباس طالما أن القيمة النهائية لا تزال كائنًا.
|
||||
- لا يقرأ محمّل البيان إلا حقول البيان الموثقة. تجنب إضافة
|
||||
مفاتيح مخصصة ذات مستوى أعلى هنا.
|
||||
- `providerAuthEnvVars` هو مسار البيانات الوصفية البسيط لفحوصات المصادقة، والتحقق من
|
||||
علامات env، وأسحط مصادقة المزود المماثلة التي لا ينبغي أن تشغّل وقت تشغيل plugin
|
||||
فقط لفحص أسماء env.
|
||||
- يتيح `providerAuthAliases` لمتغيرات المزود إعادة استخدام مصادقة مزود آخر
|
||||
env vars وملفات تعريف المصادقة والمصادقة المعتمدة على الإعدادات وخيار الإعداد الأولي لمفتاح API
|
||||
من دون ترميز هذه العلاقة بشكل ثابت داخل النواة.
|
||||
- `channelEnvVars` هو مسار البيانات الوصفية البسيط للرجوع إلى shell-env، ولمطالبات الإعداد،
|
||||
وأسحط القنوات المماثلة التي لا ينبغي أن تشغّل وقت تشغيل plugin
|
||||
فقط لفحص أسماء env.
|
||||
- `providerAuthChoices` هو مسار البيانات الوصفية البسيط لمحددات خيارات المصادقة،
|
||||
وحل `--auth-choice`، وربط المزود المفضل، وتسجيل أعلام CLI البسيطة في الإعداد الأولي
|
||||
قبل تحميل وقت تشغيل المزود. أما بيانات المعالج الإرشادي وقت التشغيل
|
||||
التي تتطلب كود المزود، فراجع
|
||||
[hooks وقت تشغيل المزود](/ar/plugins/architecture#provider-runtime-hooks).
|
||||
- تُختار أنواع plugin الحصرية من خلال `plugins.slots.*`.
|
||||
- يتم اختيار `kind: "memory"` بواسطة `plugins.slots.memory`.
|
||||
- يتم اختيار `kind: "context-engine"` بواسطة `plugins.slots.contextEngine`
|
||||
- `providerAuthEnvVars` هو مسار البيانات الوصفية الرخيص لفحوصات المصادقة، والتحقق من علامات env،
|
||||
وأسُطح مصادقة الموفر المشابهة التي يجب ألا تشغّل وقت تشغيل المكون الإضافي
|
||||
لمجرد فحص أسماء env.
|
||||
- يسمح `providerAuthAliases` لمتغيرات الموفر بإعادة استخدام متغيرات البيئة الخاصة بمصادقة موفر آخر،
|
||||
وملفات تعريف المصادقة، والمصادقة المستندة إلى التكوين، وخيار الإعداد الأولي
|
||||
لمفتاح API من دون ترميز ثابت لهذه العلاقة في النواة.
|
||||
- `channelEnvVars` هو مسار البيانات الوصفية الرخيص للرجوع إلى shell-env، ومطالبات الإعداد،
|
||||
وأسُطح القنوات المشابهة التي يجب ألا تشغّل وقت تشغيل المكون الإضافي
|
||||
لمجرد فحص أسماء env.
|
||||
- `providerAuthChoices` هو مسار البيانات الوصفية الرخيص لمحددات خيارات المصادقة،
|
||||
وحل `--auth-choice`، وربط الموفر المفضل، وتسجيل أعلام CLI البسيطة في الإعداد الأولي
|
||||
قبل تحميل وقت تشغيل الموفر. أما بالنسبة إلى بيانات تعريف المعالج التفاعلي في وقت التشغيل
|
||||
التي تتطلب كود الموفر، فراجع
|
||||
[hooks وقت تشغيل الموفر](/ar/plugins/architecture#provider-runtime-hooks).
|
||||
- تُختار أنواع المكونات الإضافية الحصرية عبر `plugins.slots.*`.
|
||||
- يُختار `kind: "memory"` بواسطة `plugins.slots.memory`.
|
||||
- يُختار `kind: "context-engine"` بواسطة `plugins.slots.contextEngine`
|
||||
(الافتراضي: `legacy` المدمج).
|
||||
- يمكن حذف `channels` و`providers` و`cliBackends` و`skills` عندما لا
|
||||
يحتاجها plugin.
|
||||
- إذا كان plugin الخاص بك يعتمد على وحدات أصلية، فوثّق خطوات البناء وأي
|
||||
متطلبات لقائمة السماح الخاصة بمدير الحزم (مثل pnpm `allow-build-scripts`
|
||||
يحتاجها المكون الإضافي.
|
||||
- إذا كان المكون الإضافي يعتمد على وحدات أصلية، فوثّق خطوات البناء وأي
|
||||
متطلبات قائمة سماح لمدير الحزم (على سبيل المثال، pnpm `allow-build-scripts`
|
||||
- `pnpm rebuild <package>`).
|
||||
|
||||
## ذو صلة
|
||||
|
||||
- [بناء Plugins](/ar/plugins/building-plugins) — البدء باستخدام plugins
|
||||
- [بنية Plugins](/ar/plugins/architecture) — البنية الداخلية
|
||||
- [بناء المكونات الإضافية](/ar/plugins/building-plugins) — البدء باستخدام المكونات الإضافية
|
||||
- [بنية المكونات الإضافية](/ar/plugins/architecture) — البنية الداخلية
|
||||
- [نظرة عامة على SDK](/ar/plugins/sdk-overview) — مرجع Plugin SDK
|
||||
|
||||
60
docs/ar/reference/rich-output-protocol.md
Normal file
60
docs/ar/reference/rich-output-protocol.md
Normal file
@ -0,0 +1,60 @@
|
||||
---
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T15:15:51Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 2a8884fc2c304bf96d4675f0c1d1ff781d6dc1ae8c49d92ce08040c9c7709035
|
||||
source_path: reference/rich-output-protocol.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# بروتوكول الإخراج المنسق
|
||||
|
||||
يمكن أن يتضمن إخراج المساعد مجموعة صغيرة من توجيهات التسليم/العرض:
|
||||
|
||||
- `MEDIA:` لتسليم المرفقات
|
||||
- `[[audio_as_voice]]` لتلميحات العرض الصوتي
|
||||
- `[[reply_to_current]]` / `[[reply_to:<id>]]` لبيانات الرد الوصفية
|
||||
- `[embed ...]` للعرض المنسق في واجهة التحكم
|
||||
|
||||
هذه التوجيهات منفصلة. تظل وسوم `MEDIA:` والرد/الصوت بيانات وصفية للتسليم؛ أما `[embed ...]` فهو مسار العرض المنسق الخاص بالويب فقط.
|
||||
|
||||
## `[embed ...]`
|
||||
|
||||
`[embed ...]` هو صياغة العرض المنسق الوحيدة الموجهة للوكلاء في واجهة التحكم.
|
||||
|
||||
مثال ذاتي الإغلاق:
|
||||
|
||||
```text
|
||||
[embed ref="cv_123" title="Status" /]
|
||||
```
|
||||
|
||||
القواعد:
|
||||
|
||||
- لم يعد `[view ...]` صالحًا للمخرجات الجديدة.
|
||||
- تُعرض الشيفرات المختصرة للتضمين في سطح رسالة المساعد فقط.
|
||||
- لا تُعرض إلا التضمينات المدعومة بعنوان URL. استخدم `ref="..."` أو `url="..."`.
|
||||
- لا يتم عرض الشيفرات المختصرة المضمنة بصيغة HTML المضمنة على شكل كتلة.
|
||||
- تقوم واجهة الويب بإزالة الشيفرة المختصرة من النص المرئي وتعرض التضمين ضمنيًا.
|
||||
- `MEDIA:` ليس اسمًا بديلًا للتضمين، ويجب عدم استخدامه لعرض التضمين المنسق.
|
||||
|
||||
## شكل العرض المخزن
|
||||
|
||||
كتلة محتوى المساعد المُطبَّعة/المخزنة هي عنصر `canvas` منظم:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "canvas",
|
||||
"preview": {
|
||||
"kind": "canvas",
|
||||
"surface": "assistant_message",
|
||||
"render": "url",
|
||||
"viewId": "cv_123",
|
||||
"url": "/__openclaw__/canvas/documents/cv_123/index.html",
|
||||
"title": "Status",
|
||||
"preferredHeight": 320
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
تستخدم كتل العرض المنسق المخزنة/المعروضة شكل `canvas` هذا مباشرة. لا يتم التعرف على `present_view`.
|
||||
@ -1,39 +1,39 @@
|
||||
---
|
||||
read_when:
|
||||
- إنشاء مقاطع فيديو عبر الوكيل
|
||||
- إعداد موفّري ونماذج توليد الفيديو
|
||||
- إنشاء الفيديوهات عبر الوكيل
|
||||
- تكوين مزودي ونماذج إنشاء الفيديوهات
|
||||
- فهم معلمات أداة `video_generate`
|
||||
summary: أنشئ مقاطع فيديو من النصوص أو الصور أو مقاطع الفيديو الموجودة باستخدام 12 واجهة خلفية للموفّرين
|
||||
title: توليد الفيديو
|
||||
summary: أنشئ مقاطع فيديو من النصوص أو الصور أو مقاطع الفيديو الموجودة باستخدام 14 واجهة مزود.
|
||||
title: إنشاء الفيديوهات
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T02:48:47Z"
|
||||
generated_at: "2026-04-11T15:16:03Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 6848d03ef578181902517d068e8d9fe2f845e572a90481bbdf7bd9f1c591f245
|
||||
source_hash: 0ec159a0bbb6b8a030e68828c0a8bcaf40c8538ecf98bc8ff609dab9d0068263
|
||||
source_path: tools/video-generation.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# توليد الفيديو
|
||||
# إنشاء الفيديوهات
|
||||
|
||||
يمكن لوكلاء OpenClaw إنشاء مقاطع فيديو من مطالبات نصية، أو صور مرجعية، أو مقاطع فيديو موجودة. هناك اثنتا عشرة واجهة خلفية للموفّرين مدعومة، ولكل منها خيارات نماذج مختلفة، وأوضاع إدخال، ومجموعات ميزات. يختار الوكيل الموفّر المناسب تلقائيًا بناءً على إعدادك ومفاتيح API المتاحة.
|
||||
يمكن لوكلاء OpenClaw إنشاء مقاطع فيديو من المطالبات النصية أو الصور المرجعية أو مقاطع الفيديو الموجودة. يتم دعم أربع عشرة واجهة مزود، ولكل منها خيارات نماذج وأوضاع إدخال ومجموعات ميزات مختلفة. يختار الوكيل المزود المناسب تلقائيًا استنادًا إلى تكوينك ومفاتيح API المتاحة.
|
||||
|
||||
<Note>
|
||||
لا تظهر أداة `video_generate` إلا عندما يكون موفّر واحد على الأقل لتوليد الفيديو متاحًا. إذا لم ترها ضمن أدوات الوكيل لديك، فاضبط مفتاح API لموفّر أو قم بإعداد `agents.defaults.videoGenerationModel`.
|
||||
لا تظهر أداة `video_generate` إلا عند توفر مزود واحد على الأقل لإنشاء الفيديوهات. إذا لم تظهر ضمن أدوات الوكيل لديك، فقم بتعيين مفتاح API للمزود أو كوّن `agents.defaults.videoGenerationModel`.
|
||||
</Note>
|
||||
|
||||
يتعامل OpenClaw مع توليد الفيديو باعتباره ثلاثة أوضاع لبيئة التشغيل:
|
||||
يتعامل OpenClaw مع إنشاء الفيديوهات على أنه ثلاثة أوضاع تشغيل:
|
||||
|
||||
- `generate` لطلبات تحويل النص إلى فيديو من دون وسائط مرجعية
|
||||
- `generate` لطلبات تحويل النص إلى فيديو بدون وسائط مرجعية
|
||||
- `imageToVideo` عندما يتضمن الطلب صورة مرجعية واحدة أو أكثر
|
||||
- `videoToVideo` عندما يتضمن الطلب مقطع فيديو مرجعيًا واحدًا أو أكثر
|
||||
|
||||
يمكن للموفّرين دعم أي مجموعة فرعية من هذه الأوضاع. تتحقق الأداة من صحة
|
||||
الوضع النشط قبل الإرسال وتبلّغ عن الأوضاع المدعومة في `action=list`.
|
||||
يمكن للمزودين دعم أي مجموعة فرعية من هذه الأوضاع. تتحقق الأداة من الوضع
|
||||
النشط قبل الإرسال وتعرض الأوضاع المدعومة في `action=list`.
|
||||
|
||||
## بدء سريع
|
||||
## البدء السريع
|
||||
|
||||
1. اضبط مفتاح API لأي موفّر مدعوم:
|
||||
1. عيّن مفتاح API لأي مزود مدعوم:
|
||||
|
||||
```bash
|
||||
export GEMINI_API_KEY="your-key"
|
||||
@ -47,33 +47,33 @@ openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1
|
||||
|
||||
3. اطلب من الوكيل:
|
||||
|
||||
> أنشئ مقطع فيديو سينمائيًا مدته 5 ثوانٍ لكركند ودود يركب الأمواج عند الغروب.
|
||||
> أنشئ فيديو سينمائيًا مدته 5 ثوانٍ لكركند ودود يتزلج على الأمواج عند غروب الشمس.
|
||||
|
||||
سيستدعي الوكيل `video_generate` تلقائيًا. لا حاجة إلى قائمة سماح للأدوات.
|
||||
|
||||
## ماذا يحدث عندما تنشئ مقطع فيديو
|
||||
## ماذا يحدث عند إنشاء فيديو
|
||||
|
||||
توليد الفيديو غير متزامن. عندما يستدعي الوكيل `video_generate` في جلسة ما:
|
||||
إنشاء الفيديو عملية غير متزامنة. عندما يستدعي الوكيل `video_generate` في جلسة:
|
||||
|
||||
1. يرسل OpenClaw الطلب إلى الموفّر ويعيد فورًا معرّف مهمة.
|
||||
2. يعالج الموفّر المهمة في الخلفية (عادةً من 30 ثانية إلى 5 دقائق بحسب الموفّر والدقة).
|
||||
3. عندما يصبح الفيديو جاهزًا، يوقظ OpenClaw الجلسة نفسها بحدث إكمال داخلي.
|
||||
1. يرسل OpenClaw الطلب إلى المزود ويعيد فورًا معرّف مهمة.
|
||||
2. يعالج المزود المهمة في الخلفية (عادةً من 30 ثانية إلى 5 دقائق حسب المزود والدقة).
|
||||
3. عندما يصبح الفيديو جاهزًا، يوقظ OpenClaw الجلسة نفسها عبر حدث إكمال داخلي.
|
||||
4. ينشر الوكيل الفيديو النهائي مرة أخرى في المحادثة الأصلية.
|
||||
|
||||
أثناء وجود مهمة قيد التنفيذ، تعيد استدعاءات `video_generate` المكررة في الجلسة نفسها حالة المهمة الحالية بدلًا من بدء عملية توليد أخرى. استخدم `openclaw tasks list` أو `openclaw tasks show <taskId>` للتحقق من التقدم من CLI.
|
||||
أثناء تنفيذ المهمة، فإن أي استدعاءات مكررة لـ `video_generate` في الجلسة نفسها تعيد حالة المهمة الحالية بدلًا من بدء إنشاء جديد. استخدم `openclaw tasks list` أو `openclaw tasks show <taskId>` للتحقق من التقدم من خلال CLI.
|
||||
|
||||
خارج تشغيلات الوكيل المعتمدة على الجلسة (على سبيل المثال، الاستدعاءات المباشرة للأداة)، تعود الأداة إلى التوليد المضمّن وتعيد مسار الوسائط النهائي في الجولة نفسها.
|
||||
خارج عمليات تشغيل الوكيل المدعومة بجلسة (على سبيل المثال، استدعاءات الأدوات المباشرة)، تعود الأداة إلى الإنشاء المضمن وتعيد مسار الوسائط النهائي في نفس الدورة.
|
||||
|
||||
### دورة حياة المهمة
|
||||
|
||||
ينتقل كل طلب `video_generate` عبر أربع حالات:
|
||||
يمر كل طلب `video_generate` عبر أربع حالات:
|
||||
|
||||
1. **queued** -- تم إنشاء المهمة، وهي بانتظار أن يقبلها الموفّر.
|
||||
2. **running** -- يعالج الموفّر المهمة (عادةً من 30 ثانية إلى 5 دقائق بحسب الموفّر والدقة).
|
||||
1. **queued** -- تم إنشاء المهمة وهي بانتظار أن يقبلها المزود.
|
||||
2. **running** -- يعالج المزود المهمة (عادةً من 30 ثانية إلى 5 دقائق حسب المزود والدقة).
|
||||
3. **succeeded** -- أصبح الفيديو جاهزًا؛ يستيقظ الوكيل وينشره في المحادثة.
|
||||
4. **failed** -- خطأ من الموفّر أو مهلة؛ يستيقظ الوكيل مع تفاصيل الخطأ.
|
||||
4. **failed** -- خطأ من المزود أو انتهاء مهلة؛ يستيقظ الوكيل مع تفاصيل الخطأ.
|
||||
|
||||
تحقق من الحالة من CLI:
|
||||
تحقق من الحالة من خلال CLI:
|
||||
|
||||
```bash
|
||||
openclaw tasks list
|
||||
@ -81,118 +81,165 @@ openclaw tasks show <taskId>
|
||||
openclaw tasks cancel <taskId>
|
||||
```
|
||||
|
||||
منع التكرار: إذا كانت هناك مهمة فيديو بالفعل بالحالة `queued` أو `running` للجلسة الحالية، فإن `video_generate` يعيد حالة المهمة الموجودة بدلًا من بدء مهمة جديدة. استخدم `action: "status"` للتحقق صراحةً من دون تشغيل توليد جديد.
|
||||
منع التكرار: إذا كانت هناك بالفعل مهمة فيديو بالحالة `queued` أو `running` للجلسة الحالية، فستعيد `video_generate` حالة المهمة الموجودة بدلًا من بدء مهمة جديدة. استخدم `action: "status"` للتحقق بشكل صريح بدون تشغيل إنشاء جديد.
|
||||
|
||||
## الموفّرون المدعومون
|
||||
## المزودون المدعومون
|
||||
|
||||
| الموفّر | النموذج الافتراضي | نص | مرجع صورة | مرجع فيديو | مفتاح API |
|
||||
| ------- | -------------------------------- | --- | ----------------- | ---------------- | ---------------------------------------- |
|
||||
| Alibaba | `wan2.6-t2v` | نعم | نعم (URL بعيد) | نعم (URL بعيد) | `MODELSTUDIO_API_KEY` |
|
||||
| BytePlus | `seedance-1-0-lite-t2v-250428` | نعم | صورة واحدة | لا | `BYTEPLUS_API_KEY` |
|
||||
| ComfyUI | `workflow` | نعم | صورة واحدة | لا | `COMFY_API_KEY` أو `COMFY_CLOUD_API_KEY` |
|
||||
| fal | `fal-ai/minimax/video-01-live` | نعم | صورة واحدة | لا | `FAL_KEY` |
|
||||
| Google | `veo-3.1-fast-generate-preview` | نعم | صورة واحدة | فيديو واحد | `GEMINI_API_KEY` |
|
||||
| MiniMax | `MiniMax-Hailuo-2.3` | نعم | صورة واحدة | لا | `MINIMAX_API_KEY` |
|
||||
| OpenAI | `sora-2` | نعم | صورة واحدة | فيديو واحد | `OPENAI_API_KEY` |
|
||||
| Qwen | `wan2.6-t2v` | نعم | نعم (URL بعيد) | نعم (URL بعيد) | `QWEN_API_KEY` |
|
||||
| Runway | `gen4.5` | نعم | صورة واحدة | فيديو واحد | `RUNWAYML_API_SECRET` |
|
||||
| Together | `Wan-AI/Wan2.2-T2V-A14B` | نعم | صورة واحدة | لا | `TOGETHER_API_KEY` |
|
||||
| Vydra | `veo3` | نعم | صورة واحدة (`kling`) | لا | `VYDRA_API_KEY` |
|
||||
| xAI | `grok-imagine-video` | نعم | صورة واحدة | فيديو واحد | `XAI_API_KEY` |
|
||||
| المزود | النموذج الافتراضي | نص | صورة مرجعية | فيديو مرجعي | مفتاح API |
|
||||
| ------ | ----------------- | --- | ------------ | ------------ | --------- |
|
||||
| Alibaba | `wan2.6-t2v` | نعم | نعم (URL بعيد) | نعم (URL بعيد) | `MODELSTUDIO_API_KEY` |
|
||||
| BytePlus (1.0) | `seedance-1-0-pro-250528` | نعم | حتى صورتين (نماذج I2V فقط؛ الإطار الأول + الأخير) | لا | `BYTEPLUS_API_KEY` |
|
||||
| BytePlus Seedance 1.5 | `seedance-1-5-pro-251215` | نعم | حتى صورتين (الإطار الأول + الأخير عبر الدور) | لا | `BYTEPLUS_API_KEY` |
|
||||
| BytePlus Seedance 2.0 | `dreamina-seedance-2-0-260128` | نعم | حتى 9 صور مرجعية | حتى 3 مقاطع فيديو | `BYTEPLUS_API_KEY` |
|
||||
| ComfyUI | `workflow` | نعم | صورة واحدة | لا | `COMFY_API_KEY` أو `COMFY_CLOUD_API_KEY` |
|
||||
| fal | `fal-ai/minimax/video-01-live` | نعم | صورة واحدة | لا | `FAL_KEY` |
|
||||
| Google | `veo-3.1-fast-generate-preview` | نعم | صورة واحدة | مقطع فيديو واحد | `GEMINI_API_KEY` |
|
||||
| MiniMax | `MiniMax-Hailuo-2.3` | نعم | صورة واحدة | لا | `MINIMAX_API_KEY` |
|
||||
| OpenAI | `sora-2` | نعم | صورة واحدة | مقطع فيديو واحد | `OPENAI_API_KEY` |
|
||||
| Qwen | `wan2.6-t2v` | نعم | نعم (URL بعيد) | نعم (URL بعيد) | `QWEN_API_KEY` |
|
||||
| Runway | `gen4.5` | نعم | صورة واحدة | مقطع فيديو واحد | `RUNWAYML_API_SECRET` |
|
||||
| Together | `Wan-AI/Wan2.2-T2V-A14B` | نعم | صورة واحدة | لا | `TOGETHER_API_KEY` |
|
||||
| Vydra | `veo3` | نعم | صورة واحدة (`kling`) | لا | `VYDRA_API_KEY` |
|
||||
| xAI | `grok-imagine-video` | نعم | صورة واحدة | مقطع فيديو واحد | `XAI_API_KEY` |
|
||||
|
||||
تقبل بعض الموفّرين متغيرات env إضافية أو بديلة لمفتاح API. راجع [صفحات الموفّرين](#related) الفردية للحصول على التفاصيل.
|
||||
تقبل بعض المزودات متغيرات بيئة إضافية أو بديلة لمفاتيح API. راجع [صفحات المزود الفردية](#related) للحصول على التفاصيل.
|
||||
|
||||
شغّل `video_generate action=list` لفحص الموفّرين والنماذج وأوضاع
|
||||
بيئة التشغيل المتاحة وقت التشغيل.
|
||||
شغّل `video_generate action=list` لفحص المزودات والنماذج
|
||||
وأوضاع التشغيل المتاحة أثناء وقت التشغيل.
|
||||
|
||||
### مصفوفة القدرات المعلنة
|
||||
|
||||
هذا هو عقد الأوضاع الصريح الذي تستخدمه `video_generate` واختبارات العقود
|
||||
والمسح الحي المشترك.
|
||||
هذا هو عقد الأوضاع الصريح الذي تستخدمه `video_generate` واختبارات العقد
|
||||
والفحص الحي المشترك.
|
||||
|
||||
| الموفّر | `generate` | `imageToVideo` | `videoToVideo` | المسارات الحية المشتركة حاليًا |
|
||||
| ------- | ---------- | -------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Alibaba | نعم | نعم | نعم | `generate` و `imageToVideo`؛ يتم تخطي `videoToVideo` لأن هذا الموفّر يحتاج إلى عناوين URL فيديو بعيدة من نوع `http(s)` |
|
||||
| BytePlus | نعم | نعم | لا | `generate` و `imageToVideo` |
|
||||
| ComfyUI | نعم | نعم | لا | ليس ضمن المسح المشترك؛ وتوجد التغطية الخاصة بسير العمل مع اختبارات Comfy |
|
||||
| fal | نعم | نعم | لا | `generate` و `imageToVideo` |
|
||||
| Google | نعم | نعم | نعم | `generate` و `imageToVideo`؛ يتم تخطي `videoToVideo` المشترك لأن مسح Gemini/Veo الحالي المعتمد على المخزن المؤقت لا يقبل هذا الإدخال |
|
||||
| MiniMax | نعم | نعم | لا | `generate` و `imageToVideo` |
|
||||
| OpenAI | نعم | نعم | نعم | `generate` و `imageToVideo`؛ يتم تخطي `videoToVideo` المشترك لأن هذا المسار الخاص بالمؤسسة/الإدخال يحتاج حاليًا إلى وصول inpaint/remix من جهة الموفّر |
|
||||
| Qwen | نعم | نعم | نعم | `generate` و `imageToVideo`؛ يتم تخطي `videoToVideo` لأن هذا الموفّر يحتاج إلى عناوين URL فيديو بعيدة من نوع `http(s)` |
|
||||
| Runway | نعم | نعم | نعم | `generate` و `imageToVideo`؛ لا يعمل `videoToVideo` إلا عندما يكون النموذج المحدد هو `runway/gen4_aleph` |
|
||||
| Together | نعم | نعم | لا | `generate` و `imageToVideo` |
|
||||
| Vydra | نعم | نعم | لا | `generate`؛ يتم تخطي `imageToVideo` المشترك لأن `veo3` المضمّن نصي فقط و `kling` المضمّن يتطلب عنوان URL بعيدًا للصورة |
|
||||
| xAI | نعم | نعم | نعم | `generate` و `imageToVideo`؛ يتم تخطي `videoToVideo` لأن هذا الموفّر يحتاج حاليًا إلى عنوان URL بعيد لملف MP4 |
|
||||
| المزود | `generate` | `imageToVideo` | `videoToVideo` | مسارات الفحص الحي المشتركة الحالية |
|
||||
| ------ | ---------- | -------------- | -------------- | ----------------------------------- |
|
||||
| Alibaba | نعم | نعم | نعم | `generate` و`imageToVideo`؛ تم تخطي `videoToVideo` لأن هذا المزود يتطلب عناوين URL لفيديوهات `http(s)` بعيدة |
|
||||
| BytePlus | نعم | نعم | لا | `generate` و`imageToVideo` |
|
||||
| ComfyUI | نعم | نعم | لا | ليس ضمن الفحص المشترك؛ التغطية الخاصة بسير العمل موجودة ضمن اختبارات Comfy |
|
||||
| fal | نعم | نعم | لا | `generate` و`imageToVideo` |
|
||||
| Google | نعم | نعم | نعم | `generate` و`imageToVideo`؛ تم تخطي `videoToVideo` المشترك لأن فحص Gemini/Veo الحالي المعتمد على المخزن المؤقت لا يقبل هذا الإدخال |
|
||||
| MiniMax | نعم | نعم | لا | `generate` و`imageToVideo` |
|
||||
| OpenAI | نعم | نعم | نعم | `generate` و`imageToVideo`؛ تم تخطي `videoToVideo` المشترك لأن مسار المؤسسة/الإدخال هذا يحتاج حاليًا إلى وصول inpaint/remix من جهة المزود |
|
||||
| Qwen | نعم | نعم | نعم | `generate` و`imageToVideo`؛ تم تخطي `videoToVideo` لأن هذا المزود يتطلب عناوين URL لفيديوهات `http(s)` بعيدة |
|
||||
| Runway | نعم | نعم | نعم | `generate` و`imageToVideo`؛ يتم تشغيل `videoToVideo` فقط عندما يكون النموذج المحدد هو `runway/gen4_aleph` |
|
||||
| Together | نعم | نعم | لا | `generate` و`imageToVideo` |
|
||||
| Vydra | نعم | نعم | لا | `generate`؛ تم تخطي `imageToVideo` المشترك لأن `veo3` المضمن يدعم النص فقط و`kling` المضمن يتطلب عنوان URL بعيدًا للصورة |
|
||||
| xAI | نعم | نعم | نعم | `generate` و`imageToVideo`؛ تم تخطي `videoToVideo` لأن هذا المزود يتطلب حاليًا عنوان URL بعيدًا لملف MP4 |
|
||||
|
||||
## معلمات الأداة
|
||||
|
||||
### مطلوبة
|
||||
|
||||
| المعلمة | النوع | الوصف |
|
||||
| ------- | ------ | ---------------------------------------------------------------------------- |
|
||||
| `prompt` | string | وصف نصي للفيديو المراد إنشاؤه (مطلوب من أجل `action: "generate"`) |
|
||||
| المعلمة | النوع | الوصف |
|
||||
| ------- | ----- | ------ |
|
||||
| `prompt` | string | وصف نصي للفيديو المراد إنشاؤه (مطلوب لـ `action: "generate"`) |
|
||||
|
||||
### مدخلات المحتوى
|
||||
|
||||
| المعلمة | النوع | الوصف |
|
||||
| ------- | -------- | ------------------------------------- |
|
||||
| `image` | string | صورة مرجعية واحدة (مسار أو URL) |
|
||||
| `images` | string[] | عدة صور مرجعية (حتى 5) |
|
||||
| `video` | string | فيديو مرجعي واحد (مسار أو URL) |
|
||||
| `videos` | string[] | عدة مقاطع فيديو مرجعية (حتى 4) |
|
||||
| المعلمة | النوع | الوصف |
|
||||
| ------- | ----- | ------ |
|
||||
| `image` | string | صورة مرجعية واحدة (مسار أو URL) |
|
||||
| `images` | string[] | صور مرجعية متعددة (حتى 9) |
|
||||
| `imageRoles` | string[] | تلميحات أدوار اختيارية لكل موضع بالتوازي مع قائمة الصور المدمجة. القيم القياسية: `first_frame` و`last_frame` و`reference_image` |
|
||||
| `video` | string | مقطع فيديو مرجعي واحد (مسار أو URL) |
|
||||
| `videos` | string[] | مقاطع فيديو مرجعية متعددة (حتى 4) |
|
||||
| `videoRoles` | string[] | تلميحات أدوار اختيارية لكل موضع بالتوازي مع قائمة الفيديوهات المدمجة. القيمة القياسية: `reference_video` |
|
||||
| `audioRef` | string | ملف صوت مرجعي واحد (مسار أو URL). يُستخدم مثلًا للموسيقى الخلفية أو مرجع الصوت عندما يدعم المزود مدخلات الصوت |
|
||||
| `audioRefs` | string[] | ملفات صوت مرجعية متعددة (حتى 3) |
|
||||
| `audioRoles` | string[] | تلميحات أدوار اختيارية لكل موضع بالتوازي مع قائمة المقاطع الصوتية المدمجة. القيمة القياسية: `reference_audio` |
|
||||
|
||||
تُمرَّر تلميحات الأدوار إلى المزود كما هي. تأتي القيم القياسية من
|
||||
اتحاد `VideoGenerationAssetRole` ولكن قد تقبل المزودات
|
||||
سلاسل أدوار إضافية. يجب ألا تحتوي مصفوفات `*Roles` على عدد إدخالات أكبر من
|
||||
القائمة المرجعية المقابلة؛ وتفشل أخطاء الزيادة أو النقصان بمقدار واحد برسالة خطأ واضحة.
|
||||
استخدم سلسلة فارغة لترك خانة بدون تعيين.
|
||||
|
||||
### عناصر التحكم في النمط
|
||||
|
||||
| المعلمة | النوع | الوصف |
|
||||
| ---------------- | ------- | ------------------------------------------------------------------------ |
|
||||
| `aspectRatio` | string | `1:1` أو `2:3` أو `3:2` أو `3:4` أو `4:3` أو `4:5` أو `5:4` أو `9:16` أو `16:9` أو `21:9` |
|
||||
| `resolution` | string | `480P` أو `720P` أو `768P` أو `1080P` |
|
||||
| `durationSeconds` | number | المدة المستهدفة بالثواني (تُقرَّب إلى أقرب قيمة يدعمها الموفّر) |
|
||||
| `size` | string | تلميح للحجم عندما يدعمه الموفّر |
|
||||
| `audio` | boolean | تفعيل الصوت المُنشأ عند دعمه |
|
||||
| `watermark` | boolean | تبديل العلامة المائية الخاصة بالموفّر عند دعمها |
|
||||
| المعلمة | النوع | الوصف |
|
||||
| ------- | ----- | ------ |
|
||||
| `aspectRatio` | string | `1:1` أو `2:3` أو `3:2` أو `3:4` أو `4:3` أو `4:5` أو `5:4` أو `9:16` أو `16:9` أو `21:9` أو `adaptive` |
|
||||
| `resolution` | string | `480P` أو `720P` أو `768P` أو `1080P` |
|
||||
| `durationSeconds` | number | المدة المستهدفة بالثواني (تُقرَّب إلى أقرب قيمة يدعمها المزود) |
|
||||
| `size` | string | تلميح للحجم عندما يدعمه المزود |
|
||||
| `audio` | boolean | تمكين الصوت المُنشأ في الناتج عندما يكون مدعومًا. وهو مختلف عن `audioRef*` (المدخلات) |
|
||||
| `watermark` | boolean | تبديل العلامة المائية الخاصة بالمزود عندما تكون مدعومة |
|
||||
|
||||
تُعد `adaptive` قيمة خاصة مرتبطة بالمزود: حيث تُمرَّر كما هي إلى
|
||||
المزودين الذين يعلنون `adaptive` ضمن قدراتهم (على سبيل المثال، يستخدمها BytePlus
|
||||
Seedance لاكتشاف النسبة تلقائيًا من أبعاد
|
||||
الصورة المدخلة). أما المزودون الذين لا يعلنون عنها فيعرضون هذه القيمة عبر
|
||||
`details.ignoredOverrides` في نتيجة الأداة بحيث يكون تجاهلها ظاهرًا.
|
||||
|
||||
### متقدمة
|
||||
|
||||
| المعلمة | النوع | الوصف |
|
||||
| --------- | ------ | ---------------------------------------------------- |
|
||||
| `action` | string | `"generate"` (الافتراضي) أو `"status"` أو `"list"` |
|
||||
| `model` | string | تجاوز الموفّر/النموذج (مثل `runway/gen4.5`) |
|
||||
| `filename` | string | تلميح لاسم ملف الإخراج |
|
||||
| المعلمة | النوع | الوصف |
|
||||
| ------- | ----- | ------ |
|
||||
| `action` | string | `"generate"` (افتراضي) أو `"status"` أو `"list"` |
|
||||
| `model` | string | تجاوز المزود/النموذج (مثل `runway/gen4.5`) |
|
||||
| `filename` | string | تلميح لاسم ملف الإخراج |
|
||||
| `providerOptions` | object | خيارات خاصة بالمزود على شكل كائن JSON (مثل `{"seed": 42, "draft": true}`). تتحقق المزودات التي تعلن مخططًا ذا أنواع محددة من المفاتيح وأنواع القيم؛ أما المفاتيح غير المعروفة أو عدم تطابق الأنواع فيؤديان إلى تخطي المرشح أثناء التبديل الاحتياطي. وتتلقى المزودات التي لا تحتوي على مخطط معلن الخيارات كما هي. شغّل `video_generate action=list` لمعرفة ما يقبله كل مزود |
|
||||
|
||||
لا تدعم جميع الموفّرين جميع المعلمات. يقوم OpenClaw بالفعل بتطبيع المدة إلى أقرب قيمة يدعمها الموفّر، كما يعيد تعيين تلميحات الهندسة المترجمة مثل تحويل الحجم إلى نسبة أبعاد عندما يكشف موفّر احتياطي عن سطح تحكم مختلف. أما التجاوزات غير المدعومة فعلًا فيتم تجاهلها على أساس أفضل جهد ممكن وتُبلّغ كتحذيرات في نتيجة الأداة. وتفشل حدود القدرات الصارمة (مثل وجود عدد كبير جدًا من المدخلات المرجعية) قبل الإرسال.
|
||||
لا تدعم جميع المزودات كل المعلمات. يقوم OpenClaw بالفعل بتطبيع المدة إلى أقرب قيمة يدعمها المزود، كما يعيد أيضًا تعيين تلميحات الهندسة المترجمة مثل تحويل الحجم إلى نسبة أبعاد عندما يكشف مزود احتياطي سطح تحكم مختلفًا. أما التجاوزات غير المدعومة فعلًا فيتم تجاهلها بأفضل جهد ممكن والإبلاغ عنها كتحذيرات في نتيجة الأداة. وتفشل حدود القدرات الصارمة (مثل كثرة عدد المدخلات المرجعية) قبل الإرسال.
|
||||
|
||||
تُبلّغ نتائج الأداة عن الإعدادات المطبّقة. وعندما يعيد OpenClaw تعيين المدة أو الهندسة أثناء الرجوع إلى موفّر احتياطي، فإن القيم المعادة `durationSeconds` و `size` و `aspectRatio` و `resolution` تعكس ما تم إرساله، ويلتقط `details.normalization` التحويل من المطلوب إلى المطبّق.
|
||||
تعرض نتائج الأداة الإعدادات المطبقة. عندما يعيد OpenClaw تعيين المدة أو الهندسة أثناء التبديل الاحتياطي بين المزودات، فإن القيم المعادة في `durationSeconds` و`size` و`aspectRatio` و`resolution` تعكس ما تم إرساله، بينما يلتقط `details.normalization` التحويل من القيم المطلوبة إلى القيم المطبقة.
|
||||
|
||||
كما تحدد المدخلات المرجعية وضع بيئة التشغيل:
|
||||
تحدد المدخلات المرجعية أيضًا وضع التشغيل:
|
||||
|
||||
- لا توجد وسائط مرجعية: `generate`
|
||||
- أي مرجع صورة: `imageToVideo`
|
||||
- أي مرجع فيديو: `videoToVideo`
|
||||
- بدون وسائط مرجعية: `generate`
|
||||
- أي صورة مرجعية: `imageToVideo`
|
||||
- أي فيديو مرجعي: `videoToVideo`
|
||||
- لا تغيّر المدخلات الصوتية المرجعية الوضع الذي تم تحديده؛ بل تُطبَّق فوق أي وضع تحدده المراجع الصورية/الفيديوية، ولا تعمل إلا مع المزودات التي تعلن `maxInputAudios`
|
||||
|
||||
لا يُعد خلط مراجع الصور والفيديو سطح قدرات مشتركًا ومستقرًا.
|
||||
يُفضّل استخدام نوع مرجعي واحد لكل طلب.
|
||||
إن المزج بين مراجع الصور والفيديو ليس سطح قدرات مشتركة مستقرًا.
|
||||
يُفضَّل استخدام نوع مرجعي واحد لكل طلب.
|
||||
|
||||
#### التبديل الاحتياطي والخيارات ذات الأنواع المحددة
|
||||
|
||||
تُطبَّق بعض فحوصات القدرات في طبقة التبديل الاحتياطي بدلًا من
|
||||
حدود الأداة حتى يتمكن الطلب الذي يتجاوز حدود المزود الأساسي
|
||||
من العمل على مزود احتياطي قادر:
|
||||
|
||||
- إذا لم يعلن المرشح النشط عن `maxInputAudios` (أو أعلن عنها على أنها
|
||||
`0`)، فسيتم تخطيه عندما يحتوي الطلب على مراجع صوتية، وتتم
|
||||
تجربة المرشح التالي.
|
||||
- إذا كانت `maxDurationSeconds` لدى المرشح النشط أقل من
|
||||
`durationSeconds` المطلوبة ولم يعلن المرشح عن قائمة
|
||||
`supportedDurationSeconds`، فسيتم تخطيه.
|
||||
- إذا كان الطلب يحتوي على `providerOptions` وكان المرشح النشط
|
||||
يعلن صراحة عن مخطط `providerOptions` ذي أنواع محددة، فسيتم
|
||||
تخطي المرشح عندما لا تكون المفاتيح الموردة موجودة في المخطط أو عندما
|
||||
لا تتطابق أنواع القيم. أما المزودات التي لم تعلن عن مخطط بعد فتتلقى
|
||||
الخيارات كما هي (تمرير متوافق مع الإصدارات السابقة). ويمكن للمزود
|
||||
إلغاء قبول جميع خيارات المزود صراحة عبر إعلان مخطط فارغ
|
||||
(`capabilities.providerOptions: {}`)، مما يؤدي إلى نفس التخطي الناتج عن
|
||||
عدم تطابق النوع.
|
||||
|
||||
يُسجَّل أول سبب للتخطي في الطلب عند مستوى `warn` حتى يرى المشغلون
|
||||
متى تم تجاوز مزودهم الأساسي؛ أما أسباب التخطي اللاحقة فتُسجَّل عند
|
||||
`debug` للحفاظ على هدوء سلاسل التبديل الاحتياطي الطويلة. وإذا تم تخطي
|
||||
كل المرشحين، فسيشمل الخطأ المجمّع سبب التخطي لكل منهم.
|
||||
|
||||
## الإجراءات
|
||||
|
||||
- **generate** (الافتراضي) -- أنشئ فيديو من المطالبة المعطاة والمدخلات المرجعية الاختيارية.
|
||||
- **status** -- تحقق من حالة مهمة الفيديو الجاري تنفيذها للجلسة الحالية من دون بدء عملية توليد أخرى.
|
||||
- **list** -- اعرض الموفّرين والنماذج وقدراتهم المتاحة.
|
||||
- **generate** (افتراضي) -- إنشاء فيديو من المطالبة المعطاة والمدخلات المرجعية الاختيارية.
|
||||
- **status** -- التحقق من حالة مهمة الفيديو الجارية للجلسة الحالية دون بدء إنشاء آخر.
|
||||
- **list** -- عرض المزودات والنماذج المتاحة وقدراتها.
|
||||
|
||||
## اختيار النموذج
|
||||
|
||||
عند إنشاء فيديو، يحل OpenClaw النموذج بهذا الترتيب:
|
||||
|
||||
1. **معلمة الأداة `model`** -- إذا حدّدها الوكيل في الاستدعاء.
|
||||
2. **`videoGenerationModel.primary`** -- من الإعداد.
|
||||
3. **`videoGenerationModel.fallbacks`** -- تتم تجربتها بالترتيب.
|
||||
4. **الاكتشاف التلقائي** -- يستخدم الموفّرين الذين لديهم مصادقة صالحة، بدءًا من الموفّر الافتراضي الحالي، ثم بقية الموفّرين بترتيب أبجدي.
|
||||
1. **معلمة الأداة `model`** -- إذا حددها الوكيل في الاستدعاء.
|
||||
2. **`videoGenerationModel.primary`** -- من التكوين.
|
||||
3. **`videoGenerationModel.fallbacks`** -- تُجرَّب بالترتيب.
|
||||
4. **الاكتشاف التلقائي** -- يستخدم المزودات التي لديها مصادقة صالحة، بدءًا من المزود الافتراضي الحالي، ثم المزودات المتبقية بترتيب أبجدي.
|
||||
|
||||
إذا فشل أحد الموفّرين، تتم تجربة المرشح التالي تلقائيًا. وإذا فشل جميع المرشحين، فسيتضمن الخطأ تفاصيل من كل محاولة.
|
||||
إذا فشل مزود، فسيتم تجربة المرشح التالي تلقائيًا. وإذا فشل جميع المرشحين، فسيتضمن الخطأ تفاصيل من كل محاولة.
|
||||
|
||||
اضبط `agents.defaults.mediaGenerationAutoProviderFallback: false` إذا كنت تريد
|
||||
أن يستخدم توليد الفيديو فقط إدخالات `model` و `primary` و `fallbacks`
|
||||
عيّن `agents.defaults.mediaGenerationAutoProviderFallback: false` إذا كنت تريد
|
||||
أن يستخدم إنشاء الفيديو فقط إدخالات `model` و`primary` و`fallbacks`
|
||||
الصريحة.
|
||||
|
||||
```json5
|
||||
@ -208,56 +255,30 @@ openclaw tasks cancel <taskId>
|
||||
}
|
||||
```
|
||||
|
||||
يمكن تثبيت وكيل الفيديو HeyGen على fal باستخدام:
|
||||
## ملاحظات حول المزودين
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
defaults: {
|
||||
videoGenerationModel: {
|
||||
primary: "fal/fal-ai/heygen/v2/video-agent",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
| المزود | ملاحظات |
|
||||
| ------ | -------- |
|
||||
| Alibaba | يستخدم نقطة النهاية غير المتزامنة DashScope/Model Studio. يجب أن تكون الصور ومقاطع الفيديو المرجعية عناوين URL بعيدة من نوع `http(s)`. |
|
||||
| BytePlus (1.0) | معرّف المزود `byteplus`. النماذج: `seedance-1-0-pro-250528` (افتراضي)، و`seedance-1-0-pro-t2v-250528`، و`seedance-1-0-pro-fast-251015`، و`seedance-1-0-lite-t2v-250428`، و`seedance-1-0-lite-i2v-250428`. لا تقبل نماذج T2V (`*-t2v-*`) مدخلات الصور؛ بينما تدعم نماذج I2V ونماذج `*-pro-*` العامة صورة مرجعية واحدة (الإطار الأول). مرّر الصورة موضعيًا أو عيّن `role: "first_frame"`. يتم تبديل معرّفات نماذج T2V تلقائيًا إلى متغير I2V المقابل عند توفير صورة. مفاتيح `providerOptions` المدعومة: `seed` (رقم)، و`draft` (قيمة منطقية، يفرض دقة 480p)، و`camera_fixed` (قيمة منطقية). |
|
||||
| BytePlus Seedance 1.5 | يتطلب إضافة [`@openclaw/byteplus-modelark`](https://www.npmjs.com/package/@openclaw/byteplus-modelark). معرّف المزود `byteplus-seedance15`. النموذج: `seedance-1-5-pro-251215`. يستخدم واجهة `content[]` الموحدة. يدعم بحد أقصى صورتين مدخلتين (first_frame + last_frame). يجب أن تكون جميع المدخلات عناوين URL بعيدة من نوع `https://`. عيّن `role: "first_frame"` / `"last_frame"` لكل صورة، أو مرّر الصور موضعيًا. يقوم `aspectRatio: "adaptive"` باكتشاف النسبة تلقائيًا من صورة الإدخال. يتم تحويل `audio: true` إلى `generate_audio`. ويتم تمرير `providerOptions.seed` (رقم). |
|
||||
| BytePlus Seedance 2.0 | يتطلب إضافة [`@openclaw/byteplus-modelark`](https://www.npmjs.com/package/@openclaw/byteplus-modelark). معرّف المزود `byteplus-seedance2`. النماذج: `dreamina-seedance-2-0-260128` و`dreamina-seedance-2-0-fast-260128`. يستخدم واجهة `content[]` الموحدة. يدعم حتى 9 صور مرجعية و3 مقاطع فيديو مرجعية و3 ملفات صوت مرجعية. يجب أن تكون جميع المدخلات عناوين URL بعيدة من نوع `https://`. عيّن `role` لكل أصل — القيم المدعومة: `"first_frame"` و`"last_frame"` و`"reference_image"` و`"reference_video"` و`"reference_audio"`. يقوم `aspectRatio: "adaptive"` باكتشاف النسبة تلقائيًا من صورة الإدخال. يتم تحويل `audio: true` إلى `generate_audio`. ويتم تمرير `providerOptions.seed` (رقم). |
|
||||
| ComfyUI | تنفيذ محلي أو سحابي قائم على سير العمل. يدعم تحويل النص إلى فيديو وتحويل الصورة إلى فيديو عبر الرسم البياني المكوَّن. |
|
||||
| fal | يستخدم تدفقًا مدعومًا بالطابور للمهام طويلة التشغيل. يدعم صورة مرجعية واحدة فقط. |
|
||||
| Google | يستخدم Gemini/Veo. يدعم صورة مرجعية واحدة أو مقطع فيديو مرجعي واحد. |
|
||||
| MiniMax | يدعم صورة مرجعية واحدة فقط. |
|
||||
| OpenAI | يتم تمرير تجاوز `size` فقط. ويتم تجاهل تجاوزات النمط الأخرى (`aspectRatio` و`resolution` و`audio` و`watermark`) مع تحذير. |
|
||||
| Qwen | يستخدم الواجهة الخلفية DashScope نفسها الخاصة بـ Alibaba. يجب أن تكون المدخلات المرجعية عناوين URL بعيدة من نوع `http(s)`؛ ويتم رفض الملفات المحلية مسبقًا. |
|
||||
| Runway | يدعم الملفات المحلية عبر معرّفات URI للبيانات. يتطلب تحويل الفيديو إلى فيديو `runway/gen4_aleph`. تكشف عمليات التشغيل النصية فقط نسب الأبعاد `16:9` و`9:16`. |
|
||||
| Together | يدعم صورة مرجعية واحدة فقط. |
|
||||
| Vydra | يستخدم `https://www.vydra.ai/api/v1` مباشرة لتجنب عمليات إعادة التوجيه التي تُسقط المصادقة. يأتي `veo3` مضمّنًا كنمط تحويل النص إلى فيديو فقط؛ بينما يتطلب `kling` عنوان URL بعيدًا للصورة. |
|
||||
| xAI | يدعم تحويل النص إلى فيديو، وتحويل الصورة إلى فيديو، وتدفقات تحرير/تمديد الفيديو البعيدة. |
|
||||
|
||||
يمكن تثبيت Seedance 2.0 على fal باستخدام:
|
||||
## أوضاع قدرات المزود
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
defaults: {
|
||||
videoGenerationModel: {
|
||||
primary: "fal/bytedance/seedance-2.0/fast/text-to-video",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## ملاحظات حول الموفّرين
|
||||
|
||||
| الموفّر | الملاحظات |
|
||||
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Alibaba | يستخدم نقطة النهاية غير المتزامنة الخاصة بـ DashScope/Model Studio. يجب أن تكون الصور ومقاطع الفيديو المرجعية عناوين URL بعيدة من نوع `http(s)`. |
|
||||
| BytePlus | يدعم صورة مرجعية واحدة فقط. |
|
||||
| ComfyUI | تنفيذ محلي أو سحابي قائم على سير العمل. يدعم تحويل النص إلى فيديو وتحويل الصورة إلى فيديو عبر المخطط المضبوط. |
|
||||
| fal | يستخدم تدفقًا قائمًا على قائمة انتظار للمهام طويلة التشغيل. يدعم صورة مرجعية واحدة فقط. ويتضمن مراجع النماذج الخاصة بـ HeyGen video-agent و Seedance 2.0 لتحويل النص إلى فيديو وتحويل الصورة إلى فيديو. |
|
||||
| Google | يستخدم Gemini/Veo. يدعم صورة مرجعية واحدة أو فيديو مرجعيًا واحدًا. |
|
||||
| MiniMax | يدعم صورة مرجعية واحدة فقط. |
|
||||
| OpenAI | لا يتم تمرير سوى تجاوز `size`. أما تجاوزات النمط الأخرى (`aspectRatio` و `resolution` و `audio` و `watermark`) فيتم تجاهلها مع تحذير. |
|
||||
| Qwen | يستخدم الواجهة الخلفية DashScope نفسها الخاصة بـ Alibaba. يجب أن تكون المدخلات المرجعية عناوين URL بعيدة من نوع `http(s)`؛ ويتم رفض الملفات المحلية مقدمًا. |
|
||||
| Runway | يدعم الملفات المحلية عبر data URIs. يتطلب تحويل الفيديو إلى فيديو `runway/gen4_aleph`. وتعرض التشغيلات النصية فقط نسب أبعاد `16:9` و `9:16`. |
|
||||
| Together | يدعم صورة مرجعية واحدة فقط. |
|
||||
| Vydra | يستخدم `https://www.vydra.ai/api/v1` مباشرة لتجنب عمليات إعادة التوجيه التي تُسقط المصادقة. يأتي `veo3` مضمّنًا لتحويل النص إلى فيديو فقط؛ ويتطلب `kling` عنوان URL بعيدًا للصورة. |
|
||||
| xAI | يدعم تحويل النص إلى فيديو، وتحويل الصورة إلى فيديو، وتدفقات تحرير/تمديد الفيديو البعيد. |
|
||||
|
||||
## أوضاع قدرات الموفّر
|
||||
|
||||
يتيح عقد توليد الفيديو المشترك الآن للموفّرين إعلان قدرات خاصة بكل وضع
|
||||
بدلًا من الاكتفاء بالحدود المجمّعة المسطحة فقط. ويجب أن تفضّل
|
||||
تنفيذات الموفّرين الجديدة كتل الأوضاع الصريحة:
|
||||
يتيح عقد إنشاء الفيديوهات المشترك الآن للمزودات إعلان
|
||||
قدرات خاصة بكل وضع بدلًا من الاكتفاء بحدود مجمعة مسطحة فقط. ويجب على
|
||||
التنفيذات الجديدة للمزودات تفضيل كتل الأوضاع الصريحة:
|
||||
|
||||
```typescript
|
||||
capabilities: {
|
||||
@ -281,42 +302,43 @@ capabilities: {
|
||||
}
|
||||
```
|
||||
|
||||
لا تكفي الحقول المجمّعة المسطحة مثل `maxInputImages` و `maxInputVideos`
|
||||
للإعلان عن دعم أوضاع التحويل. يجب على الموفّرين أن يعلنوا
|
||||
`generate` و `imageToVideo` و `videoToVideo` صراحةً حتى تتمكن الاختبارات الحية،
|
||||
واختبارات العقود، وأداة `video_generate` المشتركة من التحقق من دعم الأوضاع
|
||||
لا تكفي الحقول المجمعة المسطحة مثل `maxInputImages` و`maxInputVideos`
|
||||
للإعلان عن دعم أوضاع التحويل. يجب على المزودات إعلان
|
||||
`generate` و`imageToVideo` و`videoToVideo` بشكل صريح حتى تتمكن الاختبارات الحية
|
||||
واختبارات العقد وأداة `video_generate` المشتركة من التحقق من دعم الأوضاع
|
||||
بشكل حتمي.
|
||||
|
||||
## الاختبارات الحية
|
||||
|
||||
تغطية حية اختيارية للموفّرين المضمّنين المشتركين:
|
||||
تغطية حية اختيارية للمزودات المضمنة المشتركة:
|
||||
|
||||
```bash
|
||||
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts
|
||||
```
|
||||
|
||||
مغلف المستودع:
|
||||
مغلّف المستودع:
|
||||
|
||||
```bash
|
||||
pnpm test:live:media video
|
||||
```
|
||||
|
||||
يحمّل هذا الملف الحي متغيرات env الناقصة الخاصة بالموفّر من `~/.profile`، ويفضّل
|
||||
مفاتيح API الحية/من env على ملفات المصادقة المخزنة افتراضيًا، ويشغّل
|
||||
الأوضاع المعلنة التي يمكنه اختبارها بأمان باستخدام الوسائط المحلية:
|
||||
يقوم هذا الملف الحي بتحميل متغيرات بيئة المزودات الناقصة من `~/.profile`،
|
||||
ويعطي الأفضلية افتراضيًا لمفاتيح API الحية/الخاصة بالبيئة على ملفات
|
||||
المصادقة المخزنة، ويشغّل الأوضاع المعلنة التي يمكنه اختبارها بأمان باستخدام
|
||||
وسائط محلية:
|
||||
|
||||
- `generate` لكل موفّر في المسح
|
||||
- `generate` لكل مزود في الفحص
|
||||
- `imageToVideo` عندما تكون `capabilities.imageToVideo.enabled`
|
||||
- `videoToVideo` عندما تكون `capabilities.videoToVideo.enabled` ويقبل الموفّر/النموذج
|
||||
إدخال فيديو محليًا مدعومًا بالمخزن المؤقت في المسح المشترك
|
||||
- `videoToVideo` عندما تكون `capabilities.videoToVideo.enabled` ويقبل المزود/النموذج
|
||||
إدخال الفيديو المحلي المعتمد على المخزن المؤقت في الفحص المشترك
|
||||
|
||||
يغطي مسار `videoToVideo` الحي المشترك اليوم:
|
||||
|
||||
- `runway` فقط عندما تختار `runway/gen4_aleph`
|
||||
- `runway` فقط عند اختيار `runway/gen4_aleph`
|
||||
|
||||
## الإعداد
|
||||
## التكوين
|
||||
|
||||
اضبط نموذج توليد الفيديو الافتراضي في إعداد OpenClaw الخاص بك:
|
||||
عيّن نموذج إنشاء الفيديو الافتراضي في تكوين OpenClaw الخاص بك:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -337,10 +359,10 @@ pnpm test:live:media video
|
||||
openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2v"
|
||||
```
|
||||
|
||||
## ذي صلة
|
||||
## ذو صلة
|
||||
|
||||
- [نظرة عامة على الأدوات](/ar/tools)
|
||||
- [المهام في الخلفية](/ar/automation/tasks) -- تتبع المهام لتوليد الفيديو غير المتزامن
|
||||
- [المهام في الخلفية](/ar/automation/tasks) -- تتبع المهام لإنشاء الفيديوهات غير المتزامن
|
||||
- [Alibaba Model Studio](/ar/providers/alibaba)
|
||||
- [BytePlus](/ar/concepts/model-providers#byteplus-international)
|
||||
- [ComfyUI](/ar/providers/comfy)
|
||||
@ -353,5 +375,5 @@ openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2
|
||||
- [Together AI](/ar/providers/together)
|
||||
- [Vydra](/ar/providers/vydra)
|
||||
- [xAI](/ar/providers/xai)
|
||||
- [مرجع الإعداد](/ar/gateway/configuration-reference#agent-defaults)
|
||||
- [مرجع التكوين](/ar/gateway/configuration-reference#agent-defaults)
|
||||
- [النماذج](/ar/concepts/models)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user