diff --git a/docs/ar/channels/discord.md b/docs/ar/channels/discord.md
index 3182967bb..05023771f 100644
--- a/docs/ar/channels/discord.md
+++ b/docs/ar/channels/discord.md
@@ -4,66 +4,66 @@ read_when:
summary: حالة دعم بوت Discord وإمكاناته وإعداده
title: Discord
x-i18n:
- generated_at: "2026-04-06T03:08:00Z"
+ generated_at: "2026-04-08T07:18:33Z"
model: gpt-5.4
provider: openai
- source_hash: 54af2176a1b4fa1681e3f07494def0c652a2730165058848000e71a59e2a9d08
+ source_hash: 3cd2886fad941ae2129e681911309539e9a65a2352b777b538d7f4686a68f73f
source_path: channels/discord.md
workflow: 15
---
# Discord (Bot API)
-الحالة: جاهز للرسائل المباشرة والقنوات الجماعية عبر بوابة Discord الرسمية.
+الحالة: جاهز للرسائل الخاصة والقنوات الجماعية عبر بوابة Discord الرسمية.
- تستخدم الرسائل المباشرة في Discord وضع الإقران افتراضيًا.
+ تُستخدم الرسائل الخاصة في Discord افتراضيًا لوضع الإقران.
- سلوك الأوامر الأصلي وكتالوج الأوامر.
+ سلوك الأوامر الأصلي وفهرس الأوامر.
- التشخيص والتدفق الإصلاحي عبر القنوات.
+ التشخيص عبر القنوات وتدفق الإصلاح.
## إعداد سريع
-ستحتاج إلى إنشاء تطبيق جديد يحتوي على بوت، وإضافة البوت إلى خادمك، ثم إقرانه مع OpenClaw. نوصي بإضافة البوت إلى خادمك الخاص. إذا لم يكن لديك واحد بعد، [فأنشئ واحدًا أولًا](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (اختر **Create My Own > For me and my friends**).
+ستحتاج إلى إنشاء تطبيق جديد مع بوت، وإضافة البوت إلى خادمك، ثم إقرانه مع OpenClaw. نوصي بإضافة البوت إلى خادمك الخاص. إذا لم يكن لديك واحد بعد، [فأنشئ واحدًا أولًا](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (اختر **Create My Own > For me and my friends**).
-
- انتقل إلى [Discord Developer Portal](https://discord.com/developers/applications) وانقر على **New Application**. سمّه مثل "OpenClaw".
+
+ انتقل إلى [Discord Developer Portal](https://discord.com/developers/applications) وانقر **New Application**. سمّه باسم مثل "OpenClaw".
- انقر على **Bot** في الشريط الجانبي. اضبط **Username** على الاسم الذي تطلقه على وكيل OpenClaw الخاص بك.
+ انقر **Bot** في الشريط الجانبي. اضبط **Username** على أي اسم تطلقه على وكيل OpenClaw الخاص بك.
-
- ما زلت في صفحة **Bot**، مرر إلى أسفل حتى **Privileged Gateway Intents** وفعّل:
+
+ وأنت لا تزال في صفحة **Bot**، مرّر لأسفل إلى **Privileged Gateway Intents** وفعّل:
- **Message Content Intent** (مطلوب)
- - **Server Members Intent** (موصى به؛ مطلوب لقوائم السماح المستندة إلى الأدوار ولمطابقة الاسم مع المعرّف)
+ - **Server Members Intent** (موصى به؛ مطلوب لقوائم السماح المستندة إلى الأدوار ولمطابقة الأسماء مع المعرّفات)
- **Presence Intent** (اختياري؛ مطلوب فقط لتحديثات الحالة)
-
- مرر مرة أخرى إلى أعلى صفحة **Bot** وانقر على **Reset Token**.
+
+ مرّر مرة أخرى إلى أعلى صفحة **Bot** وانقر **Reset Token**.
- رغم الاسم، يؤدي هذا إلى إنشاء أول رمز مميز لك — لا تتم "إعادة تعيين" أي شيء.
+ على الرغم من الاسم، فإن هذا يُنشئ أول رمز مميز لك — لا تتم "إعادة تعيين" أي شيء.
انسخ الرمز المميز واحفظه في مكان ما. هذا هو **Bot Token** الخاص بك وستحتاج إليه بعد قليل.
-
- انقر على **OAuth2** في الشريط الجانبي. ستنشئ رابط دعوة بالأذونات الصحيحة لإضافة البوت إلى خادمك.
+
+ انقر **OAuth2** في الشريط الجانبي. ستنشئ رابط دعوة بالأذونات الصحيحة لإضافة البوت إلى خادمك.
- مرر إلى أسفل حتى **OAuth2 URL Generator** وفعّل:
+ مرّر لأسفل إلى **OAuth2 URL Generator** وفعّل:
- `bot`
- `applications.commands`
@@ -77,30 +77,30 @@ x-i18n:
- Attach Files
- Add Reactions (اختياري)
- انسخ الرابط المُنشأ في الأسفل، والصقه في المتصفح، واختر خادمك، ثم انقر **Continue** للاتصال. يجب أن ترى الآن البوت في خادم Discord.
+ انسخ الرابط المُنشأ في الأسفل، والصقه في متصفحك، وحدد خادمك، ثم انقر **Continue** للاتصال. يجب أن ترى الآن البوت الخاص بك في خادم Discord.
-
- بالعودة إلى تطبيق Discord، تحتاج إلى تفعيل Developer Mode حتى تتمكن من نسخ المعرّفات الداخلية.
+
+ بالعودة إلى تطبيق Discord، تحتاج إلى تفعيل وضع المطور حتى تتمكن من نسخ المعرّفات الداخلية.
- 1. انقر على **User Settings** (أيقونة الترس بجانب صورتك الرمزية) → **Advanced** → فعّل **Developer Mode**
+ 1. انقر **User Settings** (أيقونة الترس بجانب صورتك الرمزية) → **Advanced** → فعّل **Developer Mode**
2. انقر بزر الماوس الأيمن على **أيقونة الخادم** في الشريط الجانبي → **Copy Server ID**
3. انقر بزر الماوس الأيمن على **صورتك الرمزية** → **Copy User ID**
- احفظ **Server ID** و**User ID** إلى جانب Bot Token — سترسل الثلاثة جميعًا إلى OpenClaw في الخطوة التالية.
+ احفظ **Server ID** و**User ID** مع Bot Token الخاص بك — سترسل الثلاثة جميعًا إلى OpenClaw في الخطوة التالية.
-
- لكي يعمل الإقران، يجب أن يسمح Discord للبوت بإرسال رسالة مباشرة إليك. انقر بزر الماوس الأيمن على **أيقونة الخادم** → **Privacy Settings** → فعّل **Direct Messages**.
+
+ لكي يعمل الإقران، يحتاج Discord إلى السماح للبوت الخاص بك بإرسال رسالة خاصة إليك. انقر بزر الماوس الأيمن على **أيقونة الخادم** → **Privacy Settings** → فعّل **Direct Messages**.
- يتيح هذا لأعضاء الخادم (بما في ذلك البوتات) إرسال رسائل مباشرة إليك. أبقِ هذا مفعّلًا إذا كنت تريد استخدام الرسائل المباشرة في Discord مع OpenClaw. إذا كنت تخطط فقط لاستخدام القنوات الجماعية، يمكنك تعطيل الرسائل المباشرة بعد الإقران.
+ يتيح هذا لأعضاء الخادم (بمن فيهم البوتات) إرسال رسائل خاصة إليك. أبقِ هذا الخيار مفعّلًا إذا كنت تريد استخدام الرسائل الخاصة في Discord مع OpenClaw. إذا كنت تخطط لاستخدام القنوات الجماعية فقط، يمكنك تعطيل الرسائل الخاصة بعد الإقران.
- رمز بوت Discord المميز هو سر (مثل كلمة المرور). اضبطه على الجهاز الذي يشغّل OpenClaw قبل مراسلة وكيلك.
+ رمز بوت Discord المميز سرّي (مثل كلمة المرور). اضبطه على الجهاز الذي يشغّل OpenClaw قبل مراسلة وكيلك.
```bash
export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN"
@@ -110,20 +110,20 @@ openclaw config set channels.discord.enabled true --strict-json
openclaw gateway
```
- إذا كان OpenClaw يعمل بالفعل كخدمة في الخلفية، فأعد تشغيله عبر تطبيق OpenClaw Mac أو عن طريق إيقاف عملية `openclaw gateway run` ثم إعادة تشغيلها.
+ إذا كان OpenClaw يعمل بالفعل كخدمة في الخلفية، فأعد تشغيله عبر تطبيق OpenClaw على Mac أو بإيقاف عملية `openclaw gateway run` ثم إعادة تشغيلها.
-
+
- تحدث مع وكيل OpenClaw الخاص بك على أي قناة موجودة (مثل Telegram) وأخبره بذلك. إذا كانت Discord هي قناتك الأولى، فاستخدم تبويب CLI / config بدلًا من ذلك.
+ تحدث مع وكيل OpenClaw الخاص بك على أي قناة موجودة (مثل Telegram) وأخبره بذلك. إذا كانت Discord هي قناتك الأولى، فاستخدم علامة تبويب CLI / config بدلًا من ذلك.
- > "لقد قمت بالفعل بضبط رمز بوت Discord المميز في الإعدادات. من فضلك أكمل إعداد Discord باستخدام User ID `` وServer ID ``."
+ > "لقد ضبطت بالفعل رمز بوت Discord الخاص بي في الإعدادات. يُرجى إكمال إعداد Discord باستخدام User ID `` وServer ID ``."
- إذا كنت تفضّل الإعداد المعتمد على الملفات، فاضبط:
+ إذا كنت تفضّل إعدادات قائمة على الملفات، فاضبط:
```json5
{
@@ -153,8 +153,8 @@ DISCORD_BOT_TOKEN=...
-
- انتظر حتى تعمل البوابة، ثم أرسل رسالة مباشرة إلى البوت في Discord. سيرد برمز إقران.
+
+ انتظر حتى تعمل البوابة، ثم أرسل رسالة خاصة إلى البوت في Discord. سيرد عليك برمز إقران.
@@ -174,27 +174,27 @@ openclaw pairing approve discord
تنتهي صلاحية رموز الإقران بعد ساعة واحدة.
- يجب أن تتمكن الآن من الدردشة مع وكيلك في Discord عبر الرسائل المباشرة.
+ يجب أن تتمكن الآن من الدردشة مع وكيلك في Discord عبر الرسائل الخاصة.
-حل الرمز المميز يعتمد على الحساب. قيم الرمز المميز في الإعدادات لها أولوية على بديل env. لا يُستخدم `DISCORD_BOT_TOKEN` إلا للحساب الافتراضي.
-بالنسبة إلى الاستدعاءات الصادرة المتقدمة (أداة الرسائل/إجراءات القناة)، يُستخدم `token` صريح لكل استدعاء لذلك الاستدعاء. ينطبق هذا على إجراءات الإرسال والقراءة/الفحص من نوع send وread/probe (مثل read/search/fetch/thread/pins/permissions). ولا تزال إعدادات سياسة الحساب/إعادة المحاولة تأتي من الحساب المحدد في اللقطة النشطة لوقت التشغيل.
+تحليل الرمز المميز يعتمد على الحساب. قيم الرمز المميز في الإعدادات لها الأولوية على بديل env. يُستخدم `DISCORD_BOT_TOKEN` فقط للحساب الافتراضي.
+بالنسبة للاتصالات الصادرة المتقدمة (أداة الرسائل/إجراءات القناة)، يُستخدم `token` صريح لكل استدعاء لذلك الاستدعاء. ينطبق هذا على إجراءات الإرسال والقراءة/الفحص (مثل read/search/fetch/thread/pins/permissions). وتظل إعدادات سياسة الحساب/إعادة المحاولة قادمة من الحساب المحدد في اللقطة النشطة لوقت التشغيل.
## موصى به: إعداد مساحة عمل جماعية
-بمجرد أن تعمل الرسائل المباشرة، يمكنك إعداد خادم Discord الخاص بك كمساحة عمل كاملة حيث تحصل كل قناة على جلسة وكيل خاصة بها مع سياقها الخاص. يُوصى بهذا للخوادم الخاصة التي تضمك أنت وبوتك فقط.
+بمجرد أن تعمل الرسائل الخاصة، يمكنك إعداد خادم Discord الخاص بك كمساحة عمل كاملة حيث تحصل كل قناة على جلسة وكيل خاصة بها مع سياقها الخاص. يُوصى بهذا للخوادم الخاصة التي تكون أنت والبوت فقط فيها.
- يتيح هذا لوكيلك الرد في أي قناة على خادمك، وليس فقط في الرسائل المباشرة.
+ يتيح هذا لوكيلك الرد في أي قناة على خادمك، وليس فقط في الرسائل الخاصة.
- > "أضف Server ID الخاص بـ Discord وهو `` إلى قائمة السماح الجماعية"
+ > "أضف Server ID الخاص بي في Discord وهو `` إلى قائمة السماح الجماعية"
@@ -219,12 +219,12 @@ openclaw pairing approve discord
-
- افتراضيًا، لا يرد وكيلك في القنوات الجماعية إلا عند الإشارة إليه بـ @. بالنسبة إلى خادم خاص، من المحتمل أنك تريد منه الرد على كل رسالة.
+
+ افتراضيًا، لا يرد وكيلك في القنوات الجماعية إلا عند الإشارة إليه بواسطة @mention. بالنسبة إلى خادم خاص، من المرجح أنك تريد أن يرد على كل رسالة.
- > "اسمح لوكيلي بالرد على هذا الخادم دون الحاجة إلى الإشارة إليه بـ @"
+ > "اسمح لوكيلي بالرد على هذا الخادم دون الحاجة إلى الإشارة إليه باستخدام @mention"
اضبط `requireMention: false` في إعدادات الخادم الجماعي:
@@ -248,70 +248,70 @@ openclaw pairing approve discord
-
- افتراضيًا، لا يتم تحميل الذاكرة طويلة المدى (MEMORY.md) إلا في جلسات الرسائل المباشرة. لا يتم تحميل MEMORY.md تلقائيًا في القنوات الجماعية.
+
+ افتراضيًا، لا يتم تحميل الذاكرة طويلة الأمد (MEMORY.md) إلا في جلسات الرسائل الخاصة. ولا تُحمّل MEMORY.md تلقائيًا في القنوات الجماعية.
- > "عندما أطرح أسئلة في قنوات Discord، استخدم memory_search أو memory_get إذا احتجت إلى سياق طويل المدى من MEMORY.md."
+ > "عندما أطرح أسئلة في قنوات Discord، استخدم memory_search أو memory_get إذا احتجت إلى سياق طويل الأمد من MEMORY.md."
-
- إذا كنت تحتاج إلى سياق مشترك في كل قناة، فضع التعليمات الثابتة في `AGENTS.md` أو `USER.md` (يتم حقنهما في كل جلسة). واحتفظ بالملاحظات طويلة المدى في `MEMORY.md` وادخل إليها عند الطلب باستخدام أدوات الذاكرة.
+
+ إذا كنت بحاجة إلى سياق مشترك في كل قناة، فضع التعليمات الثابتة في `AGENTS.md` أو `USER.md` (يتم حقنها في كل جلسة). واحتفظ بالملاحظات طويلة الأمد في `MEMORY.md` واصل إليها عند الطلب باستخدام أدوات الذاكرة.
-أنشئ الآن بعض القنوات على خادم Discord وابدأ الدردشة. يمكن لوكيلك رؤية اسم القناة، وتحصل كل قناة على جلسة معزولة خاصة بها — لذا يمكنك إعداد `#coding` أو `#home` أو `#research` أو أي شيء يناسب سير عملك.
+أنشئ الآن بعض القنوات على خادم Discord الخاص بك وابدأ الدردشة. يمكن لوكيلك رؤية اسم القناة، وتحصل كل قناة على جلسة معزولة خاصة بها — لذا يمكنك إعداد `#coding` أو `#home` أو `#research` أو أي شيء يناسب سير عملك.
## نموذج وقت التشغيل
-- البوابة تتولى اتصال Discord.
-- توجيه الردود حتمي: ترد الرسائل الواردة من Discord إلى Discord.
+- البوابة تملك اتصال Discord.
+- توجيه الردود حتمي: الرسائل الواردة من Discord تُعاد إلى Discord.
- افتراضيًا (`session.dmScope=main`)، تشارك الدردشات المباشرة الجلسة الرئيسية للوكيل (`agent:main:main`).
-- القنوات الجماعية مفاتيح جلسات معزولة (`agent::discord:channel:`).
-- يتم تجاهل الرسائل المباشرة الجماعية افتراضيًا (`channels.discord.dm.groupEnabled=false`).
+- القنوات الجماعية لها مفاتيح جلسات معزولة (`agent::discord:channel:`).
+- يتم تجاهل الرسائل الخاصة الجماعية افتراضيًا (`channels.discord.dm.groupEnabled=false`).
- تعمل أوامر الشرطة المائلة الأصلية في جلسات أوامر معزولة (`agent::discord:slash:`)، مع الاستمرار في حمل `CommandTargetSessionKey` إلى جلسة المحادثة الموجّهة.
## قنوات المنتدى
-لا تقبل قنوات المنتدى والوسائط في Discord إلا منشورات الخيوط. يدعم OpenClaw طريقتين لإنشائها:
+قنوات المنتدى والوسائط في Discord لا تقبل إلا منشورات السلاسل. يدعم OpenClaw طريقتين لإنشائها:
-- أرسل رسالة إلى أصل المنتدى (`channel:`) لإنشاء خيط تلقائيًا. يستخدم عنوان الخيط أول سطر غير فارغ من رسالتك.
-- استخدم `openclaw message thread create` لإنشاء خيط مباشرة. لا تمرر `--message-id` لقنوات المنتدى.
+- أرسل رسالة إلى أصل المنتدى (`channel:`) لإنشاء سلسلة تلقائيًا. يستخدم عنوان السلسلة أول سطر غير فارغ من رسالتك.
+- استخدم `openclaw message thread create` لإنشاء سلسلة مباشرة. لا تمرر `--message-id` لقنوات المنتدى.
-مثال: الإرسال إلى أصل المنتدى لإنشاء خيط
+مثال: أرسل إلى أصل المنتدى لإنشاء سلسلة
```bash
openclaw message send --channel discord --target channel: \
--message "Topic title\nBody of the post"
```
-مثال: إنشاء خيط منتدى بشكل صريح
+مثال: أنشئ سلسلة منتدى بشكل صريح
```bash
openclaw message thread create --channel discord --target channel: \
--thread-name "Topic title" --message "Body of the post"
```
-لا تقبل أصول المنتديات مكونات Discord. إذا كنت تحتاج إلى مكونات، فأرسل إلى الخيط نفسه (`channel:`).
+أصول المنتدى لا تقبل مكونات Discord. إذا كنت بحاجة إلى مكونات، فأرسل إلى السلسلة نفسها (`channel:`).
## المكونات التفاعلية
-يدعم OpenClaw حاويات Discord components v2 لرسائل الوكيل. استخدم أداة الرسائل مع حمولة `components`. يتم توجيه نتائج التفاعل مرة أخرى إلى الوكيل كرسائل واردة عادية وتتبع إعدادات Discord `replyToMode` الحالية.
+يدعم OpenClaw حاويات Discord components v2 لرسائل الوكيل. استخدم أداة الرسائل مع حمولة `components`. تُوجَّه نتائج التفاعل مرة أخرى إلى الوكيل كرسائل واردة عادية وتتبع إعدادات Discord `replyToMode` الحالية.
الكتل المدعومة:
-- `text`, `section`, `separator`, `actions`, `media-gallery`, `file`
-- تسمح صفوف الإجراءات بما يصل إلى 5 أزرار أو قائمة اختيار واحدة
-- أنواع الاختيار: `string`, `user`, `role`, `mentionable`, `channel`
+- `text` و`section` و`separator` و`actions` و`media-gallery` و`file`
+- تسمح صفوف الإجراءات بما يصل إلى 5 أزرار أو قائمة تحديد واحدة
+- أنواع التحديد: `string` و`user` و`role` و`mentionable` و`channel`
-افتراضيًا، تكون المكونات للاستخدام مرة واحدة. اضبط `components.reusable=true` للسماح باستخدام الأزرار وقوائم الاختيار والنماذج عدة مرات حتى تنتهي صلاحيتها.
+افتراضيًا، تكون المكونات للاستخدام مرة واحدة. اضبط `components.reusable=true` للسماح باستخدام الأزرار وعمليات التحديد والنماذج عدة مرات حتى تنتهي صلاحيتها.
-لتقييد من يمكنه النقر على زر، اضبط `allowedUsers` على ذلك الزر (معرّفات مستخدمي Discord أو العلامات أو `*`). عند الإعداد، يتلقى المستخدمون غير المطابقين رفضًا مؤقتًا.
+لتقييد من يمكنه النقر على زر، اضبط `allowedUsers` على ذلك الزر (معرّفات مستخدمي Discord أو الوسوم أو `*`). عند الضبط، يتلقى المستخدمون غير المطابقين رفضًا مؤقتًا.
-يفتح الأمران المائلان `/model` و`/models` منتقي نماذج تفاعليًا مع قوائم منسدلة لمزود النموذج والنموذج نفسه بالإضافة إلى خطوة Submit. يكون رد المنتقي مؤقتًا، ولا يمكن استخدامه إلا من قبل المستخدم الذي استدعاه.
+يفتح الأمران المائلان `/model` و`/models` منتقي نماذج تفاعليًا مع قوائم منسدلة للموفر والنموذج بالإضافة إلى خطوة Submit. ويكون رد المنتقي مؤقتًا ولا يمكن استخدامه إلا من المستخدم الذي استدعاه.
مرفقات الملفات:
@@ -321,8 +321,8 @@ openclaw message thread create --channel discord --target channel: \
النماذج المنبثقة:
-- أضف `components.modal` مع ما يصل إلى 5 حقول
-- أنواع الحقول: `text`, `checkbox`, `radio`, `select`, `role-select`, `user-select`
+- أضف `components.modal` بما يصل إلى 5 حقول
+- أنواع الحقول: `text` و`checkbox` و`radio` و`select` و`role-select` و`user-select`
- يضيف OpenClaw زر تشغيل تلقائيًا
مثال:
@@ -382,48 +382,48 @@ openclaw message thread create --channel discord --target channel: \
## التحكم في الوصول والتوجيه
-
- يتحكم `channels.discord.dmPolicy` في الوصول إلى الرسائل المباشرة (قديمًا: `channels.discord.dm.policy`):
+
+ يتحكم `channels.discord.dmPolicy` في الوصول إلى الرسائل الخاصة (القديم: `channels.discord.dm.policy`):
- `pairing` (افتراضي)
- `allowlist`
- - `open` (يتطلب أن يتضمن `channels.discord.allowFrom` القيمة `"*"`؛ قديمًا: `channels.discord.dm.allowFrom`)
+ - `open` (يتطلب أن يتضمن `channels.discord.allowFrom` القيمة `"*"`؛ القديم: `channels.discord.dm.allowFrom`)
- `disabled`
- إذا لم تكن سياسة الرسائل المباشرة مفتوحة، فسيتم حظر المستخدمين غير المعروفين (أو مطالبتهم بالإقران في وضع `pairing`).
+ إذا لم تكن سياسة الرسائل الخاصة مفتوحة، فسيتم حظر المستخدمين غير المعروفين (أو مطالبتهم بالإقران في وضع `pairing`).
أولوية الحسابات المتعددة:
- ينطبق `channels.discord.accounts.default.allowFrom` على الحساب `default` فقط.
- - ترث الحسابات المسماة `channels.discord.allowFrom` عندما لا يكون `allowFrom` الخاص بها مضبوطًا.
- - لا ترث الحسابات المسماة `channels.discord.accounts.default.allowFrom`.
+ - ترث الحسابات المسمّاة `channels.discord.allowFrom` عندما لا يكون `allowFrom` الخاص بها مضبوطًا.
+ - لا ترث الحسابات المسمّاة `channels.discord.accounts.default.allowFrom`.
- تنسيق هدف الرسائل المباشرة للتسليم:
+ تنسيق هدف الرسائل الخاصة للتسليم:
- `user:`
- الإشارة `<@id>`
- المعرّفات الرقمية المجردة ملتبسة ويتم رفضها ما لم يُوفَّر نوع هدف مستخدم/قناة صريح.
+ تكون المعرّفات الرقمية المجردة ملتبسة ويتم رفضها ما لم يتم توفير نوع هدف مستخدم/قناة صريح.
- يتم التحكم في التعامل مع الخوادم الجماعية بواسطة `channels.discord.groupPolicy`:
+ تتم إدارة التعامل مع الخوادم الجماعية بواسطة `channels.discord.groupPolicy`:
- `open`
- `allowlist`
- `disabled`
- خط الأساس الآمن عند وجود `channels.discord` هو `allowlist`.
+ خط الأساس الآمن عندما يكون `channels.discord` موجودًا هو `allowlist`.
سلوك `allowlist`:
- - يجب أن يطابق الخادم الجماعي `channels.discord.guilds` (`id` مفضّل، وslug مقبول)
- - قوائم سماح اختيارية للمرسلين: `users` (يوصى بالمعرّفات الثابتة) و`roles` (معرّفات الأدوار فقط)؛ إذا كان أيٌّ منهما مضبوطًا، فيُسمح للمرسلين عندما يطابقون `users` أو `roles`
- - مطابقة الاسم/العلامة المباشرة معطلة افتراضيًا؛ فعّل `channels.discord.dangerouslyAllowNameMatching: true` فقط كوضع توافق طارئ
- - الأسماء/العلامات مدعومة لـ `users`، لكن المعرّفات أكثر أمانًا؛ ويحذّر `openclaw security audit` عند استخدام إدخالات الاسم/العلامة
- - إذا كان لدى خادم جماعي إعداد `channels`، فسيتم رفض القنوات غير المدرجة
- - إذا لم يكن لدى خادم جماعي كتلة `channels`، فستكون كل القنوات في ذلك الخادم الجماعي المدرج في قائمة السماح مسموحة
+ - يجب أن يطابق الخادم الجماعي `channels.discord.guilds` (`id` مفضل، وslug مقبول)
+ - قوائم سماح اختيارية للمرسلين: `users` (يوصى بالمعرّفات الثابتة) و`roles` (معرّفات الأدوار فقط)؛ إذا تم ضبط أي منهما، يُسمح للمرسلين عندما يطابقون `users` أو `roles`
+ - تكون المطابقة المباشرة للاسم/الوسم معطلة افتراضيًا؛ فعّل `channels.discord.dangerouslyAllowNameMatching: true` فقط كوضع توافق طارئ
+ - الأسماء/الوسوم مدعومة في `users`، لكن المعرّفات أكثر أمانًا؛ يحذّر `openclaw security audit` عند استخدام إدخالات اسم/وسم
+ - إذا كان لدى خادم جماعي `channels` مضبوطة، فسيتم رفض القنوات غير المدرجة
+ - إذا لم يكن لدى خادم جماعي كتلة `channels`، فسيُسمح بكل القنوات ضمن ذلك الخادم الجماعي الموجود في قائمة السماح
مثال:
@@ -449,33 +449,33 @@ openclaw message thread create --channel discord --target channel: \
}
```
- إذا قمت فقط بضبط `DISCORD_BOT_TOKEN` ولم تنشئ كتلة `channels.discord`، فسيكون بديل وقت التشغيل هو `groupPolicy="allowlist"` (مع تحذير في السجلات)، حتى لو كانت `channels.defaults.groupPolicy` هي `open`.
+ إذا قمت فقط بضبط `DISCORD_BOT_TOKEN` ولم تُنشئ كتلة `channels.discord`، فإن بديل وقت التشغيل يكون `groupPolicy="allowlist"` (مع تحذير في السجلات)، حتى لو كان `channels.defaults.groupPolicy` يساوي `open`.
-
- رسائل الخوادم الجماعية مقيّدة بالإشارة افتراضيًا.
+
+ تكون رسائل الخوادم الجماعية محكومة بالإشارة افتراضيًا.
- يشمل اكتشاف الإشارة ما يلي:
+ يشمل اكتشاف الإشارة:
- - إشارة صريحة إلى البوت
- - أنماط الإشارة المضبوطة (`agents.list[].groupChat.mentionPatterns`، مع بديل `messages.groupChat.mentionPatterns`)
+ - إشارة صريحة للبوت
+ - أنماط الإشارة المضبوطة (`agents.list[].groupChat.mentionPatterns`، والبديل `messages.groupChat.mentionPatterns`)
- سلوك الرد الضمني على البوت في الحالات المدعومة
يتم ضبط `requireMention` لكل خادم جماعي/قناة (`channels.discord.guilds...`).
- ويؤدي `ignoreOtherMentions` اختياريًا إلى إسقاط الرسائل التي تشير إلى مستخدم/دور آخر ولكن ليس إلى البوت (باستثناء @everyone/@here).
+ ويؤدي `ignoreOtherMentions` اختياريًا إلى إسقاط الرسائل التي تذكر مستخدمًا/دورًا آخر ولكن ليس البوت (باستثناء @everyone/@here).
- الرسائل المباشرة الجماعية:
+ الرسائل الخاصة الجماعية:
- - الافتراضي: يتم تجاهلها (`dm.groupEnabled=false`)
- - قائمة سماح اختيارية عبر `dm.groupChannels` (معرّفات القنوات أو الـ slug)
+ - افتراضي: يتم تجاهلها (`dm.groupEnabled=false`)
+ - قائمة سماح اختيارية عبر `dm.groupChannels` (معرّفات القنوات أو slugs)
-### توجيه الوكيل المستند إلى الأدوار
+### التوجيه المستند إلى الأدوار للوكلاء
-استخدم `bindings[].match.roles` لتوجيه أعضاء خوادم Discord الجماعية إلى وكلاء مختلفين حسب معرّف الدور. تقبل عمليات الربط المستندة إلى الأدوار معرّفات الأدوار فقط، ويتم تقييمها بعد عمليات ربط النظير أو نظير الأصل وقبل عمليات الربط الخاصة بالخادم الجماعي فقط. إذا كان الربط يضبط أيضًا حقول مطابقة أخرى (مثل `peer` + `guildId` + `roles`)، فيجب أن تتطابق كل الحقول المضبوطة.
+استخدم `bindings[].match.roles` لتوجيه أعضاء خوادم Discord الجماعية إلى وكلاء مختلفين حسب معرّف الدور. تقبل الارتباطات المستندة إلى الأدوار معرّفات الأدوار فقط ويتم تقييمها بعد ارتباطات النظير أو نظير الأصل وقبل الارتباطات الخاصة بالخادم الجماعي فقط. إذا كان الارتباط يضبط أيضًا حقول مطابقة أخرى (مثل `peer` + `guildId` + `roles`) فيجب أن تتطابق كل الحقول المضبوطة.
```json5
{
@@ -502,7 +502,7 @@ openclaw message thread create --channel discord --target channel: \
## إعداد Developer Portal
-
+
1. Discord Developer Portal -> **Applications** -> **New Application**
2. **Bot** -> **Add Bot**
@@ -510,20 +510,20 @@ openclaw message thread create --channel discord --target channel: \
-
+
في **Bot -> Privileged Gateway Intents**، فعّل:
- Message Content Intent
- Server Members Intent (موصى به)
- Intent الحالة اختياري ومطلوب فقط إذا كنت تريد تلقي تحديثات الحالة. لا يتطلب ضبط حالة البوت (`setPresence`) تفعيل تحديثات حالة الأعضاء.
+ امتياز Presence اختياري ومطلوب فقط إذا كنت تريد تلقي تحديثات الحالة. لا يتطلب ضبط حالة البوت (`setPresence`) تفعيل تحديثات الحالة للأعضاء.
- مولّد رابط OAuth:
+ مولد رابط OAuth:
- - النطاقات: `bot`, `applications.commands`
+ - النطاقات: `bot` و`applications.commands`
الأذونات الأساسية النموذجية:
@@ -534,72 +534,72 @@ openclaw message thread create --channel discord --target channel: \
- Attach Files
- Add Reactions (اختياري)
- تجنب `Administrator` إلا عند الحاجة الصريحة.
+ تجنب `Administrator` ما لم يكن مطلوبًا صراحة.
-
+
فعّل Discord Developer Mode، ثم انسخ:
- معرّف الخادم
- معرّف القناة
- معرّف المستخدم
- فضّل المعرّفات الرقمية في إعدادات OpenClaw للحصول على عمليات تدقيق وفحص أكثر موثوقية.
+ فضّل المعرّفات الرقمية في إعدادات OpenClaw من أجل تدقيقات وفحوصات أكثر موثوقية.
## الأوامر الأصلية ومصادقة الأوامر
-- يكون `commands.native` افتراضيًا `"auto"` ومفعّلًا لـ Discord.
+- القيمة الافتراضية لـ `commands.native` هي `"auto"` وهي مفعّلة لـ Discord.
- تجاوز لكل قناة: `channels.discord.commands.native`.
-- يؤدي `commands.native=false` إلى مسح أوامر Discord الأصلية المسجلة مسبقًا صراحةً.
-- تستخدم مصادقة الأوامر الأصلية قوائم السماح/السياسات نفسها في Discord كما في معالجة الرسائل العادية.
-- قد تظل الأوامر مرئية في واجهة Discord للمستخدمين غير المصرح لهم؛ ومع ذلك يفرض التنفيذ مصادقة OpenClaw ويعيد "غير مخول".
+- يؤدي `commands.native=false` إلى مسح أوامر Discord الأصلية المسجلة سابقًا صراحةً.
+- تستخدم مصادقة الأوامر الأصلية نفس قوائم السماح/السياسات في Discord مثل معالجة الرسائل العادية.
+- قد تظل الأوامر مرئية في واجهة Discord للمستخدمين غير المصرّح لهم؛ لكن التنفيذ يظل يفرض مصادقة OpenClaw ويعيد "غير مخوّل".
-راجع [أوامر الشرطة المائلة](/ar/tools/slash-commands) للاطلاع على كتالوج الأوامر والسلوك.
+راجع [أوامر الشرطة المائلة](/ar/tools/slash-commands) للاطلاع على فهرس الأوامر والسلوك.
إعدادات أوامر الشرطة المائلة الافتراضية:
- `ephemeral: true`
-## تفاصيل الميزة
+## تفاصيل الميزات
- يدعم Discord وسوم الرد في مخرجات الوكيل:
+ يدعم Discord وسوم الردود في مخرجات الوكيل:
- `[[reply_to_current]]`
- `[[reply_to:]]`
- يتحكم فيها `channels.discord.replyToMode`:
+ يتحكم بها `channels.discord.replyToMode`:
- `off` (افتراضي)
- `first`
- `all`
- `batched`
- ملاحظة: يؤدي `off` إلى تعطيل سلاسل الرد الضمنية. ولا تزال وسوم `[[reply_to_*]]` الصريحة محترمة.
- يقوم `first` دائمًا بإرفاق مرجع الرد الأصلي الضمني لأول رسالة Discord صادرة في الدور.
- ويقوم `batched` بإرفاق مرجع الرد الأصلي الضمني في Discord فقط عندما
- يكون الدور الوارد دفعة مؤجلة من عدة رسائل. وهذا مفيد
- عندما تريد الردود الأصلية أساسًا للمحادثات المندفعة والغامضة، وليس لكل
- دور رسالة واحدة.
+ ملاحظة: يؤدي `off` إلى تعطيل سلاسل الردود الضمنية. ولا تزال وسوم `[[reply_to_*]]` الصريحة محترمة.
+ يقوم `first` دائمًا بإرفاق مرجع الرد الأصلي الضمني بأول رسالة Discord صادرة في الدورة.
+ يقوم `batched` بإرفاق مرجع الرد الأصلي الضمني في Discord فقط عندما
+ تكون الدورة الواردة دفعة مؤجلة من عدة رسائل. ويكون هذا مفيدًا
+ عندما تريد الردود الأصلية أساسًا للمحادثات المتدفقة والغامضة، وليس لكل
+ دورة رسالة مفردة.
تظهر معرّفات الرسائل في السياق/السجل حتى تتمكن الوكلاء من استهداف رسائل محددة.
- يمكن لـ OpenClaw بث مسودات الردود بإرسال رسالة مؤقتة وتحريرها مع وصول النص.
+ يمكن لـ OpenClaw بث مسودات الردود عن طريق إرسال رسالة مؤقتة وتحريرها مع وصول النص.
- يتحكم `channels.discord.streaming` في بث المعاينة (`off` | `partial` | `block` | `progress`، الافتراضي: `off`).
- - يبقى الافتراضي `off` لأن تعديلات معاينة Discord قد تصطدم بحدود المعدل بسرعة، خاصةً عندما تشترك عدة بوتات أو بوابات في الحساب نفسه أو حركة الخادم الجماعي نفسها.
- - يتم قبول `progress` لتحقيق الاتساق عبر القنوات ويُطابَق مع `partial` على Discord.
- - `channels.discord.streamMode` اسم بديل قديم وتتم هجرته تلقائيًا.
+ - يظل الافتراضي `off` لأن تعديلات معاينة Discord قد تصطدم بسرعة بحدود المعدل، خاصة عند مشاركة عدة بوتات أو بوابات للحساب نفسه أو لحركة خادم جماعي واحد.
+ - القيمة `progress` مقبولة لاتساق القنوات المختلفة ويتم تعيينها إلى `partial` في Discord.
+ - `channels.discord.streamMode` اسم بديل قديم ويتم ترحيله تلقائيًا.
- يقوم `partial` بتحرير رسالة معاينة واحدة مع وصول الرموز.
- - يقوم `block` بإخراج مقاطع بحجم المسودة (استخدم `draftChunk` لضبط الحجم ونقاط التقسيم).
+ - يُصدر `block` مقاطع بحجم المسودة (استخدم `draftChunk` لضبط الحجم ونقاط الفصل).
مثال:
@@ -613,7 +613,7 @@ openclaw message thread create --channel discord --target channel: \
}
```
- إعدادات تقطيع وضع `block` الافتراضية (مقيدة ضمن `channels.discord.textChunkLimit`):
+ القيم الافتراضية لتقطيع وضع `block` (مقيدة بـ `channels.discord.textChunkLimit`):
```json5
{
@@ -630,47 +630,47 @@ openclaw message thread create --channel discord --target channel: \
}
```
- بث المعاينة خاص بالنص فقط؛ تعود الردود التي تحتوي على وسائط إلى التسليم العادي.
+ بث المعاينة نصي فقط؛ أما الردود التي تحتوي على وسائط فتعود إلى التسليم العادي.
- ملاحظة: بث المعاينة منفصل عن بث الكتل. عندما يكون block streaming مفعّلًا صراحةً
- لـ Discord، يتجاوز OpenClaw بث المعاينة لتجنب البث المزدوج.
+ ملاحظة: بث المعاينة منفصل عن البث الكتلي. عندما يكون البث الكتلي مفعّلًا صراحةً
+ لـ Discord، يتخطى OpenClaw بث المعاينة لتجنب البث المزدوج.
-
- سياق سجل الخادم الجماعي:
+
+ سياق سجل الخوادم الجماعية:
- - `channels.discord.historyLimit` الافتراضي `20`
+ - الافتراضي لـ `channels.discord.historyLimit` هو `20`
- البديل: `messages.groupChat.historyLimit`
- - `0` يعطل
+ - القيمة `0` تعطل الميزة
- عناصر التحكم في سجل الرسائل المباشرة:
+ عناصر التحكم في سجل الرسائل الخاصة:
- `channels.discord.dmHistoryLimit`
- `channels.discord.dms[""].historyLimit`
- سلوك الخيوط:
+ سلوك السلاسل:
- - يتم توجيه خيوط Discord كجلسات قنوات
- - يمكن استخدام بيانات تعريف خيط الأصل لربط جلسة الأصل
- - يرث إعداد الخيط إعداد القناة الأصل ما لم يوجد إدخال خاص بالخيط
+ - تُوجَّه سلاسل Discord كجلسات قنوات
+ - يمكن استخدام بيانات السلسلة الأصلية الوصفية لربط جلسة الأصل
+ - يرث ضبط السلسلة إعدادات القناة الأصلية ما لم يوجد إدخال خاص بالسلسلة
يتم حقن مواضيع القنوات كسياق **غير موثوق** (وليس كموجّه نظام).
- يظل سياق الرد والرسائل المقتبسة حاليًا كما تم استلامه.
- تعمل قوائم سماح Discord أساسًا على تقييد من يمكنه تشغيل الوكيل، وليست حدًا كاملًا لتنقيح السياق الإضافي.
+ ويظل سياق الردود والرسائل المقتبسة حاليًا كما تم استلامه.
+ قوائم السماح في Discord تتحكم أساسًا في من يمكنه تشغيل الوكيل، وليست حدًا كاملًا لحجب السياق التكميلي.
-
- يمكن لـ Discord ربط خيط بهدف جلسة بحيث تستمر الرسائل اللاحقة في ذلك الخيط في التوجيه إلى الجلسة نفسها (بما في ذلك جلسات الوكلاء الفرعيين).
+
+ يمكن لـ Discord ربط سلسلة بهدف جلسة بحيث تستمر الرسائل اللاحقة في تلك السلسلة بالتوجيه إلى الجلسة نفسها (بما في ذلك جلسات الوكلاء الفرعيين).
الأوامر:
- - `/focus ` ربط الخيط الحالي/الجديد بهدف وكيل فرعي/جلسة
- - `/unfocus` إزالة ربط الخيط الحالي
- - `/agents` عرض عمليات التشغيل النشطة وحالة الربط
- - `/session idle ` فحص/تحديث إلغاء التركيز التلقائي لعدم النشاط لعمليات الربط المركزة
- - `/session max-age ` فحص/تحديث الحد الأقصى الصارم للعمر لعمليات الربط المركزة
+ - `/focus ` لربط السلسلة الحالية/الجديدة بهدف وكيل فرعي/جلسة
+ - `/unfocus` لإزالة الارتباط الحالي للسلسلة
+ - `/agents` لإظهار التشغيلات النشطة وحالة الارتباط
+ - `/session idle ` لفحص/تحديث إلغاء التركيز التلقائي بعد عدم النشاط للارتباطات المركزة
+ - `/session max-age ` لفحص/تحديث الحد الأقصى الصارم للعمر للارتباطات المركزة
الإعدادات:
@@ -698,18 +698,18 @@ openclaw message thread create --channel discord --target channel: \
ملاحظات:
- - يضبط `session.threadBindings.*` الإعدادات الافتراضية العامة.
+ - يضبط `session.threadBindings.*` القيم الافتراضية العامة.
- يتجاوز `channels.discord.threadBindings.*` سلوك Discord.
- - يجب أن تكون `spawnSubagentSessions` على true لإنشاء/ربط الخيوط تلقائيًا لـ `sessions_spawn({ thread: true })`.
- - يجب أن تكون `spawnAcpSessions` على true لإنشاء/ربط الخيوط تلقائيًا لـ ACP (`/acp spawn ... --thread ...` أو `sessions_spawn({ runtime: "acp", thread: true })`).
- - إذا كانت عمليات ربط الخيوط معطلة لحساب ما، فلن تتوفر `/focus` وعمليات ربط الخيوط ذات الصلة.
+ - يجب أن تكون `spawnSubagentSessions` مساوية لـ true لإنشاء/ربط السلاسل تلقائيًا من أجل `sessions_spawn({ thread: true })`.
+ - يجب أن تكون `spawnAcpSessions` مساوية لـ true لإنشاء/ربط السلاسل تلقائيًا من أجل ACP (`/acp spawn ... --thread ...` أو `sessions_spawn({ runtime: "acp", thread: true })`).
+ - إذا كانت ارتباطات السلاسل معطلة لحساب ما، فلن تكون `/focus` وعمليات ارتباط السلاسل ذات الصلة متاحة.
راجع [الوكلاء الفرعيون](/ar/tools/subagents) و[وكلاء ACP](/ar/tools/acp-agents) و[مرجع الإعدادات](/ar/gateway/configuration-reference).
-
- لمساحات عمل ACP ثابتة و"دائمة التشغيل"، اضبط عمليات ربط ACP مكتوبة على المستوى الأعلى تستهدف محادثات Discord.
+
+ بالنسبة لمساحات عمل ACP المستقرة "الدائمة التشغيل"، اضبط ارتباطات ACP مكتوبة على المستوى الأعلى تستهدف محادثات Discord.
مسار الإعدادات:
@@ -765,51 +765,51 @@ openclaw message thread create --channel discord --target channel: \
ملاحظات:
- - يقوم `/acp spawn codex --bind here` بربط قناة Discord الحالية أو الخيط الحالي في مكانه ويحافظ على توجيه الرسائل المستقبلية إلى جلسة ACP نفسها.
- - ما يزال هذا قد يعني "بدء جلسة Codex ACP جديدة"، لكنه لا ينشئ خيط Discord جديدًا بحد ذاته. تبقى القناة الحالية هي سطح الدردشة.
- - قد يستمر Codex في العمل ضمن `cwd` الخاص به أو مساحة عمل backend الخاصة به على القرص. مساحة العمل هذه هي حالة وقت تشغيل، وليست خيط Discord.
- - يمكن أن ترث رسائل الخيط ربط ACP الخاص بالقناة الأصل.
- - في قناة أو خيط مرتبط، يعيد `/new` و`/reset` تعيين جلسة ACP نفسها في مكانها.
- - لا تزال عمليات ربط الخيوط المؤقتة تعمل ويمكنها تجاوز حل الهدف أثناء نشاطها.
- - تكون `spawnAcpSessions` مطلوبة فقط عندما يحتاج OpenClaw إلى إنشاء/ربط خيط فرعي عبر `--thread auto|here`. ولا تكون مطلوبة لـ `/acp spawn ... --bind here` في القناة الحالية.
+ - يقوم `/acp spawn codex --bind here` بربط قناة أو سلسلة Discord الحالية في مكانها ويُبقي الرسائل المستقبلية موجّهة إلى جلسة ACP نفسها.
+ - قد يعني ذلك أيضًا "بدء جلسة Codex ACP جديدة"، لكنه لا ينشئ سلسلة Discord جديدة بحد ذاته. تظل القناة الحالية هي سطح الدردشة.
+ - قد يستمر Codex في العمل ضمن `cwd` أو مساحة عمل خلفية خاصة به على القرص. مساحة العمل هذه حالة وقت تشغيل وليست سلسلة Discord.
+ - يمكن لرسائل السلاسل أن ترث ارتباط ACP الخاص بالقناة الأصلية.
+ - في قناة أو سلسلة مرتبطة، يعيد `/new` و`/reset` ضبط جلسة ACP نفسها في مكانها.
+ - لا تزال ارتباطات السلاسل المؤقتة تعمل ويمكنها تجاوز تحليل الهدف أثناء نشاطها.
+ - تكون `spawnAcpSessions` مطلوبة فقط عندما يحتاج OpenClaw إلى إنشاء/ربط سلسلة فرعية عبر `--thread auto|here`. وهي غير مطلوبة لـ `/acp spawn ... --bind here` في القناة الحالية.
- راجع [وكلاء ACP](/ar/tools/acp-agents) للحصول على تفاصيل سلوك الربط.
+ راجع [وكلاء ACP](/ar/tools/acp-agents) لتفاصيل سلوك الارتباط.
-
- وضع إشعارات التفاعل لكل خادم جماعي:
+
+ وضع إشعارات التفاعلات لكل خادم جماعي:
- `off`
- `own` (افتراضي)
- `all`
- `allowlist` (يستخدم `guilds..users`)
- تتحول أحداث التفاعل إلى أحداث نظام وتُرفق بجلسة Discord الموجّهة.
+ تتحول أحداث التفاعلات إلى أحداث نظام وتُرفق بجلسة Discord الموجّهة.
- يرسل `ackReaction` رمزًا تعبيريًا للتأكيد أثناء معالجة OpenClaw لرسالة واردة.
+ يرسل `ackReaction` رمزًا تعبيريًا للتأكيد بينما يعالج OpenClaw رسالة واردة.
- ترتيب الحل:
+ ترتيب التحليل:
- `channels.discord.accounts..ackReaction`
- `channels.discord.ackReaction`
- `messages.ackReaction`
- - بديل الرمز التعبيري لهوية الوكيل (`agents.list[].identity.emoji`، وإلا "👀")
+ - بديل رمز الهوية الخاص بالوكيل (`agents.list[].identity.emoji`، وإلا `"👀"`)
ملاحظات:
- - يقبل Discord الرموز التعبيرية الموحدة أو أسماء الرموز التعبيرية المخصصة.
+ - يقبل Discord الرموز التعبيرية الموحّدة أو أسماء الرموز التعبيرية المخصصة.
- استخدم `""` لتعطيل التفاعل لقناة أو حساب.
- تكون كتابات الإعدادات التي تبدأ من القناة مفعّلة افتراضيًا.
+ تكون كتابات الإعدادات التي تبدأ من القناة مفعلة افتراضيًا.
- يؤثر هذا في تدفقات `/config set|unset` (عند تمكين ميزات الأوامر).
+ يؤثر هذا في تدفقات `/config set|unset` (عندما تكون ميزات الأوامر مفعلة).
التعطيل:
@@ -826,7 +826,7 @@ openclaw message thread create --channel discord --target channel: \
- وجّه حركة WebSocket الخاصة ببوابة Discord وعمليات بحث REST عند البدء (معرّف التطبيق + حل قائمة السماح) عبر وكيل HTTP(S) باستخدام `channels.discord.proxy`.
+ وجّه حركة WebSocket الخاصة ببوابة Discord وعمليات REST الأولية عند بدء التشغيل (معرّف التطبيق + تحليل قائمة السماح) عبر وكيل HTTP(S) باستخدام `channels.discord.proxy`.
```json5
{
@@ -857,7 +857,7 @@ openclaw message thread create --channel discord --target channel: \
- فعّل حل PluralKit لربط الرسائل المُمررة بهوية عضو النظام:
+ فعّل تحليل PluralKit لربط الرسائل الممررة بهوية عضو النظام:
```json5
{
@@ -875,14 +875,14 @@ openclaw message thread create --channel discord --target channel: \
ملاحظات:
- يمكن لقوائم السماح استخدام `pk:`
- - تتم مطابقة أسماء عرض الأعضاء بالاسم/slug فقط عندما تكون `channels.discord.dangerouslyAllowNameMatching: true`
- - تستخدم عمليات البحث معرّف الرسالة الأصلي وتكون مقيّدة بنافذة زمنية
- - إذا فشل البحث، تُعامل الرسائل المُمررة كرسائل بوت ويتم إسقاطها ما لم يكن `allowBots=true`
+ - تتم مطابقة أسماء عرض الأعضاء حسب الاسم/slug فقط عندما تكون `channels.discord.dangerouslyAllowNameMatching: true`
+ - تستخدم عمليات البحث معرّف الرسالة الأصلي وهي مقيّدة بنافذة زمنية
+ - إذا فشل البحث، فستُعامل الرسائل الممررة كرسائل بوت ويتم إسقاطها ما لم يكن `allowBots=true`
- يتم تطبيق تحديثات الحالة عندما تضبط حقل حالة أو نشاط، أو عندما تفعّل الحالة التلقائية.
+ تُطبَّق تحديثات الحالة عندما تضبط حقل حالة أو نشاط، أو عندما تفعّل الحالة التلقائية.
مثال للحالة فقط:
@@ -923,16 +923,16 @@ openclaw message thread create --channel discord --target channel: \
}
```
- خريطة نوع النشاط:
+ خريطة أنواع النشاط:
- 0: Playing
- 1: Streaming (يتطلب `activityUrl`)
- 2: Listening
- 3: Watching
- - 4: Custom (يستخدم نص النشاط كحالة؛ والرمز التعبيري اختياري)
+ - 4: Custom (يستخدم نص النشاط كحالة الحالة؛ والرمز التعبيري اختياري)
- 5: Competing
- مثال على الحالة التلقائية (إشارة صحة وقت التشغيل):
+ مثال للحالة التلقائية (إشارة صحة وقت التشغيل):
```json5
{
@@ -949,7 +949,7 @@ openclaw message thread create --channel discord --target channel: \
}
```
- تطابق الحالة التلقائية مدى توفر وقت التشغيل مع حالة Discord: healthy => online، وdegraded أو unknown => idle، وexhausted أو unavailable => dnd. تجاوزات النص الاختيارية:
+ تقوم الحالة التلقائية بربط توفر وقت التشغيل بحالة Discord: healthy => online، وdegraded أو unknown => idle، وexhausted أو unavailable => dnd. تجاوزات النص الاختيارية:
- `autoPresence.healthyText`
- `autoPresence.degradedText`
@@ -958,63 +958,65 @@ openclaw message thread create --channel discord --target channel: \
- يدعم Discord معالجة الموافقات المستندة إلى الأزرار في الرسائل المباشرة ويمكنه اختياريًا نشر مطالبات الموافقة في القناة الأصلية.
+ يدعم Discord معالجة الموافقات المستندة إلى الأزرار في الرسائل الخاصة، ويمكنه اختياريًا نشر مطالبات الموافقة في القناة الأصلية.
مسار الإعدادات:
- `channels.discord.execApprovals.enabled`
- `channels.discord.execApprovals.approvers` (اختياري؛ يعود إلى `commands.ownerAllowFrom` عندما يكون ذلك ممكنًا)
- `channels.discord.execApprovals.target` (`dm` | `channel` | `both`، الافتراضي: `dm`)
- - `agentFilter`, `sessionFilter`, `cleanupAfterResolve`
+ - `agentFilter` و`sessionFilter` و`cleanupAfterResolve`
- يفعّل Discord موافقات التنفيذ الأصلية تلقائيًا عندما تكون `enabled` غير مضبوطة أو تساوي `"auto"` وعندما يمكن حل معتمد واحد على الأقل، إما من `execApprovals.approvers` أو من `commands.ownerAllowFrom`. لا يستنتج Discord معتمدي التنفيذ من `allowFrom` الخاصة بالقناة أو `dm.allowFrom` القديمة أو `defaultTo` الخاصة بالرسائل المباشرة. اضبط `enabled: false` لتعطيل Discord كعميل موافقة أصلي بشكل صريح.
+ يفعّل Discord موافقات التنفيذ الأصلية تلقائيًا عندما تكون `enabled` غير مضبوطة أو تساوي `"auto"` ويمكن تحليل معتمد واحد على الأقل، إما من `execApprovals.approvers` أو من `commands.ownerAllowFrom`. لا يستنتج Discord معتمدي التنفيذ من `allowFrom` الخاص بالقناة أو `dm.allowFrom` القديم أو `defaultTo` للرسائل المباشرة. اضبط `enabled: false` لتعطيل Discord كعميل موافقات أصلي صراحةً.
- عندما تكون `target` هي `channel` أو `both`، تكون مطالبة الموافقة مرئية في القناة. لا يمكن استخدام الأزرار إلا من قبل المعتمدين الذين تم حلهم؛ ويتلقى المستخدمون الآخرون رفضًا مؤقتًا. تتضمن مطالبات الموافقة نص الأمر، لذلك فعّل التسليم عبر القناة فقط في القنوات الموثوقة. إذا تعذر اشتقاق معرّف القناة من مفتاح الجلسة، يعود OpenClaw إلى التسليم عبر الرسائل المباشرة.
+ عندما تكون `target` هي `channel` أو `both`، تكون مطالبة الموافقة مرئية في القناة. ويمكن فقط للمعتمدين الذين تم تحليلهم استخدام الأزرار؛ أما المستخدمون الآخرون فيتلقون رفضًا مؤقتًا. تتضمن مطالبات الموافقة نص الأمر، لذا فعّل التسليم إلى القناة فقط في القنوات الموثوقة. وإذا تعذر اشتقاق معرّف القناة من مفتاح الجلسة، يعود OpenClaw إلى التسليم عبر الرسائل الخاصة.
- يعرض Discord أيضًا أزرار الموافقة المشتركة المستخدمة من قنوات الدردشة الأخرى. يضيف مهايئ Discord الأصلي أساسًا توجيه الرسائل المباشرة للمعتمدين والنشر في القناة.
- عندما تكون هذه الأزرار موجودة، فهي تجربة المستخدم الأساسية للموافقة؛ ويجب على OpenClaw
- تضمين أمر `/approve` يدوي فقط عندما تشير نتيجة الأداة إلى أن
- موافقات الدردشة غير متاحة أو أن الموافقة اليدوية هي المسار الوحيد.
+ يعرض Discord أيضًا أزرار الموافقة المشتركة المستخدمة من قِبل قنوات الدردشة الأخرى. يضيف محول Discord الأصلي أساسًا توجيه الرسائل الخاصة للمعتمدين والتوزيع إلى القناة.
+ وعندما تكون هذه الأزرار موجودة، فإنها تكون تجربة الموافقة الأساسية؛ لذا
+ يجب على OpenClaw أن يتضمن أمر `/approve` يدويًا فقط عندما تشير نتيجة الأداة إلى
+ أن موافقات الدردشة غير متاحة أو أن الموافقة اليدوية هي المسار الوحيد.
- تستخدم مصادقة البوابة لهذا المعالج عقد حل بيانات الاعتماد المشتركة نفسه كما في عملاء البوابة الآخرين:
+ تستخدم مصادقة البوابة لهذا المعالج نفس عقد تحليل بيانات الاعتماد المشترك مثل عملاء البوابة الآخرين:
- - مصادقة محلية من env أولًا (`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD` ثم `gateway.auth.*`)
- - في الوضع المحلي، يمكن استخدام `gateway.remote.*` كبديل فقط عندما لا يكون `gateway.auth.*` مضبوطًا؛ تفشل SecretRefs المحلية المضبوطة ولكن غير المحلولة بشكل مغلق
- - دعم الوضع البعيد عبر `gateway.remote.*` عندما ينطبق ذلك
- - تجاوزات URL آمنة للتجاوز: لا تعيد تجاوزات CLI استخدام بيانات اعتماد ضمنية، وتستخدم تجاوزات env بيانات اعتماد env فقط
+ - مصادقة محلية تبدأ من env (`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD` ثم `gateway.auth.*`)
+ - في الوضع المحلي، يمكن استخدام `gateway.remote.*` كبديل فقط عندما لا يكون `gateway.auth.*` مضبوطًا؛ أما SecretRefs المحلية المضبوطة ولكن غير المحلولة فتفشل بشكل مغلق
+ - دعم الوضع البعيد عبر `gateway.remote.*` عند الاقتضاء
+ - تجاوزات URL آمنة للتجاوز: تجاوزات CLI لا تعيد استخدام بيانات الاعتماد الضمنية، وتجاوزات env تستخدم بيانات اعتماد env فقط
- سلوك حل الموافقة:
+ سلوك تحليل الموافقة:
- - يتم حل المعرّفات المسبوقة بـ `plugin:` عبر `plugin.approval.resolve`.
- - يتم حل المعرّفات الأخرى عبر `exec.approval.resolve`.
- - لا يقوم Discord هنا بقفزة بديلة إضافية من exec إلى plugin؛ تحدد
+ - يتم تحليل المعرّفات التي تبدأ بـ `plugin:` عبر `plugin.approval.resolve`.
+ - يتم تحليل المعرّفات الأخرى عبر `exec.approval.resolve`.
+ - لا يجري Discord هنا قفزة بديلة إضافية من exec إلى plugin؛ إذ يحدد
بادئة المعرّف طريقة البوابة التي يستدعيها.
- تنتهي موافقات التنفيذ بعد 30 دقيقة افتراضيًا. إذا فشلت الموافقات مع
- معرّفات موافقة غير معروفة، فتحقق من حل المعتمدين وتمكين الميزة وأن
- نوع معرّف الموافقة المُسلَّم يطابق الطلب المعلّق.
+ تنتهي موافقات التنفيذ افتراضيًا بعد 30 دقيقة. إذا فشلت الموافقات مع
+ معرّفات موافقة غير معروفة، فتحقق من تحليل المعتمدين وتمكين الميزة
+ وأن نوع معرّف الموافقة المُسلَّم يطابق الطلب المعلّق.
- الوثائق ذات الصلة: [موافقات التنفيذ](/ar/tools/exec-approvals)
+ المستندات ذات الصلة: [موافقات التنفيذ](/ar/tools/exec-approvals)
## الأدوات وبوابات الإجراءات
-تتضمن إجراءات رسائل Discord المراسلة، وإدارة القناة، والإشراف، والحالة، وإجراءات البيانات الوصفية.
+تتضمن إجراءات رسائل Discord المراسلة وإدارة القنوات والإشراف والحالة وإجراءات البيانات الوصفية.
أمثلة أساسية:
-- المراسلة: `sendMessage`, `readMessages`, `editMessage`, `deleteMessage`, `threadReply`
-- التفاعلات: `react`, `reactions`, `emojiList`
-- الإشراف: `timeout`, `kick`, `ban`
+- المراسلة: `sendMessage` و`readMessages` و`editMessage` و`deleteMessage` و`threadReply`
+- التفاعلات: `react` و`reactions` و`emojiList`
+- الإشراف: `timeout` و`kick` و`ban`
- الحالة: `setPresence`
+يقبل الإجراء `event-create` معامل `image` اختياريًا (URL أو مسار ملف محلي) لتعيين صورة غلاف الحدث المجدول.
+
توجد بوابات الإجراءات تحت `channels.discord.actions.*`.
-سلوك البوابة الافتراضي:
+السلوك الافتراضي للبوابات:
-| مجموعة الإجراءات | الافتراضي |
+| Action group | Default |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | مفعّل |
| roles | معطّل |
@@ -1023,11 +1025,11 @@ openclaw message thread create --channel discord --target channel: \
## واجهة Components v2
-يستخدم OpenClaw Discord components v2 لموافقات التنفيذ وعلامات السياق المتقاطع. يمكن لإجراءات رسائل Discord أيضًا قبول `components` لواجهة مستخدم مخصصة (متقدم؛ يتطلب إنشاء حمولة مكونات عبر أداة discord)، بينما تظل `embeds` القديمة متاحة ولكن غير موصى بها.
+يستخدم OpenClaw Discord components v2 لموافقات التنفيذ وعلامات السياق المتقاطع. ويمكن أيضًا لإجراءات رسائل Discord قبول `components` لواجهة مستخدم مخصصة (متقدم؛ يتطلب إنشاء حمولة مكونات عبر أداة discord)، بينما لا تزال `embeds` القديمة متاحة لكنها غير موصى بها.
-- يضبط `channels.discord.ui.components.accentColor` لون التمييز المستخدم بواسطة حاويات مكونات Discord (hex).
+- يضبط `channels.discord.ui.components.accentColor` لون التمييز المستخدم بواسطة حاويات مكونات Discord (ست عشري).
- اضبطه لكل حساب باستخدام `channels.discord.accounts..ui.components.accentColor`.
-- يتم تجاهل `embeds` عند وجود components v2.
+- يتم تجاهل `embeds` عندما تكون مكونات v2 موجودة.
مثال:
@@ -1047,7 +1049,7 @@ openclaw message thread create --channel discord --target channel: \
## القنوات الصوتية
-يمكن لـ OpenClaw الانضمام إلى القنوات الصوتية في Discord لإجراء محادثات آنية ومستمرة. وهذا منفصل عن مرفقات الرسائل الصوتية.
+يمكن لـ OpenClaw الانضمام إلى القنوات الصوتية في Discord لمحادثات آنية ومستمرة. وهذا منفصل عن مرفقات الرسائل الصوتية.
المتطلبات:
@@ -1055,7 +1057,7 @@ openclaw message thread create --channel discord --target channel: \
- اضبط `channels.discord.voice`.
- يحتاج البوت إلى أذونات Connect + Speak في القناة الصوتية المستهدفة.
-استخدم أمر Discord الأصلي فقط `/vc join|leave|status` للتحكم في الجلسات. يستخدم الأمر الوكيل الافتراضي للحساب ويتبع قواعد قائمة السماح وسياسة المجموعة نفسها كما في أوامر Discord الأخرى.
+استخدم الأمر الأصلي الخاص بـ Discord فقط `/vc join|leave|status` للتحكم في الجلسات. يستخدم الأمر الوكيل الافتراضي للحساب ويتبع نفس قواعد قائمة السماح والسياسة الجماعية مثل أوامر Discord الأخرى.
مثال على الانضمام التلقائي:
@@ -1086,22 +1088,22 @@ openclaw message thread create --channel discord --target channel: \
ملاحظات:
- يتجاوز `voice.tts` القيمة `messages.tts` لتشغيل الصوت فقط.
-- تستمد أدوار مالك نُسخ المحادثات الصوتية من Discord `allowFrom` (أو `dm.allowFrom`)؛ لا يمكن للمتحدثين غير المالكين الوصول إلى الأدوات المخصصة للمالك فقط (مثل `gateway` و`cron`).
-- يكون الصوت مفعّلًا افتراضيًا؛ اضبط `channels.discord.voice.enabled=false` لتعطيله.
+- تستمد دورات النسخ الصوتي حالة المالك من `allowFrom` في Discord (أو `dm.allowFrom`)؛ ولا يمكن للمتحدثين غير المالكين الوصول إلى الأدوات الخاصة بالمالك فقط (مثل `gateway` و`cron`).
+- تكون الميزة الصوتية مفعلة افتراضيًا؛ اضبط `channels.discord.voice.enabled=false` لتعطيلها.
- يتم تمرير `voice.daveEncryption` و`voice.decryptionFailureTolerance` إلى خيارات الانضمام في `@discordjs/voice`.
-- القيم الافتراضية لـ `@discordjs/voice` هي `daveEncryption=true` و`decryptionFailureTolerance=24` إذا لم يتم ضبطها.
-- يراقب OpenClaw أيضًا إخفاقات فك التشفير عند الاستقبال ويقوم بالاسترداد التلقائي عبر المغادرة/إعادة الانضمام إلى القناة الصوتية بعد تكرار الإخفاقات في نافذة زمنية قصيرة.
-- إذا أظهرت سجلات الاستقبال مرارًا `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`، فقد يكون هذا هو خلل الاستقبال upstream في `@discordjs/voice` المتعقَّب في [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419).
+- القيم الافتراضية في `@discordjs/voice` هي `daveEncryption=true` و`decryptionFailureTolerance=24` إذا لم يتم ضبطها.
+- يراقب OpenClaw أيضًا فشل فك التشفير عند الاستقبال ويستعيد الحالة تلقائيًا عبر المغادرة/إعادة الانضمام إلى القناة الصوتية بعد حالات الفشل المتكررة خلال نافذة قصيرة.
+- إذا كانت سجلات الاستقبال تعرض مرارًا `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`، فقد يكون هذا الخطأ المرتبط بالاستقبال في `@discordjs/voice` والمتتبع في [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419).
## الرسائل الصوتية
-تعرض الرسائل الصوتية في Discord معاينة شكل موجي وتتطلب صوت OGG/Opus بالإضافة إلى بيانات وصفية. ينشئ OpenClaw الشكل الموجي تلقائيًا، لكنه يحتاج إلى توفر `ffmpeg` و`ffprobe` على مضيف البوابة لفحص ملفات الصوت وتحويلها.
+تعرض الرسائل الصوتية في Discord معاينة شكل موجة وتتطلب صوت OGG/Opus بالإضافة إلى بيانات وصفية. ينشئ OpenClaw شكل الموجة تلقائيًا، لكنه يحتاج إلى توفر `ffmpeg` و`ffprobe` على مضيف البوابة لفحص الملفات الصوتية وتحويلها.
المتطلبات والقيود:
-- قدّم **مسار ملف محلي** (يتم رفض عناوين URL).
-- احذف المحتوى النصي (لا يسمح Discord بنص + رسالة صوتية في الحمولة نفسها).
-- يُقبل أي تنسيق صوتي؛ ويحوّل OpenClaw التنسيق إلى OGG/Opus عند الحاجة.
+- قدّم **مسار ملف محليًا** (يتم رفض عناوين URL).
+- احذف المحتوى النصي (لا يسمح Discord بالنص + الرسالة الصوتية في الحمولة نفسها).
+- يُقبل أي تنسيق صوتي؛ ويحوّل OpenClaw الملف إلى OGG/Opus عند الحاجة.
مثال:
@@ -1112,19 +1114,19 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a
## استكشاف الأخطاء وإصلاحها
-
+
- فعّل Message Content Intent
- - فعّل Server Members Intent عندما تعتمد على حل المستخدم/العضو
- - أعد تشغيل البوابة بعد تغيير intents
+ - فعّل Server Members Intent عندما تعتمد على تحليل المستخدم/العضو
+ - أعد تشغيل البوابة بعد تغيير الامتيازات
-
+
- تحقّق من `groupPolicy`
- - تحقّق من قائمة السماح للخادم الجماعي ضمن `channels.discord.guilds`
- - إذا كانت خريطة `channels` موجودة للخادم الجماعي، فسيُسمح فقط بالقنوات المدرجة
+ - تحقّق من قائمة سماح الخادم الجماعي تحت `channels.discord.guilds`
+ - إذا كانت خريطة `channels` موجودة للخادم الجماعي، فستُسمح فقط القنوات المدرجة
- تحقّق من سلوك `requireMention` وأنماط الإشارة
فحوصات مفيدة:
@@ -1137,33 +1139,33 @@ openclaw logs --follow
-
+
الأسباب الشائعة:
- - `groupPolicy="allowlist"` بدون قائمة سماح مطابقة للخادم الجماعي/القناة
+ - `groupPolicy="allowlist"` من دون قائمة سماح مطابقة للخادم/القناة
- تم ضبط `requireMention` في المكان الخطأ (يجب أن تكون تحت `channels.discord.guilds` أو إدخال القناة)
- - المرسل محظور بواسطة قائمة السماح `users` للخادم الجماعي/القناة
+ - تم حظر المرسل بواسطة قائمة السماح `users` الخاصة بالخادم/القناة
-
+
- سجلات نموذجية:
+ السجلات النموذجية:
- `Listener DiscordMessageListener timed out after 30000ms for event MESSAGE_CREATE`
- `Slow listener detected ...`
- `discord inbound worker timed out after ...`
- مقبض ميزانية المستمع:
+ مفتاح ميزانية المستمع:
- حساب واحد: `channels.discord.eventQueue.listenerTimeout`
- حسابات متعددة: `channels.discord.accounts..eventQueue.listenerTimeout`
- مقبض مهلة تشغيل العامل:
+ مفتاح مهلة تشغيل العامل:
- حساب واحد: `channels.discord.inboundWorker.runTimeoutMs`
- حسابات متعددة: `channels.discord.accounts..inboundWorker.runTimeoutMs`
- - الافتراضي: `1800000` (30 دقيقة)؛ اضبط `0` للتعطيل
+ - الافتراضي: `1800000` (30 دقيقة)؛ اضبط `0` لتعطيله
خط أساس موصى به:
@@ -1187,42 +1189,42 @@ openclaw logs --follow
```
استخدم `eventQueue.listenerTimeout` لإعداد المستمع البطيء و`inboundWorker.runTimeoutMs`
- فقط إذا كنت تريد صمام أمان منفصلًا لأدوار الوكيل الموضوعة في قائمة الانتظار.
+ فقط إذا كنت تريد صمام أمان منفصلًا للدورات الوكيلة الموضوعة في قائمة الانتظار.
-
+
تعمل فحوصات الأذونات في `channels status --probe` فقط مع معرّفات القنوات الرقمية.
- إذا كنت تستخدم مفاتيح slug، فقد تستمر المطابقة وقت التشغيل في العمل، لكن الفحص لا يمكنه التحقق الكامل من الأذونات.
+ إذا استخدمت مفاتيح slug، فقد يظل التطابق في وقت التشغيل يعمل، لكن الفحص لا يمكنه التحقق الكامل من الأذونات.
-
+
- - الرسائل المباشرة معطلة: `channels.discord.dm.enabled=false`
- - سياسة الرسائل المباشرة معطلة: `channels.discord.dmPolicy="disabled"` (قديمًا: `channels.discord.dm.policy`)
+ - الرسائل الخاصة معطلة: `channels.discord.dm.enabled=false`
+ - سياسة الرسائل الخاصة معطلة: `channels.discord.dmPolicy="disabled"` (القديم: `channels.discord.dm.policy`)
- بانتظار الموافقة على الإقران في وضع `pairing`
-
- افتراضيًا، يتم تجاهل الرسائل التي يكتبها البوت.
+
+ افتراضيًا يتم تجاهل الرسائل التي يكتبها البوت.
إذا قمت بضبط `channels.discord.allowBots=true`، فاستخدم قواعد صارمة للإشارة وقائمة السماح لتجنب سلوك الحلقات.
- فضّل `channels.discord.allowBots="mentions"` لقبول رسائل البوت التي تشير إلى البوت فقط.
+ فضّل `channels.discord.allowBots="mentions"` لقبول رسائل البوت التي تذكر البوت فقط.
-
+
- - حافظ على تحديث OpenClaw (`openclaw update`) حتى يكون منطق استرداد استقبال الصوت في Discord موجودًا
+ - أبقِ OpenClaw محدثًا (`openclaw update`) حتى يكون منطق استعادة استقبال الصوت في Discord موجودًا
- أكّد أن `channels.discord.voice.daveEncryption=true` (افتراضي)
- - ابدأ من `channels.discord.voice.decryptionFailureTolerance=24` (القيمة الافتراضية upstream) وعدّل فقط عند الحاجة
+ - ابدأ من `channels.discord.voice.decryptionFailureTolerance=24` (القيمة الافتراضية upstream) واضبط فقط عند الحاجة
- راقب السجلات بحثًا عن:
- `discord voice: DAVE decrypt failures detected`
- `discord voice: repeated decrypt failures; attempting rejoin`
- - إذا استمرت الإخفاقات بعد إعادة الانضمام التلقائية، فاجمع السجلات وقارنها مع [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419)
+ - إذا استمرت الأعطال بعد إعادة الانضمام التلقائية، فاجمع السجلات وقارنها مع [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419)
@@ -1233,27 +1235,27 @@ openclaw logs --follow
- [مرجع الإعدادات - Discord](/ar/gateway/configuration-reference#discord)
-حقول Discord عالية الإشارة:
+حقول Discord عالية الأهمية:
-- البدء/المصادقة: `enabled`, `token`, `accounts.*`, `allowBots`
-- السياسة: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*`
-- الأمر: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*`
-- قائمة انتظار الأحداث: `eventQueue.listenerTimeout` (ميزانية المستمع)، `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency`
+- بدء التشغيل/المصادقة: `enabled` و`token` و`accounts.*` و`allowBots`
+- السياسة: `groupPolicy` و`dm.*` و`guilds.*` و`guilds.*.channels.*`
+- الأمر: `commands.native` و`commands.useAccessGroups` و`configWrites` و`slashCommand.*`
+- قائمة انتظار الأحداث: `eventQueue.listenerTimeout` (ميزانية المستمع) و`eventQueue.maxQueueSize` و`eventQueue.maxConcurrency`
- العامل الوارد: `inboundWorker.runTimeoutMs`
-- الرد/السجل: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
-- التسليم: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage`
-- البث: `streaming` (اسم بديل قديم: `streamMode`)، `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
-- الوسائط/إعادة المحاولة: `mediaMaxMb`, `retry`
- - يحد `mediaMaxMb` من عمليات رفع Discord الصادرة (الافتراضي: `100MB`)
+- الرد/السجل: `replyToMode` و`historyLimit` و`dmHistoryLimit` و`dms.*.historyLimit`
+- التسليم: `textChunkLimit` و`chunkMode` و`maxLinesPerMessage`
+- البث: `streaming` (الاسم البديل القديم: `streamMode`) و`draftChunk` و`blockStreaming` و`blockStreamingCoalesce`
+- الوسائط/إعادة المحاولة: `mediaMaxMb` و`retry`
+ - يحدد `mediaMaxMb` الحد الأقصى لعمليات الرفع الصادرة إلى Discord (الافتراضي: `100MB`)
- الإجراءات: `actions.*`
-- الحالة: `activity`, `status`, `activityType`, `activityUrl`
+- الحالة: `activity` و`status` و`activityType` و`activityUrl`
- واجهة المستخدم: `ui.components.accentColor`
-- الميزات: `threadBindings`, المستوى الأعلى `bindings[]` (`type: "acp"`)، `pluralkit`, `execApprovals`, `intents`, `agentComponents`, `heartbeat`, `responsePrefix`
+- الميزات: `threadBindings` و`bindings[]` على المستوى الأعلى (`type: "acp"`) و`pluralkit` و`execApprovals` و`intents` و`agentComponents` و`heartbeat` و`responsePrefix`
## السلامة والعمليات
-- تعامل مع رموز البوت المميزة كأسرار (يفضّل `DISCORD_BOT_TOKEN` في البيئات الخاضعة للإشراف).
-- امنح أذونات Discord بأقل قدر لازم من الصلاحيات.
+- تعامل مع رموز البوت المميزة كأسرار (يُفضّل `DISCORD_BOT_TOKEN` في البيئات الخاضعة للإشراف).
+- امنح أقل أذونات Discord لازمة.
- إذا كانت حالة نشر الأوامر/الحالة قديمة، فأعد تشغيل البوابة وأعد التحقق باستخدام `openclaw channels status --probe`.
## ذو صلة
diff --git a/docs/ar/concepts/dreaming.md b/docs/ar/concepts/dreaming.md
index 84422156f..8ee0f2662 100644
--- a/docs/ar/concepts/dreaming.md
+++ b/docs/ar/concepts/dreaming.md
@@ -2,109 +2,117 @@
read_when:
- تريد أن يعمل ترقية الذاكرة تلقائيًا
- تريد فهم ما الذي تفعله كل مرحلة من مراحل الحلم
- - تريد ضبط التجميع دون تلويث `MEMORY.md`
-summary: تجميع الذاكرة في الخلفية مع مراحل خفيفة وعميقة وREM بالإضافة إلى يوميات الأحلام
+ - تريد ضبط الدمج دون تلويث `MEMORY.md`
+summary: دمج ذاكرة في الخلفية بمراحل خفيفة وعميقة وREM بالإضافة إلى يوميات الأحلام
title: الحلم (تجريبي)
x-i18n:
- generated_at: "2026-04-06T07:17:51Z"
+ generated_at: "2026-04-08T07:16:29Z"
model: gpt-5.4
provider: openai
- source_hash: 36c4b1e70801d662090dc8ce20608c2f141c23cd7ce53c54e3dcf332c801fd4e
+ source_hash: 0254f3b0949158264e583c12f36f2b1a83d1b44dc4da01a1b272422d38e8655d
source_path: concepts/dreaming.md
workflow: 15
---
# الحلم (تجريبي)
-الحلم هو نظام تجميع الذاكرة في الخلفية ضمن `memory-core`.
-يساعد OpenClaw على نقل الإشارات القصيرة المدى القوية إلى ذاكرة دائمة مع
-الحفاظ على العملية قابلة للتفسير والمراجعة.
+الحلم هو نظام دمج الذاكرة في الخلفية ضمن `memory-core`.
+يساعد OpenClaw على نقل الإشارات القوية قصيرة الأمد إلى ذاكرة دائمة مع
+الحفاظ على أن تكون العملية قابلة للتفسير والمراجعة.
-الحلم **اختياري** ومُعطّل افتراضيًا.
+الحلم **اختياري** وهو معطّل افتراضيًا.
## ما الذي يكتبه الحلم
يحتفظ الحلم بنوعين من المخرجات:
-- **حالة الآلة** في `memory/.dreams/` (مخزن الاستدعاء، إشارات المراحل، نقاط تحقق الإدخال، الأقفال).
-- **مخرجات قابلة للقراءة البشرية** في `DREAMS.md` (أو `dreams.md` الموجود) وملفات تقارير مراحل اختيارية ضمن `memory/dreaming//YYYY-MM-DD.md`.
+- **حالة الآلة** في `memory/.dreams/` (مخزن الاستدعاء، إشارات المراحل، نقاط تحقق الاستيعاب، الأقفال).
+- **مخرجات قابلة للقراءة البشرية** في `DREAMS.md` (أو `dreams.md` الموجود) وملفات تقارير المراحل الاختيارية ضمن `memory/dreaming//YYYY-MM-DD.md`.
-تظل الترقية إلى الذاكرة طويلة المدى تكتب فقط إلى `MEMORY.md`.
+لا تزال الترقية إلى الذاكرة طويلة الأمد تكتب فقط إلى `MEMORY.md`.
## نموذج المراحل
يستخدم الحلم ثلاث مراحل تعاونية:
-| المرحلة | الغرض | الكتابة الدائمة |
-| ------- | ---------------------------------------- | ------------------- |
-| الخفيفة | فرز وتجهيز المواد القصيرة المدى الحديثة | لا |
-| العميقة | تقييم المرشحين الدائمين وترقيتهم | نعم (`MEMORY.md`) |
-| REM | التأمل في السمات والأفكار المتكررة | لا |
+| المرحلة | الغرض | الكتابة الدائمة |
+| ----- | ----------------------------------------- | ----------------- |
+| الخفيفة | فرز المواد قصيرة الأمد الحديثة وتجهيزها | لا |
+| العميقة | تقييم المرشحين الدائمين وترقيتهم | نعم (`MEMORY.md`) |
+| REM | التأمل في الأنماط والأفكار المتكررة | لا |
-هذه المراحل هي تفاصيل تنفيذ داخلية وليست "أوضاعًا" منفصلة يضبطها المستخدم.
+هذه المراحل تفاصيل تنفيذ داخلية وليست "أوضاعًا" منفصلة يضبطها المستخدم.
### المرحلة الخفيفة
-تقوم المرحلة الخفيفة بإدخال إشارات الذاكرة اليومية الحديثة وآثار الاستدعاء، وإزالة التكرار منها،
-وتجهيز الأسطر المرشحة.
+تستوعب المرحلة الخفيفة إشارات الذاكرة اليومية الحديثة وآثار الاستدعاء، وتزيل التكرارات منها،
+وتجهز أسطرًا مرشحة.
-- تقرأ من حالة الاستدعاء القصير المدى وملفات الذاكرة اليومية الحديثة.
-- تكتب كتلة `## Light Sleep` مُدارة عندما يتضمن التخزين مخرجات مضمنة.
+- تقرأ من حالة الاستدعاء قصيرة الأمد، وملفات الذاكرة اليومية الحديثة، ونصوص الجلسات المنقحة عند توفرها.
+- تكتب كتلة `## Light Sleep` مُدارة عندما يتضمن التخزين مخرجات مضمّنة.
- تسجل إشارات تعزيز لاستخدامها لاحقًا في الترتيب العميق.
- لا تكتب أبدًا إلى `MEMORY.md`.
### المرحلة العميقة
-تقرر المرحلة العميقة ما الذي يصبح ذاكرة طويلة المدى.
+تقرر المرحلة العميقة ما الذي يصبح ذاكرة طويلة الأمد.
-- ترتب المرشحين باستخدام تقييم مرجّح وبوابات حدود دنيا.
+- ترتب المرشحين باستخدام تقييم مرجّح وبوابات عتبة.
- تتطلب اجتياز `minScore` و`minRecallCount` و`minUniqueQueries`.
-- تعيد ترطيب المقاطع من الملفات اليومية الحية قبل الكتابة، لذلك يتم تخطي المقاطع القديمة أو المحذوفة.
-- تلحق الإدخالات المُرقّاة إلى `MEMORY.md`.
-- تكتب ملخص `## Deep Sleep` في `DREAMS.md` وتكتب اختياريًا إلى `memory/dreaming/deep/YYYY-MM-DD.md`.
+- تعيد إماهة المقتطفات من الملفات اليومية الحية قبل الكتابة، لذلك يتم تخطي المقتطفات القديمة/المحذوفة.
+- تُلحق الإدخالات المُرقّاة إلى `MEMORY.md`.
+- تكتب ملخص `## Deep Sleep` داخل `DREAMS.md` وتكتب اختياريًا إلى `memory/dreaming/deep/YYYY-MM-DD.md`.
### مرحلة REM
تستخرج مرحلة REM الأنماط والإشارات التأملية.
-- تنشئ ملخصات للسمات والتأملات من آثار الذاكرة القصيرة المدى الحديثة.
-- تكتب كتلة `## REM Sleep` مُدارة عندما يتضمن التخزين مخرجات مضمنة.
+- تبني ملخصات للموضوعات والتأملات من الآثار قصيرة الأمد الحديثة.
+- تكتب كتلة `## REM Sleep` مُدارة عندما يتضمن التخزين مخرجات مضمّنة.
- تسجل إشارات تعزيز REM المستخدمة في الترتيب العميق.
- لا تكتب أبدًا إلى `MEMORY.md`.
+## استيعاب نصوص الجلسات
+
+يمكن للحلم استيعاب نصوص الجلسات المنقحة ضمن مادة الحلم. عند
+توفر النصوص، يتم تمريرها إلى المرحلة الخفيفة إلى جانب إشارات الذاكرة
+اليومية وآثار الاستدعاء. تتم تنقيح المحتوى الشخصي والحساس
+قبل الاستيعاب.
+
## يوميات الأحلام
-يحتفظ الحلم أيضًا بسرد قصصي بعنوان **يوميات الأحلام** في `DREAMS.md`.
-بعد أن تمتلك كل مرحلة مادة كافية، يشغّل `memory-core` بشكل أفضل جهد ممكن
-دورة وكيل فرعي في الخلفية (باستخدام نموذج وقت التشغيل الافتراضي) ويلحق إدخالًا قصيرًا إلى اليوميات.
+يحتفظ الحلم أيضًا بـ **يوميات أحلام** سردية في `DREAMS.md`.
+بعد أن تتوفر مادة كافية لكل مرحلة، يقوم `memory-core` بتشغيل
+دورة وكيل فرعي في الخلفية بأفضل جهد (باستخدام نموذج وقت التشغيل الافتراضي)
+ويُلحق إدخال يوميات قصيرًا.
هذه اليوميات مخصصة للقراءة البشرية في واجهة Dreams، وليست مصدرًا للترقية.
## إشارات الترتيب العميق
-يستخدم الترتيب العميق ست إشارات أساسية مرجّحة بالإضافة إلى تعزيز المراحل:
+يستخدم الترتيب العميق ست إشارات أساسية مرجحة بالإضافة إلى تعزيز المراحل:
-| الإشارة | الوزن | الوصف |
-| ------------------- | ----- | -------------------------------------------------- |
-| التكرار | 0.24 | عدد إشارات الذاكرة القصيرة المدى التي راكمها الإدخال |
-| الصلة | 0.30 | متوسط جودة الاسترجاع للإدخال |
-| تنوع الاستعلامات | 0.15 | سياقات الاستعلام/اليوم المختلفة التي أظهرته |
-| الحداثة | 0.15 | درجة حداثة متناقصة بمرور الوقت |
-| التجميع | 0.10 | قوة التكرار عبر أيام متعددة |
-| الثراء المفاهيمي | 0.06 | كثافة وسوم المفاهيم من المقطع/المسار |
+| الإشارة | الوزن | الوصف |
+| ------------------- | ------ | ------------------------------------------------- |
+| التكرار | 0.24 | عدد الإشارات قصيرة الأمد التي راكمها الإدخال |
+| الصلة | 0.30 | متوسط جودة الاسترجاع للإدخال |
+| تنوع الاستعلامات | 0.15 | سياقات الاستعلام/اليوم المميزة التي أظهرته |
+| الحداثة | 0.15 | درجة حداثة متناقصة بمرور الوقت |
+| الدمج | 0.10 | قوة التكرار عبر أيام متعددة |
+| الثراء المفاهيمي | 0.06 | كثافة وسوم المفاهيم من المقتطف/المسار |
-تضيف إصابات المرحلتين الخفيفة وREM تعزيزًا صغيرًا متناقصًا بمرور الوقت للحداثة من
+تضيف إصابات المرحلتين الخفيفة وREM دفعة صغيرة متناقصة بمرور الوقت من
`memory/.dreams/phase-signals.json`.
## الجدولة
-عند التفعيل، يدير `memory-core` تلقائيًا مهمة cron واحدة لعملية
-حلم كاملة. تشغّل كل عملية المراحل بالترتيب: الخفيفة -> REM -> العميقة.
+عند التفعيل، يدير `memory-core` تلقائيًا مهمة cron واحدة لاكتساح حلم كامل.
+ينفذ كل اكتساح المراحل بالترتيب: الخفيفة -> REM -> العميقة.
-سلوك الوتيرة الافتراضي:
+سلوك الوتيرة الافتراضية:
-| الإعداد | الافتراضي |
-| -------------------- | ---------- |
+| الإعداد | الافتراضي |
+| -------------------- | ----------- |
| `dreaming.frequency` | `0 3 * * *` |
## البدء السريع
@@ -127,7 +135,7 @@ x-i18n:
}
```
-فعّل الحلم مع وتيرة عملية مخصصة:
+فعّل الحلم مع وتيرة اكتساح مخصصة:
```json
{
@@ -167,17 +175,17 @@ openclaw memory promote --limit 5
openclaw memory status --deep
```
-يستخدم `memory promote` اليدوي حدود المرحلة العميقة افتراضيًا ما لم يتم تجاوزها
-بأعلام CLI.
+يستخدم `memory promote` اليدوي عتبات المرحلة العميقة افتراضيًا ما لم يتم تجاوزها
+بعلامات CLI.
-اشرح سبب ترقية مرشح محدد أو عدم ترقيته:
+اشرح لماذا قد تتم أو لا تتم ترقية مرشح معيّن:
```bash
openclaw memory promote-explain "router vlan"
openclaw memory promote-explain "router vlan" --json
```
-عاين تأملات REM، والحقائق المرشحة، ومخرجات الترقية العميقة من دون
+عاين تأملات REM، والحقائق المرشحة، ومخرجات الترقية العميقة بدون
كتابة أي شيء:
```bash
@@ -189,24 +197,24 @@ openclaw memory rem-harness --json
توجد جميع الإعدادات ضمن `plugins.entries.memory-core.config.dreaming`.
-| المفتاح | الافتراضي |
-| ----------- | ---------- |
-| `enabled` | `false` |
+| المفتاح | الافتراضي |
+| ----------- | ----------- |
+| `enabled` | `false` |
| `frequency` | `0 3 * * *` |
-سياسة المراحل، والحدود، وسلوك التخزين هي تفاصيل تنفيذ داخلية
+سياسة المراحل، والعتبات، وسلوك التخزين هي تفاصيل تنفيذ داخلية
(وليست إعدادات موجهة للمستخدم).
راجع [مرجع إعدادات الذاكرة](/ar/reference/memory-config#dreaming-experimental)
-للحصول على قائمة المفاتيح الكاملة.
+للاطلاع على القائمة الكاملة للمفاتيح.
## واجهة Dreams
عند التفعيل، تعرض علامة تبويب **Dreams** في Gateway ما يلي:
- حالة تفعيل الحلم الحالية
-- الحالة على مستوى المرحلة ووجود العملية المُدارة
-- أعداد الذاكرة القصيرة المدى، وطويلة المدى، والمُرقّاة اليوم
+- الحالة على مستوى المرحلة ووجود الاكتساح المُدار
+- أعداد الذاكرة قصيرة الأمد وطويلة الأمد والمُرقّاة اليوم
- توقيت التشغيل المجدول التالي
- قارئ يوميات أحلام قابل للتوسيع ومدعوم بواسطة `doctor.memory.dreamDiary`
diff --git a/docs/ar/gateway/configuration-reference.md b/docs/ar/gateway/configuration-reference.md
index b3797a4ba..17bc53eef 100644
--- a/docs/ar/gateway/configuration-reference.md
+++ b/docs/ar/gateway/configuration-reference.md
@@ -1,37 +1,37 @@
---
read_when:
- - تحتاج إلى دلالات الإعدادات الدقيقة على مستوى الحقول أو القيم الافتراضية
- - أنت تتحقق من كتل إعدادات القناة أو النموذج أو البوابة أو الأدوات
-summary: مرجع إعدادات البوابة لمفاتيح OpenClaw الأساسية والقيم الافتراضية والروابط إلى المراجع الفرعية المخصصة
+ - تحتاج إلى دلالات إعدادات دقيقة على مستوى الحقول أو إلى القيم الافتراضية
+ - تتحقق من كتل إعدادات القنوات أو النماذج أو البوابة أو الأدوات
+summary: مرجع إعدادات البوابة لمفاتيح OpenClaw الأساسية والقيم الافتراضية والروابط إلى مراجع الأنظمة الفرعية المخصصة
title: مرجع الإعدادات
x-i18n:
- generated_at: "2026-04-08T06:06:51Z"
+ generated_at: "2026-04-08T07:22:22Z"
model: gpt-5.4
provider: openai
- source_hash: 2f9ab34fb56897a77cb038d95bea21e8530d8f0402b66d1ee97c73822a1e8fd4
+ source_hash: fd5f69050455e610fc7c825d95f546a16aa867b8a9c0d692a48de36419b0afc2
source_path: gateway/configuration-reference.md
workflow: 15
---
# مرجع الإعدادات
-مرجع الإعدادات الأساسي لملف `~/.openclaw/openclaw.json`. للحصول على نظرة عامة موجهة حسب المهام، راجع [الإعدادات](/ar/gateway/configuration).
+مرجع الإعدادات الأساسي لملف `~/.openclaw/openclaw.json`. للحصول على نظرة عامة موجهة بحسب المهمة، راجع [الإعدادات](/ar/gateway/configuration).
-تغطي هذه الصفحة أسطح إعدادات OpenClaw الرئيسية وتضع روابط خارجية عندما يكون لأحد الأنظمة الفرعية مرجع أعمق خاص به. وهي **لا** تحاول تضمين كل كتالوج أوامر مملوك لقناة/إضافة أو كل إعداد عميق للذاكرة/QMD في صفحة واحدة.
+تغطي هذه الصفحة أسطح إعدادات OpenClaw الرئيسية وتضع روابط خارجية عندما يكون لدى نظام فرعي مرجع أعمق خاص به. وهي **لا** تحاول تضمين كل فهرس أوامر مملوك للقنوات/الـ plugin أو كل خيار عميق للذاكرة/QMD في صفحة واحدة.
-المصدر البرمجي للحقيقة:
+مصدر الحقيقة في الشيفرة:
-- `openclaw config schema` يطبع مخطط JSON Schema الحي المستخدم للتحقق وواجهة Control UI، مع دمج بيانات الإضافات/القنوات/الملحقات المجمعة عند توفرها
-- `config.schema.lookup` يعيد عقدة مخطط واحدة محددة بالمسار لأدوات الاستكشاف التفصيلي
-- `pnpm config:docs:check` / `pnpm config:docs:gen` يتحققان من تجزئة خط الأساس لوثائق الإعدادات مقابل سطح المخطط الحالي
+- يطبع `openclaw config schema` مخطط JSON Schema الحي المستخدم للتحقق وواجهة Control UI، مع دمج بيانات bundled/plugin/channel الوصفية عند توفرها
+- يعيد `config.schema.lookup` عقدة مخطط واحدة ضمن نطاق مسار واحد لأدوات التعمق
+- يتحقق `pnpm config:docs:check` / `pnpm config:docs:gen` من تجزئة خط الأساس لوثائق الإعدادات مقابل سطح المخطط الحالي
-مراجع عميقة مخصصة:
+المراجع العميقة المخصصة:
- [مرجع إعدادات الذاكرة](/ar/reference/memory-config) لـ `agents.defaults.memorySearch.*` و`memory.qmd.*` و`memory.citations` وإعدادات dreaming تحت `plugins.entries.memory-core.config.dreaming`
-- [أوامر Slash](/ar/tools/slash-commands) لكتالوج الأوامر المضمنة + المجمعة الحالي
-- صفحات القنوات/الإضافات المالكة لأسطح الأوامر الخاصة بكل قناة
+- [أوامر Slash](/ar/tools/slash-commands) لفهرس الأوامر الحالي المضمن + bundled
+- صفحات القنوات/الـ plugin المالكة لأسطح الأوامر الخاصة بكل قناة
-تنسيق الإعدادات هو **JSON5** (يُسمح بالتعليقات والفواصل اللاحقة). جميع الحقول اختيارية — يستخدم OpenClaw قيمًا افتراضية آمنة عند حذفها.
+صيغة الإعدادات هي **JSON5** (يُسمح بالتعليقات والفواصل اللاحقة). جميع الحقول اختيارية — يستخدم OpenClaw قيمًا افتراضية آمنة عند حذفها.
---
@@ -43,28 +43,28 @@ x-i18n:
تدعم جميع القنوات سياسات الرسائل الخاصة وسياسات المجموعات:
-| سياسة الرسائل الخاصة | السلوك |
-| -------------------- | ------------------------------------------------------------- |
-| `pairing` (الافتراضي) | يحصل المرسلون غير المعروفين على رمز اقتران لمرة واحدة؛ ويجب أن يوافق المالك |
-| `allowlist` | فقط المرسلون الموجودون في `allowFrom` (أو مخزن السماح المقترن) |
-| `open` | السماح بجميع الرسائل الخاصة الواردة (يتطلب `allowFrom: ["*"]`) |
-| `disabled` | تجاهل جميع الرسائل الخاصة الواردة |
+| سياسة الرسائل الخاصة | السلوك |
+| ------------------- | ------ |
+| `pairing` (الافتراضي) | يحصل المرسلون غير المعروفين على رمز اقتران لمرة واحدة؛ ويجب على المالك الموافقة |
+| `allowlist` | فقط المرسلون الموجودون في `allowFrom` (أو مخزن السماح المقترن) |
+| `open` | السماح بكل الرسائل الخاصة الواردة (يتطلب `allowFrom: ["*"]`) |
+| `disabled` | تجاهل كل الرسائل الخاصة الواردة |
-| سياسة المجموعة | السلوك |
-| ---------------------- | ---------------------------------------------------- |
-| `allowlist` (الافتراضي) | فقط المجموعات المطابقة لقائمة السماح المهيأة |
-| `open` | تجاوز قوائم السماح للمجموعات (مع استمرار تطبيق بوابة الإشارات) |
-| `disabled` | حظر جميع رسائل المجموعات/الغرف |
+| سياسة المجموعة | السلوك |
+| --------------------- | ------------------------------------------------------ |
+| `allowlist` (الافتراضي) | فقط المجموعات المطابقة لقائمة السماح المهيأة |
+| `open` | تجاوز قوائم سماح المجموعات (لا يزال فرض الإشارة مطبقًا) |
+| `disabled` | حظر كل رسائل المجموعات/الغرف |
-يضبط `channels.defaults.groupPolicy` السياسة الافتراضية عندما لا تكون `groupPolicy` لموفّر ما معيّنة.
-تنتهي صلاحية رموز الاقتران بعد ساعة واحدة. ويُحدَّد الحد الأقصى لطلبات اقتران الرسائل الخاصة المعلّقة عند **3 لكل قناة**.
-إذا كانت كتلة الموفّر مفقودة بالكامل (`channels.` غير موجودة)، تعود سياسة المجموعات وقت التشغيل إلى `allowlist` (فشل مغلق) مع تحذير عند بدء التشغيل.
+يضبط `channels.defaults.groupPolicy` القيمة الافتراضية عندما لا تكون `groupPolicy` الخاصة بالموفر مضبوطة.
+تنتهي صلاحية رموز الاقتران بعد ساعة واحدة. يتم تقييد طلبات اقتران الرسائل الخاصة المعلقة عند **3 لكل قناة**.
+إذا كانت كتلة الموفّر مفقودة بالكامل (`channels.` غير موجودة)، فإن سياسة المجموعة وقت التشغيل تعود إلى `allowlist` (إغلاق آمن) مع تحذير عند بدء التشغيل.
### تجاوزات نموذج القناة
-استخدم `channels.modelByChannel` لتثبيت معرّفات قنوات محددة على نموذج معين. تقبل القيم `provider/model` أو الأسماء المستعارة للنماذج المهيأة. ويُطبَّق تعيين القناة عندما لا تكون الجلسة تملك بالفعل تجاوزًا للنموذج (على سبيل المثال، تم تعيينه عبر `/model`).
+استخدم `channels.modelByChannel` لتثبيت معرفات قنوات محددة على نموذج معين. تقبل القيم `provider/model` أو الأسماء المستعارة للنماذج المهيأة. يتم تطبيق تعيين القناة عندما لا تكون الجلسة تملك بالفعل تجاوزًا للنموذج (على سبيل المثال، تم ضبطه عبر `/model`).
```json5
{
@@ -85,9 +85,9 @@ x-i18n:
}
```
-### افتراضيات القنوات ونبض الحالة
+### القيم الافتراضية للقنوات ونبض الحياة
-استخدم `channels.defaults` لسلوك سياسة المجموعات ونبض الحالة المشترك عبر الموفّرين:
+استخدم `channels.defaults` لسلوك سياسة المجموعات ونبض الحياة المشترك عبر الموفّرين:
```json5
{
@@ -105,15 +105,15 @@ x-i18n:
}
```
-- `channels.defaults.groupPolicy`: سياسة المجموعات الاحتياطية عندما لا تكون `groupPolicy` على مستوى الموفّر معيّنة.
-- `channels.defaults.contextVisibility`: وضع الرؤية الافتراضي للسياق التكميلي لجميع القنوات. القيم: `all` (الافتراضي، تضمين كل سياق الاقتباس/الخيط/السجل)، `allowlist` (تضمين السياق فقط من المرسلين الموجودين في قائمة السماح)، `allowlist_quote` (مثل allowlist لكن مع الاحتفاظ بسياق الاقتباس/الرد الصريح). تجاوز لكل قناة: `channels..contextVisibility`.
-- `channels.defaults.heartbeat.showOk`: تضمين حالات القنوات السليمة في مخرجات نبض الحالة.
-- `channels.defaults.heartbeat.showAlerts`: تضمين الحالات المتدهورة/الخطأ في مخرجات نبض الحالة.
-- `channels.defaults.heartbeat.useIndicator`: عرض مخرجات نبض الحالة بنمط مؤشر مضغوط.
+- `channels.defaults.groupPolicy`: سياسة المجموعة الاحتياطية عندما لا تكون `groupPolicy` على مستوى الموفّر مضبوطة.
+- `channels.defaults.contextVisibility`: وضع ظهور السياق التكميلي الافتراضي لكل القنوات. القيم: `all` (افتراضي، تضمين كل سياق الاقتباس/الخيط/السجل)، `allowlist` (تضمين السياق فقط من المرسلين الموجودين في قائمة السماح)، `allowlist_quote` (مثل allowlist لكن مع الاحتفاظ بسياق الاقتباس/الرد الصريح). تجاوز لكل قناة: `channels..contextVisibility`.
+- `channels.defaults.heartbeat.showOk`: تضمين حالات القنوات السليمة في خرج نبض الحياة.
+- `channels.defaults.heartbeat.showAlerts`: تضمين الحالات المتدهورة/الخطأ في خرج نبض الحياة.
+- `channels.defaults.heartbeat.useIndicator`: عرض خرج نبض الحياة بأسلوب مؤشرات مدمج.
### WhatsApp
-يعمل WhatsApp عبر قناة الويب الخاصة بالبوابة (Baileys Web). ويبدأ تلقائيًا عند وجود جلسة مرتبطة.
+يعمل WhatsApp عبر قناة الويب الخاصة بالبوابة (Baileys Web). ويبدأ تلقائيًا عندما توجد جلسة مرتبطة.
```json5
{
@@ -164,9 +164,9 @@ x-i18n:
}
```
-- تستخدم الأوامر الصادرة الحساب `default` افتراضيًا إذا كان موجودًا؛ وإلا أول معرّف حساب مهيأ (بعد الفرز).
-- يقوم `channels.whatsapp.defaultAccount` الاختياري بتجاوز اختيار الحساب الافتراضي الاحتياطي عندما يطابق معرّف حساب مهيأ.
-- يُرحَّل دليل مصادقة Baileys القديم ذي الحساب الواحد بواسطة `openclaw doctor` إلى `whatsapp/default`.
+- تستخدم الأوامر الصادرة الحساب `default` افتراضيًا إذا كان موجودًا؛ وإلا فيُستخدم أول معرّف حساب مهيأ (بعد الفرز).
+- يجاوز `channels.whatsapp.defaultAccount` الاختياري اختيار الحساب الافتراضي الاحتياطي ذلك عندما يطابق معرّف حساب مهيأ.
+- يتم ترحيل دليل مصادقة Baileys القديم أحادي الحساب بواسطة `openclaw doctor` إلى `whatsapp/default`.
- تجاوزات لكل حساب: `channels.whatsapp.accounts..sendReadReceipts` و`channels.whatsapp.accounts..dmPolicy` و`channels.whatsapp.accounts..allowFrom`.
@@ -185,24 +185,24 @@ x-i18n:
"*": { requireMention: true },
"-1001234567890": {
allowFrom: ["@admin"],
- systemPrompt: "اجعل الإجابات مختصرة.",
+ systemPrompt: "Keep answers brief.",
topics: {
"99": {
requireMention: false,
skills: ["search"],
- systemPrompt: "ابقَ ضمن الموضوع.",
+ systemPrompt: "Stay on topic.",
},
},
},
},
customCommands: [
- { command: "backup", description: "نسخة احتياطية Git" },
- { command: "generate", description: "أنشئ صورة" },
+ { command: "backup", description: "Git backup" },
+ { command: "generate", description: "Create an image" },
],
historyLimit: 50,
replyToMode: "first", // off | first | all | batched
linkPreview: true,
- streaming: "partial", // off | partial | block | progress (الافتراضي: off؛ فعّل صراحةً لتجنب حدود المعدل الخاصة بتحرير المعاينة)
+ streaming: "partial", // off | partial | block | progress (الافتراضي: off؛ فعّل صراحة لتجنب حدود معدل تعديل المعاينة)
actions: { reactions: true, sendMessage: true },
reactionNotifications: "own", // off | own | all
mediaMaxMb: 100,
@@ -225,12 +225,12 @@ x-i18n:
}
```
-- رمز bot: `channels.telegram.botToken` أو `channels.telegram.tokenFile` (ملف عادي فقط؛ الروابط الرمزية مرفوضة)، مع `TELEGRAM_BOT_TOKEN` كقيمة احتياطية للحساب الافتراضي.
-- يقوم `channels.telegram.defaultAccount` الاختياري بتجاوز اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
-- في إعدادات تعدد الحسابات (معرّفا حساب أو أكثر)، عيّن افتراضيًا صريحًا (`channels.telegram.defaultAccount` أو `channels.telegram.accounts.default`) لتجنب التوجيه الاحتياطي؛ ويحذر `openclaw doctor` عندما يكون هذا مفقودًا أو غير صالح.
-- `configWrites: false` يحظر عمليات كتابة الإعدادات التي يبدأها Telegram (ترحيلات معرّفات المجموعات الفائقة، `/config set|unset`).
-- تهيئ إدخالات `bindings[]` من المستوى الأعلى ذات `type: "acp"` روابط ACP دائمة لموضوعات المنتدى (استخدم الصيغة القياسية `chatId:topic:topicId` في `match.peer.id`). دلالات الحقول مشتركة في [ACP Agents](/ar/tools/acp-agents#channel-specific-settings).
-- تستخدم معاينات تدفق Telegram `sendMessage` + `editMessageText` (وتعمل في الدردشات المباشرة والجماعية).
+- رمز bot: `channels.telegram.botToken` أو `channels.telegram.tokenFile` (ملف عادي فقط؛ تُرفض الروابط الرمزية)، مع `TELEGRAM_BOT_TOKEN` كاحتياطي للحساب الافتراضي.
+- يجاوز `channels.telegram.defaultAccount` الاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
+- في إعدادات الحسابات المتعددة (2+ من معرّفات الحسابات)، اضبط قيمة افتراضية صريحة (`channels.telegram.defaultAccount` أو `channels.telegram.accounts.default`) لتجنب التوجيه الاحتياطي؛ ويصدر `openclaw doctor` تحذيرًا عند غياب ذلك أو عدم صحته.
+- يحظر `configWrites: false` عمليات كتابة الإعدادات التي تبدأ من Telegram (ترحيلات معرّفات supergroup و`/config set|unset`).
+- تهيّئ الإدخالات `bindings[]` العليا ذات `type: "acp"` ارتباطات ACP دائمة لمواضيع المنتديات (استخدم الصيغة المعيارية `chatId:topic:topicId` في `match.peer.id`). دلالات الحقول مشتركة في [ACP Agents](/ar/tools/acp-agents#channel-specific-settings).
+- تستخدم معاينات تدفق Telegram الأمرين `sendMessage` + `editMessageText` (ويعمل ذلك في المحادثات المباشرة والجماعية).
- سياسة إعادة المحاولة: راجع [سياسة إعادة المحاولة](/ar/concepts/retry).
### Discord
@@ -278,7 +278,7 @@ x-i18n:
requireMention: true,
users: ["987654321098765432"],
skills: ["docs"],
- systemPrompt: "إجابات قصيرة فقط.",
+ systemPrompt: "Short answers only.",
},
},
},
@@ -286,7 +286,7 @@ x-i18n:
historyLimit: 20,
textChunkLimit: 2000,
chunkMode: "length", // length | newline
- streaming: "off", // off | partial | block | progress (يُحوَّل progress إلى partial على Discord)
+ streaming: "off", // off | partial | block | progress (progress تتحول إلى partial على Discord)
maxLinesPerMessage: 17,
ui: {
components: {
@@ -333,34 +333,34 @@ x-i18n:
}
```
-- الرمز: `channels.discord.token`، مع `DISCORD_BOT_TOKEN` كقيمة احتياطية للحساب الافتراضي.
-- تستخدم الاستدعاءات الصادرة المباشرة التي توفّر `token` صريحًا لـ Discord هذا الرمز للاستدعاء؛ بينما تظل إعدادات إعادة المحاولة/السياسة الخاصة بالحساب آتية من الحساب المحدد في لقطة وقت التشغيل النشطة.
-- يقوم `channels.discord.defaultAccount` الاختياري بتجاوز اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
-- استخدم `user:` (رسالة خاصة) أو `channel:` (قناة guild) لأهداف التسليم؛ تُرفض المعرّفات الرقمية الخام.
-- تكون slugs الخاصة بـ guilds بأحرف صغيرة مع استبدال المسافات بـ `-`؛ وتستخدم مفاتيح القنوات الاسم المحوّل إلى slug (بدون `#`). ويُفضَّل استخدام معرّفات guild.
-- يتم تجاهل الرسائل التي أنشأها bot افتراضيًا. يفعّل `allowBots: true` التعامل معها؛ واستخدم `allowBots: "mentions"` لقبول رسائل bot التي تذكر bot فقط (مع استمرار تصفية الرسائل الخاصة به نفسه).
-- `channels.discord.guilds..ignoreOtherMentions` (وتجاوزات القناة) يُسقط الرسائل التي تذكر مستخدمًا أو دورًا آخر لكن لا تذكر bot (باستثناء @everyone/@here).
-- `maxLinesPerMessage` (الافتراضي 17) يقسم الرسائل الطويلة عموديًا حتى لو كانت أقل من 2000 حرف.
+- الرمز: `channels.discord.token`، مع `DISCORD_BOT_TOKEN` كاحتياطي للحساب الافتراضي.
+- تستخدم الاستدعاءات الصادرة المباشرة التي توفر `token` صريحًا لـ Discord ذلك الرمز للاستدعاء؛ بينما لا تزال إعدادات إعادة المحاولة/السياسة للحساب تأتي من الحساب المحدد في لقطة وقت التشغيل النشطة.
+- يجاوز `channels.discord.defaultAccount` الاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
+- استخدم `user:` (رسالة خاصة) أو `channel:` (قناة guild) لأهداف التسليم؛ تُرفض المعرّفات الرقمية العارية.
+- تكون Slugات الـ guild بأحرف صغيرة مع استبدال المسافات بـ `-`؛ وتستخدم مفاتيح القنوات الاسم المولد كـ slug (بدون `#`). فضّل معرّفات guild.
+- تُتجاهل الرسائل التي يؤلفها bot افتراضيًا. يفعّل `allowBots: true` قبولها؛ واستخدم `allowBots: "mentions"` لقبول رسائل bots التي تذكر bot فقط (مع استمرار تصفية رسائله الذاتية).
+- يسقط `channels.discord.guilds..ignoreOtherMentions` (وتجاوزات القنوات) الرسائل التي تذكر مستخدمًا أو دورًا آخر لكن لا تذكر bot (باستثناء @everyone/@here).
+- يجزئ `maxLinesPerMessage` (الافتراضي 17) الرسائل الطويلة عموديًا حتى عندما تكون أقل من 2000 حرف.
- يتحكم `channels.discord.threadBindings` في التوجيه المرتبط بخيوط Discord:
- - `enabled`: تجاوز Discord لميزات الجلسات المرتبطة بالخيط (`/focus` و`/unfocus` و`/agents` و`/session idle` و`/session max-age` والتسليم/التوجيه المرتبط)
- - `idleHours`: تجاوز Discord لإلغاء التركيز التلقائي بعد عدم النشاط بالساعات (`0` يعطّل)
- - `maxAgeHours`: تجاوز Discord للحد الأقصى الصارم للعمر بالساعات (`0` يعطّل)
- - `spawnSubagentSessions`: مفتاح تفعيل اختياري لإنشاء/ربط الخيوط تلقائيًا عبر `sessions_spawn({ thread: true })`
-- تهيئ إدخالات `bindings[]` من المستوى الأعلى ذات `type: "acp"` روابط ACP دائمة للقنوات والخيوط (استخدم معرّف القناة/الخيط في `match.peer.id`). دلالات الحقول مشتركة في [ACP Agents](/ar/tools/acp-agents#channel-specific-settings).
+ - `enabled`: تجاوز Discord لميزات الجلسة المرتبطة بالخيط (`/focus` و`/unfocus` و`/agents` و`/session idle` و`/session max-age` والتسليم/التوجيه المرتبط)
+ - `idleHours`: تجاوز Discord لإزالة التركيز التلقائية بعد عدم النشاط بالساعات (`0` يعطّل)
+ - `maxAgeHours`: تجاوز Discord للعمر الأقصى الصلب بالساعات (`0` يعطّل)
+ - `spawnSubagentSessions`: مفتاح تفعيل اختياري لإنشاء/ربط الخيوط تلقائيًا لـ `sessions_spawn({ thread: true })`
+- تهيّئ الإدخالات `bindings[]` العليا ذات `type: "acp"` ارتباطات ACP دائمة للقنوات والخيوط (استخدم معرّف القناة/الخيط في `match.peer.id`). دلالات الحقول مشتركة في [ACP Agents](/ar/tools/acp-agents#channel-specific-settings).
- يضبط `channels.discord.ui.components.accentColor` لون التمييز لحاويات مكونات Discord v2.
-- يفعّل `channels.discord.voice` محادثات قنوات الصوت في Discord والانضمام التلقائي الاختياري + تجاوزات TTS.
-- يمرر `channels.discord.voice.daveEncryption` و`channels.discord.voice.decryptionFailureTolerance` إلى خيارات DAVE في `@discordjs/voice` (القيم الافتراضية `true` و`24`).
-- يحاول OpenClaw أيضًا استعادة استقبال الصوت عبر مغادرة/إعادة الانضمام إلى جلسة صوتية بعد تكرار فشل فك التشفير.
-- `channels.discord.streaming` هو مفتاح وضع البث القانوني. تتم ترحيل القيم القديمة `streamMode` وقيم `streaming` المنطقية تلقائيًا.
-- يربط `channels.discord.autoPresence` توافر وقت التشغيل بحالة حضور bot (سليم => online، متدهور => idle، منهك => dnd) ويسمح بتجاوزات نص الحالة الاختيارية.
-- يعيد `channels.discord.dangerouslyAllowNameMatching` تمكين مطابقة الاسم/الوسم القابل للتغيير (وضع توافق طارئ).
+- يفعّل `channels.discord.voice` محادثات قنوات Discord الصوتية وتجاوزات الانضمام التلقائي + TTS الاختيارية.
+- يمرر `channels.discord.voice.daveEncryption` و`channels.discord.voice.decryptionFailureTolerance` مباشرة إلى خيارات DAVE في `@discordjs/voice` (الافتراضيان `true` و`24`).
+- يحاول OpenClaw أيضًا استعادة استقبال الصوت عبر مغادرة جلسة صوتية وإعادة الانضمام إليها بعد فشل متكرر في فك التشفير.
+- `channels.discord.streaming` هو مفتاح وضع البث المعياري. تتم ترقية `streamMode` القديم وقيم `streaming` المنطقية تلقائيًا.
+- يربط `channels.discord.autoPresence` توفر وقت التشغيل بحضور bot (سليم => online، متدهور => idle، مستنفد => dnd) ويسمح بتجاوزات نص الحالة الاختيارية.
+- يعيد `channels.discord.dangerouslyAllowNameMatching` تفعيل المطابقة على الأسماء/الوسوم القابلة للتغيير (وضع توافق لكسر الزجاج).
- `channels.discord.execApprovals`: تسليم موافقات exec الأصلية في Discord وتفويض الموافقين.
- - `enabled`: `true` أو `false` أو `"auto"` (الافتراضي). في الوضع التلقائي، تُفعَّل موافقات exec عندما يمكن حل الموافقين من `approvers` أو `commands.ownerAllowFrom`.
- - `approvers`: معرّفات مستخدمي Discord المسموح لهم بالموافقة على طلبات exec. يعود إلى `commands.ownerAllowFrom` عند الحذف.
- - `agentFilter`: قائمة سماح اختيارية لمعرّفات الوكلاء. احذفها لتمرير الموافقات لجميع الوكلاء.
- - `sessionFilter`: أنماط مفاتيح جلسة اختيارية (سلسلة فرعية أو regex).
- - `target`: مكان إرسال مطالبات الموافقة. `"dm"` (الافتراضي) يرسل إلى الرسائل الخاصة للموافقين، و`"channel"` يرسل إلى القناة الأصلية، و`"both"` يرسل إلى كليهما. عندما يشمل الهدف `"channel"`، لا يمكن استخدام الأزرار إلا من قبل الموافقين الذين تم حلهم.
- - `cleanupAfterResolve`: عندما يكون `true`، يحذف رسائل الموافقة الخاصة بعد الموافقة أو الرفض أو انتهاء المهلة.
+ - `enabled`: `true` أو `false` أو `"auto"` (افتراضي). في الوضع التلقائي، تُفعّل موافقات exec عندما يمكن حل الموافقين من `approvers` أو `commands.ownerAllowFrom`.
+ - `approvers`: معرّفات مستخدمي Discord المسموح لهم بالموافقة على طلبات exec. تعود إلى `commands.ownerAllowFrom` عند الحذف.
+ - `agentFilter`: قائمة سماح اختيارية لمعرّفات الوكلاء. احذفها لتمرير الموافقات لكل الوكلاء.
+ - `sessionFilter`: أنماط اختيارية لمفاتيح الجلسات (substring أو regex).
+ - `target`: مكان إرسال مطالبات الموافقة. `"dm"` (افتراضي) يرسل إلى الرسائل الخاصة للموافق، `"channel"` يرسل إلى القناة الأصلية، `"both"` يرسل إلى كليهما. عندما يتضمن الهدف `"channel"`، لا تكون الأزرار قابلة للاستخدام إلا من قبل الموافقين المحلولين.
+ - `cleanupAfterResolve`: عندما تكون `true`، تحذف رسائل الموافقة الخاصة بعد الموافقة أو الرفض أو انتهاء المهلة.
**أوضاع إشعارات التفاعل:** `off` (لا شيء)، `own` (رسائل bot، الافتراضي)، `all` (كل الرسائل)، `allowlist` (من `guilds..users` على كل الرسائل).
@@ -393,11 +393,11 @@ x-i18n:
}
```
-- JSON حساب الخدمة: مضمن (`serviceAccount`) أو معتمد على ملف (`serviceAccountFile`).
-- كما أن SecretRef لحساب الخدمة مدعوم أيضًا (`serviceAccountRef`).
-- القيم الاحتياطية من البيئة: `GOOGLE_CHAT_SERVICE_ACCOUNT` أو `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
+- JSON حساب الخدمة: مضمن (`serviceAccount`) أو قائم على ملف (`serviceAccountFile`).
+- يدعم أيضًا SecretRef لحساب الخدمة (`serviceAccountRef`).
+- المتغيرات البيئية الاحتياطية: `GOOGLE_CHAT_SERVICE_ACCOUNT` أو `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
- استخدم `spaces/` أو `users/` لأهداف التسليم.
-- يعيد `channels.googlechat.dangerouslyAllowNameMatching` تمكين مطابقة principal البريد الإلكتروني القابل للتغيير (وضع توافق طارئ).
+- يعيد `channels.googlechat.dangerouslyAllowNameMatching` تفعيل مطابقة هوية البريد الإلكتروني القابلة للتغيير (وضع توافق لكسر الزجاج).
### Slack
@@ -419,7 +419,7 @@ x-i18n:
allowBots: false,
users: ["U123"],
skills: ["docs"],
- systemPrompt: "إجابات قصيرة فقط.",
+ systemPrompt: "Short answers only.",
},
},
historyLimit: 50,
@@ -449,7 +449,7 @@ x-i18n:
chunkMode: "length",
streaming: {
mode: "partial", // off | partial | block | progress
- nativeTransport: true, // استخدم API البث الأصلي في Slack عندما يكون mode=partial
+ nativeTransport: true, // استخدم API البث الأصلية لـ Slack عندما mode=partial
},
mediaMaxMb: 20,
execApprovals: {
@@ -464,39 +464,39 @@ x-i18n:
}
```
-- **وضع Socket** يتطلب كلًا من `botToken` و`appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` كقيمة احتياطية من البيئة للحساب الافتراضي).
-- **وضع HTTP** يتطلب `botToken` بالإضافة إلى `signingSecret` (في الجذر أو لكل حساب).
-- تقبل `botToken` و`appToken` و`signingSecret` و`userToken` سلاسل
- نصية صريحة أو كائنات SecretRef.
-- تعرض لقطات حساب Slack حقول مصدر/حالة لكل بيانات الاعتماد مثل
+- يتطلب **وضع Socket** كلاً من `botToken` و`appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` كاحتياطي متغيرات بيئة للحساب الافتراضي).
+- يتطلب **وضع HTTP** `botToken` بالإضافة إلى `signingSecret` (على الجذر أو لكل حساب).
+- تقبل `botToken` و`appToken` و`signingSecret` و`userToken` سلاسل نصية
+ صريحة أو كائنات SecretRef.
+- تكشف لقطات حساب Slack عن حقول مصدر/حالة لكل اعتماد مثل
`botTokenSource` و`botTokenStatus` و`appTokenStatus` و، في وضع HTTP،
- `signingSecretStatus`. وتعني `configured_unavailable` أن الحساب
- مهيأ عبر SecretRef ولكن المسار الحالي للأمر/وقت التشغيل لم يتمكن
- من حل قيمة السر.
-- `configWrites: false` يحظر عمليات كتابة الإعدادات التي يبدأها Slack.
-- يقوم `channels.slack.defaultAccount` الاختياري بتجاوز اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
-- `channels.slack.streaming.mode` هو مفتاح وضع بث Slack القانوني. ويتحكم `channels.slack.streaming.nativeTransport` في ناقل البث الأصلي لـ Slack. تتم ترحيل القيم القديمة `streamMode` و`streaming` المنطقي و`nativeStreaming` تلقائيًا.
+ `signingSecretStatus`. تعني `configured_unavailable` أن الحساب
+ مهيأ عبر SecretRef لكن مسار الأمر/وقت التشغيل الحالي تعذر عليه
+ حل قيمة السر.
+- يحظر `configWrites: false` عمليات كتابة الإعدادات التي تبدأ من Slack.
+- يجاوز `channels.slack.defaultAccount` الاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
+- `channels.slack.streaming.mode` هو مفتاح وضع بث Slack المعياري. ويتحكم `channels.slack.streaming.nativeTransport` في نقل البث الأصلي لـ Slack. تتم ترقية `streamMode` القديم وقيم `streaming` المنطقية و`nativeStreaming` تلقائيًا.
- استخدم `user:` (رسالة خاصة) أو `channel:` لأهداف التسليم.
-**أوضاع إشعارات التفاعل:** `off` و`own` (الافتراضي) و`all` و`allowlist` (من `reactionAllowlist`).
+**أوضاع إشعارات التفاعل:** `off` و`own` (افتراضي) و`all` و`allowlist` (من `reactionAllowlist`).
-**عزل جلسات الخيوط:** يكون `thread.historyScope` لكل خيط (الافتراضي) أو مشتركًا عبر القناة. ويقوم `thread.inheritParent` بنسخ سجل القناة الأصلية إلى الخيوط الجديدة.
+**عزل جلسات الخيوط:** يكون `thread.historyScope` لكل خيط (افتراضي) أو مشتركًا عبر القناة. ينسخ `thread.inheritParent` نص القناة الأصلية إلى الخيوط الجديدة.
-- يتطلب البث الأصلي في Slack بالإضافة إلى حالة الخيط بأسلوب "يكتب الآن..." هدف خيط رد. تبقى الرسائل الخاصة العليا خارج الخيوط افتراضيًا، لذلك تستخدم `typingReaction` أو التسليم العادي بدلًا من معاينة نمط الخيط.
-- تضيف `typingReaction` تفاعلًا مؤقتًا إلى رسالة Slack الواردة أثناء تشغيل الرد، ثم تزيله عند الاكتمال. استخدم اختصار emoji في Slack مثل `"hourglass_flowing_sand"`.
-- `channels.slack.execApprovals`: تسليم موافقات exec الأصلية في Slack وتفويض الموافقين. نفس مخطط Discord: `enabled` (`true`/`false`/`"auto"`) و`approvers` (معرّفات مستخدمي Slack) و`agentFilter` و`sessionFilter` و`target` (`"dm"` أو `"channel"` أو `"both"`).
+- يتطلب البث الأصلي في Slack بالإضافة إلى حالة الخيط "is typing..." بأسلوب المساعد في Slack هدف رد داخل خيط. تبقى الرسائل الخاصة ذات المستوى الأعلى خارج الخيوط افتراضيًا، لذا تستخدم `typingReaction` أو التسليم العادي بدلًا من المعاينة بأسلوب الخيط.
+- تضيف `typingReaction` تفاعلًا مؤقتًا إلى رسالة Slack الواردة أثناء تشغيل الرد، ثم تزيله عند الاكتمال. استخدم shortcode لرمز Slack مثل `"hourglass_flowing_sand"`.
+- `channels.slack.execApprovals`: تسليم موافقات exec الأصلية في Slack وتفويض الموافقين. المخطط نفسه كما في Discord: `enabled` (`true`/`false`/`"auto"`) و`approvers` (معرّفات مستخدمي Slack) و`agentFilter` و`sessionFilter` و`target` (`"dm"` أو `"channel"` أو `"both"`).
-| مجموعة الإجراء | الافتراضي | ملاحظات |
-| -------------- | --------- | ------------------------ |
-| reactions | مفعّل | التفاعل + سرد التفاعلات |
-| messages | مفعّل | قراءة/إرسال/تعديل/حذف |
-| pins | مفعّل | تثبيت/إلغاء تثبيت/سرد |
-| memberInfo | مفعّل | معلومات العضو |
-| emojiList | مفعّل | قائمة emoji المخصصة |
+| مجموعة الإجراءات | الافتراضي | ملاحظات |
+| ------------ | ------- | ---------------------- |
+| reactions | مفعّل | التفاعل + سرد التفاعلات |
+| messages | مفعّل | قراءة/إرسال/تحرير/حذف |
+| pins | مفعّل | تثبيت/إزالة تثبيت/سرد |
+| memberInfo | مفعّل | معلومات العضو |
+| emojiList | مفعّل | قائمة emoji المخصصة |
### Mattermost
-يُشحن Mattermost كإضافة: `openclaw plugins install @openclaw/mattermost`.
+يأتي Mattermost كـ plugin: `openclaw plugins install @openclaw/mattermost`.
```json5
{
@@ -516,7 +516,7 @@ x-i18n:
native: true, // تفعيل اختياري
nativeSkills: true,
callbackPath: "/api/channels/mattermost/command",
- // URL صريح اختياري لعمليات النشر خلف proxy عكسي/العامة
+ // URL صريح اختياري لعمليات النشر عبر reverse-proxy/العامة
callbackUrl: "https://gateway.example.com/api/channels/mattermost/command",
},
textChunkLimit: 4000,
@@ -526,23 +526,23 @@ x-i18n:
}
```
-أوضاع المحادثة: `oncall` (الرد عند @-mention، الافتراضي)، و`onmessage` (كل رسالة)، و`onchar` (الرسائل التي تبدأ ببادئة المحفّز).
+أوضاع الدردشة: `oncall` (الرد عند @-mention، الافتراضي)، `onmessage` (كل رسالة)، `onchar` (الرسائل التي تبدأ ببادئة تشغيل).
-عندما تكون الأوامر الأصلية لـ Mattermost مفعلة:
+عند تفعيل أوامر Mattermost الأصلية:
-- يجب أن يكون `commands.callbackPath` مسارًا (مثل `/api/channels/mattermost/command`) وليس URL كاملًا.
-- يجب أن يُحل `commands.callbackUrl` إلى نقطة نهاية بوابة OpenClaw وأن يكون قابلاً للوصول من خادم Mattermost.
-- تتم مصادقة استدعاءات slash الأصلية باستخدام الرموز الخاصة بكل أمر التي
- يعيدها Mattermost أثناء تسجيل أوامر slash. إذا فشل التسجيل أو لم
- تُفعّل أي أوامر، يرفض OpenClaw الاستدعاءات برسالة
+- يجب أن تكون `commands.callbackPath` مسارًا (مثل `/api/channels/mattermost/command`) وليس URL كاملًا.
+- يجب أن تحل `commands.callbackUrl` إلى نقطة نهاية بوابة OpenClaw وأن تكون قابلة للوصول من خادم Mattermost.
+- تتم مصادقة ردود slash الأصلية بواسطة الرموز الخاصة بكل أمر
+ التي يعيدها Mattermost أثناء تسجيل slash command. إذا فشل التسجيل أو لم
+ تُفعَّل أي أوامر، يرفض OpenClaw الردود برسالة
`Unauthorized: invalid command token.`
-- بالنسبة لمضيفات الاستدعاء الخاصة/الداخلية/Tailscale، قد يتطلب Mattermost
- أن يتضمن `ServiceSettings.AllowedUntrustedInternalConnections` مضيف/نطاق الاستدعاء.
- استخدم قيم المضيف/النطاق، وليس URLs كاملة.
-- `channels.mattermost.configWrites`: السماح أو المنع لعمليات كتابة الإعدادات التي يبدأها Mattermost.
+- بالنسبة لمضيفي callback الخاصين/الداخليين/tailnet، قد يتطلب Mattermost
+ أن تتضمن `ServiceSettings.AllowedUntrustedInternalConnections` المضيف/المجال الخاص بالـ callback.
+ استخدم قيم المضيف/المجال، وليس URLs كاملة.
+- `channels.mattermost.configWrites`: السماح أو المنع لعمليات كتابة الإعدادات التي تبدأ من Mattermost.
- `channels.mattermost.requireMention`: يتطلب `@mention` قبل الرد في القنوات.
-- `channels.mattermost.groups..requireMention`: تجاوز لبوابة الإشارة لكل قناة (`"*"` للافتراضي).
-- يقوم `channels.mattermost.defaultAccount` الاختياري بتجاوز اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
+- `channels.mattermost.groups..requireMention`: تجاوز فرض الإشارة لكل قناة (`"*"` للافتراضي).
+- يجاوز `channels.mattermost.defaultAccount` الاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
### Signal
@@ -563,15 +563,15 @@ x-i18n:
}
```
-**أوضاع إشعارات التفاعل:** `off` و`own` (الافتراضي) و`all` و`allowlist` (من `reactionAllowlist`).
+**أوضاع إشعارات التفاعل:** `off` و`own` (افتراضي) و`all` و`allowlist` (من `reactionAllowlist`).
- `channels.signal.account`: يثبت بدء تشغيل القناة على هوية حساب Signal محددة.
-- `channels.signal.configWrites`: السماح أو المنع لعمليات كتابة الإعدادات التي يبدأها Signal.
-- يقوم `channels.signal.defaultAccount` الاختياري بتجاوز اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
+- `channels.signal.configWrites`: السماح أو المنع لعمليات كتابة الإعدادات التي تبدأ من Signal.
+- يجاوز `channels.signal.defaultAccount` الاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
### BlueBubbles
-BlueBubbles هو المسار الموصى به لـ iMessage (مدعوم بإضافة، ومهيأ تحت `channels.bluebubbles`).
+يعد BlueBubbles المسار الموصى به لـ iMessage (مدعومًا عبر plugin، ويُضبط تحت `channels.bluebubbles`).
```json5
{
@@ -579,7 +579,7 @@ BlueBubbles هو المسار الموصى به لـ iMessage (مدعوم بإض
bluebubbles: {
enabled: true,
dmPolicy: "pairing",
- // serverUrl وpassword وwebhookPath وعناصر التحكم في المجموعات والإجراءات المتقدمة:
+ // serverUrl وpassword وwebhookPath وعناصر تحكم المجموعات والإجراءات المتقدمة:
// راجع /channels/bluebubbles
},
},
@@ -587,13 +587,13 @@ BlueBubbles هو المسار الموصى به لـ iMessage (مدعوم بإض
```
- مسارات المفاتيح الأساسية المغطاة هنا: `channels.bluebubbles` و`channels.bluebubbles.dmPolicy`.
-- يقوم `channels.bluebubbles.defaultAccount` الاختياري بتجاوز اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
-- يمكن لإدخالات `bindings[]` من المستوى الأعلى ذات `type: "acp"` ربط محادثات BlueBubbles بجلسات ACP دائمة. استخدم handle أو سلسلة هدف BlueBubbles (`chat_id:*` أو `chat_guid:*` أو `chat_identifier:*`) في `match.peer.id`. دلالات الحقول المشتركة: [ACP Agents](/ar/tools/acp-agents#channel-specific-settings).
-- إعداد قناة BlueBubbles الكامل موثّق في [BlueBubbles](/ar/channels/bluebubbles).
+- يجاوز `channels.bluebubbles.defaultAccount` الاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
+- يمكن لإدخالات `bindings[]` العليا ذات `type: "acp"` ربط محادثات BlueBubbles بجلسات ACP دائمة. استخدم handle في BlueBubbles أو سلسلة الهدف (`chat_id:*` أو `chat_guid:*` أو `chat_identifier:*`) في `match.peer.id`. دلالات الحقول المشتركة: [ACP Agents](/ar/tools/acp-agents#channel-specific-settings).
+- إعدادات قناة BlueBubbles الكاملة موثقة في [BlueBubbles](/ar/channels/bluebubbles).
### iMessage
-يقوم OpenClaw بتشغيل `imsg rpc` (JSON-RPC عبر stdio). لا حاجة إلى daemon أو منفذ.
+يشغّل OpenClaw الأمر `imsg rpc` (JSON-RPC عبر stdio). لا حاجة إلى daemon أو منفذ.
```json5
{
@@ -617,17 +617,17 @@ BlueBubbles هو المسار الموصى به لـ iMessage (مدعوم بإض
}
```
-- يقوم `channels.imessage.defaultAccount` الاختياري بتجاوز اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
+- يجاوز `channels.imessage.defaultAccount` الاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
-- يتطلب Full Disk Access لقاعدة بيانات الرسائل.
-- فضّل أهداف `chat_id:`. استخدم `imsg chats --limit 20` لسرد الدردشات.
-- يمكن أن يشير `cliPath` إلى wrapper عبر SSH؛ اضبط `remoteHost` (`host` أو `user@host`) لجلب المرفقات عبر SCP.
-- يقيّد `attachmentRoots` و`remoteAttachmentRoots` مسارات المرفقات الواردة (الافتراضي: `/Users/*/Library/Messages/Attachments`).
-- يستخدم SCP تحققًا صارمًا من مفتاح المضيف، لذا تأكد من أن مفتاح مضيف relay موجود بالفعل في `~/.ssh/known_hosts`.
-- `channels.imessage.configWrites`: السماح أو المنع لعمليات كتابة الإعدادات التي يبدأها iMessage.
-- يمكن لإدخالات `bindings[]` من المستوى الأعلى ذات `type: "acp"` ربط محادثات iMessage بجلسات ACP دائمة. استخدم handle موحدًا أو هدف دردشة صريحًا (`chat_id:*` أو `chat_guid:*` أو `chat_identifier:*`) في `match.peer.id`. دلالات الحقول المشتركة: [ACP Agents](/ar/tools/acp-agents#channel-specific-settings).
+- يتطلب Full Disk Access إلى قاعدة بيانات Messages.
+- فضّل أهداف `chat_id:`. استخدم `imsg chats --limit 20` لسرد المحادثات.
+- يمكن أن يشير `cliPath` إلى غلاف SSH؛ واضبط `remoteHost` (`host` أو `user@host`) لجلب المرفقات عبر SCP.
+- تقيد `attachmentRoots` و`remoteAttachmentRoots` مسارات المرفقات الواردة (الافتراضي: `/Users/*/Library/Messages/Attachments`).
+- يستخدم SCP تحققًا صارمًا من مفتاح المضيف، لذا تأكد من وجود مفتاح مضيف relay بالفعل في `~/.ssh/known_hosts`.
+- `channels.imessage.configWrites`: السماح أو المنع لعمليات كتابة الإعدادات التي تبدأ من iMessage.
+- يمكن لإدخالات `bindings[]` العليا ذات `type: "acp"` ربط محادثات iMessage بجلسات ACP دائمة. استخدم handle مطبعًا أو هدف محادثة صريحًا (`chat_id:*` أو `chat_guid:*` أو `chat_identifier:*`) في `match.peer.id`. دلالات الحقول المشتركة: [ACP Agents](/ar/tools/acp-agents#channel-specific-settings).
-
+
```bash
#!/usr/bin/env bash
@@ -638,7 +638,7 @@ exec ssh -T gateway-host imsg "$@"
### Matrix
-تُدعَم Matrix عبر امتداد وتُهيّأ تحت `channels.matrix`.
+Matrix مدعوم عبر extension ويُضبط تحت `channels.matrix`.
```json5
{
@@ -669,24 +669,24 @@ exec ssh -T gateway-host imsg "$@"
```
- تستخدم مصادقة الرمز `accessToken`؛ وتستخدم مصادقة كلمة المرور `userId` + `password`.
-- يوجّه `channels.matrix.proxy` حركة HTTP الخاصة بـ Matrix عبر proxy HTTP(S) صريح. ويمكن للحسابات المسماة تجاوز ذلك عبر `channels.matrix.accounts..proxy`.
-- يسمح `channels.matrix.network.dangerouslyAllowPrivateNetwork` بخوادم homeserver الخاصة/الداخلية. ويُعد `proxy` وهذا التفعيل للشبكة عنصرَي تحكم مستقلين.
-- يحدد `channels.matrix.defaultAccount` الحساب المفضل في إعدادات تعدد الحسابات.
-- القيمة الافتراضية لـ `channels.matrix.autoJoin` هي `off`، لذلك يتم تجاهل الغرف المدعو إليها والدعوات الجديدة بأسلوب الرسائل الخاصة حتى تضبط `autoJoin: "allowlist"` مع `autoJoinAllowlist` أو `autoJoin: "always"`.
+- يوجّه `channels.matrix.proxy` حركة HTTP الخاصة بـ Matrix عبر وكيل HTTP(S) صريح. ويمكن للحسابات المسماة تجاوزه عبر `channels.matrix.accounts..proxy`.
+- يسمح `channels.matrix.network.dangerouslyAllowPrivateNetwork` بخوادم homeserver الخاصة/الداخلية. إن `proxy` وهذا التفعيل الشبكي تحكمان مستقلان.
+- يحدد `channels.matrix.defaultAccount` الحساب المفضل في إعدادات الحسابات المتعددة.
+- يكون `channels.matrix.autoJoin` افتراضيًا `off`، لذا تُتجاهل الغرف المدعو إليها ودعوات الرسائل الخاصة الجديدة حتى تضبط `autoJoin: "allowlist"` مع `autoJoinAllowlist` أو `autoJoin: "always"`.
- `channels.matrix.execApprovals`: تسليم موافقات exec الأصلية في Matrix وتفويض الموافقين.
- - `enabled`: `true` أو `false` أو `"auto"` (الافتراضي). في الوضع التلقائي، تُفعَّل موافقات exec عندما يمكن حل الموافقين من `approvers` أو `commands.ownerAllowFrom`.
+ - `enabled`: `true` أو `false` أو `"auto"` (افتراضي). في الوضع التلقائي، تُفعّل موافقات exec عندما يمكن حل الموافقين من `approvers` أو `commands.ownerAllowFrom`.
- `approvers`: معرّفات مستخدمي Matrix (مثل `@owner:example.org`) المسموح لهم بالموافقة على طلبات exec.
- - `agentFilter`: قائمة سماح اختيارية لمعرّفات الوكلاء. احذفها لتمرير الموافقات لجميع الوكلاء.
- - `sessionFilter`: أنماط مفاتيح جلسة اختيارية (سلسلة فرعية أو regex).
- - `target`: مكان إرسال مطالبات الموافقة. `"dm"` (الافتراضي) أو `"channel"` (الغرفة الأصلية) أو `"both"`.
+ - `agentFilter`: قائمة سماح اختيارية لمعرّفات الوكلاء. احذفها لتمرير الموافقات لكل الوكلاء.
+ - `sessionFilter`: أنماط اختيارية لمفاتيح الجلسات (substring أو regex).
+ - `target`: مكان إرسال مطالبات الموافقة. `"dm"` (افتراضي) أو `"channel"` (الغرفة الأصلية) أو `"both"`.
- تجاوزات لكل حساب: `channels.matrix.accounts..execApprovals`.
-- يتحكم `channels.matrix.dm.sessionScope` في كيفية تجميع رسائل Matrix الخاصة ضمن الجلسات: `per-user` (الافتراضي) يشارك حسب peer الموجَّه، بينما `per-room` يعزل كل غرفة رسالة خاصة.
-- تستخدم مجسات حالة Matrix وعمليات البحث الحي في الدليل نفس سياسة الـ proxy الخاصة بحركة وقت التشغيل.
-- إعداد Matrix الكامل، وقواعد الاستهداف، وأمثلة الإعداد موثّقة في [Matrix](/ar/channels/matrix).
+- يتحكم `channels.matrix.dm.sessionScope` في كيفية تجميع الرسائل الخاصة لـ Matrix إلى جلسات: `per-user` (افتراضي) يشارك حسب النظير الموجه إليه، بينما `per-room` يعزل كل غرفة رسالة خاصة.
+- تستخدم مجسات حالة Matrix وعمليات البحث في الدليل الحي سياسة الوكيل نفسها المستخدمة في حركة وقت التشغيل.
+- إعدادات Matrix الكاملة وقواعد الاستهداف وأمثلة الإعداد موثقة في [Matrix](/ar/channels/matrix).
### Microsoft Teams
-تُدعَم Microsoft Teams عبر امتداد وتُهيّأ تحت `channels.msteams`.
+Microsoft Teams مدعوم عبر extension ويُضبط تحت `channels.msteams`.
```json5
{
@@ -702,11 +702,11 @@ exec ssh -T gateway-host imsg "$@"
```
- مسارات المفاتيح الأساسية المغطاة هنا: `channels.msteams` و`channels.msteams.configWrites`.
-- إعداد Teams الكامل (بيانات الاعتماد، webhook، سياسة الرسائل الخاصة/المجموعات، التجاوزات لكل فريق/قناة) موثّق في [Microsoft Teams](/ar/channels/msteams).
+- إعدادات Teams الكاملة (بيانات الاعتماد وwebhook وسياسة الرسائل الخاصة/المجموعات وتجاوزات كل فريق/كل قناة) موثقة في [Microsoft Teams](/ar/channels/msteams).
### IRC
-تُدعَم IRC عبر امتداد وتُهيّأ تحت `channels.irc`.
+IRC مدعوم عبر extension ويُضبط تحت `channels.irc`.
```json5
{
@@ -728,10 +728,10 @@ exec ssh -T gateway-host imsg "$@"
```
- مسارات المفاتيح الأساسية المغطاة هنا: `channels.irc` و`channels.irc.dmPolicy` و`channels.irc.configWrites` و`channels.irc.nickserv.*`.
-- يقوم `channels.irc.defaultAccount` الاختياري بتجاوز اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
-- إعداد قناة IRC الكامل (المضيف/المنفذ/TLS/القنوات/قوائم السماح/بوابة الإشارات) موثّق في [IRC](/ar/channels/irc).
+- يجاوز `channels.irc.defaultAccount` الاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مهيأ.
+- إعدادات قناة IRC الكاملة (المضيف/المنفذ/TLS/القنوات/قوائم السماح/فرض الإشارة) موثقة في [IRC](/ar/channels/irc).
-### تعدد الحسابات (جميع القنوات)
+### متعدد الحسابات (كل القنوات)
شغّل عدة حسابات لكل قناة (لكل منها `accountId` خاص بها):
@@ -741,11 +741,11 @@ exec ssh -T gateway-host imsg "$@"
telegram: {
accounts: {
default: {
- name: "الـ bot الأساسي",
+ name: "Primary bot",
botToken: "123456:ABC...",
},
alerts: {
- name: "Bot التنبيهات",
+ name: "Alerts bot",
botToken: "987654:XYZ...",
},
},
@@ -754,28 +754,28 @@ exec ssh -T gateway-host imsg "$@"
}
```
-- يُستخدم `default` عندما يُحذف `accountId` (CLI + التوجيه).
-- تنطبق رموز البيئة فقط على الحساب **default**.
-- تنطبق إعدادات القناة الأساسية على جميع الحسابات ما لم يتم تجاوزها لكل حساب.
+- يُستخدم `default` عندما يتم حذف `accountId` (CLI + التوجيه).
+- تنطبق رموز المتغيرات البيئية فقط على الحساب **default**.
+- تنطبق إعدادات القناة الأساسية على كل الحسابات ما لم تُتجاوز لكل حساب.
- استخدم `bindings[].match.accountId` لتوجيه كل حساب إلى وكيل مختلف.
-- إذا أضفت حسابًا غير افتراضي عبر `openclaw channels add` (أو إعداد القناة) بينما لا تزال على إعداد قناة من المستوى الأعلى لحساب واحد، فإن OpenClaw يرقّي أولًا القيم أحادية الحساب العلوية ذات النطاق الحسابي إلى خريطة حسابات القناة حتى يستمر الحساب الأصلي في العمل. تنقل معظم القنوات هذه القيم إلى `channels..accounts.default`؛ ويمكن لـ Matrix الاحتفاظ بهدف مسمى/افتراضي موجود ومطابق بدلًا من ذلك.
-- تستمر روابط القناة فقط الموجودة مسبقًا (من دون `accountId`) في مطابقة الحساب الافتراضي؛ وتظل الروابط ذات النطاق الحسابي اختيارية.
-- يقوم `openclaw doctor --fix` أيضًا بإصلاح الأشكال المختلطة عبر نقل القيم أحادية الحساب العلوية ذات النطاق الحسابي إلى الحساب المرقّى المختار لتلك القناة. تستخدم معظم القنوات `accounts.default`؛ ويمكن لـ Matrix الاحتفاظ بهدف مسمى/افتراضي موجود ومطابق بدلًا من ذلك.
+- إذا أضفت حسابًا غير افتراضي عبر `openclaw channels add` (أو onboarding للقناة) بينما لا تزال على إعداد قناة أحادي الحساب في المستوى الأعلى، يقوم OpenClaw أولًا بترقية القيم العليا الخاصة بالحساب الأحادي إلى خريطة حسابات القناة بحيث يستمر الحساب الأصلي بالعمل. تنقل معظم القنوات هذه القيم إلى `channels..accounts.default`؛ ويمكن لـ Matrix الاحتفاظ بهدف مسمى/افتراضي موجود ومطابق بدلًا من ذلك.
+- تستمر ارتباطات القنوات الموجودة فقط (بدون `accountId`) في مطابقة الحساب الافتراضي؛ وتبقى الارتباطات ذات النطاق الحسابي اختيارية.
+- يقوم `openclaw doctor --fix` أيضًا بإصلاح الأشكال المختلطة بنقل القيم العليا الخاصة بالحساب الأحادي إلى الحساب المرقى المختار لتلك القناة. تستخدم معظم القنوات `accounts.default`؛ ويمكن لـ Matrix الاحتفاظ بهدف مسمى/افتراضي موجود ومطابق بدلًا من ذلك.
-### قنوات الامتدادات الأخرى
+### قنوات extension أخرى
-تُهيّأ العديد من قنوات الامتدادات على شكل `channels.` وتُوثّق في صفحات القنوات المخصصة لها (مثل Feishu وMatrix وLINE وNostr وZalo وNextcloud Talk وSynology Chat وTwitch).
+تُضبط كثير من قنوات extension على شكل `channels.` وتُوثق في صفحات القنوات المخصصة لها (مثل Feishu وMatrix وLINE وNostr وZalo وNextcloud Talk وSynology Chat وTwitch).
راجع فهرس القنوات الكامل: [القنوات](/ar/channels).
-### بوابة الإشارات في دردشات المجموعات
+### فرض الإشارة في محادثات المجموعات
-تفترض رسائل المجموعات افتراضيًا **ضرورة الإشارة** (إشارة في البيانات الوصفية أو أنماط regex آمنة). ينطبق ذلك على WhatsApp وTelegram وDiscord وGoogle Chat ودردشات مجموعات iMessage.
+تكون رسائل المجموعات افتراضيًا **تتطلب إشارة** (إشارة وصفية أو أنماط regex آمنة). ينطبق ذلك على محادثات مجموعات WhatsApp وTelegram وDiscord وGoogle Chat وiMessage.
**أنواع الإشارات:**
-- **إشارات البيانات الوصفية**: إشارات @ الأصلية في المنصة. يتم تجاهلها في وضع الدردشة الذاتية في WhatsApp.
+- **الإشارات الوصفية**: إشارات @-mentions الأصلية في المنصة. تُتجاهل في وضع الدردشة الذاتية في WhatsApp.
- **أنماط النص**: أنماط regex آمنة في `agents.list[].groupChat.mentionPatterns`. يتم تجاهل الأنماط غير الصالحة والتكرار المتداخل غير الآمن.
-- تُفرَض بوابة الإشارات فقط عندما يكون الاكتشاف ممكنًا (إشارات أصلية أو نمط واحد على الأقل).
+- يُفرض شرط الإشارة فقط عندما يكون الاكتشاف ممكنًا (إشارات أصلية أو نمط واحد على الأقل).
```json5
{
@@ -788,7 +788,7 @@ exec ssh -T gateway-host imsg "$@"
}
```
-يضبط `messages.groupChat.historyLimit` القيمة الافتراضية العامة. ويمكن للقنوات التجاوز عبر `channels..historyLimit` (أو لكل حساب). اضبطه على `0` للتعطيل.
+يضبط `messages.groupChat.historyLimit` القيمة الافتراضية العامة. ويمكن للقنوات التجاوز عبر `channels..historyLimit` (أو لكل حساب). اضبط `0` للتعطيل.
#### حدود سجل الرسائل الخاصة
@@ -805,13 +805,13 @@ exec ssh -T gateway-host imsg "$@"
}
```
-طريقة الحل: تجاوز لكل رسالة خاصة → افتراضي الموفّر → بلا حد (الاحتفاظ بكل شيء).
+آلية الحل: تجاوز لكل رسالة خاصة → افتراضي الموفّر → بلا حد (الاحتفاظ بكل شيء).
المدعوم: `telegram` و`whatsapp` و`discord` و`slack` و`signal` و`imessage` و`msteams`.
#### وضع الدردشة الذاتية
-أدرج رقمك الخاص ضمن `allowFrom` لتفعيل وضع الدردشة الذاتية (يتجاهل إشارات @ الأصلية ويرد فقط على أنماط النص):
+ضمّن رقمك الخاص في `allowFrom` لتفعيل وضع الدردشة الذاتية (يتجاهل إشارات @ الأصلية، ويرد فقط على أنماط النص):
```json5
{
@@ -838,9 +838,9 @@ exec ssh -T gateway-host imsg "$@"
{
commands: {
native: "auto", // تسجيل الأوامر الأصلية عندما تكون مدعومة
- nativeSkills: "auto", // تسجيل أوامر المهارات الأصلية عندما تكون مدعومة
+ nativeSkills: "auto", // تسجيل أوامر Skills الأصلية عندما تكون مدعومة
text: true, // تحليل /commands في رسائل الدردشة
- bash: false, // السماح بـ ! (الاسم البديل: /bash)
+ bash: false, // السماح بـ ! (اسم بديل: /bash)
bashForegroundMs: 2000,
config: false, // السماح بـ /config
mcp: false, // السماح بـ /mcp
@@ -861,38 +861,38 @@ exec ssh -T gateway-host imsg "$@"
-- تهيئ هذه الكتلة أسطح الأوامر. لكتالوج الأوامر المضمنة + المجمعة الحالي، راجع [أوامر Slash](/ar/tools/slash-commands).
-- هذه الصفحة هي **مرجع لمفاتيح الإعدادات**، وليست كتالوج الأوامر الكامل. الأوامر المملوكة للقنوات/الإضافات مثل QQ Bot `/bot-ping` `/bot-help` `/bot-logs` وLINE `/card` وdevice-pair `/pair` والذاكرة `/dreaming` وphone-control `/phone` وTalk `/voice` موثقة في صفحات القنوات/الإضافات الخاصة بها بالإضافة إلى [أوامر Slash](/ar/tools/slash-commands).
-- يجب أن تكون الأوامر النصية رسائل **مستقلة** تبدأ بـ `/`.
-- `native: "auto"` يشغّل الأوامر الأصلية لـ Discord/Telegram ويترك Slack متوقفًا.
-- `nativeSkills: "auto"` يشغّل أوامر المهارات الأصلية لـ Discord/Telegram ويترك Slack متوقفًا.
-- تجاوز لكل قناة: `channels.discord.commands.native` (قيمة منطقية أو `"auto"`). تؤدي `false` إلى مسح الأوامر المسجّلة مسبقًا.
-- تجاوز تسجيل المهارات الأصلية لكل قناة باستخدام `channels..commands.nativeSkills`.
-- يضيف `channels.telegram.customCommands` إدخالات إضافية لقائمة bot في Telegram.
-- يفعّل `bash: true` الأمر `! ` لصدفة المضيف. يتطلب `tools.elevated.enabled` وأن يكون المرسل ضمن `tools.elevated.allowFrom.`.
-- يفعّل `config: true` الأمر `/config` (يقرأ/يكتب `openclaw.json`). بالنسبة لعملاء البوابة `chat.send`، تتطلب عمليات الكتابة الدائمة `/config set|unset` أيضًا `operator.admin`؛ بينما يبقى `/config show` للقراءة فقط متاحًا لعملاء المشغّل العاديين ذوي صلاحية الكتابة.
-- يفعّل `mcp: true` الأمر `/mcp` لإعداد خادم MCP المدار من OpenClaw تحت `mcp.servers`.
-- يفعّل `plugins: true` الأمر `/plugins` لاكتشاف الإضافات وتثبيتها وتمكينها/تعطيلها.
-- تتحكم `channels..configWrites` في طفرات الإعدادات لكل قناة (الافتراضي: true).
-- بالنسبة للقنوات متعددة الحسابات، تتحكم أيضًا `channels..accounts..configWrites` في عمليات الكتابة التي تستهدف ذلك الحساب (مثل `/allowlist --config --account ` أو `/config set channels..accounts....`).
-- يؤدي `restart: false` إلى تعطيل `/restart` وإجراءات أداة إعادة تشغيل البوابة. الافتراضي: `true`.
+- تضبط هذه الكتلة أسطح الأوامر. لفهرس الأوامر الحالي المضمن + bundled، راجع [أوامر Slash](/ar/tools/slash-commands).
+- هذه الصفحة هي **مرجع لمفاتيح الإعدادات**، وليست فهرس الأوامر الكامل. الأوامر المملوكة للقنوات/الـ plugin مثل QQ Bot `/bot-ping` و`/bot-help` و`/bot-logs`، وLINE `/card`، وdevice-pair `/pair`، وmemory `/dreaming`، وphone-control `/phone`، وTalk `/voice` موثقة في صفحات القنوات/الـ plugin إضافة إلى [أوامر Slash](/ar/tools/slash-commands).
+- يجب أن تكون أوامر النص رسائل **مستقلة** تبدأ بـ `/`.
+- يفعّل `native: "auto"` الأوامر الأصلية لـ Discord/Telegram، ويترك Slack معطّلًا.
+- يفعّل `nativeSkills: "auto"` أوامر Skills الأصلية لـ Discord/Telegram، ويترك Slack معطّلًا.
+- تجاوز لكل قناة: `channels.discord.commands.native` (قيمة منطقية أو `"auto"`). يزيل `false` الأوامر المسجلة سابقًا.
+- تجاوز تسجيل Skills الأصلية لكل قناة عبر `channels..commands.nativeSkills`.
+- يضيف `channels.telegram.customCommands` إدخالات إضافية إلى قائمة bot في Telegram.
+- يفعّل `bash: true` الأمر `! ` لصدفة المضيف. ويتطلب `tools.elevated.enabled` وأن يكون المرسل ضمن `tools.elevated.allowFrom.`.
+- يفعّل `config: true` الأمر `/config` (قراءة/كتابة `openclaw.json`). وبالنسبة لعملاء `chat.send` في البوابة، تتطلب كتابات `/config set|unset` الدائمة أيضًا `operator.admin`؛ بينما يبقى `/config show` للقراءة فقط متاحًا لعملاء operator ذوي نطاق الكتابة العادي.
+- يفعّل `mcp: true` الأمر `/mcp` لإعدادات خادم MCP المُدار من OpenClaw تحت `mcp.servers`.
+- يفعّل `plugins: true` الأمر `/plugins` لاكتشاف الـ plugin وتثبيتها وتمكينها/تعطيلها.
+- يتحكم `channels..configWrites` بطفرات الإعدادات لكل قناة (الافتراضي: true).
+- بالنسبة للقنوات متعددة الحسابات، يتحكم أيضًا `channels..accounts..configWrites` بالكتابات التي تستهدف ذلك الحساب (مثل `/allowlist --config --account ` أو `/config set channels..accounts....`).
+- يعطل `restart: false` الأمر `/restart` وإجراءات أداة إعادة تشغيل البوابة. الافتراضي: `true`.
- `ownerAllowFrom` هي قائمة السماح الصريحة للمالك للأوامر/الأدوات الخاصة بالمالك فقط. وهي منفصلة عن `allowFrom`.
-- يقوم `ownerDisplay: "hash"` بتجزئة معرّفات المالك في مطالبة النظام. اضبط `ownerDisplaySecret` للتحكم في التجزئة.
-- `allowFrom` هو لكل موفّر. عند تعيينه، يكون **مصدر التفويض الوحيد** (يتم تجاهل قوائم سماح القناة/الاقتران و`useAccessGroups`).
-- يتيح `useAccessGroups: false` للأوامر تجاوز سياسات مجموعات الوصول عندما لا يكون `allowFrom` معيّنًا.
+- يقوم `ownerDisplay: "hash"` بتجزئة معرّفات المالك في system prompt. اضبط `ownerDisplaySecret` للتحكم في التجزئة.
+- `allowFrom` خاص بكل موفّر. عند ضبطه، يصبح **مصدر التفويض الوحيد** (وتُتجاهل قوائم سماح القنوات/الاقتران و`useAccessGroups`).
+- يسمح `useAccessGroups: false` للأوامر بتجاوز سياسات مجموعات الوصول عندما لا يكون `allowFrom` مضبوطًا.
- خريطة وثائق الأوامر:
- - الكتالوج المضمن + المجمّع: [أوامر Slash](/ar/tools/slash-commands)
+ - الفهرس المضمن + bundled: [أوامر Slash](/ar/tools/slash-commands)
- أسطح الأوامر الخاصة بالقنوات: [القنوات](/ar/channels)
- أوامر QQ Bot: [QQ Bot](/ar/channels/qqbot)
- - أوامر الاقتران: [Pairing](/ar/channels/pairing)
+ - أوامر الاقتران: [الاقتران](/ar/channels/pairing)
- أمر بطاقة LINE: [LINE](/ar/channels/line)
- - dreaming للذاكرة: [Dreaming](/ar/concepts/dreaming)
+ - dreaming الخاصة بالذاكرة: [Dreaming](/ar/concepts/dreaming)
---
-## افتراضيات الوكيل
+## القيم الافتراضية للوكلاء
### `agents.defaults.workspace`
@@ -906,7 +906,7 @@ exec ssh -T gateway-host imsg "$@"
### `agents.defaults.repoRoot`
-جذر مستودع اختياري يظهر في سطر Runtime في مطالبة النظام. إذا لم يتم تعيينه، يكتشفه OpenClaw تلقائيًا بالصعود من مساحة العمل.
+جذر المستودع الاختياري الذي يُعرض في سطر Runtime ضمن system prompt. إذا لم يُضبط، يكتشفه OpenClaw تلقائيًا عبر الصعود من مساحة العمل.
```json5
{
@@ -916,7 +916,7 @@ exec ssh -T gateway-host imsg "$@"
### `agents.defaults.skills`
-قائمة سماح افتراضية اختيارية للمهارات للوكلاء الذين لا يضبطون
+قائمة سماح افتراضية اختيارية لـ Skills للوكلاء الذين لا يضبطون
`agents.list[].skills`.
```json5
@@ -925,22 +925,22 @@ exec ssh -T gateway-host imsg "$@"
defaults: { skills: ["github", "weather"] },
list: [
{ id: "writer" }, // يرث github وweather
- { id: "docs", skills: ["docs-search"] }, // يستبدل الافتراضيات
- { id: "locked-down", skills: [] }, // بلا مهارات
+ { id: "docs", skills: ["docs-search"] }, // يستبدل القيم الافتراضية
+ { id: "locked-down", skills: [] }, // بلا Skills
],
},
}
```
-- احذف `agents.defaults.skills` للحصول على مهارات غير مقيّدة افتراضيًا.
-- احذف `agents.list[].skills` لوراثة الافتراضيات.
-- اضبط `agents.list[].skills: []` لعدم وجود مهارات.
-- تكون القائمة غير الفارغة `agents.list[].skills` هي المجموعة النهائية لذلك الوكيل؛
- ولا تُدمَج مع الافتراضيات.
+- احذف `agents.defaults.skills` للحصول على Skills غير مقيدة افتراضيًا.
+- احذف `agents.list[].skills` لوراثة القيم الافتراضية.
+- اضبط `agents.list[].skills: []` لعدم وجود Skills.
+- تكون القائمة غير الفارغة في `agents.list[].skills` هي المجموعة النهائية لذلك الوكيل؛
+ ولا تُدمج مع القيم الافتراضية.
### `agents.defaults.skipBootstrap`
-يعطّل الإنشاء التلقائي لملفات bootstrap الخاصة بمساحة العمل (`AGENTS.md` و`SOUL.md` و`TOOLS.md` و`IDENTITY.md` و`USER.md` و`HEARTBEAT.md` و`BOOTSTRAP.md`).
+يعطل الإنشاء التلقائي لملفات bootstrap لمساحة العمل (`AGENTS.md` و`SOUL.md` و`TOOLS.md` و`IDENTITY.md` و`USER.md` و`HEARTBEAT.md` و`BOOTSTRAP.md`).
```json5
{
@@ -950,9 +950,9 @@ exec ssh -T gateway-host imsg "$@"
### `agents.defaults.contextInjection`
-يتحكم في وقت حقن ملفات bootstrap لمساحة العمل في مطالبة النظام. الافتراضي: `"always"`.
+يتحكم في وقت حقن ملفات bootstrap لمساحة العمل داخل system prompt. الافتراضي: `"always"`.
-- `"continuation-skip"`: تتجاوز أدوار الاستمرار الآمنة (بعد رد مساعد مكتمل) إعادة حقن bootstrap لمساحة العمل، مما يقلل حجم المطالبة. تعيد تشغيلات نبض الحالة ومحاولات ما بعد الضغط بناء السياق مع ذلك.
+- `"continuation-skip"`: تتجاوز الأدوار الآمنة المتواصلة (بعد اكتمال رد المساعد) إعادة حقن bootstrap لمساحة العمل، مما يقلل حجم prompt. تعيد تشغيلات نبض الحياة وإعادات المحاولة بعد الضغط بناء السياق رغم ذلك.
```json5
{
@@ -972,7 +972,7 @@ exec ssh -T gateway-host imsg "$@"
### `agents.defaults.bootstrapTotalMaxChars`
-الحد الأقصى الإجمالي للأحرف المحقونة عبر جميع ملفات bootstrap لمساحة العمل. الافتراضي: `150000`.
+الحد الأقصى لإجمالي الأحرف المحقونة عبر جميع ملفات bootstrap لمساحة العمل. الافتراضي: `150000`.
```json5
{
@@ -982,12 +982,12 @@ exec ssh -T gateway-host imsg "$@"
### `agents.defaults.bootstrapPromptTruncationWarning`
-يتحكم في نص التحذير المرئي للوكيل عند اقتطاع سياق bootstrap.
+يتحكم في نص التحذير المرئي للوكيل عندما يُقتطع سياق bootstrap.
الافتراضي: `"once"`.
-- `"off"`: لا تحقن نص تحذير في مطالبة النظام أبدًا.
-- `"once"`: احقن التحذير مرة واحدة لكل توقيع اقتطاع فريد (موصى به).
-- `"always"`: احقن التحذير في كل تشغيل عند وجود اقتطاع.
+- `"off"`: لا يحقن نص تحذير أبدًا في system prompt.
+- `"once"`: يحقن التحذير مرة واحدة لكل توقيع اقتطاع فريد (موصى به).
+- `"always"`: يحقن التحذير في كل تشغيل عندما يوجد اقتطاع.
```json5
{
@@ -997,10 +997,10 @@ exec ssh -T gateway-host imsg "$@"
### `agents.defaults.imageMaxDimensionPx`
-الحد الأقصى لحجم البكسل لأطول ضلع للصورة في كتل الصور ضمن السجل/الأدوات قبل استدعاءات الموفّر.
+الحد الأقصى لحجم البكسل لأطول ضلع في الصورة في كتل الصور الخاصة بالنص/الأدوات قبل استدعاءات الموفّر.
الافتراضي: `1200`.
-تقلل القيم الأقل عادةً من استخدام vision-token وحجم حمولة الطلب في التشغيلات الكثيفة بلقطات الشاشة.
+القيم الأقل تقلل عادة استخدام vision-token وحجم حمولة الطلب في الحالات الكثيفة لصور الشاشة.
أما القيم الأعلى فتحافظ على تفاصيل بصرية أكثر.
```json5
@@ -1011,7 +1011,7 @@ exec ssh -T gateway-host imsg "$@"
### `agents.defaults.userTimezone`
-المنطقة الزمنية لسياق مطالبة النظام (وليس طوابع الرسائل الزمنية). تعود إلى المنطقة الزمنية للمضيف.
+المنطقة الزمنية لسياق system prompt (وليست طوابع الرسائل الزمنية). تعود إلى المنطقة الزمنية للمضيف.
```json5
{
@@ -1021,7 +1021,7 @@ exec ssh -T gateway-host imsg "$@"
### `agents.defaults.timeFormat`
-تنسيق الوقت في مطالبة النظام. الافتراضي: `auto` (تفضيل نظام التشغيل).
+صيغة الوقت في system prompt. الافتراضي: `auto` (تفضيل نظام التشغيل).
```json5
{
@@ -1059,7 +1059,7 @@ exec ssh -T gateway-host imsg "$@"
primary: "anthropic/claude-opus-4-6",
fallbacks: ["openai/gpt-5.4-mini"],
},
- params: { cacheRetention: "long" }, // المعلمات العامة الافتراضية للمزوّد
+ params: { cacheRetention: "long" }, // معلمات الموفّر الافتراضية العامة
pdfMaxBytesMb: 10,
pdfMaxPages: 20,
thinkingDefault: "low",
@@ -1075,63 +1075,63 @@ exec ssh -T gateway-host imsg "$@"
```
- `model`: يقبل إما سلسلة (`"provider/model"`) أو كائنًا (`{ primary, fallbacks }`).
- - تعيّن صيغة السلسلة النموذج الأساسي فقط.
- - تعيّن صيغة الكائن النموذج الأساسي بالإضافة إلى نماذج الفشل الاحتياطية المرتبة.
+ - تضبط صيغة السلسلة النموذج الأساسي فقط.
+ - تضبط صيغة الكائن النموذج الأساسي بالإضافة إلى نماذج الفشل الاحتياطية المرتبة.
- `imageModel`: يقبل إما سلسلة (`"provider/model"`) أو كائنًا (`{ primary, fallbacks }`).
- - يُستخدم بواسطة مسار أداة `image` بصفته إعداد نموذج الرؤية الخاص بها.
- - ويُستخدم أيضًا كتوجيه احتياطي عندما لا يستطيع النموذج المحدد/الافتراضي قبول إدخال الصور.
+ - يُستخدم بواسطة مسار أداة `image` بوصفه إعداد نموذج الرؤية الخاص بها.
+ - ويستخدم أيضًا كتوجيه احتياطي عندما لا يستطيع النموذج المحدد/الافتراضي قبول إدخال الصور.
- `imageGenerationModel`: يقبل إما سلسلة (`"provider/model"`) أو كائنًا (`{ primary, fallbacks }`).
- - يُستخدم بواسطة قدرة توليد الصور المشتركة وأي سطح أداة/إضافة مستقبلي يولد الصور.
+ - يُستخدم بواسطة قابلية توليد الصور المشتركة وأي سطح أداة/Plugin مستقبلي يولد صورًا.
- القيم النموذجية: `google/gemini-3.1-flash-image-preview` لتوليد صور Gemini الأصلي، أو `fal/fal-ai/flux/dev` لـ fal، أو `openai/gpt-image-1` لـ OpenAI Images.
- - إذا حددت موفّرًا/نموذجًا مباشرةً، فقم أيضًا بإعداد مصادقة/مفتاح API المزوّد المطابق (مثل `GEMINI_API_KEY` أو `GOOGLE_API_KEY` لـ `google/*`، أو `OPENAI_API_KEY` لـ `openai/*`، أو `FAL_KEY` لـ `fal/*`).
- - إذا حُذفت، فلا تزال `image_generate` قادرة على استنتاج افتراضي موفّر مدعوم بالمصادقة. تحاول أولًا الموفّر الافتراضي الحالي، ثم باقي موفّري توليد الصور المسجّلين بترتيب معرّف الموفّر.
+ - إذا اخترت موفّرًا/نموذجًا مباشرة، فقم بتهيئة المصادقة/مفتاح API المطابق للموفّر أيضًا (مثل `GEMINI_API_KEY` أو `GOOGLE_API_KEY` لـ `google/*`، و`OPENAI_API_KEY` لـ `openai/*`، و`FAL_KEY` لـ `fal/*`).
+ - إذا حُذف، يمكن لـ `image_generate` رغم ذلك استنتاج افتراضي لموفّر مدعوم بالمصادقة. إذ يحاول أولًا موفّر الإعداد الافتراضي الحالي، ثم بقية موفّري توليد الصور المسجلين بترتيب معرّف الموفّر.
- `musicGenerationModel`: يقبل إما سلسلة (`"provider/model"`) أو كائنًا (`{ primary, fallbacks }`).
- - يُستخدم بواسطة قدرة توليد الموسيقى المشتركة والأداة المضمنة `music_generate`.
+ - يُستخدم بواسطة قابلية توليد الموسيقى المشتركة وأداة `music_generate` المضمنة.
- القيم النموذجية: `google/lyria-3-clip-preview` أو `google/lyria-3-pro-preview` أو `minimax/music-2.5+`.
- - إذا حُذفت، فلا تزال `music_generate` قادرة على استنتاج افتراضي موفّر مدعوم بالمصادقة. تحاول أولًا الموفّر الافتراضي الحالي، ثم باقي موفّري توليد الموسيقى المسجّلين بترتيب معرّف الموفّر.
- - إذا حددت موفّرًا/نموذجًا مباشرةً، فقم أيضًا بإعداد مصادقة/مفتاح API المزوّد المطابق.
+ - إذا حُذف، يمكن لـ `music_generate` رغم ذلك استنتاج افتراضي لموفّر مدعوم بالمصادقة. إذ يحاول أولًا موفّر الإعداد الافتراضي الحالي، ثم بقية موفّري توليد الموسيقى المسجلين بترتيب معرّف الموفّر.
+ - إذا اخترت موفّرًا/نموذجًا مباشرة، فقم بتهيئة المصادقة/مفتاح API المطابق للموفّر أيضًا.
- `videoGenerationModel`: يقبل إما سلسلة (`"provider/model"`) أو كائنًا (`{ primary, fallbacks }`).
- - يُستخدم بواسطة قدرة توليد الفيديو المشتركة والأداة المضمنة `video_generate`.
+ - يُستخدم بواسطة قابلية توليد الفيديو المشتركة وأداة `video_generate` المضمنة.
- القيم النموذجية: `qwen/wan2.6-t2v` أو `qwen/wan2.6-i2v` أو `qwen/wan2.6-r2v` أو `qwen/wan2.6-r2v-flash` أو `qwen/wan2.7-r2v`.
- - إذا حُذفت، فلا تزال `video_generate` قادرة على استنتاج افتراضي موفّر مدعوم بالمصادقة. تحاول أولًا الموفّر الافتراضي الحالي، ثم باقي موفّري توليد الفيديو المسجّلين بترتيب معرّف الموفّر.
- - إذا حددت موفّرًا/نموذجًا مباشرةً، فقم أيضًا بإعداد مصادقة/مفتاح API المزوّد المطابق.
- - يدعم موفّر توليد الفيديو Qwen المجمّع حاليًا حتى 1 فيديو خرج، و1 صورة دخل، و4 فيديوهات دخل، ومدة 10 ثوانٍ، وخيارات على مستوى المزوّد مثل `size` و`aspectRatio` و`resolution` و`audio` و`watermark`.
+ - إذا حُذف، يمكن لـ `video_generate` رغم ذلك استنتاج افتراضي لموفّر مدعوم بالمصادقة. إذ يحاول أولًا موفّر الإعداد الافتراضي الحالي، ثم بقية موفّري توليد الفيديو المسجلين بترتيب معرّف الموفّر.
+ - إذا اخترت موفّرًا/نموذجًا مباشرة، فقم بتهيئة المصادقة/مفتاح API المطابق للموفّر أيضًا.
+ - يدعم موفّر توليد الفيديو Qwen المضمن حاليًا حتى 1 فيديو ناتج، و1 صورة إدخال، و4 فيديوهات إدخال، ومدة 10 ثوانٍ، وخيارات `size` و`aspectRatio` و`resolution` و`audio` و`watermark` على مستوى الموفّر.
- `pdfModel`: يقبل إما سلسلة (`"provider/model"`) أو كائنًا (`{ primary, fallbacks }`).
- يُستخدم بواسطة أداة `pdf` لتوجيه النموذج.
- إذا حُذف، تعود أداة PDF إلى `imageModel`، ثم إلى النموذج المحلول للجلسة/الافتراضي.
-- `pdfMaxBytesMb`: حد حجم PDF الافتراضي لأداة `pdf` عندما لا يتم تمرير `maxBytesMb` وقت الاستدعاء.
+- `pdfMaxBytesMb`: حد حجم PDF الافتراضي لأداة `pdf` عندما لا يُمرر `maxBytesMb` وقت الاستدعاء.
- `pdfMaxPages`: الحد الأقصى الافتراضي للصفحات التي تؤخذ في الاعتبار بواسطة وضع الاستخراج الاحتياطي في أداة `pdf`.
- `verboseDefault`: مستوى verbose الافتراضي للوكلاء. القيم: `"off"` و`"on"` و`"full"`. الافتراضي: `"off"`.
-- `elevatedDefault`: مستوى المخرجات المرتفعة الافتراضي للوكلاء. القيم: `"off"` و`"on"` و`"ask"` و`"full"`. الافتراضي: `"on"`.
-- `model.primary`: الصيغة `provider/model` (مثل `openai/gpt-5.4`). إذا حذفت المزوّد، يحاول OpenClaw أولًا الاسم المستعار، ثم مطابقة فريدة لمزوّد مهيأ لذلك المعرّف النموذجي الدقيق، وبعدها فقط يعود إلى المزوّد الافتراضي المهيأ (سلوك توافق قديم ومهمل، لذا يفضَّل `provider/model` الصريح). إذا لم يعد ذلك المزوّد يوفّر النموذج الافتراضي المهيأ، فإن OpenClaw يعود إلى أول موفّر/نموذج مهيأ بدلًا من إظهار افتراضي قديم لمزوّد تمت إزالته.
-- `models`: كتالوج النماذج المهيأ وقائمة السماح لـ `/model`. يمكن أن يتضمن كل إدخال `alias` (اختصار) و`params` (خاصة بالمزوّد، مثل `temperature` و`maxTokens` و`cacheRetention` و`context1m`).
-- `params`: المعلمات العامة الافتراضية للمزوّد المطبقة على جميع النماذج. تُضبط في `agents.defaults.params` (مثل `{ cacheRetention: "long" }`).
-- أسبقية دمج `params` (في الإعدادات): يتجاوز `agents.defaults.params` (القاعدة العامة) بواسطة `agents.defaults.models["provider/model"].params` (لكل نموذج)، ثم يتجاوز `agents.list[].params` (الوكلاء المطابقين بمعرّفهم) بالمفتاح. راجع [Prompt Caching](/ar/reference/prompt-caching) للتفاصيل.
-- تحفظ أدوات كتابة الإعدادات التي تغيّر هذه الحقول (مثل `/models set` و`/models set-image` وأوامر إضافة/إزالة الاحتياطيات) صيغة الكائن القانونية وتحافظ على قوائم fallback الموجودة متى أمكن.
-- `maxConcurrent`: الحد الأقصى لتشغيلات الوكلاء المتوازية عبر الجلسات (مع استمرار تسلسل كل جلسة). الافتراضي: 4.
+- `elevatedDefault`: مستوى الخرج elevated الافتراضي للوكلاء. القيم: `"off"` و`"on"` و`"ask"` و`"full"`. الافتراضي: `"on"`.
+- `model.primary`: الصيغة `provider/model` (مثل `openai/gpt-5.4`). إذا حذفت الموفّر، يحاول OpenClaw أولًا الاسم المستعار، ثم مطابقة موفّر مهيأ فريد لذلك المعرّف الدقيق للنموذج، وبعد ذلك فقط يعود إلى الموفّر الافتراضي المهيأ (سلوك توافق قديم، لذا فضّل الصيغة الصريحة `provider/model`). إذا لم يعد ذلك الموفّر يعرّض النموذج الافتراضي المهيأ، يعود OpenClaw إلى أول موفّر/نموذج مهيأ بدلًا من إظهار افتراضي قديم لموفّر تمت إزالته.
+- `models`: فهرس النماذج المهيأ وقائمة السماح لـ `/model`. يمكن أن يتضمن كل إدخال `alias` (اختصار) و`params` (خاصة بالموفّر، مثل `temperature` و`maxTokens` و`cacheRetention` و`context1m`).
+- `params`: معلمات الموفّر الافتراضية العامة المطبقة على كل النماذج. تضبط في `agents.defaults.params` (مثل `{ cacheRetention: "long" }`).
+- أسبقية دمج `params` (في الإعدادات): يتم تجاوز `agents.defaults.params` (الأساس العام) بواسطة `agents.defaults.models["provider/model"].params` (لكل نموذج)، ثم تتجاوز `agents.list[].params` (للوكيل المطابق) حسب المفتاح. راجع [Prompt Caching](/ar/reference/prompt-caching) للتفاصيل.
+- تحفظ أدوات كتابة الإعدادات التي تعدل هذه الحقول (مثل `/models set` و`/models set-image` وأوامر الإضافة/الإزالة الاحتياطية) صيغة الكائن المعيارية وتحافظ على قوائم fallback الحالية متى أمكن.
+- `maxConcurrent`: الحد الأقصى لتشغيلات الوكلاء المتوازية عبر الجلسات (مع بقاء كل جلسة متسلسلة). الافتراضي: 4.
-**اختصارات الأسماء المستعارة المضمنة** (تنطبق فقط عندما يكون النموذج في `agents.defaults.models`):
+**اختصارات الأسماء المستعارة المضمنة** (تنطبق فقط عندما يكون النموذج ضمن `agents.defaults.models`):
-| الاسم المستعار | النموذج |
-| ------------------- | --------------------------------------- |
-| `opus` | `anthropic/claude-opus-4-6` |
-| `sonnet` | `anthropic/claude-sonnet-4-6` |
-| `gpt` | `openai/gpt-5.4` |
-| `gpt-mini` | `openai/gpt-5.4-mini` |
-| `gpt-nano` | `openai/gpt-5.4-nano` |
-| `gemini` | `google/gemini-3.1-pro-preview` |
-| `gemini-flash` | `google/gemini-3-flash-preview` |
-| `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` |
+| الاسم المستعار | النموذج |
+| ------------------- | -------------------------------------- |
+| `opus` | `anthropic/claude-opus-4-6` |
+| `sonnet` | `anthropic/claude-sonnet-4-6` |
+| `gpt` | `openai/gpt-5.4` |
+| `gpt-mini` | `openai/gpt-5.4-mini` |
+| `gpt-nano` | `openai/gpt-5.4-nano` |
+| `gemini` | `google/gemini-3.1-pro-preview` |
+| `gemini-flash` | `google/gemini-3-flash-preview` |
+| `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` |
-تتغلب الأسماء المستعارة المهيأة لديك دائمًا على الافتراضيات.
+تتغلب الأسماء المستعارة التي تهيئها أنت دائمًا على القيم الافتراضية.
-تفعّل نماذج Z.AI GLM-4.x وضع التفكير تلقائيًا ما لم تضبط `--thinking off` أو تعرّف بنفسك `agents.defaults.models["zai/"].params.thinking`.
-تفعّل نماذج Z.AI القيمة `tool_stream` افتراضيًا لبث استدعاءات الأدوات. اضبط `agents.defaults.models["zai/"].params.tool_stream` على `false` لتعطيل ذلك.
-تفترض نماذج Anthropic Claude 4.6 الوضع `adaptive` للتفكير عندما لا يكون هناك مستوى تفكير صريح معيّن.
+تفعّل نماذج Z.AI GLM-4.x وضع thinking تلقائيًا ما لم تضبط `--thinking off` أو تعرّف `agents.defaults.models["zai/"].params.thinking` بنفسك.
+وتفعّل نماذج Z.AI القيمة `tool_stream` افتراضيًا لبث استدعاءات الأدوات. اضبط `agents.defaults.models["zai/"].params.tool_stream` على `false` لتعطيله.
+وتفترض نماذج Anthropic Claude 4.6 الوضع `adaptive` للتفكير عندما لا يكون هناك مستوى تفكير صريح مضبوط.
### `agents.defaults.cliBackends`
-واجهات CLI خلفية اختيارية للتشغيلات الاحتياطية النصية فقط (من دون استدعاءات أدوات). مفيدة كنسخة احتياطية عندما تفشل موفّرات API.
+خلفيات CLI اختيارية لتشغيلات fallback النصية فقط (من دون استدعاءات أدوات). مفيدة كنسخة احتياطية عندما تفشل موفّرات API.
```json5
{
@@ -1159,13 +1159,27 @@ exec ssh -T gateway-host imsg "$@"
}
```
-- واجهات CLI الخلفية موجهة للنص أولًا؛ وتكون الأدوات معطلة دائمًا.
-- تُدعَم الجلسات عندما يكون `sessionArg` معيّنًا.
-- يُدعَم تمرير الصور عندما يقبل `imageArg` مسارات ملفات.
+- تعد خلفيات CLI موجهة للنص أولًا؛ وتكون الأدوات دائمًا معطلة.
+- تُدعم الجلسات عندما يكون `sessionArg` مضبوطًا.
+- يُدعم تمرير الصور عندما يقبل `imageArg` مسارات الملفات.
+
+### `agents.defaults.systemPromptOverride`
+
+استبدل system prompt الكامل الذي يجمعه OpenClaw بسلسلة ثابتة. يضبط على المستوى الافتراضي (`agents.defaults.systemPromptOverride`) أو لكل وكيل (`agents.list[].systemPromptOverride`). تتقدم القيم الخاصة بكل وكيل؛ ويتم تجاهل القيمة الفارغة أو المكونة من مسافات فقط. هذا مفيد لتجارب prompt محكومة.
+
+```json5
+{
+ agents: {
+ defaults: {
+ systemPromptOverride: "You are a helpful assistant.",
+ },
+ },
+}
+```
### `agents.defaults.heartbeat`
-تشغيلات نبض حالة دورية.
+تشغيلات نبض حياة دورية.
```json5
{
@@ -1175,13 +1189,14 @@ exec ssh -T gateway-host imsg "$@"
every: "30m", // 0m يعطّل
model: "openai/gpt-5.4-mini",
includeReasoning: false,
+ includeSystemPromptSection: true, // الافتراضي: true؛ false يحذف قسم Heartbeat من system prompt
lightContext: false, // الافتراضي: false؛ true يحتفظ فقط بـ HEARTBEAT.md من ملفات bootstrap لمساحة العمل
- isolatedSession: false, // الافتراضي: false؛ true يشغّل كل heartbeat في جلسة جديدة (بلا سجل محادثة)
+ isolatedSession: false, // الافتراضي: false؛ true يشغّل كل نبض حياة في جلسة جديدة (بلا سجل محادثة)
session: "main",
to: "+15555550123",
directPolicy: "allow", // allow (الافتراضي) | block
target: "none", // الافتراضي: none | الخيارات: last | whatsapp | telegram | discord | ...
- prompt: "اقرأ HEARTBEAT.md إذا كان موجودًا...",
+ prompt: "Read HEARTBEAT.md if it exists...",
ackMaxChars: 300,
suppressToolErrorWarnings: false,
},
@@ -1190,13 +1205,14 @@ exec ssh -T gateway-host imsg "$@"
}
```
-- `every`: سلسلة مدة (ms/s/m/h). الافتراضي: `30m` (مصادقة مفتاح API) أو `1h` (مصادقة OAuth). اضبطه على `0m` للتعطيل.
-- `suppressToolErrorWarnings`: عندما تكون true، يتم كبت حمولات تحذير أخطاء الأدوات أثناء تشغيلات heartbeat.
-- `directPolicy`: سياسة التسليم المباشر/الرسائل الخاصة. `allow` (الافتراضي) يسمح بالتسليم المستهدف المباشر. و`block` يمنع التسليم المستهدف المباشر ويُصدر `reason=dm-blocked`.
-- `lightContext`: عندما تكون true، تستخدم تشغيلات heartbeat سياق bootstrap خفيفًا وتحتفظ فقط بـ `HEARTBEAT.md` من ملفات bootstrap لمساحة العمل.
-- `isolatedSession`: عندما تكون true، يعمل كل heartbeat في جلسة جديدة بلا أي سجل محادثة سابق. نفس نمط العزل مثل cron `sessionTarget: "isolated"`. يقلل تكلفة tokens لكل heartbeat من نحو ~100K إلى ~2-5K token.
-- لكل وكيل: اضبط `agents.list[].heartbeat`. عندما يعرّف أي وكيل `heartbeat`، فإن **هؤلاء الوكلاء فقط** هم من يشغّلون heartbeat.
-- تشغّل heartbeats أدوار الوكيل الكاملة — والفواصل الأقصر تستهلك tokens أكثر.
+- `every`: سلسلة مدة (ms/s/m/h). الافتراضي: `30m` (مصادقة API-key) أو `1h` (مصادقة OAuth). اضبطها على `0m` للتعطيل.
+- `includeSystemPromptSection`: عند `false`، يحذف قسم Heartbeat من system prompt ويتجاوز حقن `HEARTBEAT.md` ضمن سياق bootstrap. الافتراضي: `true`.
+- `suppressToolErrorWarnings`: عند `true`، يقمع حمولات تحذير أخطاء الأدوات أثناء تشغيلات نبض الحياة.
+- `directPolicy`: سياسة التسليم المباشر/الرسائل الخاصة. تسمح `allow` (الافتراضي) بالتسليم المباشر إلى الهدف. ويقمع `block` التسليم المباشر ويصدر `reason=dm-blocked`.
+- `lightContext`: عند `true`، تستخدم تشغيلات نبض الحياة سياق bootstrap خفيفًا وتحتفظ فقط بـ `HEARTBEAT.md` من ملفات bootstrap لمساحة العمل.
+- `isolatedSession`: عند `true`، يعمل كل نبض حياة في جلسة جديدة من دون أي سجل محادثة سابق. نمط العزل نفسه مثل `sessionTarget: "isolated"` في cron. يقلل تكلفة الرموز لكل نبض حياة من نحو 100 ألف إلى 2-5 آلاف رمز.
+- لكل وكيل: اضبط `agents.list[].heartbeat`. عندما يعرّف أي وكيل `heartbeat`، **فإن هؤلاء الوكلاء فقط** يشغلون نبض الحياة.
+- تشغّل عمليات نبض الحياة أدوار الوكيل كاملة — وكلما قصرت الفواصل زاد استهلاك الرموز.
### `agents.defaults.compaction`
@@ -1206,19 +1222,19 @@ exec ssh -T gateway-host imsg "$@"
defaults: {
compaction: {
mode: "safeguard", // default | safeguard
- provider: "my-provider", // معرّف إضافة موفّر compaction مسجّلة (اختياري)
+ provider: "my-provider", // معرّف plugin موفّر compaction مسجل (اختياري)
timeoutSeconds: 900,
reserveTokensFloor: 24000,
identifierPolicy: "strict", // strict | off | custom
- identifierInstructions: "احتفظ بمعرّفات النشر ومعرّفات التذاكر وأزواج host:port كما هي تمامًا.", // يُستخدم عندما يكون identifierPolicy=custom
+ identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // يُستخدم عندما identifierPolicy=custom
postCompactionSections: ["Session Startup", "Red Lines"], // [] يعطّل إعادة الحقن
- model: "openrouter/anthropic/claude-sonnet-4-6", // تجاوز اختياري للنموذج خاص بـ compaction فقط
+ model: "openrouter/anthropic/claude-sonnet-4-6", // تجاوز نموذج اختياري خاص بالـ compaction فقط
notifyUser: true, // أرسل إشعارًا موجزًا عندما يبدأ compaction (الافتراضي: false)
memoryFlush: {
enabled: true,
softThresholdTokens: 6000,
- systemPrompt: "الجلسة تقترب من compaction. خزّن الذكريات الدائمة الآن.",
- prompt: "اكتب أي ملاحظات دائمة إلى memory/YYYY-MM-DD.md؛ وردّ بالرمز الصامت الدقيق NO_REPLY إذا لم يكن هناك ما يجب تخزينه.",
+ systemPrompt: "Session nearing compaction. Store durable memories now.",
+ prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with the exact silent token NO_REPLY if nothing to store.",
},
},
},
@@ -1226,19 +1242,19 @@ exec ssh -T gateway-host imsg "$@"
}
```
-- `mode`: `default` أو `safeguard` (تلخيص مجزأ للسجلات الطويلة). راجع [Compaction](/ar/concepts/compaction).
-- `provider`: معرّف إضافة موفّر compaction مسجّلة. عند تعيينه، تُستدعى `summarize()` الخاصة بالموفّر بدلًا من التلخيص المدمج المعتمد على LLM. ويعود إلى المدمج عند الفشل. يؤدي تعيين موفّر إلى فرض `mode: "safeguard"`. راجع [Compaction](/ar/concepts/compaction).
-- `timeoutSeconds`: أقصى عدد ثوانٍ مسموح لعملية compaction واحدة قبل أن يوقفها OpenClaw. الافتراضي: `900`.
-- `identifierPolicy`: `strict` (الافتراضي) أو `off` أو `custom`. يضيف `strict` إرشاد الاحتفاظ بالمعرّفات المعتمة المدمج قبل تلخيص compaction.
-- `identifierInstructions`: نص اختياري مخصص للحفاظ على المعرفات يُستخدم عندما يكون `identifierPolicy=custom`.
-- `postCompactionSections`: أسماء أقسام H2/H3 اختيارية من AGENTS.md لإعادة حقنها بعد compaction. القيم الافتراضية هي `["Session Startup", "Red Lines"]`؛ اضبطها على `[]` لتعطيل إعادة الحقن. عند عدم تعيينها أو عند تعيين الزوج الافتراضي نفسه صراحةً، تُقبل أيضًا العناوين القديمة `Every Session`/`Safety` كقيمة احتياطية قديمة.
-- `model`: تجاوز اختياري بصيغة `provider/model-id` لتلخيص compaction فقط. استخدم هذا عندما يجب أن تحتفظ الجلسة الرئيسية بنموذج معين بينما تعمل ملخصات compaction على نموذج آخر؛ وعند حذفه، تستخدم compaction النموذج الأساسي للجلسة.
-- `notifyUser`: عندما تكون `true`، يرسل إشعارًا موجزًا إلى المستخدم عند بدء compaction (مثل "Compacting context..."). وهو معطّل افتراضيًا للإبقاء على compaction صامتًا.
-- `memoryFlush`: دور وكيل صامت قبل compaction التلقائي لتخزين الذكريات الدائمة. يتم تجاوزه عندما تكون مساحة العمل للقراءة فقط.
+- `mode`: `default` أو `safeguard` (تلخيص مقسم إلى أجزاء للسجلات الطويلة). راجع [Compaction](/ar/concepts/compaction).
+- `provider`: معرّف plugin موفّر compaction مسجل. عند ضبطه، يُستدعى `summarize()` الخاص بالموفّر بدلًا من التلخيص المضمن عبر LLM. ويعود إلى المضمن عند الفشل. يؤدي ضبط موفّر إلى فرض `mode: "safeguard"`. راجع [Compaction](/ar/concepts/compaction).
+- `timeoutSeconds`: الحد الأقصى للثواني المسموح بها لعملية compaction واحدة قبل أن يجهضها OpenClaw. الافتراضي: `900`.
+- `identifierPolicy`: `strict` (افتراضي) أو `off` أو `custom`. يضيف `strict` إرشادات مضمنة للحفاظ على المعرفات المعتمة أثناء تلخيص compaction.
+- `identifierInstructions`: نص اختياري مخصص للحفاظ على المعرفات يُستخدم عندما `identifierPolicy=custom`.
+- `postCompactionSections`: أسماء أقسام H2/H3 اختيارية من AGENTS.md لإعادة حقنها بعد compaction. الافتراضي `["Session Startup", "Red Lines"]`؛ اضبط `[]` للتعطيل. عند حذفها أو ضبطها صراحة على هذا الزوج الافتراضي، تُقبل أيضًا العناوين الأقدم `Every Session`/`Safety` كاحتياطي قديم.
+- `model`: تجاوز اختياري `provider/model-id` لتلخيص compaction فقط. استخدمه عندما يجب أن تحتفظ الجلسة الرئيسية بنموذج معين بينما يجب أن تعمل ملخصات compaction على نموذج آخر؛ وعند حذفه يستخدم compaction النموذج الأساسي للجلسة.
+- `notifyUser`: عندما تكون `true`، يرسل إشعارًا موجزًا إلى المستخدم عندما يبدأ compaction (مثل "Compacting context..."). وهو معطل افتراضيًا للحفاظ على صمت compaction.
+- `memoryFlush`: دور وكيل صامت قبل compaction التلقائي لتخزين الذكريات الدائمة. يُتجاوز عندما تكون مساحة العمل للقراءة فقط.
### `agents.defaults.contextPruning`
-يقوم باقتطاع **نتائج الأدوات القديمة** من السياق داخل الذاكرة قبل إرسالها إلى LLM. ولا يقوم **بتعديل** سجل الجلسة على القرص.
+يقتطع **نتائج الأدوات القديمة** من السياق الموجود في الذاكرة قبل إرسالها إلى LLM. ولا **يعدّل** سجل الجلسة على القرص.
```json5
{
@@ -1246,13 +1262,13 @@ exec ssh -T gateway-host imsg "$@"
defaults: {
contextPruning: {
mode: "cache-ttl", // off | cache-ttl
- ttl: "1h", // مدة (ms/s/m/h)، الوحدة الافتراضية: الدقائق
+ ttl: "1h", // المدة (ms/s/m/h)، الوحدة الافتراضية: دقائق
keepLastAssistants: 3,
softTrimRatio: 0.3,
hardClearRatio: 0.5,
minPrunableToolChars: 50000,
softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 },
- hardClear: { enabled: true, placeholder: "[تمت إزالة محتوى نتيجة الأداة القديمة]" },
+ hardClear: { enabled: true, placeholder: "[Old tool result content cleared]" },
tools: { deny: ["browser", "canvas"] },
},
},
@@ -1262,25 +1278,25 @@ exec ssh -T gateway-host imsg "$@"
-- يفعّل `mode: "cache-ttl"` عمليات الاقتطاع.
-- يتحكم `ttl` في عدد المرات التي يمكن أن يعمل فيها الاقتطاع مجددًا (بعد آخر لمس لذاكرة التخزين المؤقت).
-- يقوم الاقتطاع أولًا باقتطاع نتائج الأدوات الكبيرة بشكل مرن، ثم يمسح نتائج الأدوات الأقدم بالكامل إذا لزم الأمر.
+- يفعّل `mode: "cache-ttl"` تمريرات الاقتطاع.
+- يتحكم `ttl` في عدد مرات السماح بتشغيل الاقتطاع مرة أخرى (بعد آخر لمسة للكاش).
+- يقتطع أولًا نتائج الأدوات كبيرة الحجم جزئيًا، ثم يمسح النتائج الأقدم كليًا عند الحاجة.
-**الاقتطاع المرن** يحتفظ بالبداية + النهاية ويُدرج `...` في الوسط.
+**الاقتطاع الجزئي** يحتفظ بالبداية + النهاية ويُدخل `...` في المنتصف.
-**المسح الكامل** يستبدل نتيجة الأداة بالكامل بالعنصر النائب.
+**المسح الكامل** يستبدل نتيجة الأداة بالكامل بالنص البديل.
ملاحظات:
- لا يتم اقتطاع/مسح كتل الصور أبدًا.
-- النِّسَب تعتمد على عدد الأحرف (تقريبية)، وليست على عدد tokens الدقيق.
-- إذا كان عدد رسائل المساعد أقل من `keepLastAssistants`، يتم تخطي الاقتطاع.
+- النسب تعتمد على الأحرف (تقريبية)، وليست على عدد الرموز بدقة.
+- إذا وُجدت رسائل مساعد أقل من `keepLastAssistants`، يتم تجاوز الاقتطاع.
-راجع [اقتطاع الجلسة](/ar/concepts/session-pruning) لمعرفة تفاصيل السلوك.
+راجع [اقتطاع الجلسات](/ar/concepts/session-pruning) لتفاصيل السلوك.
-### البث الكتلي
+### البث على شكل كتل
```json5
{
@@ -1296,11 +1312,11 @@ exec ssh -T gateway-host imsg "$@"
}
```
-- تتطلب القنوات غير Telegram تعيين `*.blockStreaming: true` صراحةً لتفعيل الردود الكتلية.
-- تجاوزات القناة: `channels..blockStreamingCoalesce` (وأشكالها لكل حساب). القيم الافتراضية لـ Signal/Slack/Discord/Google Chat هي `minChars: 1500`.
-- `humanDelay`: توقف عشوائي بين الردود الكتلية. `natural` = 800–2500ms. تجاوز لكل وكيل: `agents.list[].humanDelay`.
+- تتطلب القنوات غير Telegram تفعيلًا صريحًا لـ `*.blockStreaming: true` لتفعيل الردود على شكل كتل.
+- تجاوزات القنوات: `channels..blockStreamingCoalesce` (ومتغيرات كل حساب). تستخدم Signal/Slack/Discord/Google Chat افتراضيًا `minChars: 1500`.
+- `humanDelay`: توقف عشوائي بين ردود الكتل. `natural` = 800–2500ms. تجاوز لكل وكيل: `agents.list[].humanDelay`.
-راجع [Streaming](/ar/concepts/streaming) لمعرفة السلوك + تفاصيل التجزئة.
+راجع [Streaming](/ar/concepts/streaming) للسلوك وتفاصيل التقسيم.
### مؤشرات الكتابة
@@ -1315,7 +1331,7 @@ exec ssh -T gateway-host imsg "$@"
}
```
-- الافتراضيات: `instant` للمحادثات المباشرة/الإشارات، و`message` لمحادثات المجموعات غير المشار فيها.
+- القيم الافتراضية: `instant` للمحادثات المباشرة/الإشارات، و`message` لمحادثات المجموعات غير المشار فيها.
- تجاوزات لكل جلسة: `session.typingMode` و`session.typingIntervalSeconds`.
راجع [مؤشرات الكتابة](/ar/concepts/typing-indicators).
@@ -1324,7 +1340,7 @@ exec ssh -T gateway-host imsg "$@"
### `agents.defaults.sandbox`
-تفعيل sandbox اختياري للوكيل المضمّن. راجع [Sandboxing](/ar/gateway/sandboxing) للدليل الكامل.
+وضع sandboxing اختياري للوكيل المضمن. راجع [Sandboxing](/ar/gateway/sandboxing) للدليل الكامل.
```json5
{
@@ -1421,52 +1437,52 @@ exec ssh -T gateway-host imsg "$@"
-**الواجهة الخلفية:**
+**الخلفية:**
-- `docker`: وقت تشغيل Docker محلي (الافتراضي)
-- `ssh`: وقت تشغيل بعيد عام مدعوم بـ SSH
-- `openshell`: وقت تشغيل OpenShell
+- `docker`: بيئة Docker محلية (افتراضي)
+- `ssh`: بيئة وقت تشغيل بعيدة عامة مدعومة بـ SSH
+- `openshell`: بيئة وقت تشغيل OpenShell
-عند تحديد `backend: "openshell"`، تنتقل الإعدادات الخاصة بوقت التشغيل إلى
+عند اختيار `backend: "openshell"`، تنتقل الإعدادات الخاصة بوقت التشغيل إلى
`plugins.entries.openshell.config`.
-**إعداد واجهة SSH الخلفية:**
+**إعداد خلفية SSH:**
- `target`: هدف SSH بصيغة `user@host[:port]`
- `command`: أمر عميل SSH (الافتراضي: `ssh`)
-- `workspaceRoot`: الجذر البعيد المطلق المستخدم لمساحات العمل بحسب النطاق
-- `identityFile` / `certificateFile` / `knownHostsFile`: ملفات محلية موجودة تمرر إلى OpenSSH
+- `workspaceRoot`: جذر بعيد مطلق يُستخدم لمساحات العمل لكل نطاق
+- `identityFile` / `certificateFile` / `knownHostsFile`: ملفات محلية موجودة تُمرر إلى OpenSSH
- `identityData` / `certificateData` / `knownHostsData`: محتويات مضمنة أو SecretRefs يقوم OpenClaw بتحويلها إلى ملفات مؤقتة وقت التشغيل
-- `strictHostKeyChecking` / `updateHostKeys`: عناصر تحكم سياسة مفتاح المضيف في OpenSSH
+- `strictHostKeyChecking` / `updateHostKeys`: مقابض سياسة مفاتيح المضيف في OpenSSH
**أسبقية مصادقة SSH:**
-- `identityData` يتغلب على `identityFile`
-- `certificateData` يتغلب على `certificateFile`
-- `knownHostsData` يتغلب على `knownHostsFile`
-- تُحل القيم `*Data` المدعومة بـ SecretRef من لقطة وقت تشغيل الأسرار النشطة قبل بدء جلسة sandbox
+- يتغلب `identityData` على `identityFile`
+- يتغلب `certificateData` على `certificateFile`
+- يتغلب `knownHostsData` على `knownHostsFile`
+- تُحل قيم `*Data` المدعومة بـ SecretRef من لقطة secrets النشطة قبل بدء جلسة sandbox
-**سلوك واجهة SSH الخلفية:**
+**سلوك خلفية SSH:**
- يزرع مساحة العمل البعيدة مرة واحدة بعد الإنشاء أو إعادة الإنشاء
-- ثم يُبقي مساحة العمل البعيدة عبر SSH هي المرجع القانوني
-- ويوجّه `exec` وأدوات الملفات ومسارات الوسائط عبر SSH
-- ولا يزامن التغييرات البعيدة إلى المضيف تلقائيًا
-- ولا يدعم حاويات متصفح sandbox
+- ثم يحافظ على مساحة عمل SSH البعيدة بوصفها المعيارية
+- يوجّه `exec` وأدوات الملفات ومسارات الوسائط عبر SSH
+- لا يزامن التغييرات البعيدة تلقائيًا إلى المضيف
+- لا يدعم حاويات browser داخل sandbox
**وصول مساحة العمل:**
-- `none`: مساحة عمل sandbox بحسب النطاق تحت `~/.openclaw/sandboxes`
-- `ro`: مساحة عمل sandbox عند `/workspace`، ومساحة عمل الوكيل مركبة للقراءة فقط عند `/agent`
-- `rw`: مساحة عمل الوكيل مركبة للقراءة/الكتابة عند `/workspace`
+- `none`: مساحة عمل sandbox لكل نطاق تحت `~/.openclaw/sandboxes`
+- `ro`: مساحة عمل sandbox عند `/workspace`، مع تركيب مساحة عمل الوكيل للقراءة فقط عند `/agent`
+- `rw`: تُركب مساحة عمل الوكيل للقراءة/الكتابة عند `/workspace`
**النطاق:**
- `session`: حاوية + مساحة عمل لكل جلسة
-- `agent`: حاوية + مساحة عمل لكل وكيل (الافتراضي)
-- `shared`: حاوية ومساحة عمل مشتركتان (من دون عزل بين الجلسات)
+- `agent`: حاوية + مساحة عمل واحدة لكل وكيل (افتراضي)
+- `shared`: حاوية ومساحة عمل مشتركتان (بدون عزل بين الجلسات)
-**إعداد إضافة OpenShell:**
+**إعداد Plugin OpenShell:**
```json5
{
@@ -1494,30 +1510,30 @@ exec ssh -T gateway-host imsg "$@"
**وضع OpenShell:**
-- `mirror`: زرع البعيد من المحلي قبل exec، والمزامنة عكسيًا بعد exec؛ وتبقى مساحة العمل المحلية هي المرجع القانوني
-- `remote`: زرع البعيد مرة واحدة عند إنشاء sandbox، ثم إبقاء مساحة العمل البعيدة هي المرجع القانوني
+- `mirror`: زرع البعيد من المحلي قبل exec، ثم المزامنة العكسية بعد exec؛ تبقى مساحة العمل المحلية هي المعيارية
+- `remote`: زرع البعيد مرة واحدة عند إنشاء sandbox، ثم تبقى مساحة العمل البعيدة هي المعيارية
-في وضع `remote`، لا تتم مزامنة التعديلات المحلية على المضيف التي تُجرى خارج OpenClaw إلى sandbox تلقائيًا بعد خطوة الزرع.
-النقل يتم عبر SSH إلى sandbox الخاص بـ OpenShell، لكن الإضافة تملك دورة حياة sandbox والمزامنة المرآتية الاختيارية.
+في وضع `remote`، لا تُزامن التعديلات المحلية على المضيف التي تتم خارج OpenClaw تلقائيًا إلى sandbox بعد خطوة الزرع.
+ويكون النقل عبر SSH إلى sandbox الخاص بـ OpenShell، لكن الـ plugin يملك دورة حياة sandbox والمزامنة الانعكاسية الاختيارية.
-يعمل **`setupCommand`** مرة واحدة بعد إنشاء الحاوية (عبر `sh -lc`). ويحتاج إلى خروج شبكة، وجذر قابل للكتابة، ومستخدم root.
+**`setupCommand`** يعمل مرة واحدة بعد إنشاء الحاوية (عبر `sh -lc`). ويحتاج إلى خروج شبكة، وجذر قابل للكتابة، ومستخدم root.
-**تكون الحاويات افتراضيًا على `network: "none"`** — اضبطها على `"bridge"` (أو شبكة bridge مخصصة) إذا كان الوكيل يحتاج إلى وصول صادر.
-تُحظر `"host"`. وتُحظر `"container:"` افتراضيًا ما لم تضبط صراحةً
-`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (وضع طارئ).
+**تكون الحاويات افتراضيًا مع `network: "none"`** — اضبطها إلى `"bridge"` (أو شبكة bridge مخصصة) إذا كان الوكيل يحتاج إلى وصول صادر.
+يُحظر `"host"`. كما يُحظر `"container:"` افتراضيًا ما لم تضبط صراحة
+`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (خيار كسر زجاج).
-**المرفقات الواردة** تُجهّز ضمن `media/inbound/*` في مساحة العمل النشطة.
+**المرفقات الواردة** تُجهّز في `media/inbound/*` داخل مساحة العمل النشطة.
-**`docker.binds`** يركب دلائل إضافية من المضيف؛ ويتم دمج bind العامة ومع bind لكل وكيل.
+**`docker.binds`** يركب أدلة مضيف إضافية؛ ويتم دمج التركيبات العامة وتركيبات كل وكيل.
-**متصفح sandbox** (`sandbox.browser.enabled`): Chromium + CDP داخل حاوية. يتم حقن URL الخاص بـ noVNC في مطالبة النظام. لا يتطلب `browser.enabled` في `openclaw.json`.
-يستخدم الوصول للمراقبة عبر noVNC مصادقة VNC افتراضيًا ويُصدر OpenClaw URL رمزيًا قصير العمر (بدلًا من كشف كلمة المرور في الرابط المشترك).
+**browser داخل sandbox** (`sandbox.browser.enabled`): Chromium + CDP داخل حاوية. يُحقن عنوان noVNC في system prompt. لا يتطلب `browser.enabled` في `openclaw.json`.
+يستخدم وصول noVNC للمراقبة مصادقة VNC افتراضيًا ويُخرج OpenClaw عنوان URL برمز قصير العمر (بدلًا من كشف كلمة المرور في URL المشترك).
-- `allowHostControl: false` (الافتراضي) يمنع الجلسات داخل sandbox من استهداف متصفح المضيف.
-- القيمة الافتراضية لـ `network` هي `openclaw-sandbox-browser` (شبكة bridge مخصصة). اضبطها على `bridge` فقط عندما تريد صراحةً اتصال bridge عامًا.
-- يقيّد `cdpSourceRange` اختياريًا دخول CDP عند طرف الحاوية إلى نطاق CIDR (مثل `172.21.0.1/32`).
-- يقوم `sandbox.browser.binds` بتركيب دلائل مضيف إضافية داخل حاوية متصفح sandbox فقط. وعند تعيينه (بما في ذلك `[]`)، فإنه يستبدل `docker.binds` بالنسبة لحاوية المتصفح.
-- تُعرَّف افتراضيات التشغيل في `scripts/sandbox-browser-entrypoint.sh` ومضبوطة لمضيفات الحاويات:
+- `allowHostControl: false` (افتراضي) يحظر على الجلسات داخل sandbox استهداف browser المضيف.
+- تكون `network` افتراضيًا `openclaw-sandbox-browser` (شبكة bridge مخصصة). اضبطها إلى `bridge` فقط عندما تريد صراحة اتصال bridge عامًا.
+- يقيّد `cdpSourceRange` اختياريًا دخول CDP عند حافة الحاوية إلى نطاق CIDR (مثل `172.21.0.1/32`).
+- يقوم `sandbox.browser.binds` بتركيب أدلة مضيف إضافية داخل حاوية browser في sandbox فقط. عند ضبطه (بما في ذلك `[]`) فإنه يستبدل `docker.binds` لحاوية browser.
+- تُعرَّف افتراضيات الإطلاق في `scripts/sandbox-browser-entrypoint.sh` وتُضبط لمضيفي الحاويات:
- `--remote-debugging-address=127.0.0.1`
- `--remote-debugging-port=`
- `--user-data-dir=${HOME}/.chrome`
@@ -1535,27 +1551,26 @@ exec ssh -T gateway-host imsg "$@"
- `--no-zygote`
- `--metrics-recording-only`
- `--disable-extensions` (مفعّل افتراضيًا)
- - `--disable-3d-apis` و`--disable-software-rasterizer` و`--disable-gpu`
+ - تكون `--disable-3d-apis` و`--disable-software-rasterizer` و`--disable-gpu`
مفعّلة افتراضيًا ويمكن تعطيلها عبر
- `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0` إذا كان استخدام WebGL/3D يتطلب ذلك.
- - يعيد `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` تمكين الإضافات إذا كان سير العمل
+ `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0` إذا كانت WebGL/الاستخدامات ثلاثية الأبعاد تتطلب ذلك.
+ - يعيد `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` تفعيل الإضافات إذا كان سير عملك
يعتمد عليها.
- يمكن تغيير `--renderer-process-limit=2` عبر
- `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`؛ اضبطه على `0` لاستخدام
- حد العمليات الافتراضي في Chromium.
- - بالإضافة إلى `--no-sandbox` و`--disable-setuid-sandbox` عندما يكون `noSandbox` مفعّلًا.
- - الافتراضيات هي خط الأساس لصورة الحاوية؛ استخدم صورة متصفح مخصصة مع
- entrypoint مخصص لتغيير افتراضيات الحاوية.
+ `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`؛ اضبط `0` لاستخدام الحد
+ الافتراضي لعمليات Chromium.
+ - إضافة إلى `--no-sandbox` و`--disable-setuid-sandbox` عندما يكون `noSandbox` مفعّلًا.
+ - القيم الافتراضية هي خط الأساس لصورة الحاوية؛ استخدم صورة browser مخصصة مع entrypoint مخصص لتغيير افتراضيات الحاوية.
-Sandboxing المتصفح و`sandbox.docker.binds` مدعومان حاليًا فقط مع Docker.
+تتوفر حاليًا sandboxing لـ browser و`sandbox.docker.binds` فقط مع Docker.
-أنشئ الصور:
+ابنِ الصور:
```bash
scripts/sandbox-setup.sh # صورة sandbox الرئيسية
-scripts/sandbox-browser-setup.sh # صورة المتصفح الاختيارية
+scripts/sandbox-browser-setup.sh # صورة browser الاختيارية
```
### `agents.list` (تجاوزات لكل وكيل)
@@ -1567,18 +1582,18 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
{
id: "main",
default: true,
- name: "الوكيل الرئيسي",
+ name: "Main Agent",
workspace: "~/.openclaw/workspace",
agentDir: "~/.openclaw/agents/main/agent",
model: "anthropic/claude-opus-4-6", // أو { primary, fallbacks }
- thinkingDefault: "high", // تجاوز مستوى التفكير لكل وكيل
- reasoningDefault: "on", // تجاوز ظهور reasoning لكل وكيل
- fastModeDefault: false, // تجاوز fast mode لكل وكيل
- params: { cacheRetention: "none" }, // يتجاوز defaults.models.params المطابقة بحسب المفتاح
- skills: ["docs-search"], // يستبدل agents.defaults.skills عند تعيينه
+ thinkingDefault: "high", // تجاوز مستوى التفكير الافتراضي لكل وكيل
+ reasoningDefault: "on", // تجاوز رؤية reasoning الافتراضي لكل وكيل
+ fastModeDefault: false, // تجاوز fast mode الافتراضي لكل وكيل
+ params: { cacheRetention: "none" }, // يتجاوز matching defaults.models params حسب المفتاح
+ skills: ["docs-search"], // يستبدل agents.defaults.skills عند ضبطه
identity: {
name: "Samantha",
- theme: "كسلان مفيد",
+ theme: "helpful sloth",
emoji: "🦥",
avatar: "avatars/samantha.png",
},
@@ -1607,25 +1622,25 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
```
- `id`: معرّف وكيل ثابت (مطلوب).
-- `default`: عند تعيين عدة قيم، يفوز الأول (مع تسجيل تحذير). وإذا لم يُعيَّن أي منها، يكون أول إدخال في القائمة هو الافتراضي.
-- `model`: صيغة السلسلة تتجاوز `primary` فقط؛ وصيغة الكائن `{ primary, fallbacks }` تتجاوز كليهما (`[]` يعطّل fallback العامة). تظل وظائف Cron التي تتجاوز `primary` فقط ترث fallback الافتراضية ما لم تضبط `fallbacks: []`.
-- `params`: معلمات بث لكل وكيل تُدمج فوق إدخال النموذج المحدد في `agents.defaults.models`. استخدم هذا لتجاوزات خاصة بالوكيل مثل `cacheRetention` أو `temperature` أو `maxTokens` من دون تكرار كتالوج النموذج كاملًا.
-- `skills`: قائمة سماح مهارات اختيارية لكل وكيل. إذا حُذفت، يرث الوكيل `agents.defaults.skills` عند تعيينها؛ وتستبدل القائمة الصريحة الافتراضيات بدلًا من دمجها، و`[]` تعني عدم وجود مهارات.
-- `thinkingDefault`: مستوى التفكير الافتراضي الاختياري لكل وكيل (`off | minimal | low | medium | high | xhigh | adaptive`). يتجاوز `agents.defaults.thinkingDefault` لهذا الوكيل عندما لا يوجد تجاوز لكل رسالة أو جلسة.
-- `reasoningDefault`: ظهور reasoning الافتراضي الاختياري لكل وكيل (`on | off | stream`). يُطبَّق عندما لا يوجد تجاوز reasoning لكل رسالة أو جلسة.
-- `fastModeDefault`: القيمة الافتراضية الاختيارية للوضع السريع لكل وكيل (`true | false`). تُطبَّق عندما لا يوجد تجاوز للوضع السريع لكل رسالة أو جلسة.
-- `runtime`: واصف وقت تشغيل اختياري لكل وكيل. استخدم `type: "acp"` مع افتراضيات `runtime.acp` (`agent` و`backend` و`mode` و`cwd`) عندما يجب أن يفترض الوكيل جلسات harness من ACP افتراضيًا.
-- `identity.avatar`: مسار نسبي إلى مساحة العمل، أو URL `http(s)`، أو URI `data:`.
-- تستمد `identity` افتراضيات: `ackReaction` من `emoji`، و`mentionPatterns` من `name`/`emoji`.
+- `default`: عندما تُضبط عدة قيم، يفوز الأول (مع تسجيل تحذير). إذا لم يُضبط أي منها، تكون أول قائمة هي الافتراضية.
+- `model`: تتجاوز صيغة السلسلة `primary` فقط؛ وتتجاوز صيغة الكائن `{ primary, fallbacks }` كليهما (`[]` يعطل fallback العامة). تستمر وظائف cron التي تتجاوز `primary` فقط في وراثة fallback الافتراضية ما لم تضبط `fallbacks: []`.
+- `params`: معلمات بث لكل وكيل تُدمج فوق إدخال النموذج المحدد في `agents.defaults.models`. استخدم هذا لتجاوزات خاصة بالوكيل مثل `cacheRetention` أو `temperature` أو `maxTokens` من دون تكرار فهرس النماذج الكامل.
+- `skills`: قائمة سماح اختيارية لـ Skills لكل وكيل. إذا حُذفت، يرث الوكيل `agents.defaults.skills` عند ضبطها؛ والقائمة الصريحة تستبدل القيم الافتراضية بدل دمجها، و`[]` تعني بلا Skills.
+- `thinkingDefault`: مستوى التفكير الافتراضي الاختياري لكل وكيل (`off | minimal | low | medium | high | xhigh | adaptive`). يتجاوز `agents.defaults.thinkingDefault` لهذا الوكيل عندما لا يكون هناك تجاوز لكل رسالة أو لكل جلسة.
+- `reasoningDefault`: ظهور reasoning الافتراضي الاختياري لكل وكيل (`on | off | stream`). يطبق عندما لا يكون هناك تجاوز لكل رسالة أو لكل جلسة.
+- `fastModeDefault`: افتراضي fast mode الاختياري لكل وكيل (`true | false`). يطبق عندما لا يكون هناك تجاوز لكل رسالة أو لكل جلسة.
+- `runtime`: واصف وقت تشغيل اختياري لكل وكيل. استخدم `type: "acp"` مع القيم الافتراضية لـ `runtime.acp` (`agent` و`backend` و`mode` و`cwd`) عندما يجب أن يفترض الوكيل جلسات ACP harness.
+- `identity.avatar`: مسار نسبي لمساحة العمل، أو URL من نوع `http(s)`، أو URI من نوع `data:`.
+- تستمد `identity` قيمًا افتراضية: `ackReaction` من `emoji`، و`mentionPatterns` من `name`/`emoji`.
- `subagents.allowAgents`: قائمة سماح لمعرّفات الوكلاء لـ `sessions_spawn` (`["*"]` = أي وكيل؛ الافتراضي: الوكيل نفسه فقط).
-- حارس وراثة sandbox: إذا كانت جلسة الطالب داخل sandbox، يرفض `sessions_spawn` الأهداف التي ستعمل خارج sandbox.
-- `subagents.requireAgentId`: عندما تكون true، يحظر استدعاءات `sessions_spawn` التي تُحذف منها `agentId` (يفرض اختيار ملف تعريف صريح؛ الافتراضي: false).
+- حاجز وراثة sandbox: إذا كانت جلسة الطالب داخل sandbox، يرفض `sessions_spawn` الأهداف التي ستعمل خارج sandbox.
+- `subagents.requireAgentId`: عندما تكون true، يحظر استدعاءات `sessions_spawn` التي تحذف `agentId` (يفرض اختيار ملف شخصي صريح؛ الافتراضي: false).
---
## التوجيه متعدد الوكلاء
-شغّل عدة وكلاء معزولين داخل بوابة واحدة. راجع [Multi-Agent](/ar/concepts/multi-agent).
+شغّل عدة وكلاء معزولين داخل بوابة واحدة. راجع [متعدد الوكلاء](/ar/concepts/multi-agent).
```json5
{
@@ -1642,11 +1657,11 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-### حقول مطابقة الربط
+### حقول مطابقة الارتباط
-- `type` (اختياري): `route` للتوجيه العادي (النوع المفقود يفترض route)، و`acp` لروابط محادثات ACP الدائمة.
+- `type` (اختياري): `route` للتوجيه العادي (غياب النوع يعني route افتراضيًا)، و`acp` لارتباطات محادثة ACP الدائمة.
- `match.channel` (مطلوب)
-- `match.accountId` (اختياري؛ `*` = أي حساب؛ المحذوف = الحساب الافتراضي)
+- `match.accountId` (اختياري؛ `*` = أي حساب؛ الحذف = الحساب الافتراضي)
- `match.peer` (اختياري؛ `{ kind: direct|group|channel, id }`)
- `match.guildId` / `match.teamId` (اختياري؛ خاص بالقناة)
- `acp` (اختياري؛ فقط لـ `type: "acp"`): `{ mode, label, cwd, backend }`
@@ -1656,17 +1671,17 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
1. `match.peer`
2. `match.guildId`
3. `match.teamId`
-4. `match.accountId` (مطابقة تامة، بلا peer/guild/team)
+4. `match.accountId` (مطابقة دقيقة، من دون peer/guild/team)
5. `match.accountId: "*"` (على مستوى القناة)
6. الوكيل الافتراضي
-داخل كل مستوى، يفوز أول إدخال مطابق في `bindings`.
+داخل كل طبقة، يفوز أول إدخال مطابق في `bindings`.
-بالنسبة لإدخالات `type: "acp"`، يحل OpenClaw بالاعتماد على هوية المحادثة الدقيقة (`match.channel` + الحساب + `match.peer.id`) ولا يستخدم ترتيب مستويات route أعلاه.
+بالنسبة لإدخالات `type: "acp"`، يحل OpenClaw عبر هوية المحادثة الدقيقة (`match.channel` + الحساب + `match.peer.id`) ولا يستخدم ترتيب طبقات route binding أعلاه.
### ملفات وصول لكل وكيل
-
+
```json5
{
@@ -1713,7 +1728,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
-
+
```json5
{
@@ -1759,7 +1774,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
-راجع [Multi-Agent Sandbox & Tools](/ar/tools/multi-agent-sandbox-tools) لمعرفة تفاصيل الأسبقية.
+راجع [Sandbox & Tools لمتعدد الوكلاء](/ar/tools/multi-agent-sandbox-tools) لتفاصيل الأسبقية.
---
@@ -1785,22 +1800,22 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
},
resetTriggers: ["/new", "/reset"],
store: "~/.openclaw/agents/{agentId}/sessions/sessions.json",
- parentForkMaxTokens: 100000, // تخطَّ fork الخيط الأب فوق هذا العدد من tokens (0 يعطّل)
+ parentForkMaxTokens: 100000, // تجاوز تفرع خيط الأصل فوق هذا العدد من الرموز (0 يعطّل)
maintenance: {
mode: "warn", // warn | enforce
pruneAfter: "30d",
maxEntries: 500,
rotateBytes: "10mb",
resetArchiveRetention: "30d", // مدة أو false
- maxDiskBytes: "500mb", // اختياري ميزانية صارمة
- highWaterBytes: "400mb", // اختياري هدف التنظيف
+ maxDiskBytes: "500mb", // ميزانية صلبة اختيارية
+ highWaterBytes: "400mb", // هدف تنظيف اختياري
},
threadBindings: {
enabled: true,
- idleHours: 24, // إلغاء التركيز التلقائي الافتراضي بعد عدم النشاط بالساعات (`0` يعطّل)
- maxAgeHours: 0, // الحد الأقصى الصارم الافتراضي للعمر بالساعات (`0` يعطّل)
+ idleHours: 24, // الافتراضي لإزالة التركيز التلقائي بعد عدم النشاط بالساعات (`0` يعطّل)
+ maxAgeHours: 0, // الافتراضي للعمر الأقصى الصلب بالساعات (`0` يعطّل)
},
- mainKey: "main", // قديم (وقت التشغيل يستخدم دائمًا "main")
+ mainKey: "main", // قديم (يستخدم وقت التشغيل دائمًا "main")
agentToAgent: { maxPingPongTurns: 5 },
sendPolicy: {
rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }],
@@ -1812,35 +1827,35 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
-- **`scope`**: استراتيجية تجميع الجلسة الأساسية لسياقات دردشات المجموعات.
- - `per-sender` (الافتراضي): يحصل كل مرسل على جلسة معزولة داخل سياق القناة.
- - `global`: يشارك جميع المشاركين في سياق القناة جلسة واحدة (استخدمه فقط عندما يكون المقصود سياقًا مشتركًا).
+- **`scope`**: استراتيجية تجميع الجلسات الأساسية لسياقات محادثات المجموعات.
+ - `per-sender` (افتراضي): يحصل كل مرسل على جلسة معزولة ضمن سياق قناة.
+ - `global`: يشترك كل المشاركين في سياق القناة في جلسة واحدة (استخدمه فقط عندما يكون السياق المشترك مقصودًا).
- **`dmScope`**: كيفية تجميع الرسائل الخاصة.
- - `main`: تشارك جميع الرسائل الخاصة الجلسة الرئيسية.
- - `per-peer`: العزل بحسب معرّف المرسل عبر القنوات.
- - `per-channel-peer`: العزل لكل قناة + مرسل (موصى به لصناديق الوارد متعددة المستخدمين).
- - `per-account-channel-peer`: العزل لكل حساب + قناة + مرسل (موصى به لتعدد الحسابات).
-- **`identityLinks`**: يربط المعرّفات القانونية بـ peers مسبوقة بموفّر لمشاركة الجلسات عبر القنوات.
-- **`reset`**: سياسة إعادة التعيين الأساسية. يعيد `daily` التعيين عند `atHour` بالتوقيت المحلي؛ ويعيد `idle` التعيين بعد `idleMinutes`. وعندما يُهيَّأ الاثنان معًا، يفوز ما تنتهي صلاحيته أولًا.
-- **`resetByType`**: تجاوزات بحسب النوع (`direct` و`group` و`thread`). وتُقبل `dm` القديمة كاسم بديل لـ `direct`.
-- **`parentForkMaxTokens`**: الحد الأقصى لـ `totalTokens` المسموح به لجلسة الأب عند إنشاء جلسة خيط forked (الافتراضي `100000`).
- - إذا كانت `totalTokens` الخاصة بالأب أعلى من هذه القيمة، يبدأ OpenClaw جلسة خيط جديدة بدلًا من وراثة سجل الجلسة الأب.
- - اضبطه على `0` لتعطيل هذا الحارس والسماح دائمًا بعمل fork من الأب.
-- **`mainKey`**: حقل قديم. يستخدم وقت التشغيل الآن دائمًا `"main"` لسلة الدردشة المباشرة الرئيسية.
-- **`agentToAgent.maxPingPongTurns`**: الحد الأقصى لأدوار الرد المتبادل بين الوكلاء أثناء تبادلات وكيل-إلى-وكيل (عدد صحيح، المجال: `0`–`5`). وتؤدي `0` إلى تعطيل سلسلة ping-pong.
-- **`sendPolicy`**: المطابقة بواسطة `channel` أو `chatType` (`direct|group|channel`، مع الاسم البديل القديم `dm`) أو `keyPrefix` أو `rawKeyPrefix`. يفوز أول deny.
+ - `main`: تشترك كل الرسائل الخاصة في الجلسة الرئيسية.
+ - `per-peer`: عزل حسب معرّف المرسل عبر القنوات.
+ - `per-channel-peer`: عزل حسب القناة + المرسل (موصى به لصناديق الوارد متعددة المستخدمين).
+ - `per-account-channel-peer`: عزل حسب الحساب + القناة + المرسل (موصى به لتعدد الحسابات).
+- **`identityLinks`**: خريطة للمعرّفات المعيارية إلى نظائر مسبوقة بموفّر لمشاركة الجلسات عبر القنوات.
+- **`reset`**: سياسة إعادة الضبط الأساسية. يعيد `daily` الضبط عند `atHour` حسب الوقت المحلي؛ ويعيد `idle` الضبط بعد `idleMinutes`. عند ضبط كليهما، يفوز الذي تنتهي صلاحيته أولًا.
+- **`resetByType`**: تجاوزات لكل نوع (`direct` و`group` و`thread`). يُقبل `dm` القديم كاسم بديل لـ `direct`.
+- **`parentForkMaxTokens`**: الحد الأقصى المسموح به لقيمة `totalTokens` في جلسة الأصل عند إنشاء جلسة خيط متفرعة (الافتراضي `100000`).
+ - إذا كانت `totalTokens` في الأصل أعلى من هذه القيمة، يبدأ OpenClaw جلسة خيط جديدة بدلًا من وراثة سجل نص الأصل.
+ - اضبط `0` لتعطيل هذا الحاجز والسماح دائمًا بالتفرع من الأصل.
+- **`mainKey`**: حقل قديم. يستخدم وقت التشغيل الآن دائمًا `"main"` لحاوية الدردشة المباشرة الرئيسية.
+- **`agentToAgent.maxPingPongTurns`**: الحد الأقصى لأدوار الرد المتبادلة بين الوكلاء أثناء تبادلات agent-to-agent (عدد صحيح، النطاق: `0`–`5`). يؤدي `0` إلى تعطيل سلسلة ping-pong.
+- **`sendPolicy`**: المطابقة حسب `channel` أو `chatType` (`direct|group|channel`، مع الاسم البديل القديم `dm`) أو `keyPrefix` أو `rawKeyPrefix`. ويفوز أول منع.
- **`maintenance`**: عناصر تحكم تنظيف مخزن الجلسات + الاحتفاظ.
- - `mode`: `warn` يطلق تحذيرات فقط؛ و`enforce` يطبق التنظيف.
- - `pruneAfter`: حد عمر للإدخالات القديمة (الافتراضي `30d`).
- - `maxEntries`: الحد الأقصى لعدد الإدخالات في `sessions.json` (الافتراضي `500`).
+ - `mode`: يخرج `warn` تحذيرات فقط؛ بينما يطبق `enforce` التنظيف.
+ - `pruneAfter`: حد العمر لإدخالات الركود (الافتراضي `30d`).
+ - `maxEntries`: العدد الأقصى للإدخالات في `sessions.json` (الافتراضي `500`).
- `rotateBytes`: تدوير `sessions.json` عندما يتجاوز هذا الحجم (الافتراضي `10mb`).
- - `resetArchiveRetention`: مدة الاحتفاظ بأرشيفات النصوص `*.reset.`. القيمة الافتراضية هي `pruneAfter`؛ اضبطه على `false` للتعطيل.
- - `maxDiskBytes`: ميزانية قرص اختيارية لدليل الجلسات. في وضع `warn` يسجل تحذيرات؛ وفي وضع `enforce` يزيل أقدم القطع/الجلسات أولًا.
- - `highWaterBytes`: هدف اختياري بعد تنظيف الميزانية. القيمة الافتراضية `80%` من `maxDiskBytes`.
-- **`threadBindings`**: افتراضيات عامة لميزات الجلسات المرتبطة بالخيوط.
- - `enabled`: المفتاح الافتراضي الرئيسي (يمكن للموفّرين التجاوز؛ ويستخدم Discord القيمة `channels.discord.threadBindings.enabled`)
- - `idleHours`: تجاوز افتراضي لإلغاء التركيز التلقائي بعد عدم النشاط بالساعات (`0` يعطّل؛ ويمكن للموفّرين التجاوز)
- - `maxAgeHours`: تجاوز افتراضي للحد الأقصى الصارم للعمر بالساعات (`0` يعطّل؛ ويمكن للموفّرين التجاوز)
+ - `resetArchiveRetention`: الاحتفاظ بأرشيفات النص `*.reset.`. يفترض افتراضيًا قيمة `pruneAfter`؛ واضبط `false` للتعطيل.
+ - `maxDiskBytes`: ميزانية قرص اختيارية لدليل الجلسات. في وضع `warn` يسجل تحذيرات؛ وفي وضع `enforce` يزيل أقدم العناصر/الجلسات أولًا.
+ - `highWaterBytes`: هدف اختياري بعد التنظيف وفق الميزانية. الافتراضي `80%` من `maxDiskBytes`.
+- **`threadBindings`**: القيم الافتراضية العامة لميزات الجلسة المرتبطة بالخيط.
+ - `enabled`: مفتاح افتراضي رئيسي (يمكن للموفّرين تجاوزه؛ ويستخدم Discord القيمة `channels.discord.threadBindings.enabled`)
+ - `idleHours`: الافتراضي العام لإزالة التركيز التلقائية بسبب عدم النشاط بالساعات (`0` يعطّل؛ ويمكن للموفّرين التجاوز)
+ - `maxAgeHours`: الافتراضي العام للعمر الأقصى الصلب بالساعات (`0` يعطّل؛ ويمكن للموفّرين التجاوز)
@@ -1880,34 +1895,34 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
تجاوزات لكل قناة/حساب: `channels..responsePrefix` و`channels..accounts..responsePrefix`.
-طريقة الحل (الأكثر تحديدًا يفوز): الحساب → القناة → العام. تؤدي `""` إلى التعطيل وإيقاف التسلسل. وتشتق `"auto"` القيمة `[{identity.name}]`.
+آلية الحل (الأكثر تحديدًا يفوز): الحساب → القناة → العام. تؤدي `""` إلى التعطيل وإيقاف التسلسل. وتشتق `"auto"` القيمة `[{identity.name}]`.
**متغيرات القالب:**
-| المتغير | الوصف | المثال |
-| ---------------- | -------------------- | -------------------------- |
-| `{model}` | اسم النموذج المختصر | `claude-opus-4-6` |
-| `{modelFull}` | معرّف النموذج الكامل | `anthropic/claude-opus-4-6` |
-| `{provider}` | اسم الموفّر | `anthropic` |
-| `{thinkingLevel}` | مستوى التفكير الحالي | `high`, `low`, `off` |
-| `{identity.name}` | اسم هوية الوكيل | (نفس `"auto"`) |
+| المتغير | الوصف | المثال |
+| ----------------- | ---------------------- | --------------------------- |
+| `{model}` | اسم النموذج القصير | `claude-opus-4-6` |
+| `{modelFull}` | معرّف النموذج الكامل | `anthropic/claude-opus-4-6` |
+| `{provider}` | اسم الموفّر | `anthropic` |
+| `{thinkingLevel}` | مستوى التفكير الحالي | `high`، `low`، `off` |
+| `{identity.name}` | اسم هوية الوكيل | (مثل `"auto"`) |
-المتغيرات غير حساسة لحالة الأحرف. و`{think}` اسم بديل لـ `{thinkingLevel}`.
+المتغيرات غير حساسة لحالة الأحرف. ويعد `{think}` اسمًا بديلًا لـ `{thinkingLevel}`.
-### تفاعل الإقرار
+### تفاعل التأكيد
-- القيمة الافتراضية هي `identity.emoji` للوكيل النشط، وإلا `"👀"`. اضبطه على `""` للتعطيل.
+- القيمة الافتراضية هي `identity.emoji` للوكيل النشط، وإلا `"👀"`. اضبط `""` للتعطيل.
- تجاوزات لكل قناة: `channels..ackReaction` و`channels..accounts..ackReaction`.
-- ترتيب الحل: الحساب → القناة → `messages.ackReaction` → الرجوع إلى الهوية.
-- النطاق: `group-mentions` (الافتراضي)، `group-all`، `direct`، `all`.
-- يزيل `removeAckAfterReply` تفاعل الإقرار بعد الرد في Slack وDiscord وTelegram.
-- يفعّل `messages.statusReactions.enabled` تفاعلات حالة دورة الحياة على Slack وDiscord وTelegram.
- في Slack وDiscord، يعني عدم التعيين إبقاء تفاعلات الحالة مفعلة عندما تكون تفاعلات الإقرار نشطة.
- وفي Telegram، اضبطه صراحةً على `true` لتفعيل تفاعلات حالة دورة الحياة.
+- ترتيب الحل: الحساب → القناة → `messages.ackReaction` → احتياطي الهوية.
+- النطاق: `group-mentions` (افتراضي)، أو `group-all`، أو `direct`، أو `all`.
+- تزيل `removeAckAfterReply` تفاعل التأكيد بعد الرد في Slack وDiscord وTelegram.
+- يفعّل `messages.statusReactions.enabled` تفاعلات الحالة الدورية على Slack وDiscord وTelegram.
+ في Slack وDiscord، يؤدي عدم ضبطه إلى إبقاء تفاعلات الحالة مفعّلة عندما تكون تفاعلات التأكيد نشطة.
+ في Telegram، اضبطه صراحة على `true` لتفعيل تفاعلات الحالة الدورية.
-### إزالة الارتداد للرسائل الواردة
+### إلغاء ارتداد الوارد
-يجمع الرسائل النصية السريعة من نفس المرسل في دور وكيل واحد. ويتم تفريغ الوسائط/المرفقات فورًا. وتتجاوز أوامر التحكم إزالة الارتداد.
+يجمع الرسائل النصية السريعة من المرسل نفسه في دور وكيل واحد. ويتم تفريغ الوسائط/المرفقات فورًا. وتتجاوز أوامر التحكم إلغاء الارتداد.
### TTS (تحويل النص إلى كلام)
@@ -1950,18 +1965,18 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-- يتحكم `auto` في وضع TTS التلقائي الافتراضي: `off` أو `always` أو `inbound` أو `tagged`. ويمكن لـ `/tts on|off` تجاوز التفضيلات المحلية، بينما يعرض `/tts status` الحالة الفعلية.
-- يتجاوز `summaryModel` القيمة `agents.defaults.model.primary` للتلخيص التلقائي.
-- تكون `modelOverrides` مفعلة افتراضيًا؛ وتكون القيمة الافتراضية لـ `modelOverrides.allowProvider` هي `false` (تفعيل اختياري).
+- يتحكم `auto` في وضع TTS التلقائي الافتراضي: `off` أو `always` أو `inbound` أو `tagged`. ويمكن لـ `/tts on|off` تجاوز التفضيلات المحلية، ويعرض `/tts status` الحالة الفعلية.
+- يتجاوز `summaryModel` القيمة `agents.defaults.model.primary` للملخص التلقائي.
+- يكون `modelOverrides` مفعّلًا افتراضيًا؛ وتكون `modelOverrides.allowProvider` افتراضيًا `false` (تفعيل اختياري).
- تعود مفاتيح API إلى `ELEVENLABS_API_KEY`/`XI_API_KEY` و`OPENAI_API_KEY`.
-- يتجاوز `openai.baseUrl` نقطة نهاية TTS الخاصة بـ OpenAI. ترتيب الحل هو الإعدادات، ثم `OPENAI_TTS_BASE_URL`، ثم `https://api.openai.com/v1`.
-- عندما يشير `openai.baseUrl` إلى نقطة نهاية ليست OpenAI، يعاملها OpenClaw كخادم TTS متوافق مع OpenAI ويخفف التحقق من النموذج/الصوت.
+- يتجاوز `openai.baseUrl` نقطة نهاية OpenAI TTS. ترتيب الحل هو: الإعدادات، ثم `OPENAI_TTS_BASE_URL`، ثم `https://api.openai.com/v1`.
+- عندما يشير `openai.baseUrl` إلى نقطة نهاية غير OpenAI، يعامله OpenClaw بوصفه خادم TTS متوافقًا مع OpenAI ويخفف التحقق من النموذج/الصوت.
---
## Talk
-الافتراضيات لوضع Talk (macOS/iOS/Android).
+القيم الافتراضية لوضع Talk (macOS/iOS/Android).
```json5
{
@@ -1985,51 +2000,51 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-- يجب أن يطابق `talk.provider` مفتاحًا في `talk.providers` عندما يكون هناك عدة موفّري Talk مهيئين.
-- مفاتيح Talk القديمة المسطحة (`talk.voiceId` و`talk.voiceAliases` و`talk.modelId` و`talk.outputFormat` و`talk.apiKey`) مخصصة للتوافق فقط وتُرحَّل تلقائيًا إلى `talk.providers.`.
-- تعود معرّفات الصوت إلى `ELEVENLABS_VOICE_ID` أو `SAG_VOICE_ID`.
+- يجب أن يطابق `talk.provider` مفتاحًا في `talk.providers` عندما تكون عدة موفّرات Talk مهيأة.
+- مفاتيح Talk القديمة المسطحة (`talk.voiceId` و`talk.voiceAliases` و`talk.modelId` و`talk.outputFormat` و`talk.apiKey`) للتوافق فقط ويتم ترحيلها تلقائيًا إلى `talk.providers.`.
+- تعود معرّفات الأصوات إلى `ELEVENLABS_VOICE_ID` أو `SAG_VOICE_ID`.
- يقبل `providers.*.apiKey` سلاسل نصية صريحة أو كائنات SecretRef.
-- لا يُطبَّق الاحتياطي `ELEVENLABS_API_KEY` إلا عندما لا يكون مفتاح API لـ Talk مهيأ.
+- يطبق احتياطي `ELEVENLABS_API_KEY` فقط عندما لا يكون هناك مفتاح Talk API مهيأ.
- يتيح `providers.*.voiceAliases` لتوجيهات Talk استخدام أسماء ودية.
-- يتحكم `silenceTimeoutMs` في مدة انتظار وضع Talk بعد صمت المستخدم قبل إرسال النص المفرّغ. يؤدي عدم تعيينه إلى الاحتفاظ بنافذة التوقف الافتراضية للمنصة (`700 ms على macOS وAndroid، و900 ms على iOS`).
+- يتحكم `silenceTimeoutMs` في مدة انتظار وضع Talk بعد صمت المستخدم قبل إرسال النص المفرغ. وعند عدم ضبطه يُحتفظ بنافذة التوقف الافتراضية للمنصة (`700 ms على macOS وAndroid، و900 ms على iOS`).
---
## الأدوات
-### ملفات الأدوات
+### ملفات تعريف الأدوات
يضبط `tools.profile` قائمة سماح أساسية قبل `tools.allow`/`tools.deny`:
-تضبط عملية الإعداد المحلي الافتراضي الإعدادات المحلية الجديدة إلى `tools.profile: "coding"` عندما لا تكون معيّنة (وتُحفَظ الملفات الصريحة الموجودة).
+تضبط إعدادات onboarding المحلية القيم الجديدة افتراضيًا على `tools.profile: "coding"` عندما تكون غير مضبوطة (مع الحفاظ على الملفات الشخصية الصريحة الحالية).
-| الملف | يتضمن |
-| --------- | ----------------------------------------------------------------------------------------------------------------------------- |
-| `minimal` | `session_status` فقط |
-| `coding` | `group:fs` و`group:runtime` و`group:web` و`group:sessions` و`group:memory` و`cron` و`image` و`image_generate` و`video_generate` |
-| `messaging` | `group:messaging` و`sessions_list` و`sessions_history` و`sessions_send` و`session_status` |
-| `full` | بلا تقييد (نفس عدم التعيين) |
+| الملف الشخصي | يتضمن |
+| ----------- | ------------------------------------------------------------------------------------------------------------------------------- |
+| `minimal` | `session_status` فقط |
+| `coding` | `group:fs` و`group:runtime` و`group:web` و`group:sessions` و`group:memory` و`cron` و`image` و`image_generate` و`video_generate` |
+| `messaging` | `group:messaging` و`sessions_list` و`sessions_history` و`sessions_send` و`session_status` |
+| `full` | بدون تقييد (مثل غير المضبوط) |
### مجموعات الأدوات
-| المجموعة | الأدوات |
-| ----------------- | ------------------------------------------------------------------------------------------------------------------------ |
-| `group:runtime` | `exec` و`process` و`code_execution` (يُقبل `bash` كاسم بديل لـ `exec`) |
-| `group:fs` | `read` و`write` و`edit` و`apply_patch` |
-| `group:sessions` | `sessions_list` و`sessions_history` و`sessions_send` و`sessions_spawn` و`sessions_yield` و`subagents` و`session_status` |
-| `group:memory` | `memory_search` و`memory_get` |
-| `group:web` | `web_search` و`x_search` و`web_fetch` |
-| `group:ui` | `browser` و`canvas` |
-| `group:automation` | `cron` و`gateway` |
-| `group:messaging` | `message` |
-| `group:nodes` | `nodes` |
-| `group:agents` | `agents_list` |
-| `group:media` | `image` و`image_generate` و`video_generate` و`tts` |
-| `group:openclaw` | جميع الأدوات المضمنة (باستثناء إضافات الموفّرين) |
+| المجموعة | الأدوات |
+| ------------------ | ----------------------------------------------------------------------------------------------------------------------- |
+| `group:runtime` | `exec` و`process` و`code_execution` (`bash` مقبول كاسم بديل لـ `exec`) |
+| `group:fs` | `read` و`write` و`edit` و`apply_patch` |
+| `group:sessions` | `sessions_list` و`sessions_history` و`sessions_send` و`sessions_spawn` و`sessions_yield` و`subagents` و`session_status` |
+| `group:memory` | `memory_search` و`memory_get` |
+| `group:web` | `web_search` و`x_search` و`web_fetch` |
+| `group:ui` | `browser` و`canvas` |
+| `group:automation` | `cron` و`gateway` |
+| `group:messaging` | `message` |
+| `group:nodes` | `nodes` |
+| `group:agents` | `agents_list` |
+| `group:media` | `image` و`image_generate` و`video_generate` و`tts` |
+| `group:openclaw` | كل الأدوات المضمنة (باستثناء provider plugins) |
### `tools.allow` / `tools.deny`
-سياسة السماح/المنع العامة للأدوات (يفوز المنع). غير حساسة لحالة الأحرف، وتدعم wildcards `*`. وتُطبَّق حتى عندما يكون Docker sandbox متوقفًا.
+سياسة السماح/المنع العامة للأدوات (المنع يفوز). غير حساسة لحالة الأحرف، وتدعم wildcards `*`. تطبق حتى عندما يكون Docker sandbox معطّلًا.
```json5
{
@@ -2039,7 +2054,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
### `tools.byProvider`
-يقيّد الأدوات أكثر لموفّرين أو نماذج محددة. الترتيب: الملف الأساسي → ملف الموفّر → السماح/المنع.
+تقييد إضافي للأدوات لموفّرين أو نماذج محددة. الترتيب: الملف الشخصي الأساسي → ملف الموفّر الشخصي → السماح/المنع.
```json5
{
@@ -2071,8 +2086,8 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-- يمكن لتجاوز كل وكيل (`agents.list[].tools.elevated`) أن يقيّد فقط بشكل إضافي.
-- يخزن `/elevated on|off|ask|full` الحالة لكل جلسة؛ وتُطبّق التوجيهات المضمنة على رسالة واحدة.
+- يمكن لتجاوز كل وكيل (`agents.list[].tools.elevated`) فقط زيادة التقييد.
+- يخزن `/elevated on|off|ask|full` الحالة لكل جلسة؛ وتطبق التوجيهات المضمنة على رسالة واحدة.
- يتجاوز `exec` المرتفع sandboxing ويستخدم مسار الهروب المهيأ (`gateway` افتراضيًا، أو `node` عندما يكون هدف exec هو `node`).
### `tools.exec`
@@ -2098,7 +2113,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
### `tools.loopDetection`
فحوصات أمان حلقات الأدوات تكون **معطلة افتراضيًا**. اضبط `enabled: true` لتفعيل الاكتشاف.
-يمكن تعريف الإعدادات عالميًا في `tools.loopDetection` وتجاوزها لكل وكيل في `agents.list[].tools.loopDetection`.
+يمكن تعريف الإعدادات بشكل عام في `tools.loopDetection` وتجاوزها لكل وكيل في `agents.list[].tools.loopDetection`.
```json5
{
@@ -2120,13 +2135,13 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
```
- `historySize`: الحد الأقصى لسجل استدعاءات الأدوات المحتفظ به لتحليل الحلقات.
-- `warningThreshold`: عتبة النمط المتكرر بلا تقدم للتحذيرات.
-- `criticalThreshold`: عتبة أعلى لحظر الحلقات الحرجة.
-- `globalCircuitBreakerThreshold`: عتبة إيقاف صارمة لأي تشغيل بلا تقدم.
-- `detectors.genericRepeat`: يحذر من استدعاءات الأداة نفسها/الوسائط نفسها المتكررة.
-- `detectors.knownPollNoProgress`: يحذر/يحظر الأدوات المعروفة للاستطلاع (`process.poll` و`command_status` وما إلى ذلك).
-- `detectors.pingPong`: يحذر/يحظر أنماط الأزواج المتبادلة بلا تقدم.
-- إذا كان `warningThreshold >= criticalThreshold` أو `criticalThreshold >= globalCircuitBreakerThreshold`، يفشل التحقق.
+- `warningThreshold`: عتبة تحذير للأنماط المتكررة من دون تقدم.
+- `criticalThreshold`: عتبة أعلى لحظر الحلقات الحرجة المتكررة.
+- `globalCircuitBreakerThreshold`: عتبة إيقاف صارمة لأي تشغيل دون تقدم.
+- `detectors.genericRepeat`: يحذر من تكرار الاستدعاءات للأداة نفسها/الوسائط نفسها.
+- `detectors.knownPollNoProgress`: يحذر/يحظر الأدوات المعروفة للاستطلاع من دون تقدم (`process.poll` و`command_status` وغيرها).
+- `detectors.pingPong`: يحذر/يحظر أنماط الأزواج المتناوبة دون تقدم.
+- إذا كانت `warningThreshold >= criticalThreshold` أو `criticalThreshold >= globalCircuitBreakerThreshold`، يفشل التحقق.
### `tools.web`
@@ -2136,14 +2151,14 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
web: {
search: {
enabled: true,
- apiKey: "brave_api_key", // أو BRAVE_API_KEY من البيئة
+ apiKey: "brave_api_key", // أو BRAVE_API_KEY env
maxResults: 5,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
},
fetch: {
enabled: true,
- provider: "firecrawl", // اختياري؛ احذفه للكشف التلقائي
+ provider: "firecrawl", // اختياري؛ احذفه للاكتشاف التلقائي
maxChars: 50000,
maxCharsCap: 50000,
maxResponseBytes: 2000000,
@@ -2160,7 +2175,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
### `tools.media`
-يهيئ فهم الوسائط الواردة (صورة/صوت/فيديو):
+يضبط فهم الوسائط الواردة (صورة/صوت/فيديو):
```json5
{
@@ -2168,7 +2183,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
media: {
concurrency: 2,
asyncCompletion: {
- directSend: false, // تفعيل اختياري: إرسال الموسيقى/الفيديو غير المتزامن المكتمل مباشرة إلى القناة
+ directSend: false, // تفعيل اختياري: أرسل المهام المكتملة async للموسيقى/الفيديو مباشرة إلى القناة
},
audio: {
enabled: true,
@@ -2202,22 +2217,22 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
**إدخال CLI** (`type: "cli"`):
-- `command`: الملف التنفيذي المطلوب تشغيله
-- `args`: وسائط قالبية (تدعم `{{MediaPath}}` و`{{Prompt}}` و`{{MaxChars}}` وغيرها)
+- `command`: الملف التنفيذي المراد تشغيله
+- `args`: وسائط قائمة على القوالب (تدعم `{{MediaPath}}` و`{{Prompt}}` و`{{MaxChars}}` وما إلى ذلك)
**الحقول المشتركة:**
-- `capabilities`: قائمة اختيارية (`image` أو `audio` أو `video`). القيم الافتراضية: `openai`/`anthropic`/`minimax` → صورة، `google` → صورة+صوت+فيديو، `groq` → صوت.
+- `capabilities`: قائمة اختيارية (`image` أو `audio` أو `video`). الافتراضيات: `openai`/`anthropic`/`minimax` → صورة، `google` → صورة+صوت+فيديو، `groq` → صوت.
- `prompt` و`maxChars` و`maxBytes` و`timeoutSeconds` و`language`: تجاوزات لكل إدخال.
-- تعود حالات الفشل إلى الإدخال التالي.
+- تعود الإخفاقات إلى الإدخال التالي.
تتبع مصادقة الموفّر الترتيب القياسي: `auth-profiles.json` → متغيرات البيئة → `models.providers.*.apiKey`.
**حقول الإكمال غير المتزامن:**
-- `asyncCompletion.directSend`: عندما تكون `true`, تحاول المهام المكتملة غير المتزامنة لـ `music_generate`
- و`video_generate` التسليم المباشر للقناة أولًا. الافتراضي: `false`
- (المسار القديم للإيقاظ/التسليم بالنموذج من جلسة الطالب).
+- `asyncCompletion.directSend`: عندما تكون `true`، تحاول مهام `music_generate`
+ و`video_generate` غير المتزامنة المكتملة أولًا التسليم المباشر إلى القناة. الافتراضي: `false`
+ (المسار القديم لإيقاظ جلسة الطالب/تسليم النموذج).
@@ -2236,9 +2251,9 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
### `tools.sessions`
-يتحكم في الجلسات التي يمكن استهدافها بواسطة أدوات الجلسات (`sessions_list` و`sessions_history` و`sessions_send`).
+يتحكم في الجلسات التي يمكن استهدافها بواسطة أدوات الجلسة (`sessions_list` و`sessions_history` و`sessions_send`).
-الافتراضي: `tree` (الجلسة الحالية + الجلسات الناتجة عنها، مثل الوكلاء الفرعيين).
+الافتراضي: `tree` (الجلسة الحالية + الجلسات التي أنشأتها، مثل subagents).
```json5
{
@@ -2254,10 +2269,10 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
ملاحظات:
- `self`: مفتاح الجلسة الحالية فقط.
-- `tree`: الجلسة الحالية + الجلسات التي أنشأتها الجلسة الحالية (الوكلاء الفرعيون).
-- `agent`: أي جلسة تابعة لمعرّف الوكيل الحالي (قد يشمل مستخدمين آخرين إذا كنت تشغّل جلسات per-sender تحت نفس معرّف الوكيل).
-- `all`: أي جلسة. ما زال الاستهداف عبر وكلاء مختلفين يتطلب `tools.agentToAgent`.
-- قيد sandbox: عندما تكون الجلسة الحالية داخل sandbox ويكون `agents.defaults.sandbox.sessionToolsVisibility="spawned"`، تُفرض القيمة `tree` على visibility حتى لو كانت `tools.sessions.visibility="all"`.
+- `tree`: الجلسة الحالية + الجلسات التي أنشأتها الجلسة الحالية (subagents).
+- `agent`: أي جلسة تخص معرّف الوكيل الحالي (وقد يشمل ذلك مستخدمين آخرين إذا كنت تشغّل جلسات لكل مرسل تحت معرّف الوكيل نفسه).
+- `all`: أي جلسة. ولا يزال الاستهداف عبر الوكلاء يتطلب `tools.agentToAgent`.
+- فرض sandbox: عندما تكون الجلسة الحالية داخل sandbox ويكون `agents.defaults.sandbox.sessionToolsVisibility="spawned"`، تُفرض الرؤية إلى `tree` حتى لو كانت `tools.sessions.visibility="all"`.
### `tools.sessions_spawn`
@@ -2268,11 +2283,11 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
tools: {
sessions_spawn: {
attachments: {
- enabled: false, // تفعيل اختياري: اضبط true للسماح بالمرفقات الملفية المضمنة
- maxTotalBytes: 5242880, // 5 MB إجماليًا عبر جميع الملفات
+ enabled: false, // تفعيل اختياري: اضبط true للسماح بمرفقات ملفات مضمنة
+ maxTotalBytes: 5242880, // إجمالي 5 MB لكل الملفات
maxFiles: 50,
maxFileBytes: 1048576, // 1 MB لكل ملف
- retainOnSessionKeep: false, // الاحتفاظ بالمرفقات عندما يكون cleanup="keep"
+ retainOnSessionKeep: false, // الاحتفاظ بالمرفقات عندما cleanup="keep"
},
},
},
@@ -2282,15 +2297,15 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
ملاحظات:
- المرفقات مدعومة فقط لـ `runtime: "subagent"`. ويرفض وقت تشغيل ACP هذه المرفقات.
-- تُحوَّل الملفات إلى مساحة عمل الابن عند `.openclaw/attachments//` مع `.manifest.json`.
-- يُحجَب محتوى المرفقات تلقائيًا من حفظ السجل.
-- تُتحقق المدخلات Base64 باستخدام فحوص صارمة للأبجدية/الحشو وحارس حجم قبل فك الترميز.
-- أذونات الملفات هي `0700` للدلائل و`0600` للملفات.
-- يتبع التنظيف سياسة `cleanup`: يؤدي `delete` دائمًا إلى إزالة المرفقات؛ بينما يحتفظ `keep` بها فقط عندما تكون `retainOnSessionKeep: true`.
+- تُحوَّل الملفات إلى مساحة عمل الابن عند `.openclaw/attachments//` مع ملف `.manifest.json`.
+- يُحجب محتوى المرفقات تلقائيًا من حفظ النصوص.
+- يتم التحقق من مدخلات Base64 مع فحوص صارمة للأبجدية/الحشو وحاجز حجم قبل فك الترميز.
+- تكون أذونات الملفات `0700` للأدلة و`0600` للملفات.
+- يتبع التنظيف سياسة `cleanup`: يقوم `delete` دائمًا بإزالة المرفقات؛ ويحتفظ `keep` بها فقط عندما تكون `retainOnSessionKeep: true`.
### `tools.experimental`
-أعلام الأدوات المضمنة التجريبية. تكون معطلة افتراضيًا ما لم تنطبق قاعدة تفعيل تلقائي خاصة بوقت تشغيل معين.
+أعلام الأدوات المضمنة التجريبية. تكون معطلة افتراضيًا ما لم تنطبق قاعدة تفعيل تلقائي خاصة بوقت التشغيل.
```json5
{
@@ -2304,9 +2319,9 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
ملاحظات:
-- `planTool`: يفعّل الأداة المهيكلة `update_plan` لتتبع الأعمال غير التافهة متعددة الخطوات.
-- الافتراضي: `false` للموفّرين غير OpenAI. وتُفعَّل تلقائيًا في تشغيلات OpenAI وOpenAI Codex عندما لا تكون معيّنة؛ اضبطها على `false` لتعطيل هذا التفعيل التلقائي.
-- عند التفعيل، تضيف مطالبة النظام أيضًا إرشادات استخدام حتى لا يستخدمها النموذج إلا للأعمال الجوهرية ويحافظ على خطوة واحدة فقط `in_progress`.
+- `planTool`: يفعّل أداة `update_plan` الهيكلية للعمل غير البسيط متعدد الخطوات.
+- الافتراضي: `false` للموفّرين غير OpenAI. تقوم تشغيلات OpenAI وOpenAI Codex بتفعيلها تلقائيًا عندما تكون غير مضبوطة؛ واضبط `false` لتعطيل ذلك.
+- عند التفعيل، تضيف system prompt أيضًا إرشادات استخدام بحيث يستخدمها النموذج فقط للعمل الجوهري ويحافظ على خطوة واحدة فقط كحد أقصى في حالة `in_progress`.
### `agents.defaults.subagents`
@@ -2326,21 +2341,21 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-- `model`: النموذج الافتراضي للوكلاء الفرعيين المنشأين. إذا حُذف، يرث الوكلاء الفرعيون نموذج المستدعي.
-- `allowAgents`: قائمة السماح الافتراضية لمعرّفات الوكلاء الهدف لـ `sessions_spawn` عندما لا يضبط وكيل الطالب `subagents.allowAgents` الخاص به (`["*"]` = أي وكيل؛ الافتراضي: الوكيل نفسه فقط).
-- `runTimeoutSeconds`: المهلة الافتراضية (بالثواني) لـ `sessions_spawn` عندما يحذف استدعاء الأداة `runTimeoutSeconds`. وتعني `0` عدم وجود مهلة.
+- `model`: النموذج الافتراضي للوكلاء الفرعيين المنشئين. إذا حُذف، يرث الوكلاء الفرعيون نموذج المستدعي.
+- `allowAgents`: قائمة السماح الافتراضية لمعرّفات الوكلاء المستهدفة لـ `sessions_spawn` عندما لا يضبط الوكيل الطالب `subagents.allowAgents` الخاص به (`["*"]` = أي وكيل؛ الافتراضي: الوكيل نفسه فقط).
+- `runTimeoutSeconds`: المهلة الافتراضية (بالثواني) لـ `sessions_spawn` عندما يحذف استدعاء الأداة `runTimeoutSeconds`. تعني `0` عدم وجود مهلة.
- سياسة الأدوات لكل وكيل فرعي: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
---
-## الموفّرون المخصصون وbase URLs
+## الموفّرون المخصصون وعناوين URL الأساسية
-يستخدم OpenClaw كتالوج النماذج المضمّن. أضف موفّرين مخصصين عبر `models.providers` في الإعدادات أو `~/.openclaw/agents//agent/models.json`.
+يستخدم OpenClaw فهرس النماذج المضمن. أضف موفّرين مخصصين عبر `models.providers` في الإعدادات أو `~/.openclaw/agents//agent/models.json`.
```json5
{
models: {
- mode: "merge", // merge (الافتراضي) | replace
+ mode: "merge", // merge (افتراضي) | replace
providers: {
"custom-proxy": {
baseUrl: "http://localhost:4000/v1",
@@ -2366,47 +2381,47 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
- استخدم `authHeader: true` + `headers` لاحتياجات المصادقة المخصصة.
- تجاوز جذر إعدادات الوكيل عبر `OPENCLAW_AGENT_DIR` (أو `PI_CODING_AGENT_DIR`، وهو اسم بديل قديم لمتغير بيئة).
-- أسبقية الدمج لمعرّفات الموفّر المطابقة:
- - تفوز قيم `baseUrl` غير الفارغة في `models.json` الخاص بالوكيل.
- - تفوز قيم `apiKey` غير الفارغة الخاصة بالوكيل فقط عندما لا يكون ذلك الموفّر مُدارًا عبر SecretRef في سياق الإعداد/ملف المصادقة الحالي.
- - تُحدّث قيم `apiKey` الخاصة بالموفّر المُدار عبر SecretRef من علامات المصدر (`ENV_VAR_NAME` لمراجع البيئة، و`secretref-managed` لمراجع الملف/exec) بدلًا من حفظ الأسرار المحلولة.
- - تُحدّث قيم رؤوس الموفّر المُدارة عبر SecretRef من علامات المصدر (`secretref-env:ENV_VAR_NAME` لمراجع البيئة، و`secretref-managed` لمراجع الملف/exec).
- - تعود قيم `apiKey`/`baseUrl` الفارغة أو المحذوفة للوكيل إلى `models.providers` في الإعدادات.
- - تستخدم قيم `contextWindow`/`maxTokens` للنموذج المطابق القيمة الأعلى بين الإعداد الصريح وقيم الكتالوج الضمنية.
- - يحافظ `contextTokens` للنموذج المطابق على حد وقت تشغيل صريح عند وجوده؛ استخدمه لتقييد السياق الفعلي دون تغيير بيانات النموذج الأصلية.
- - استخدم `models.mode: "replace"` عندما تريد أن تعيد الإعدادات كتابة `models.json` بالكامل.
- - يكون حفظ العلامات معتمدًا على المصدر: تُكتب العلامات من لقطة إعداد المصدر النشطة (قبل الحل)، وليس من قيم الأسرار المحلولة وقت التشغيل.
+- أسبقية الدمج لمعرّفات الموفّرين المطابقة:
+ - تفوز قيم `baseUrl` غير الفارغة في `models.json` الخاصة بالوكيل.
+ - تفوز قيم `apiKey` غير الفارغة الخاصة بالوكيل فقط عندما لا يكون ذلك الموفّر مُدارًا عبر SecretRef في سياق config/auth-profile الحالي.
+ - تُحدّث قيم `apiKey` الخاصة بالموفّرين المُدارين عبر SecretRef من علامات المصدر (`ENV_VAR_NAME` لمراجع env، و`secretref-managed` لمراجع file/exec) بدلًا من حفظ الأسرار المحلولة.
+ - تُحدّث قيم رؤوس الموفّر المُدارة عبر SecretRef من علامات المصدر (`secretref-env:ENV_VAR_NAME` لمراجع env، و`secretref-managed` لمراجع file/exec).
+ - تعود قيم `apiKey`/`baseUrl` الفارغة أو المحذوفة الخاصة بالوكيل إلى `models.providers` في الإعدادات.
+ - تستخدم القيم `contextWindow`/`maxTokens` الأعلى بين الإعداد الصريح وقيم الفهرس الضمنية للنماذج المطابقة.
+ - تحافظ القيم `contextTokens` للنماذج المطابقة على حد وقت تشغيل صريح عندما يكون موجودًا؛ استخدمها لتقييد السياق الفعال دون تغيير بيانات النموذج الأصلية.
+ - استخدم `models.mode: "replace"` عندما تريد من الإعدادات إعادة كتابة `models.json` بالكامل.
+ - يكون حفظ العلامات معتمدًا على المصدر: تُكتب العلامات من لقطة إعدادات المصدر النشطة (قبل الحل)، وليس من قيم الأسرار المحلولة وقت التشغيل.
### تفاصيل حقول الموفّر
-- `models.mode`: سلوك كتالوج الموفّر (`merge` أو `replace`).
-- `models.providers`: خريطة موفّرين مخصصين بمفاتيح هي معرّفات الموفّرين.
-- `models.providers.*.api`: مهيّئ الطلب (`openai-completions` أو `openai-responses` أو `anthropic-messages` أو `google-generative-ai`، إلخ).
-- `models.providers.*.apiKey`: بيانات اعتماد الموفّر (يفضَّل SecretRef/الاستبدال من البيئة).
+- `models.mode`: سلوك فهرس الموفّر (`merge` أو `replace`).
+- `models.providers`: خريطة موفّرين مخصصين مفهرسة بمعرّف الموفّر.
+- `models.providers.*.api`: محوّل الطلب (`openai-completions` أو `openai-responses` أو `anthropic-messages` أو `google-generative-ai`، إلخ).
+- `models.providers.*.apiKey`: اعتماد الموفّر (فضّل SecretRef/الاستبدال بمتغيرات البيئة).
- `models.providers.*.auth`: استراتيجية المصادقة (`api-key` أو `token` أو `oauth` أو `aws-sdk`).
-- `models.providers.*.injectNumCtxForOpenAICompat`: بالنسبة إلى Ollama + `openai-completions`، يتم حقن `options.num_ctx` في الطلبات (الافتراضي: `true`).
-- `models.providers.*.authHeader`: فرض نقل بيانات الاعتماد في رأس `Authorization` عند الحاجة.
+- `models.providers.*.injectNumCtxForOpenAICompat`: بالنسبة لـ Ollama + `openai-completions`، يحقن `options.num_ctx` في الطلبات (الافتراضي: `true`).
+- `models.providers.*.authHeader`: يفرض نقل بيانات الاعتماد في ترويسة `Authorization` عندما يكون ذلك مطلوبًا.
- `models.providers.*.baseUrl`: عنوان URL الأساسي لـ API upstream.
-- `models.providers.*.headers`: رؤوس ثابتة إضافية لتوجيه proxy/المستأجر.
+- `models.providers.*.headers`: رؤوس ثابتة إضافية للتوجيه عبر proxy/tenant.
- `models.providers.*.request`: تجاوزات النقل لطلبات HTTP الخاصة بموفّر النموذج.
- `request.headers`: رؤوس إضافية (تُدمج مع افتراضيات الموفّر). تقبل القيم SecretRef.
- - `request.auth`: تجاوز استراتيجية المصادقة. الأوضاع: `"provider-default"` (استخدام مصادقة الموفّر المضمنة)، `"authorization-bearer"` (مع `token`)، `"header"` (مع `headerName` و`value` و`prefix` الاختياري).
- - `request.proxy`: تجاوز HTTP proxy. الأوضاع: `"env-proxy"` (استخدام `HTTP_PROXY`/`HTTPS_PROXY` من البيئة)، `"explicit-proxy"` (مع `url`). ويقبل كلا الوضعين عنصر `tls` فرعيًا اختياريًا.
- - `request.tls`: تجاوز TLS للاتصالات المباشرة. الحقول: `ca` و`cert` و`key` و`passphrase` (كلها تقبل SecretRef)، و`serverName` و`insecureSkipVerify`.
-- `models.providers.*.models`: إدخالات كتالوج نماذج صريحة للمزوّد.
-- `models.providers.*.models.*.contextWindow`: بيانات وصفية لنافذة السياق الأصلية للنموذج.
-- `models.providers.*.models.*.contextTokens`: حد سياق اختياري لوقت التشغيل. استخدم هذا عندما تريد ميزانية سياق فعلية أصغر من `contextWindow` الأصلية للنموذج.
-- `models.providers.*.models.*.compat.supportsDeveloperRole`: تلميح توافق اختياري. بالنسبة إلى `api: "openai-completions"` مع `baseUrl` غير أصلي وغير فارغ (مضيف ليس `api.openai.com`)، يفرض OpenClaw هذه القيمة على `false` وقت التشغيل. ويؤدي `baseUrl` الفارغ/المحذوف إلى الاحتفاظ بسلوك OpenAI الافتراضي.
-- `models.providers.*.models.*.compat.requiresStringContent`: تلميح توافق اختياري لنقاط نهاية الدردشة المتوافقة مع OpenAI التي تدعم النص فقط. عندما تكون `true`، يقوم OpenClaw بتسطيح مصفوفات `messages[].content` النصية الخالصة إلى سلاسل نصية بسيطة قبل إرسال الطلب.
+ - `request.auth`: تجاوز استراتيجية المصادقة. الأوضاع: `"provider-default"` (استخدم المصادقة المضمنة للموفّر)، `"authorization-bearer"` (مع `token`)، `"header"` (مع `headerName` و`value` و`prefix` الاختياري).
+ - `request.proxy`: تجاوز وكيل HTTP. الأوضاع: `"env-proxy"` (استخدم متغيرات `HTTP_PROXY`/`HTTPS_PROXY`)، و`"explicit-proxy"` (مع `url`). يقبل كلا الوضعين كائن `tls` فرعيًا اختياريًا.
+ - `request.tls`: تجاوز TLS للاتصالات المباشرة. الحقول: `ca` و`cert` و`key` و`passphrase` (كلها تقبل SecretRef) و`serverName` و`insecureSkipVerify`.
+- `models.providers.*.models`: إدخالات فهرس نماذج موفّر صريحة.
+- `models.providers.*.models.*.contextWindow`: بيانات وصفية لنافذة سياق النموذج الأصلية.
+- `models.providers.*.models.*.contextTokens`: حد سياق اختياري لوقت التشغيل. استخدمه عندما تريد ميزانية سياق فعالة أصغر من `contextWindow` الأصلية للنموذج.
+- `models.providers.*.models.*.compat.supportsDeveloperRole`: تلميح توافق اختياري. بالنسبة إلى `api: "openai-completions"` مع `baseUrl` غير فارغ وغير أصلي (مضيف ليس `api.openai.com`)، يفرض OpenClaw هذه القيمة إلى `false` وقت التشغيل. أما `baseUrl` الفارغ/المحذوف فيبقي سلوك OpenAI الافتراضي.
+- `models.providers.*.models.*.compat.requiresStringContent`: تلميح توافق اختياري لنقاط نهاية chat المتوافقة مع OpenAI والتي تقبل السلاسل فقط. عندما تكون `true`، يقوم OpenClaw بتسطيح مصفوفات `messages[].content` النصية الخالصة إلى سلاسل عادية قبل إرسال الطلب.
- `plugins.entries.amazon-bedrock.config.discovery`: جذر إعدادات الاكتشاف التلقائي لـ Bedrock.
-- `plugins.entries.amazon-bedrock.config.discovery.enabled`: تشغيل/إيقاف الاكتشاف الضمني.
-- `plugins.entries.amazon-bedrock.config.discovery.region`: منطقة AWS الخاصة بالاكتشاف.
-- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: مرشح اختياري لمعرّف الموفّر للاكتشاف الموجّه.
-- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: فترة الاستطلاع لتحديث الاكتشاف.
-- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: نافذة سياق احتياطية للنماذج المكتشفة.
-- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: الحد الأقصى الاحتياطي لرموز الخرج للنماذج المكتشفة.
+- `plugins.entries.amazon-bedrock.config.discovery.enabled`: تفعيل/تعطيل الاكتشاف الضمني.
+- `plugins.entries.amazon-bedrock.config.discovery.region`: منطقة AWS للاكتشاف.
+- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: مرشح معرّف موفّر اختياري لاكتشاف مستهدف.
+- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: فاصل الاستطلاع لتحديث الاكتشاف.
+- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: نافذة السياق الاحتياطية للنماذج المكتشفة.
+- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: الحد الاحتياطي لرموز الخرج للنماذج المكتشفة.
-### أمثلة الموفّرين
+### أمثلة الموفّر
@@ -2442,7 +2457,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-استخدم `cerebras/zai-glm-4.7` لـ Cerebras؛ و`zai/glm-4.7` لاتصال Z.AI المباشر.
+استخدم `cerebras/zai-glm-4.7` مع Cerebras؛ و`zai/glm-4.7` مع Z.AI direct.
@@ -2459,7 +2474,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-اضبط `OPENCODE_API_KEY` (أو `OPENCODE_ZEN_API_KEY`). استخدم مراجع `opencode/...` لكتالوج Zen أو مراجع `opencode-go/...` لكتالوج Go. الاختصار: `openclaw onboard --auth-choice opencode-zen` أو `openclaw onboard --auth-choice opencode-go`.
+اضبط `OPENCODE_API_KEY` (أو `OPENCODE_ZEN_API_KEY`). استخدم مراجع `opencode/...` لفهرس Zen أو مراجع `opencode-go/...` لفهرس Go. اختصار: `openclaw onboard --auth-choice opencode-zen` أو `openclaw onboard --auth-choice opencode-go`.
@@ -2476,10 +2491,10 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-اضبط `ZAI_API_KEY`. ويُقبل `z.ai/*` و`z-ai/*` كأسماء بديلة. الاختصار: `openclaw onboard --auth-choice zai-api-key`.
+اضبط `ZAI_API_KEY`. وتُقبل الصيغتان `z.ai/*` و`z-ai/*` كأسماء بديلة. اختصار: `openclaw onboard --auth-choice zai-api-key`.
- نقطة النهاية العامة: `https://api.z.ai/api/paas/v4`
-- نقطة نهاية البرمجة (الافتراضي): `https://api.z.ai/api/coding/paas/v4`
+- نقطة نهاية البرمجة (الافتراضية): `https://api.z.ai/api/coding/paas/v4`
- بالنسبة إلى نقطة النهاية العامة، عرّف موفّرًا مخصصًا مع تجاوز base URL.
@@ -2519,11 +2534,11 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-بالنسبة إلى نقطة النهاية الصينية: `baseUrl: "https://api.moonshot.cn/v1"` أو `openclaw onboard --auth-choice moonshot-api-key-cn`.
+بالنسبة إلى نقطة النهاية في الصين: `baseUrl: "https://api.moonshot.cn/v1"` أو `openclaw onboard --auth-choice moonshot-api-key-cn`.
-تعلن نقاط نهاية Moonshot الأصلية عن توافق استخدام البث على ناقل
-`openai-completions` المشترك، ويعتمد OpenClaw الآن على إمكانات نقطة النهاية
-بدلًا من معرّف الموفّر المضمن وحده.
+تعلن نقاط نهاية Moonshot الأصلية عن توافق استخدام البث على النقل المشترك
+`openai-completions`، وأصبح OpenClaw الآن يربط ذلك بقدرات نقطة النهاية
+بدلًا من الاكتفاء بمعرّف الموفّر المضمن.
@@ -2541,7 +2556,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-متوافق مع Anthropic، وهو موفّر مضمن. الاختصار: `openclaw onboard --auth-choice kimi-code-api-key`.
+متوافق مع Anthropic، وموفّر مضمن. اختصار: `openclaw onboard --auth-choice kimi-code-api-key`.
@@ -2580,7 +2595,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-يجب أن يحذف base URL اللاحقة `/v1` (عميل Anthropic يضيفها). الاختصار: `openclaw onboard --auth-choice synthetic-api-key`.
+يجب أن يحذف base URL اللاحقة `/v1` (إذ يضيفها عميل Anthropic). اختصار: `openclaw onboard --auth-choice synthetic-api-key`.
@@ -2623,17 +2638,17 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
اضبط `MINIMAX_API_KEY`. الاختصارات:
`openclaw onboard --auth-choice minimax-global-api` أو
`openclaw onboard --auth-choice minimax-cn-api`.
-يفترض كتالوج النماذج الآن القيمة M2.7 فقط.
+يفترض فهرس النماذج الآن M2.7 فقط.
على مسار البث المتوافق مع Anthropic، يعطّل OpenClaw التفكير في MiniMax
-افتراضيًا ما لم تضبط `thinking` صراحةً. وتؤدي `/fast on` أو
-`params.fastMode: true` إلى إعادة كتابة `MiniMax-M2.7` إلى
+افتراضيًا ما لم تضبط `thinking` صراحة بنفسك. ويعيد `/fast on` أو
+`params.fastMode: true` كتابة `MiniMax-M2.7` إلى
`MiniMax-M2.7-highspeed`.
-راجع [النماذج المحلية](/ar/gateway/local-models). باختصار: شغّل نموذجًا محليًا كبيرًا عبر LM Studio Responses API على عتاد قوي؛ واحتفظ بدمج النماذج المستضافة كخيار احتياطي.
+راجع [النماذج المحلية](/ar/gateway/local-models). باختصار: شغّل نموذجًا محليًا كبيرًا عبر LM Studio Responses API على عتاد قوي؛ واحتفظ بالنماذج المستضافة مدمجةً كاحتياطي.
@@ -2654,7 +2669,7 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
},
entries: {
"image-lab": {
- apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // أو سلسلة نصية صريحة
+ apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // أو سلسلة صريحة
env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" },
},
peekaboo: { enabled: true },
@@ -2664,18 +2679,17 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
}
```
-- `allowBundled`: قائمة سماح اختيارية للمهارات المجمّعة فقط (لا تتأثر المهارات المُدارة/الخاصة بمساحة العمل).
-- `load.extraDirs`: جذور مهارات مشتركة إضافية (أدنى أسبقية).
-- `install.preferBrew`: عندما تكون true، تُفضَّل أدوات التثبيت عبر Homebrew عندما يكون `brew`
- متاحًا قبل الرجوع إلى أنواع المثبتات الأخرى.
-- `install.nodeManager`: تفضيل أداة إدارة Node لمواصفات
- `metadata.openclaw.install` (`npm` | `pnpm` | `yarn` | `bun`).
-- `entries..enabled: false` يعطّل المهارة حتى لو كانت مضمّنة/مثبّتة.
-- `entries..apiKey`: وسيلة مريحة للمهارات التي تعلن متغير بيئة أساسيًا (سلسلة نصية صريحة أو كائن SecretRef).
+- `allowBundled`: قائمة سماح اختيارية لـ bundled skills فقط (لا تتأثر managed/workspace skills).
+- `load.extraDirs`: جذور Skills مشتركة إضافية (أدنى أسبقية).
+- `install.preferBrew`: عندما تكون true، يُفضَّل استخدام مثبّتات Homebrew عندما يكون `brew` متاحًا قبل الرجوع إلى أنواع المثبتات الأخرى.
+- `install.nodeManager`: تفضيل مثبت node لمواصفات `metadata.openclaw.install`
+ (`npm` | `pnpm` | `yarn` | `bun`).
+- `entries..enabled: false` يعطّل Skill حتى لو كانت bundled/مثبتة.
+- `entries..apiKey`: حقل تسهيلي لمفتاح API للـ Skills التي تعلن متغير env أساسيًا (سلسلة صريحة أو كائن SecretRef).
---
-## الإضافات
+## Plugins
```json5
{
@@ -2700,17 +2714,24 @@ scripts/sandbox-browser-setup.sh # صورة المتصفح الاختياري
```
- تُحمّل من `~/.openclaw/extensions` و`/.openclaw/extensions` بالإضافة إلى `plugins.load.paths`.
-- يقبل الاكتشاف إضافات OpenClaw الأصلية بالإضافة إلى الحزم المتوافقة مع Codex وClaude، بما في ذلك حزم Claude ذات التخطيط الافتراضي بلا manifest.
-- **تتطلب تغييرات الإعدادات إعادة تشغيل البوابة.**
-- `allow`: قائمة سماح اختيارية (تُحمّل فقط الإضافات المدرجة). ويفوز `deny`.
-- `plugins.entries..apiKey`: حقل مريح لمفتاح API على مستوى الإضافة (عندما تدعمه الإضافة).
-- `plugins.entries..env`: خريطة متغيرات بيئة ذات نطاق للإضافة.
-- `plugins.entries..hooks.allowPromptInjection`: عندما تكون `false`، يحظر core قيمة `before_prompt_build` ويتجاهل الحقول المعدّلة للمطالبة من `before_agent_start` القديم، مع الحفاظ على `modelOverride` و`providerOverride` القديمين. ينطبق ذلك على hooks الإضافات الأصلية والدلائل المدعومة للحزم التي توفّر hooks.
-- `plugins.entries..subagent.allowModelOverride`: يثق صراحةً بهذه الإضافة لطلب تجاوزات `provider` و`model` لكل تشغيل لعمليات الوكيل الفرعي الخلفية.
-- `plugins.entries..subagent.allowedModels`: قائمة سماح اختيارية لأهداف `provider/model` القانونية لتجاوزات الوكيل الفرعي الموثوقة. استخدم `"*"` فقط عندما تريد عمدًا السماح بأي نموذج.
-- `plugins.entries..config`: كائن إعدادات معرّف من الإضافة (يتم التحقق منه بواسطة مخطط إضافة OpenClaw الأصلية عند توفره).
-- `plugins.entries.firecrawl.config.webFetch`: إعدادات موفّر web-fetch لـ Firecrawl.
- - `apiKey`: مفتاح API الخاص بـ Firecrawl (يقبل SecretRef). يعود إلى `plugins.entries.firecrawl.config.webSearch.apiKey` أو `tools.web.fetch.firecrawl.apiKey` القديم أو متغير البيئة `FIRECRAWL_API_KEY`.
- - `baseUrl`: عنوان URL الأساسي لـ API الخاص بـ Firecrawl (الافتراضي: `https://api.firecrawl.dev`).
+- يقبل الاكتشاف plugins الأصلية في OpenClaw بالإضافة إلى حزم Codex المتوافقة وحزم Claude، بما في ذلك حزم Claude عديمة manifest ذات التخطيط الافتراضي.
+- **تتطلب تغييرات الإعدادات إعادة تشغيل للبوابة.**
+- `allow`: قائمة سماح اختيارية (لا تُحمَّل إلا الـ plugins المدرجة). يفوز `deny`.
+- `plugins.entries..apiKey`: حقل تسهيلي لمفتاح API على مستوى plugin (عندما يدعمه الـ plugin).
+- `plugins.entries..env`: خريطة متغيرات بيئة ضمن نطاق plugin.
+- `plugins.entries..hooks.allowPromptInjection`: عندما تكون `false`، يحظر core قيمة `before_prompt_build` ويتجاهل الحقول القديمة المعدلة لـ prompt من `before_agent_start` القديم، مع الحفاظ على `modelOverride` و`providerOverride` القديمين. ينطبق هذا على hooks الخاصة بالـ plugins الأصلية وعلى أدلة hooks التي توفرها الحزم المدعومة.
+- `plugins.entries..subagent.allowModelOverride`: يثق صراحة بهذا الـ plugin لطلب تجاوزات `provider` و`model` لكل تشغيل بالنسبة لتشغيلات subagent الخلفية.
+- `plugins.entries..subagent.allowedModels`: قائمة سماح اختيارية لأهداف `provider/model` المعيارية لتجاوزات subagent الموثوقة. استخدم `"*"` فقط عندما تريد عمدًا السماح بأي نموذج.
+- `plugins.entries..config`: كائن إعدادات يعرّفه الـ plugin (ويُتحقق منه بواسطة مخطط plugin الأصلي في OpenClaw عند توفره).
+- `plugins.entries.firecrawl.config.webFetch`: إعدادات موفّر جلب الويب Firecrawl.
+ - `apiKey`: مفتاح Firecrawl API (يقبل SecretRef). يعود إلى `plugins.entries.firecrawl.config.webSearch.apiKey` أو `tools.web.fetch.firecrawl.apiKey` القديم أو متغير البيئة `FIRECRAWL_API_KEY`.
+ - `baseUrl`: عنوان Firecrawl API الأساسي (الافتراضي: `https://api.firecrawl.dev`).
- `onlyMainContent`: استخراج المحتوى الرئيسي فقط من الصفحات (الافتراضي: `true`).
- - `maxAgeMs`: أقصى عمر لذاكرة التخزين المؤقت بالمللي ثانية (الافتراضي: `172800000
\ No newline at end of file
+ - `maxAgeMs`: الحد الأقصى لعمر الكاش بالميلي ثانية (الافتراضي: `172800000` / يومان).
+ - `timeoutSeconds`: مهلة طلب الكشط بالثواني (الافتراضي: `60`).
+- `plugins.entries.xai.config.xSearch`: إعدادات xAI X Search (بحث الويب Grok).
+ - `enabled`: تمكين موفّر X Search.
+ - `model`: نموذج Grok المستخدم للبحث (مثل `"grok-4-1-fast"`).
+- `plugins.entries.memory-core.config.dreaming`: إعدادات dreaming الخاصة بالذاكرة (تجريبية). راجع [Dreaming](/ar/concepts/dreaming) للمراحل والعتبات.
+ - `enabled`: مفتاح dreaming الرئيسي (الافتراضي `false`).
+ - `frequency`: إيقاع cron لكل دورة dreaming كاملة (`"0 3 *
\ No newline at end of file
diff --git a/docs/ar/plugins/sdk-overview.md b/docs/ar/plugins/sdk-overview.md
index ebd96bde9..f37dd69cf 100644
--- a/docs/ar/plugins/sdk-overview.md
+++ b/docs/ar/plugins/sdk-overview.md
@@ -1,30 +1,30 @@
---
read_when:
- - تحتاج إلى معرفة المسار الفرعي في SDK الذي يجب الاستيراد منه
+ - تحتاج إلى معرفة أي مسار فرعي من SDK يجب الاستيراد منه
- تريد مرجعًا لجميع أساليب التسجيل على OpenClawPluginApi
- تبحث عن تصدير محدد في SDK
sidebarTitle: SDK Overview
-summary: خريطة الاستيراد، ومرجع API للتسجيل، وبنية SDK
+summary: خريطة الاستيراد، ومرجع واجهة برمجة تطبيقات التسجيل، وبنية SDK
title: نظرة عامة على Plugin SDK
x-i18n:
- generated_at: "2026-04-08T02:18:17Z"
+ generated_at: "2026-04-08T07:18:00Z"
model: gpt-5.4
provider: openai
- source_hash: c5a41bd82d165dfbb7fbd6e4528cf322e9133a51efe55fa8518a7a0a626d9d30
+ source_hash: a9141dc0303c91974fe693ce48ad9f7dc4179418ae262a96011ad565aae87d21
source_path: plugins/sdk-overview.md
workflow: 15
---
# نظرة عامة على Plugin SDK
-Plugin SDK هو العقد المطبّع بين الإضافات والنواة. هذه الصفحة هي
-المرجع الخاص بـ **ما الذي يجب استيراده** و**ما الذي يمكنك تسجيله**.
+يُعد plugin SDK العقد المطبّع بين plugins والنواة. هذه الصفحة هي
+المرجع الخاص بـ **ما يجب استيراده** و**ما الذي يمكنك تسجيله**.
- **هل تبحث عن دليل عملي؟**
- - أول إضافة؟ ابدأ من [البدء](/ar/plugins/building-plugins)
- - إضافة قناة؟ راجع [إضافات القنوات](/ar/plugins/sdk-channel-plugins)
- - إضافة موفّر؟ راجع [إضافات الموفّرات](/ar/plugins/sdk-provider-plugins)
+ **هل تبحث عن دليل إرشادي؟**
+ - أول plugin؟ ابدأ من [البدء](/ar/plugins/building-plugins)
+ - Channel plugin؟ راجع [إضافات القنوات](/ar/plugins/sdk-channel-plugins)
+ - Provider plugin؟ راجع [إضافات المزوّدين](/ar/plugins/sdk-provider-plugins)
## اصطلاح الاستيراد
@@ -36,39 +36,38 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
```
-كل مسار فرعي هو وحدة صغيرة ومستقلة بذاتها. يحافظ هذا على سرعة بدء التشغيل
-ويمنع مشكلات التبعيات الدائرية. بالنسبة إلى أدوات الإدخال/البناء الخاصة بالقنوات،
-فضّل `openclaw/plugin-sdk/channel-core`؛ واحتفظ بـ `openclaw/plugin-sdk/core` من أجل
-السطح الأشمل والمظلّي والمساعدات المشتركة مثل
+كل مسار فرعي هو وحدة صغيرة مستقلة بذاتها. يساعد هذا في إبقاء بدء التشغيل سريعًا
+ويمنع مشكلات الاعتماد الدائري. بالنسبة إلى أدوات إدخال/بناء القنوات الخاصة،
+ففضّل `openclaw/plugin-sdk/channel-core`؛ واحتفظ بـ `openclaw/plugin-sdk/core`
+للسطح الشامل الأوسع والمساعدات المشتركة مثل
`buildChannelConfigSchema`.
-لا تضف ولا تعتمد على مسارات تسهيلية مسماة على اسم الموفّر مثل
-`openclaw/plugin-sdk/slack` أو `openclaw/plugin-sdk/discord`،
-أو `openclaw/plugin-sdk/signal` أو `openclaw/plugin-sdk/whatsapp`، أو
-مسارات مساعدات تحمل علامة قناة محددة. يجب على الإضافات المضمّنة أن تركّب
-مسارات SDK الفرعية العامة داخل ملفات `api.ts` أو `runtime-api.ts` الخاصة بها، ويجب على النواة
-إما استخدام هذه الملفات المحلية للإضافة أو إضافة عقد SDK عام ضيّق
-عندما تكون الحاجة عابرة للقنوات فعلًا.
+لا تضف أو تعتمد على واجهات ملاءمة مسماة بأسماء المزوّدين مثل
+`openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
+`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`، أو
+واجهات المساعدة المميّزة بعلامات القنوات. يجب على bundled plugins تركيب
+المسارات الفرعية العامة لـ SDK داخل ملفات `api.ts` أو `runtime-api.ts` الخاصة بها، ويجب
+على النواة إما استخدام هذه الملفات المحلية الخاصة بالplugin أو إضافة عقد SDK عام ضيق
+عندما تكون الحاجة فعلًا مشتركة بين عدة قنوات.
-لا تزال خريطة التصدير المولدة تحتوي على مجموعة صغيرة من
-مسارات المساعدات الخاصة بالإضافات المضمّنة مثل `plugin-sdk/feishu` و`plugin-sdk/feishu-setup`،
-و`plugin-sdk/zalo` و`plugin-sdk/zalo-setup` و`plugin-sdk/matrix*`. هذه
-المسارات الفرعية موجودة فقط لصيانة الإضافات المضمّنة والتوافق؛ وهي
-مستبعدة عمدًا من الجدول الشائع أدناه وليست مسار الاستيراد
-الموصى به للإضافات الخارجية الجديدة.
+لا تزال خريطة التصدير المولّدة تحتوي على مجموعة صغيرة من
+واجهات المساعدة الخاصة بـ bundled plugins مثل `plugin-sdk/feishu`,
+`plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup`, و `plugin-sdk/matrix*`. توجد
+هذه المسارات الفرعية فقط من أجل صيانة bundled plugins والتوافق؛ وقد أُزيلت عمدًا من الجدول الشائع أدناه
+وليست هي مسار الاستيراد الموصى به لـ plugins الخارجية الجديدة.
## مرجع المسارات الفرعية
-أكثر المسارات الفرعية استخدامًا، مجمّعة حسب الغرض. القائمة الكاملة المولدة والتي تضم
-أكثر من 200 مسار فرعي موجودة في `scripts/lib/plugin-sdk-entrypoints.json`.
+أكثر المسارات الفرعية استخدامًا، مجمّعة حسب الغرض. وتوجد القائمة الكاملة المولّدة
+التي تتضمن أكثر من 200 مسار فرعي في `scripts/lib/plugin-sdk-entrypoints.json`.
-لا تزال المسارات الفرعية المحجوزة الخاصة بمساعدات الإضافات المضمّنة تظهر في تلك القائمة المولدة.
-تعامل مع هذه المسارات على أنها تفاصيل تنفيذ/أسطح توافق إلا إذا
-روّجت لها صفحة توثيق صراحة على أنها عامة.
+لا تزال المسارات الفرعية المحجوزة لمساعدات bundled plugins تظهر في تلك القائمة المولدة.
+تعامل معها على أنها تفاصيل تنفيذ/أسطح توافق ما لم تكن صفحة توثيق
+تروّج صراحةً لواحد منها على أنه عام.
-### إدخال الإضافة
+### إدخال plugin
-| المسار الفرعي | الصادرات الأساسية |
+| المسار الفرعي | أهم التصديرات |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `plugin-sdk/plugin-entry` | `definePluginEntry` |
| `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` |
@@ -77,285 +76,285 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
- | المسار الفرعي | الصادرات الأساسية |
+ | المسار الفرعي | أهم التصديرات |
| --- | --- |
| `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
- | `plugin-sdk/config-schema` | تصدير مخطط Zod الجذر لـ `openclaw.json` (`OpenClawSchema`) |
+ | `plugin-sdk/config-schema` | تصدير مخطط Zod الجذري لـ `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`، بالإضافة إلى `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
- | `plugin-sdk/setup` | مساعدات معالج الإعداد المشتركة، ومطالبات قائمة السماح، وبناة حالة الإعداد |
+ | `plugin-sdk/setup` | مساعدات معالج الإعداد المشتركة، ومطالبات allowlist، وبناة حالة الإعداد |
| `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
| `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
- | `plugin-sdk/account-core` | مساعدات تكوين/بوابة إجراء الحسابات المتعددة ومساعدات الرجوع إلى الحساب الافتراضي |
+ | `plugin-sdk/account-core` | مساعدات تهيئة/بوابة إجراءات متعددة الحسابات، ومساعدات الرجوع إلى الحساب الافتراضي |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`، ومساعدات تطبيع معرّف الحساب |
- | `plugin-sdk/account-resolution` | مساعدات البحث عن الحساب + الرجوع إلى الافتراضي |
+ | `plugin-sdk/account-resolution` | مساعدات البحث عن الحساب + الرجوع الافتراضي |
| `plugin-sdk/account-helpers` | مساعدات ضيقة لقائمة الحسابات/إجراءات الحساب |
| `plugin-sdk/channel-pairing` | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` |
- | `plugin-sdk/channel-config-schema` | أنواع مخطط تكوين القناة |
- | `plugin-sdk/telegram-command-config` | مساعدات تطبيع/تحقق للأوامر المخصصة في Telegram مع رجوع إلى العقدة المضمّنة |
+ | `plugin-sdk/channel-config-schema` | أنواع مخطط تهيئة القناة |
+ | `plugin-sdk/telegram-command-config` | مساعدات تطبيع/تحقق الأوامر المخصصة في Telegram مع الرجوع إلى bundled contract |
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink` |
- | `plugin-sdk/inbound-envelope` | مساعدات بناء المسار والمغلف المشترك للرسائل الواردة |
- | `plugin-sdk/inbound-reply-dispatch` | مساعدات التسجيل والإرسال المشتركة للرسائل الواردة |
+ | `plugin-sdk/inbound-envelope` | مساعدات مشتركة لمسار الإدخال + بناء المغلف |
+ | `plugin-sdk/inbound-reply-dispatch` | مساعدات مشتركة لتسجيل الإدخال وتوزيعه |
| `plugin-sdk/messaging-targets` | مساعدات تحليل/مطابقة الأهداف |
- | `plugin-sdk/outbound-media` | مساعدات تحميل الوسائط الصادرة المشتركة |
- | `plugin-sdk/outbound-runtime` | مساعدات هوية/تفويض الإرسال الصادر |
- | `plugin-sdk/thread-bindings-runtime` | مساعدات دورة حياة وموائمات ربط الخيوط |
+ | `plugin-sdk/outbound-media` | مساعدات مشتركة لتحميل الوسائط الصادرة |
+ | `plugin-sdk/outbound-runtime` | مساعدات هوية الإرسال/التفويض للإرسال |
+ | `plugin-sdk/thread-bindings-runtime` | دورة حياة ربط السلاسل ومساعدات المحوّل |
| `plugin-sdk/agent-media-payload` | باني حمولة وسائط الوكيل القديم |
- | `plugin-sdk/conversation-runtime` | مساعدات المحادثة/ربط الخيوط/الإقران/الربط المهيأ |
- | `plugin-sdk/runtime-config-snapshot` | مساعد أخذ لقطة من تكوين وقت التشغيل |
+ | `plugin-sdk/conversation-runtime` | مساعدات ربط المحادثة/السلسلة والاقتران والربط المهيأ |
+ | `plugin-sdk/runtime-config-snapshot` | مساعد لقطة تهيئة وقت التشغيل |
| `plugin-sdk/runtime-group-policy` | مساعدات حل سياسة المجموعة في وقت التشغيل |
- | `plugin-sdk/channel-status` | مساعدات اللقطة/الملخص المشتركة لحالة القناة |
- | `plugin-sdk/channel-config-primitives` | بدائيات ضيقة لمخطط تكوين القناة |
- | `plugin-sdk/channel-config-writes` | مساعدات تفويض كتابة تكوين القناة |
- | `plugin-sdk/channel-plugin-common` | صادرات تمهيدية مشتركة لإضافات القنوات |
- | `plugin-sdk/allowlist-config-edit` | مساعدات قراءة/تحرير تكوين قائمة السماح |
- | `plugin-sdk/group-access` | مساعدات مشتركة لاتخاذ قرار وصول المجموعة |
- | `plugin-sdk/direct-dm` | مساعدات مشتركة لمصادقة/حماية الرسائل المباشرة المباشرة |
+ | `plugin-sdk/channel-status` | مساعدات مشتركة للّقطة/الملخص لحالة القناة |
+ | `plugin-sdk/channel-config-primitives` | أوليات ضيقة لمخطط تهيئة القناة |
+ | `plugin-sdk/channel-config-writes` | مساعدات تفويض كتابة تهيئة القناة |
+ | `plugin-sdk/channel-plugin-common` | تصديرات تمهيدية مشتركة لـ channel plugin |
+ | `plugin-sdk/allowlist-config-edit` | مساعدات قراءة/تعديل تهيئة allowlist |
+ | `plugin-sdk/group-access` | مساعدات مشتركة لاتخاذ قرار الوصول إلى المجموعة |
+ | `plugin-sdk/direct-dm` | مساعدات مشتركة للمصادقة/الحماية في الرسائل المباشرة |
| `plugin-sdk/interactive-runtime` | مساعدات تطبيع/اختزال حمولة الرد التفاعلي |
- | `plugin-sdk/channel-inbound` | مساعدات إزالة الارتداد، ومطابقة الذكر، وسياسة الذكر للرسائل الواردة، ومساعدات المغلف |
+ | `plugin-sdk/channel-inbound` | إزالة الارتداد للإدخال، ومطابقة الذكر، ومساعدات سياسة الذكر، ومساعدات المغلف |
| `plugin-sdk/channel-send-result` | أنواع نتيجة الرد |
| `plugin-sdk/channel-actions` | `createMessageToolButtonsSchema`, `createMessageToolCardSchema` |
| `plugin-sdk/channel-targets` | مساعدات تحليل/مطابقة الأهداف |
| `plugin-sdk/channel-contract` | أنواع عقد القناة |
- | `plugin-sdk/channel-feedback` | أسلاك التغذية الراجعة/التفاعلات |
- | `plugin-sdk/channel-secret-runtime` | مساعدات ضيقة لعقد الأسرار مثل `collectSimpleChannelFieldAssignments` و`getChannelSurface` و`pushAssignment` وأنواع أهداف الأسرار |
+ | `plugin-sdk/channel-feedback` | توصيل التعليقات/التفاعلات |
+ | `plugin-sdk/channel-secret-runtime` | مساعدات ضيقة لعقد الأسرار مثل `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`، وأنواع أهداف الأسرار |
-
- | المسار الفرعي | الصادرات الأساسية |
+
+ | المسار الفرعي | أهم التصديرات |
| --- | --- |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
- | `plugin-sdk/provider-setup` | مساعدات منسقة لإعداد الموفّرات المحلية/المستضافة ذاتيًا |
- | `plugin-sdk/self-hosted-provider-setup` | مساعدات إعداد مركزة لموفّرات مستضافة ذاتيًا متوافقة مع OpenAI |
- | `plugin-sdk/cli-backend` | القيم الافتراضية للواجهة الخلفية لـ CLI + ثوابت المراقبة |
- | `plugin-sdk/provider-auth-runtime` | مساعدات حل مفاتيح API وقت التشغيل لإضافات الموفّرات |
- | `plugin-sdk/provider-auth-api-key` | مساعدات الإلحاق/الكتابة في الملف الشخصي لمفتاح API مثل `upsertApiKeyProfile` |
+ | `plugin-sdk/provider-setup` | مساعدات منسّقة لإعداد المزوّدين المحليين/المستضافين ذاتيًا |
+ | `plugin-sdk/self-hosted-provider-setup` | مساعدات مركّزة لإعداد مزوّدات متوافقة مع OpenAI ومُستضافة ذاتيًا |
+ | `plugin-sdk/cli-backend` | إعدادات CLI الخلفية الافتراضية + ثوابت watchdog |
+ | `plugin-sdk/provider-auth-runtime` | مساعدات حل مفاتيح API في وقت التشغيل لـ provider plugins |
+ | `plugin-sdk/provider-auth-api-key` | مساعدات ضمّ API key/الكتابة إلى الملف الشخصي مثل `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | باني نتيجة مصادقة OAuth القياسي |
- | `plugin-sdk/provider-auth-login` | مساعدات تسجيل الدخول التفاعلية المشتركة لإضافات الموفّرات |
- | `plugin-sdk/provider-env-vars` | مساعدات البحث عن متغيرات بيئة مصادقة الموفّر |
+ | `plugin-sdk/provider-auth-login` | مساعدات تسجيل الدخول التفاعلي المشتركة لـ provider plugins |
+ | `plugin-sdk/provider-env-vars` | مساعدات البحث عن متغيرات البيئة لمصادقة المزوّد |
| `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` |
- | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`، وبناة سياسة الإعادة المشتركة، ومساعدات نقطة نهاية الموفّر، ومساعدات تطبيع معرّف النموذج مثل `normalizeNativeXaiModelId` |
+ | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`، وبناة سياسة الإعادة المشتركة، ومساعدات نقاط نهاية المزوّد، ومساعدات تطبيع معرّف النموذج مثل `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
- | `plugin-sdk/provider-http` | مساعدات عامة لقدرات HTTP/نقطة النهاية الخاصة بالموفّر |
- | `plugin-sdk/provider-web-fetch-contract` | مساعدات ضيقة لعقود تكوين/اختيار web-fetch مثل `enablePluginInConfig` و`WebFetchProviderPlugin` |
- | `plugin-sdk/provider-web-fetch` | مساعدات تسجيل/ذاكرة التخزين المؤقت لموفّر web-fetch |
- | `plugin-sdk/provider-web-search-contract` | مساعدات ضيقة لعقود تكوين/بيانات اعتماد web-search مثل `enablePluginInConfig` و`resolveProviderWebSearchPluginConfig` وضبط/جلب بيانات الاعتماد ذات النطاق |
- | `plugin-sdk/provider-web-search` | مساعدات التسجيل/الذاكرة المؤقتة/وقت التشغيل لموفّر web-search |
- | `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`، وتنظيف مخطط Gemini + التشخيصات، ومساعدات التوافق مع xAI مثل `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
- | `plugin-sdk/provider-usage` | `fetchClaudeUsage` وما شابهها |
- | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`، وأنواع مغطيات البث، ومساعدات المغطيات المشتركة لـ Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
- | `plugin-sdk/provider-onboard` | مساعدات ترقيع تكوين الإعداد الأولي |
- | `plugin-sdk/global-singleton` | مساعدات القيم المفردة/الخرائط/الذاكرات المؤقتة المحلية للعملية |
+ | `plugin-sdk/provider-http` | مساعدات عامة لقدرات HTTP/نقطة النهاية للمزوّد |
+ | `plugin-sdk/provider-web-fetch-contract` | مساعدات ضيقة لعقد تهيئة/اختيار web-fetch مثل `enablePluginInConfig` و `WebFetchProviderPlugin` |
+ | `plugin-sdk/provider-web-fetch` | مساعدات تسجيل/تخزين مؤقت لمزوّد web-fetch |
+ | `plugin-sdk/provider-web-search-contract` | مساعدات ضيقة لعقد تهيئة/بيانات اعتماد web-search مثل `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig`، وواضعات/جالبات بيانات اعتماد ضمن النطاق |
+ | `plugin-sdk/provider-web-search` | مساعدات تسجيل/تخزين مؤقت/وقت تشغيل لمزوّد web-search |
+ | `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`، وتنظيف مخطط Gemini + التشخيصات، ومساعدات توافق xAI مثل `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
+ | `plugin-sdk/provider-usage` | `fetchClaudeUsage` وما شابه |
+ | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`، وأنواع أغلفة التدفق، ومساعدات الأغلفة المشتركة لـ Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
+ | `plugin-sdk/provider-onboard` | مساعدات تصحيح التهيئة الخاصة بالإعداد الأولي |
+ | `plugin-sdk/global-singleton` | مساعدات singleton/map/cache محلية على مستوى العملية |
- | المسار الفرعي | الصادرات الأساسية |
+ | المسار الفرعي | أهم التصديرات |
| --- | --- |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`، ومساعدات سجل الأوامر، ومساعدات تفويض المرسِل |
- | `plugin-sdk/approval-auth-runtime` | مساعدات حل الموافقين ومصادقة الإجراء في نفس الدردشة |
- | `plugin-sdk/approval-client-runtime` | مساعدات الملف الشخصي/المرشح للموافقات الأصلية لـ exec |
- | `plugin-sdk/approval-delivery-runtime` | موائمات قدرات/تسليم الموافقات الأصلية |
- | `plugin-sdk/approval-gateway-runtime` | مساعد مشترك لحل بوابة الموافقات |
- | `plugin-sdk/approval-handler-adapter-runtime` | مساعدات خفيفة لتحميل موائم الموافقات الأصلية لنقاط إدخال القنوات الساخنة |
- | `plugin-sdk/approval-handler-runtime` | مساعدات أوسع لوقت تشغيل معالج الموافقات؛ فضّل المسارات الأضيق الخاصة بالموائم/البوابة عندما تكون كافية |
- | `plugin-sdk/approval-native-runtime` | مساعدات الهدف الأصلي للموافقات + ربط الحساب |
- | `plugin-sdk/approval-reply-runtime` | مساعدات حمولة رد موافقات exec/الإضافة |
- | `plugin-sdk/command-auth-native` | مساعدات مصادقة الأوامر الأصلية + أهداف الجلسات الأصلية |
+ | `plugin-sdk/approval-auth-runtime` | مساعدات حل المعتمِد ومصادقة الإجراءات ضمن نفس المحادثة |
+ | `plugin-sdk/approval-client-runtime` | مساعدات الملف الشخصي/المرشّح لاعتماد التنفيذ الأصلي |
+ | `plugin-sdk/approval-delivery-runtime` | محولات قدرة/تسليم الاعتماد الأصلية |
+ | `plugin-sdk/approval-gateway-runtime` | مساعد مشترك لحل approval gateway |
+ | `plugin-sdk/approval-handler-adapter-runtime` | مساعدات خفيفة لتحميل محوّل الاعتماد الأصلي لنقاط دخول القنوات السريعة |
+ | `plugin-sdk/approval-handler-runtime` | مساعدات أوسع لمعالِج الاعتماد في وقت التشغيل؛ فضّل الواجهات الأضيق للمحوّل/البوابة عندما تكون كافية |
+ | `plugin-sdk/approval-native-runtime` | مساعدات الهدف الأصلي للاعتماد + ربط الحساب |
+ | `plugin-sdk/approval-reply-runtime` | مساعدات حمولة رد اعتماد التنفيذ/الplugin |
+ | `plugin-sdk/command-auth-native` | مصادقة الأوامر الأصلية + مساعدات هدف الجلسة الأصلية |
| `plugin-sdk/command-detection` | مساعدات مشتركة لاكتشاف الأوامر |
| `plugin-sdk/command-surface` | تطبيع جسم الأمر ومساعدات سطح الأوامر |
| `plugin-sdk/allow-from` | `formatAllowFromLowercase` |
- | `plugin-sdk/channel-secret-runtime` | مساعدات ضيقة لتجميع عقود الأسرار لأسطح أسرار القناة/الإضافة |
- | `plugin-sdk/secret-ref-runtime` | مساعدات ضيقة لـ `coerceSecretRef` وكتابة SecretRef لتحليل عقود الأسرار/التكوين |
- | `plugin-sdk/security-runtime` | مساعدات مشتركة للثقة، وبوابات الرسائل المباشرة، والمحتوى الخارجي، وتجميع الأسرار |
- | `plugin-sdk/ssrf-policy` | مساعدات قائمة السماح للمضيف وسياسة SSRF للشبكات الخاصة |
- | `plugin-sdk/ssrf-runtime` | مساعدات المرسِل المثبّت، والجلب المحمي بـ SSRF، وسياسة SSRF |
+ | `plugin-sdk/channel-secret-runtime` | مساعدات ضيقة لجمع عقود الأسرار لأسطح أسرار القناة/الplugin |
+ | `plugin-sdk/secret-ref-runtime` | مساعدات ضيقة لـ `coerceSecretRef` وكتابة SecretRef لتحليل عقود الأسرار/التهيئة |
+ | `plugin-sdk/security-runtime` | مساعدات مشتركة للثقة، وبوابات الرسائل المباشرة، والمحتوى الخارجي، وجمع الأسرار |
+ | `plugin-sdk/ssrf-policy` | مساعدات سياسة SSRF لقائمة السماح بالمضيفين والشبكات الخاصة |
+ | `plugin-sdk/ssrf-runtime` | مساعدات pinned-dispatcher وfetch المحمي من SSRF وسياسة SSRF |
| `plugin-sdk/secret-input` | مساعدات تحليل إدخال الأسرار |
- | `plugin-sdk/webhook-ingress` | مساعدات طلب/هدف Webhook |
- | `plugin-sdk/webhook-request-guards` | مساعدات حجم جسم الطلب/المهلة الزمنية |
+ | `plugin-sdk/webhook-ingress` | مساعدات طلب/هدف webhook |
+ | `plugin-sdk/webhook-request-guards` | مساعدات حجم/مهلة جسم الطلب |
- | المسار الفرعي | الصادرات الأساسية |
+ | المسار الفرعي | أهم التصديرات |
| --- | --- |
- | `plugin-sdk/runtime` | مساعدات عامة لوقت التشغيل/السجلات/النسخ الاحتياطي/تثبيت الإضافات |
- | `plugin-sdk/runtime-env` | مساعدات ضيقة لبيئة وقت التشغيل، والمسجل، والمهلة، وإعادة المحاولة، وbackoff |
- | `plugin-sdk/channel-runtime-context` | مساعدات عامة لتسجيل والبحث عن سياق وقت تشغيل القناة |
+ | `plugin-sdk/runtime` | مساعدات واسعة لوقت التشغيل/التسجيل/النسخ الاحتياطي/تثبيت plugin |
+ | `plugin-sdk/runtime-env` | مساعدات ضيقة لبيئة وقت التشغيل، والمسجّل، والمهلة، وإعادة المحاولة، والتراجع التدريجي |
+ | `plugin-sdk/channel-runtime-context` | مساعدات عامة لتسجيل سياق وقت تشغيل القناة والبحث عنه |
| `plugin-sdk/runtime-store` | `createPluginRuntimeStore` |
- | `plugin-sdk/plugin-runtime` | مساعدات مشتركة لأوامر/خطافات/http/التفاعل الخاصة بالإضافةات |
- | `plugin-sdk/hook-runtime` | مساعدات مشتركة لمسار Webhook/الخطافات الداخلية |
- | `plugin-sdk/lazy-runtime` | مساعدات الاستيراد/الربط الكسول لوقت التشغيل مثل `createLazyRuntimeModule` و`createLazyRuntimeMethod` و`createLazyRuntimeSurface` |
- | `plugin-sdk/process-runtime` | مساعدات تنفيذ العملية |
- | `plugin-sdk/cli-runtime` | مساعدات التنسيق والانتظار والإصدار لـ CLI |
- | `plugin-sdk/gateway-runtime` | مساعدات عميل البوابة وترقيعات حالة القناة |
- | `plugin-sdk/config-runtime` | مساعدات تحميل/كتابة التكوين |
- | `plugin-sdk/telegram-command-config` | تطبيع اسم/وصف أمر Telegram وفحوصات التكرار/التعارض، حتى عند غياب سطح عقد Telegram المضمّن |
- | `plugin-sdk/approval-runtime` | مساعدات موافقات exec/الإضافة، وبناة قدرات الموافقة، ومساعدات المصادقة/الملف الشخصي، ومساعدات التوجيه/وقت التشغيل الأصلية |
- | `plugin-sdk/reply-runtime` | مساعدات مشتركة لوقت تشغيل الوارد/الرد، والتجزئة، والإرسال، والنبض، ومخطط الرد |
- | `plugin-sdk/reply-dispatch-runtime` | مساعدات ضيقة لإرسال/إنهاء الرد |
- | `plugin-sdk/reply-history` | مساعدات مشتركة لسجل الردود ذي النافذة القصيرة مثل `buildHistoryContext` و`recordPendingHistoryEntry` و`clearHistoryEntriesIfEnabled` |
+ | `plugin-sdk/plugin-runtime` | مساعدات مشتركة لأوامر/خطافات/HTTP/تفاعلية plugin |
+ | `plugin-sdk/hook-runtime` | مساعدات مشتركة لخط أنابيب webhook/الخطاف الداخلي |
+ | `plugin-sdk/lazy-runtime` | مساعدات الربط/الاستيراد الكسول لوقت التشغيل مثل `createLazyRuntimeModule`, `createLazyRuntimeMethod`, و `createLazyRuntimeSurface` |
+ | `plugin-sdk/process-runtime` | مساعدات تنفيذ العمليات |
+ | `plugin-sdk/cli-runtime` | مساعدات تنسيق CLI والانتظار والإصدار |
+ | `plugin-sdk/gateway-runtime` | مساعدات عميل البوابة وتصحيح حالة القناة |
+ | `plugin-sdk/config-runtime` | مساعدات تحميل/كتابة التهيئة |
+ | `plugin-sdk/telegram-command-config` | تطبيع اسم/وصف أوامر Telegram وفحوصات التكرار/التعارض، حتى عند عدم توفر سطح عقد Telegram المضمّن |
+ | `plugin-sdk/approval-runtime` | مساعدات اعتماد التنفيذ/الplugin، وبناة قدرات الاعتماد، ومساعدات المصادقة/الملف الشخصي، ومساعدات التوجيه الأصلي/وقت التشغيل |
+ | `plugin-sdk/reply-runtime` | مساعدات مشتركة لوقت تشغيل الإدخال/الرد، والتقسيم، والتوزيع، والنبض، ومخطط الرد |
+ | `plugin-sdk/reply-dispatch-runtime` | مساعدات ضيقة لتوزيع/إنهاء الرد |
+ | `plugin-sdk/reply-history` | مساعدات مشتركة لسجل الردود ضمن نافذة قصيرة مثل `buildHistoryContext`, `recordPendingHistoryEntry`, و `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | `createReplyReferencePlanner` |
- | `plugin-sdk/reply-chunking` | مساعدات ضيقة لتجزئة النص/Markdown |
- | `plugin-sdk/session-store-runtime` | مساعدات مسار مخزن الجلسة و`updated-at` |
- | `plugin-sdk/state-paths` | مساعدات مسارات الحالة/دليل OAuth |
- | `plugin-sdk/routing` | مساعدات المسار/مفتاح الجلسة/ربط الحساب مثل `resolveAgentRoute` و`buildAgentSessionKey` و`resolveDefaultAgentBoundAccountId` |
- | `plugin-sdk/status-helpers` | مساعدات مشتركة لملخص حالة القناة/الحساب، والقيم الافتراضية لحالة وقت التشغيل، ومساعدات بيانات تعريف المشكلات |
+ | `plugin-sdk/reply-chunking` | مساعدات ضيقة لتقسيم النص/Markdown |
+ | `plugin-sdk/session-store-runtime` | مساعدات مسار مخزن الجلسة + updated-at |
+ | `plugin-sdk/state-paths` | مساعدات مسارات دليل الحالة/OAuth |
+ | `plugin-sdk/routing` | مساعدات ربط المسار/مفتاح الجلسة/الحساب مثل `resolveAgentRoute`, `buildAgentSessionKey`, و `resolveDefaultAgentBoundAccountId` |
+ | `plugin-sdk/status-helpers` | مساعدات مشتركة لملخص حالة القناة/الحساب، وافتراضيات حالة وقت التشغيل، ومساعدات بيانات وصفية للمشكلات |
| `plugin-sdk/target-resolver-runtime` | مساعدات مشتركة لحل الأهداف |
- | `plugin-sdk/string-normalization-runtime` | مساعدات تطبيع السلاسل/slug |
+ | `plugin-sdk/string-normalization-runtime` | مساعدات تطبيع slug/string |
| `plugin-sdk/request-url` | استخراج عناوين URL النصية من مدخلات شبيهة بـ fetch/request |
- | `plugin-sdk/run-command` | مشغل أوامر مؤقت بنتائج stdout/stderr مطبعة |
- | `plugin-sdk/param-readers` | قارئات معلمات شائعة للأدوات/CLI |
- | `plugin-sdk/tool-send` | استخراج حقول هدف الإرسال القياسية من وسائط الأداة |
- | `plugin-sdk/temp-path` | مساعدات مشتركة لمسار التنزيل المؤقت |
- | `plugin-sdk/logging-core` | مساعدات المسجل الفرعي والتنقيح |
+ | `plugin-sdk/run-command` | مشغّل أوامر موقّت بنتائج stdout/stderr مطبّعة |
+ | `plugin-sdk/param-readers` | قارئات شائعة لمعاملات الأداة/CLI |
+ | `plugin-sdk/tool-send` | استخراج حقول هدف الإرسال القياسية من وسيطات الأداة |
+ | `plugin-sdk/temp-path` | مساعدات مشتركة لمسارات التنزيل المؤقت |
+ | `plugin-sdk/logging-core` | مسجّل النظام الفرعي ومساعدات إخفاء البيانات الحساسة |
| `plugin-sdk/markdown-table-runtime` | مساعدات أوضاع جداول Markdown |
| `plugin-sdk/json-store` | مساعدات صغيرة لقراءة/كتابة حالة JSON |
| `plugin-sdk/file-lock` | مساعدات إعادة الدخول لقفل الملفات |
- | `plugin-sdk/persistent-dedupe` | مساعدات ذاكرة التخزين المؤقت لإزالة التكرار المدعومة بالقرص |
- | `plugin-sdk/acp-runtime` | مساعدات ACP وقت التشغيل/الجلسة وإرسال الرد |
- | `plugin-sdk/agent-config-primitives` | بدائيات ضيقة لمخطط تكوين وقت تشغيل الوكيل |
- | `plugin-sdk/boolean-param` | قارئ معلمات منطقي مرن |
+ | `plugin-sdk/persistent-dedupe` | مساعدات ذاكرة التخزين المؤقت لإزالة التكرار المعتمدة على القرص |
+ | `plugin-sdk/acp-runtime` | مساعدات ACP لوقت التشغيل/الجلسة وتوزيع الرد |
+ | `plugin-sdk/agent-config-primitives` | أوليات ضيقة لمخطط تهيئة وقت تشغيل الوكيل |
+ | `plugin-sdk/boolean-param` | قارئ مرن لمعاملات boolean |
| `plugin-sdk/dangerous-name-runtime` | مساعدات حل مطابقة الأسماء الخطرة |
- | `plugin-sdk/device-bootstrap` | مساعدات bootstrap للجهاز ورمز الإقران |
- | `plugin-sdk/extension-shared` | بدائيات مشتركة لمساعدات القنوات السلبية، والحالة، والوكيل المحيط |
- | `plugin-sdk/models-provider-runtime` | مساعدات أوامر `/models` / ردود الموفّر |
+ | `plugin-sdk/device-bootstrap` | مساعدات الإقلاع الأولي للجهاز ورمز الاقتران |
+ | `plugin-sdk/extension-shared` | أوليات مشتركة لمساعدات القنوات السلبية، والحالة، والوكيل المحيط |
+ | `plugin-sdk/models-provider-runtime` | مساعدات أمر `/models` وردود المزوّد |
| `plugin-sdk/skill-commands-runtime` | مساعدات سرد أوامر Skills |
- | `plugin-sdk/native-command-registry` | مساعدات سجل/بناء/تسلسل الأوامر الأصلية |
- | `plugin-sdk/provider-zai-endpoint` | مساعدات اكتشاف نقطة نهاية Z.A.I |
+ | `plugin-sdk/native-command-registry` | مساعدات سجل الأوامر الأصلية/بنائه/تسلسله |
+ | `plugin-sdk/provider-zai-endpoint` | مساعدات اكتشاف نقاط نهاية Z.AI |
| `plugin-sdk/infra-runtime` | مساعدات أحداث النظام/النبض |
| `plugin-sdk/collection-runtime` | مساعدات صغيرة لذاكرة تخزين مؤقتة محدودة |
- | `plugin-sdk/diagnostic-runtime` | مساعدات أعلام التشخيص والأحداث |
- | `plugin-sdk/error-runtime` | مساعدات رسم الأخطاء، والتنسيق، وتصنيف الأخطاء المشتركة، و`isApprovalNotFoundError` |
- | `plugin-sdk/fetch-runtime` | مساعدات fetch المغلّفة، والوكيل، والبحث المثبّت |
+ | `plugin-sdk/diagnostic-runtime` | مساعدات الأعلام والأحداث التشخيصية |
+ | `plugin-sdk/error-runtime` | مساعدات رسم الأخطاء البياني، والتنسيق، وتصنيف الأخطاء المشتركة، و `isApprovalNotFoundError` |
+ | `plugin-sdk/fetch-runtime` | مساعدات fetch المغلّف والوكيل والبحث المثبّت |
| `plugin-sdk/host-runtime` | مساعدات تطبيع اسم المضيف ومضيف SCP |
- | `plugin-sdk/retry-runtime` | مساعدات تكوين إعادة المحاولة ومشغّل إعادة المحاولة |
+ | `plugin-sdk/retry-runtime` | مساعدات تهيئة إعادة المحاولة ومشغّل إعادة المحاولة |
| `plugin-sdk/agent-runtime` | مساعدات دليل/هوية/مساحة عمل الوكيل |
- | `plugin-sdk/directory-runtime` | استعلام/إزالة تكرار الدليل المدعوم بالتكوين |
+ | `plugin-sdk/directory-runtime` | الاستعلام عن الدليل وإزالة التكرار استنادًا إلى التهيئة |
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
- | المسار الفرعي | الصادرات الأساسية |
+ | المسار الفرعي | أهم التصديرات |
| --- | --- |
- | `plugin-sdk/media-runtime` | مساعدات مشتركة لجلب/تحويل/تخزين الوسائط بالإضافة إلى بناة حمولات الوسائط |
- | `plugin-sdk/media-generation-runtime` | مساعدات مشتركة للإخفاق المرحلي في توليد الوسائط، واختيار المرشحين، ورسائل النماذج المفقودة |
- | `plugin-sdk/media-understanding` | أنواع موفّر فهم الوسائط بالإضافة إلى صادرات مساعدات الصور/الصوت المواجهة للموفّر |
- | `plugin-sdk/text-runtime` | مساعدات مشتركة للنص/Markdown/السجلات مثل إزالة النص المرئي للمساعد، ومساعدات عرض/تجزئة/جداول Markdown، ومساعدات التنقيح، ووسوم التوجيه، وأدوات النص الآمن |
- | `plugin-sdk/text-chunking` | مساعد تجزئة النص الصادر |
- | `plugin-sdk/speech` | أنواع موفّر الكلام بالإضافة إلى مساعدات التوجيه، والسجل، والتحقق المواجهة للموفّر |
- | `plugin-sdk/speech-core` | أنواع موفّر الكلام المشتركة، والسجل، والتوجيه، ومساعدات التطبيع |
- | `plugin-sdk/realtime-transcription` | أنواع موفّر النسخ الفوري ومساعدات السجل |
- | `plugin-sdk/realtime-voice` | أنواع موفّر الصوت الفوري ومساعدات السجل |
- | `plugin-sdk/image-generation` | أنواع موفّر توليد الصور |
- | `plugin-sdk/image-generation-core` | أنواع توليد الصور المشتركة، والإخفاق المرحلي، والمصادقة، ومساعدات السجل |
- | `plugin-sdk/music-generation` | أنواع موفّر/طلب/نتيجة توليد الموسيقى |
- | `plugin-sdk/music-generation-core` | أنواع توليد الموسيقى المشتركة، ومساعدات الإخفاق المرحلي، والبحث عن الموفّر، وتحليل مرجع النموذج |
- | `plugin-sdk/video-generation` | أنواع موفّر/طلب/نتيجة توليد الفيديو |
- | `plugin-sdk/video-generation-core` | أنواع توليد الفيديو المشتركة، ومساعدات الإخفاق المرحلي، والبحث عن الموفّر، وتحليل مرجع النموذج |
- | `plugin-sdk/webhook-targets` | سجل أهداف Webhook ومساعدات تثبيت المسارات |
- | `plugin-sdk/webhook-path` | مساعدات تطبيع مسار Webhook |
+ | `plugin-sdk/media-runtime` | مساعدات مشتركة لجلب/تحويل/تخزين الوسائط بالإضافة إلى بُناة حمولات الوسائط |
+ | `plugin-sdk/media-generation-runtime` | مساعدات مشتركة للفشل المتتابع في توليد الوسائط، واختيار المرشحين، ورسائل النموذج المفقود |
+ | `plugin-sdk/media-understanding` | أنواع مزوّد فهم الوسائط بالإضافة إلى تصديرات مساعدات الصور/الصوت للمزوّد |
+ | `plugin-sdk/text-runtime` | مساعدات مشتركة للنص/Markdown/التسجيل مثل إزالة النص المرئي للمساعد، ومساعدات العرض/التقسيم/الجداول في Markdown، ومساعدات الإخفاء، ومساعدات وسم التوجيه، وأدوات النص الآمن |
+ | `plugin-sdk/text-chunking` | مساعد تقسيم النص الصادر |
+ | `plugin-sdk/speech` | أنواع مزوّدات الكلام بالإضافة إلى مساعدات التوجيه والسجل والتحقق الموجّهة للمزوّد |
+ | `plugin-sdk/speech-core` | أنواع مزوّدات الكلام المشتركة، والسجل، والتوجيه، ومساعدات التطبيع |
+ | `plugin-sdk/realtime-transcription` | أنواع مزوّدات النسخ الفوري ومساعدات السجل |
+ | `plugin-sdk/realtime-voice` | أنواع مزوّدات الصوت الفوري ومساعدات السجل |
+ | `plugin-sdk/image-generation` | أنواع مزوّدات توليد الصور |
+ | `plugin-sdk/image-generation-core` | أنواع توليد الصور المشتركة، ومساعدات الفشل المتتابع، والمصادقة، والسجل |
+ | `plugin-sdk/music-generation` | أنواع مزوّد/طلب/نتيجة توليد الموسيقى |
+ | `plugin-sdk/music-generation-core` | أنواع توليد الموسيقى المشتركة، ومساعدات الفشل المتتابع، والبحث عن المزوّد، وتحليل model-ref |
+ | `plugin-sdk/video-generation` | أنواع مزوّد/طلب/نتيجة توليد الفيديو |
+ | `plugin-sdk/video-generation-core` | أنواع توليد الفيديو المشتركة، ومساعدات الفشل المتتابع، والبحث عن المزوّد، وتحليل model-ref |
+ | `plugin-sdk/webhook-targets` | سجل أهداف webhook ومساعدات تثبيت المسارات |
+ | `plugin-sdk/webhook-path` | مساعدات تطبيع مسار webhook |
| `plugin-sdk/web-media` | مساعدات مشتركة لتحميل الوسائط البعيدة/المحلية |
- | `plugin-sdk/zod` | إعادة تصدير `zod` لمستهلكي Plugin SDK |
+ | `plugin-sdk/zod` | إعادة تصدير `zod` لمستهلكي plugin SDK |
| `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` |
- | المسار الفرعي | الصادرات الأساسية |
+ | المسار الفرعي | أهم التصديرات |
| --- | --- |
- | `plugin-sdk/memory-core` | سطح مساعد memory-core المضمّن لمساعدات المدير/التكوين/الملف/CLI |
- | `plugin-sdk/memory-core-engine-runtime` | واجهة وقت التشغيل لفهرسة/بحث الذاكرة |
- | `plugin-sdk/memory-core-host-engine-foundation` | صادرات محرك الأساس لمضيف الذاكرة |
- | `plugin-sdk/memory-core-host-engine-embeddings` | صادرات محرك embeddings لمضيف الذاكرة |
- | `plugin-sdk/memory-core-host-engine-qmd` | صادرات محرك QMD لمضيف الذاكرة |
- | `plugin-sdk/memory-core-host-engine-storage` | صادرات محرك التخزين لمضيف الذاكرة |
- | `plugin-sdk/memory-core-host-multimodal` | مساعدات الوسائط المتعددة لمضيف الذاكرة |
- | `plugin-sdk/memory-core-host-query` | مساعدات استعلام مضيف الذاكرة |
+ | `plugin-sdk/memory-core` | سطح مساعد memory-core المضمّن لمدير/تهيئة/ملف/مساعدات CLI |
+ | `plugin-sdk/memory-core-engine-runtime` | واجهة وقت تشغيل لفهرسة/بحث الذاكرة |
+ | `plugin-sdk/memory-core-host-engine-foundation` | تصديرات محرك الأساس لمضيف الذاكرة |
+ | `plugin-sdk/memory-core-host-engine-embeddings` | تصديرات محرك embeddings لمضيف الذاكرة |
+ | `plugin-sdk/memory-core-host-engine-qmd` | تصديرات محرك QMD لمضيف الذاكرة |
+ | `plugin-sdk/memory-core-host-engine-storage` | تصديرات محرك التخزين لمضيف الذاكرة |
+ | `plugin-sdk/memory-core-host-multimodal` | مساعدات متعددة الوسائط لمضيف الذاكرة |
+ | `plugin-sdk/memory-core-host-query` | مساعدات الاستعلام لمضيف الذاكرة |
| `plugin-sdk/memory-core-host-secret` | مساعدات الأسرار لمضيف الذاكرة |
- | `plugin-sdk/memory-core-host-events` | مساعدات دفتر أحداث مضيف الذاكرة |
+ | `plugin-sdk/memory-core-host-events` | مساعدات سجل أحداث مضيف الذاكرة |
| `plugin-sdk/memory-core-host-status` | مساعدات حالة مضيف الذاكرة |
- | `plugin-sdk/memory-core-host-runtime-cli` | مساعدات CLI وقت التشغيل لمضيف الذاكرة |
+ | `plugin-sdk/memory-core-host-runtime-cli` | مساعدات وقت تشغيل CLI لمضيف الذاكرة |
| `plugin-sdk/memory-core-host-runtime-core` | مساعدات وقت التشغيل الأساسية لمضيف الذاكرة |
| `plugin-sdk/memory-core-host-runtime-files` | مساعدات الملفات/وقت التشغيل لمضيف الذاكرة |
- | `plugin-sdk/memory-host-core` | اسم مستعار محايد للمورّد لمساعدات وقت التشغيل الأساسية لمضيف الذاكرة |
- | `plugin-sdk/memory-host-events` | اسم مستعار محايد للمورّد لمساعدات دفتر أحداث مضيف الذاكرة |
- | `plugin-sdk/memory-host-files` | اسم مستعار محايد للمورّد لمساعدات الملفات/وقت التشغيل لمضيف الذاكرة |
- | `plugin-sdk/memory-host-markdown` | مساعدات Markdown المُدار المشتركة للإضافات المجاورة للذاكرة |
- | `plugin-sdk/memory-host-search` | واجهة وقت تشغيل الذاكرة النشطة للوصول إلى مدير البحث |
- | `plugin-sdk/memory-host-status` | اسم مستعار محايد للمورّد لمساعدات حالة مضيف الذاكرة |
+ | `plugin-sdk/memory-host-core` | اسم بديل محايد تجاه المورّد لمساعدات وقت تشغيل نواة مضيف الذاكرة |
+ | `plugin-sdk/memory-host-events` | اسم بديل محايد تجاه المورّد لمساعدات سجل أحداث مضيف الذاكرة |
+ | `plugin-sdk/memory-host-files` | اسم بديل محايد تجاه المورّد لمساعدات ملفات/وقت تشغيل مضيف الذاكرة |
+ | `plugin-sdk/memory-host-markdown` | مساعدات مشتركة لـ managed-markdown لـ plugins المجاورة للذاكرة |
+ | `plugin-sdk/memory-host-search` | واجهة وقت تشغيل الذاكرة النشطة للوصول إلى search-manager |
+ | `plugin-sdk/memory-host-status` | اسم بديل محايد تجاه المورّد لمساعدات حالة مضيف الذاكرة |
| `plugin-sdk/memory-lancedb` | سطح مساعد memory-lancedb المضمّن |
| العائلة | المسارات الفرعية الحالية | الاستخدام المقصود |
| --- | --- | --- |
- | المتصفح | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | مساعدات دعم إضافة المتصفح المضمّنة (`browser-support` يبقى الشريط المتوافق) |
- | Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | سطح مساعد/وقت تشغيل Matrix المضمّن |
- | Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | سطح مساعد/وقت تشغيل LINE المضمّن |
- | IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | سطح مساعد IRC المضمّن |
- | مساعدات خاصة بالقنوات | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | مسارات توافق/مساعدات القنوات المضمّنة |
- | مساعدات خاصة بالمصادقة/الإضافة | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | مسارات مساعدات الميزات/الإضافات المضمّنة؛ يصدّر `plugin-sdk/github-copilot-token` حاليًا `DEFAULT_COPILOT_API_BASE_URL` و`deriveCopilotApiBaseUrlFromToken` و`resolveCopilotApiToken` |
+ | Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | مساعدات دعم bundled browser plugin (`browser-support` يبقى واجهة التوافق) |
+ | Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | سطح المساعدة/وقت التشغيل الخاص بـ bundled Matrix |
+ | Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | سطح المساعدة/وقت التشغيل الخاص بـ bundled LINE |
+ | IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | سطح المساعدة الخاص بـ bundled IRC |
+ | مساعدات خاصة بالقنوات | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | واجهات المساعدة/التوافق الخاصة بالقنوات المضمّنة |
+ | مساعدات خاصة بالمصادقة/الplugin | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | واجهات مساعدة خاصة بالميزات/الplugins المضمّنة؛ يصدّر `plugin-sdk/github-copilot-token` حاليًا `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken`, و `resolveCopilotApiToken` |
-## API التسجيل
+## واجهة برمجة تطبيقات التسجيل
-يتلقى استدعاء `register(api)` كائن `OpenClawPluginApi` بهذه
+يتلقى رد النداء `register(api)` كائن `OpenClawPluginApi` بهذه
الأساليب:
### تسجيل القدرات
-| الأسلوب | ما الذي يسجله |
+| الأسلوب | ما الذي يسجله |
| ------------------------------------------------ | -------------------------------- |
-| `api.registerProvider(...)` | استدلال النص (LLM) |
-| `api.registerCliBackend(...)` | واجهة خلفية محلية للاستدلال عبر CLI |
+| `api.registerProvider(...)` | الاستدلال النصي (LLM) |
+| `api.registerCliBackend(...)` | خلفية استدلال CLI محلية |
| `api.registerChannel(...)` | قناة مراسلة |
| `api.registerSpeechProvider(...)` | تحويل النص إلى كلام / توليف STT |
| `api.registerRealtimeTranscriptionProvider(...)` | نسخ فوري متدفق |
-| `api.registerRealtimeVoiceProvider(...)` | جلسات صوت فورية ثنائية الاتجاه |
+| `api.registerRealtimeVoiceProvider(...)` | جلسات صوت فوري ثنائية الاتجاه |
| `api.registerMediaUnderstandingProvider(...)` | تحليل الصور/الصوت/الفيديو |
| `api.registerImageGenerationProvider(...)` | توليد الصور |
| `api.registerMusicGenerationProvider(...)` | توليد الموسيقى |
| `api.registerVideoGenerationProvider(...)` | توليد الفيديو |
-| `api.registerWebFetchProvider(...)` | موفّر Web fetch / scrape |
-| `api.registerWebSearchProvider(...)` | البحث على الويب |
+| `api.registerWebFetchProvider(...)` | مزوّد جلب / scraping للويب |
+| `api.registerWebSearchProvider(...)` | بحث الويب |
### الأدوات والأوامر
-| الأسلوب | ما الذي يسجله |
+| الأسلوب | ما الذي يسجله |
| ------------------------------- | --------------------------------------------- |
-| `api.registerTool(tool, opts?)` | أداة وكيل (مطلوبة أو `{ optional: true }`) |
+| `api.registerTool(tool, opts?)` | أداة وكيل (إلزامية أو `{ optional: true }`) |
| `api.registerCommand(def)` | أمر مخصص (يتجاوز LLM) |
### البنية التحتية
-| الأسلوب | ما الذي يسجله |
+| الأسلوب | ما الذي يسجله |
| ---------------------------------------------- | --------------------------------------- |
| `api.registerHook(events, handler, opts?)` | خطاف حدث |
| `api.registerHttpRoute(params)` | نقطة نهاية HTTP للبوابة |
| `api.registerGatewayMethod(name, handler)` | أسلوب RPC للبوابة |
| `api.registerCli(registrar, opts?)` | أمر فرعي في CLI |
-| `api.registerService(service)` | خدمة خلفية |
-| `api.registerInteractiveHandler(registration)` | معالج تفاعلي |
-| `api.registerMemoryPromptSupplement(builder)` | قسم إضافي للمطالبات المجاورة للذاكرة |
+| `api.registerService(service)` | خدمة في الخلفية |
+| `api.registerInteractiveHandler(registration)` | معالِج تفاعلي |
+| `api.registerMemoryPromptSupplement(builder)` | قسم إضافي للمطالبة مجاور للذاكرة |
| `api.registerMemoryCorpusSupplement(adapter)` | corpus إضافي لبحث/قراءة الذاكرة |
-تظل مساحات أسماء الإدارة الأساسية المحجوزة (`config.*` و`exec.approvals.*` و`wizard.*`،
-و`update.*`) دائمًا `operator.admin`، حتى إذا حاولت إضافة تعيين
-نطاق أضيق لأسلوب البوابة. فضّل البادئات الخاصة بالإضافة
-للأساليب التي تملكها الإضافة.
+تظل مساحات أسماء إدارة النواة المحجوزة (`config.*`, `exec.approvals.*`, `wizard.*`,
+`update.*`) دائمًا `operator.admin`، حتى إذا حاول plugin تعيين
+نطاق أضيق لأسلوب البوابة. فضّل البوادئ الخاصة بالplugin
+للأساليب المملوكة للplugin.
### بيانات تعريف تسجيل CLI
-يقبل `api.registerCli(registrar, opts?)` نوعين من بيانات التعريف في المستوى الأعلى:
+يقبل `api.registerCli(registrar, opts?)` نوعين من البيانات التعريفية على المستوى الأعلى:
- `commands`: جذور أوامر صريحة يملكها المُسجِّل
-- `descriptors`: واصفات أوامر وقت التحليل المستخدمة لمساعدة CLI الجذرية،
- والتوجيه، وتسجيل CLI الكسول للإضافة
+- `descriptors`: واصفات أوامر في وقت التحليل تُستخدم لمساعدة CLI الجذري،
+ والتوجيه، وتسجيل CLI الكسول للplugins
-إذا كنت تريد أن يظل أمر الإضافة محمّلًا بكسل في المسار الجذري العادي لـ CLI،
-فقدّم `descriptors` تغطي كل جذر أمر من المستوى الأعلى يكشفه ذلك
+إذا أردت أن يبقى أمر plugin محمّلًا كسولًا في مسار CLI الجذري العادي،
+فقدّم `descriptors` تغطي كل جذر أمر على المستوى الأعلى يكشفه ذلك
المُسجِّل.
```typescript
@@ -368,7 +367,7 @@ api.registerCli(
descriptors: [
{
name: "matrix",
- description: "إدارة حسابات Matrix، والتحقق، والأجهزة، وحالة الملف الشخصي",
+ description: "إدارة حسابات Matrix والتحقق والأجهزة وحالة الملف الشخصي",
hasSubcommands: true,
},
],
@@ -377,133 +376,133 @@ api.registerCli(
```
استخدم `commands` وحده فقط عندما لا تحتاج إلى تسجيل CLI جذري كسول.
-لا يزال هذا المسار التوافقي المتعجل مدعومًا، لكنه لا يثبت
-عناصر نائبة مدعومة بالواصفات من أجل التحميل الكسول وقت التحليل.
+لا يزال مسار التوافق المتحمّس هذا مدعومًا، لكنه لا يثبت
+عناصر نائبة مدعومة بـ descriptor للتحميل الكسول في وقت التحليل.
-### تسجيل الواجهة الخلفية لـ CLI
+### تسجيل CLI backend
-يتيح `api.registerCliBackend(...)` لإضافة أن تملك التكوين الافتراضي لواجهة خلفية
-محلية لـ CLI للذكاء الاصطناعي مثل `codex-cli`.
+يتيح `api.registerCliBackend(...)` لـ plugin امتلاك التهيئة الافتراضية لـ
+خلفية CLI محلية للذكاء الاصطناعي مثل `codex-cli`.
-- يصبح `id` الخاص بالواجهة الخلفية بادئة الموفّر في مراجع النماذج مثل `codex-cli/gpt-5`.
-- يستخدم `config` الخاص بالواجهة الخلفية الشكل نفسه المستخدم في `agents.defaults.cliBackends.`.
-- يظل تكوين المستخدم هو الغالب. يدمج OpenClaw `agents.defaults.cliBackends.` فوق
- القيمة الافتراضية للإضافة قبل تشغيل CLI.
-- استخدم `normalizeConfig` عندما تحتاج الواجهة الخلفية إلى إعادة كتابة توافقية بعد الدمج
- (على سبيل المثال، تطبيع أشكال الأعلام القديمة).
+- يصبح `id` الخاص بالخلفية هو بادئة المزوّد في مراجع النماذج مثل `codex-cli/gpt-5`.
+- يستخدم `config` الخاص بالخلفية نفس البنية مثل `agents.defaults.cliBackends.`.
+- تهيئة المستخدم تبقى هي الغالبة. يدمج OpenClaw `agents.defaults.cliBackends.` فوق
+ افتراضي plugin قبل تشغيل CLI.
+- استخدم `normalizeConfig` عندما تحتاج الخلفية إلى إعادة كتابة توافقية بعد الدمج
+ (على سبيل المثال، تطبيع أشكال العلامات القديمة).
### الفتحات الحصرية
-| الأسلوب | ما الذي يسجله |
-| ------------------------------------------ | ------------------------------------- |
-| `api.registerContextEngine(id, factory)` | محرك السياق (واحد نشط في كل مرة) |
-| `api.registerMemoryCapability(capability)` | قدرة الذاكرة الموحدة |
-| `api.registerMemoryPromptSection(builder)` | باني قسم مطالبة الذاكرة |
-| `api.registerMemoryFlushPlan(resolver)` | محلّل خطة تفريغ الذاكرة |
-| `api.registerMemoryRuntime(runtime)` | موائم وقت تشغيل الذاكرة |
+| الأسلوب | ما الذي يسجله |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `api.registerContextEngine(id, factory)` | محرك السياق (واحد فقط نشط في كل مرة). يتلقى رد النداء `assemble()` كلًا من `availableTools` و `citationsMode` حتى يتمكن المحرك من تخصيص إضافات المطالبة. |
+| `api.registerMemoryCapability(capability)` | قدرة ذاكرة موحدة |
+| `api.registerMemoryPromptSection(builder)` | باني قسم مطالبة الذاكرة |
+| `api.registerMemoryFlushPlan(resolver)` | محلّل خطة تفريغ الذاكرة |
+| `api.registerMemoryRuntime(runtime)` | محوّل وقت تشغيل الذاكرة |
-### موائمات تضمين الذاكرة
+### محوّلات تضمين الذاكرة
-| الأسلوب | ما الذي يسجله |
+| الأسلوب | ما الذي يسجله |
| ---------------------------------------------- | ---------------------------------------------- |
-| `api.registerMemoryEmbeddingProvider(adapter)` | موائم تضمين ذاكرة للإضافة النشطة |
+| `api.registerMemoryEmbeddingProvider(adapter)` | محوّل تضمين الذاكرة للplugin النشط |
-- `registerMemoryCapability` هو API الإضافة الحصرية المفضلة الخاصة بذاكرة الذاكرة.
+- يُعد `registerMemoryCapability` واجهة API الحصرية المفضلة لـ memory-plugin.
- قد يكشف `registerMemoryCapability` أيضًا `publicArtifacts.listArtifacts(...)`
- بحيث تتمكن الإضافات المرافقة من استهلاك مصنوعات الذاكرة المصدّرة عبر
+ حتى تتمكن plugins المصاحبة من استهلاك العناصر المصدّرة الخاصة بالذاكرة عبر
`openclaw/plugin-sdk/memory-host-core` بدلًا من الوصول إلى التخطيط الخاص
- لإضافة ذاكرة محددة.
-- `registerMemoryPromptSection` و`registerMemoryFlushPlan` و
- `registerMemoryRuntime` هي APIs حصرية متوافقة مع الإصدارات القديمة لإضافات الذاكرة.
-- يتيح `registerMemoryEmbeddingProvider` لإضافة الذاكرة النشطة تسجيل
- معرّف واحد أو أكثر لموائمات التضمين (مثل `openai` أو `gemini` أو معرّف
- مخصص تعرّفه الإضافة).
-- يُحل تكوين المستخدم مثل `agents.defaults.memorySearch.provider` و
- `agents.defaults.memorySearch.fallback` مقابل معرّفات الموائمات المسجلة هذه.
+ لplugin ذاكرة محدد.
+- تمثّل `registerMemoryPromptSection`, `registerMemoryFlushPlan`, و
+ `registerMemoryRuntime` واجهات API حصرية متوافقة مع الإصدارات القديمة لـ memory-plugin.
+- يتيح `registerMemoryEmbeddingProvider` لـ plugin الذاكرة النشط تسجيل
+ معرّف محوّل تضمين واحد أو أكثر (على سبيل المثال `openai`, `gemini`، أو معرّف مخصص يعرّفه plugin).
+- تُحل تهيئة المستخدم مثل `agents.defaults.memorySearch.provider` و
+ `agents.defaults.memorySearch.fallback` بالرجوع إلى معرّفات
+ المحوّلات المسجّلة هذه.
### الأحداث ودورة الحياة
-| الأسلوب | ما الذي يفعله |
+| الأسلوب | ما الذي يفعله |
| -------------------------------------------- | ----------------------------- |
| `api.on(hookName, handler, opts?)` | خطاف دورة حياة مطبّع |
-| `api.onConversationBindingResolved(handler)` | استدعاء رد رابط المحادثة |
+| `api.onConversationBindingResolved(handler)` | رد نداء ربط المحادثة |
-### دلالات قرارات الخطافات
+### دلالات قرار الخطاف
-- `before_tool_call`: إرجاع `{ block: true }` نهائي. بمجرد أن يضبطه أي معالج، يتم تخطي المعالجات ذات الأولوية الأقل.
-- `before_tool_call`: إرجاع `{ block: false }` يُعامل على أنه لا قرار (مثل حذف `block`)، وليس كتجاوز.
-- `before_install`: إرجاع `{ block: true }` نهائي. بمجرد أن يضبطه أي معالج، يتم تخطي المعالجات ذات الأولوية الأقل.
-- `before_install`: إرجاع `{ block: false }` يُعامل على أنه لا قرار (مثل حذف `block`)، وليس كتجاوز.
-- `reply_dispatch`: إرجاع `{ handled: true, ... }` نهائي. بمجرد أن يطالب أي معالج بالإرسال، يتم تخطي المعالجات ذات الأولوية الأقل ومسار إرسال النموذج الافتراضي.
-- `message_sending`: إرجاع `{ cancel: true }` نهائي. بمجرد أن يضبطه أي معالج، يتم تخطي المعالجات ذات الأولوية الأقل.
-- `message_sending`: إرجاع `{ cancel: false }` يُعامل على أنه لا قرار (مثل حذف `cancel`)، وليس كتجاوز.
+- `before_tool_call`: تكون إعادة `{ block: true }` نهائية. وبمجرد أن يضبطها أي معالِج، يتم تخطي المعالجات ذات الأولوية الأدنى.
+- `before_tool_call`: تُعامل إعادة `{ block: false }` على أنها بلا قرار (مثل حذف `block`) وليست تجاوزًا.
+- `before_install`: تكون إعادة `{ block: true }` نهائية. وبمجرد أن يضبطها أي معالِج، يتم تخطي المعالجات ذات الأولوية الأدنى.
+- `before_install`: تُعامل إعادة `{ block: false }` على أنها بلا قرار (مثل حذف `block`) وليست تجاوزًا.
+- `reply_dispatch`: تكون إعادة `{ handled: true, ... }` نهائية. وبمجرد أن يطالب أي معالِج بالتوزيع، يتم تخطي المعالجات ذات الأولوية الأدنى ومسار توزيع النموذج الافتراضي.
+- `message_sending`: تكون إعادة `{ cancel: true }` نهائية. وبمجرد أن يضبطها أي معالِج، يتم تخطي المعالجات ذات الأولوية الأدنى.
+- `message_sending`: تُعامل إعادة `{ cancel: false }` على أنها بلا قرار (مثل حذف `cancel`) وليست تجاوزًا.
### حقول كائن API
-| الحقل | النوع | الوصف |
+| الحقل | النوع | الوصف |
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------- |
-| `api.id` | `string` | معرّف الإضافة |
+| `api.id` | `string` | معرّف plugin |
| `api.name` | `string` | اسم العرض |
-| `api.version` | `string?` | إصدار الإضافة (اختياري) |
-| `api.description` | `string?` | وصف الإضافة (اختياري) |
-| `api.source` | `string` | مسار مصدر الإضافة |
-| `api.rootDir` | `string?` | الدليل الجذري للإضافة (اختياري) |
-| `api.config` | `OpenClawConfig` | لقطة التكوين الحالية (لقطة وقت التشغيل النشطة داخل الذاكرة عند توفرها) |
-| `api.pluginConfig` | `Record` | تكوين خاص بالإضافة من `plugins.entries..config` |
+| `api.version` | `string?` | إصدار plugin (اختياري) |
+| `api.description` | `string?` | وصف plugin (اختياري) |
+| `api.source` | `string` | مسار مصدر plugin |
+| `api.rootDir` | `string?` | الدليل الجذري لـ plugin (اختياري) |
+| `api.config` | `OpenClawConfig` | لقطة التهيئة الحالية (لقطة وقت التشغيل النشطة داخل الذاكرة عند توفرها) |
+| `api.pluginConfig` | `Record` | تهيئة plugin الخاصة من `plugins.entries..config` |
| `api.runtime` | `PluginRuntime` | [مساعدات وقت التشغيل](/ar/plugins/sdk-runtime) |
-| `api.logger` | `PluginLogger` | مسجّل ذو نطاق (`debug`, `info`, `warn`, `error`) |
+| `api.logger` | `PluginLogger` | مسجّل ضمن النطاق (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | وضع التحميل الحالي؛ `"setup-runtime"` هي نافذة بدء التشغيل/الإعداد الخفيفة قبل الإدخال الكامل |
-| `api.resolvePath(input)` | `(string) => string` | حل المسار نسبةً إلى جذر الإضافة |
+| `api.resolvePath(input)` | `(string) => string` | حل المسار نسبةً إلى جذر plugin |
## اصطلاح الوحدات الداخلية
-داخل إضافتك، استخدم ملفات barrel محلية للاستيرادات الداخلية:
+داخل plugin الخاص بك، استخدم ملفات barrel محلية للاستيرادات الداخلية:
```
my-plugin/
- api.ts # الصادرات العامة للمستهلكين الخارجيين
- runtime-api.ts # صادرات وقت تشغيل داخلية فقط
- index.ts # نقطة إدخال الإضافة
- setup-entry.ts # إدخال خفيف للإعداد فقط (اختياري)
+ api.ts # التصديرات العامة للمستهلكين الخارجيين
+ runtime-api.ts # تصديرات وقت تشغيل داخلية فقط
+ index.ts # نقطة إدخال plugin
+ setup-entry.ts # إدخال إعداد خفيف فقط (اختياري)
```
- لا تستورد إضافتك الخاصة أبدًا من خلال `openclaw/plugin-sdk/`
+ لا تستورد plugin الخاص بك أبدًا عبر `openclaw/plugin-sdk/`
من كود الإنتاج. وجّه الاستيرادات الداخلية عبر `./api.ts` أو
`./runtime-api.ts`. مسار SDK هو العقد الخارجي فقط.
-تفضّل الآن الأسطح العامة للإضافات المضمّنة المحمّلة عبر الواجهة (`api.ts` و`runtime-api.ts`،
-و`index.ts` و`setup-entry.ts`، وملفات الإدخال العامة المشابهة)
-لقطة تكوين وقت التشغيل النشطة عندما يكون OpenClaw قيد التشغيل بالفعل. وإذا لم تكن
-لقطة وقت التشغيل موجودة بعد، فإنها ترجع إلى ملف التكوين المحلول على القرص.
+تفضّل الآن الأسطح العامة لـ bundled plugin المحمّلة عبر الواجهة (`api.ts`, `runtime-api.ts`,
+`index.ts`, `setup-entry.ts`، وملفات الإدخال العامة المشابهة)
+لقطة تهيئة وقت التشغيل النشطة عندما يكون OpenClaw قيد التشغيل بالفعل. وإذا لم تكن لقطة
+وقت التشغيل موجودة بعد، فإنها تعود إلى ملف التهيئة المحلول على القرص.
-يمكن لإضافات الموفّرات أيضًا كشف ملف barrel محلي ضيق خاص بالإضافة عندما يكون
-المساعد خاصًا بالموفّر عمدًا ولا ينتمي بعد إلى مسار فرعي عام في SDK.
-المثال المضمّن الحالي: يحتفظ موفّر Anthropic بمساعدات بث Claude
-الخاصة به في سطحه العام `api.ts` / `contract-api.ts` بدلًا من
-ترقية منطق رؤوس Anthropic التجريبية و`service_tier` إلى عقد
-عام من `plugin-sdk/*`.
+يمكن لـ provider plugins أيضًا كشف barrel محلي ضيق لعقد plugin عندما تكون
+المساعدة مخصصة عمدًا لمزوّد بعينه ولا تنتمي بعد إلى مسار فرعي عام في SDK.
+المثال المضمّن الحالي: يحتفظ مزوّد Anthropic بمساعدات تدفق Claude
+في واجهته العامة `api.ts` / `contract-api.ts` الخاصة به بدلًا من
+ترقية منطق رؤوس Anthropic التجريبية و `service_tier` إلى عقد
+عام في `plugin-sdk/*`.
أمثلة مضمّنة حالية أخرى:
-- `@openclaw/openai-provider`: يصدّر `api.ts` بُناة الموفّر،
- ومساعدات النموذج الافتراضي، وبناة الموفّر الفوري
-- `@openclaw/openrouter-provider`: يصدّر `api.ts` باني الموفّر بالإضافة إلى
- مساعدات الإعداد الأولي/التكوين
+- `@openclaw/openai-provider`: يصدّر `api.ts` بُناة المزوّد،
+ ومساعدات النموذج الافتراضي، وبُناة المزوّد الفوري
+- `@openclaw/openrouter-provider`: يصدّر `api.ts` باني المزوّد بالإضافة إلى
+ مساعدات الإعداد الأولي/التهيئة
- يجب أيضًا على كود الإنتاج في الامتدادات تجنّب الاستيراد من `openclaw/plugin-sdk/`.
- إذا كان المساعد مشتركًا فعلًا، فقم بترقيته إلى مسار فرعي محايد في SDK
- مثل `openclaw/plugin-sdk/speech` أو `.../provider-model-shared` أو سطح آخر
- موجّه للقدرات بدلًا من ربط إضافتين معًا.
+ يجب على كود الإنتاج الخاص بالامتدادات أيضًا تجنب الاستيراد من `openclaw/plugin-sdk/`.
+ إذا كانت إحدى المساعدات مشتركة فعلًا، فقم بترقيتها إلى مسار فرعي محايد في SDK
+ مثل `openclaw/plugin-sdk/speech`, `.../provider-model-shared`، أو سطح آخر
+ موجّه للقدرات بدلًا من ربط pluginين معًا.
## ذو صلة
-- [نقاط الإدخال](/ar/plugins/sdk-entrypoints) — خيارات `definePluginEntry` و`defineChannelPluginEntry`
+- [نقاط الإدخال](/ar/plugins/sdk-entrypoints) — خيارات `definePluginEntry` و `defineChannelPluginEntry`
- [مساعدات وقت التشغيل](/ar/plugins/sdk-runtime) — المرجع الكامل لمساحة الاسم `api.runtime`
-- [الإعداد والتكوين](/ar/plugins/sdk-setup) — الحزم، وmanifestات، ومخططات التكوين
+- [الإعداد والتهيئة](/ar/plugins/sdk-setup) — الحزم، وملفات manifest، ومخططات التهيئة
- [الاختبار](/ar/plugins/sdk-testing) — أدوات الاختبار وقواعد lint
-- [ترحيل SDK](/ar/plugins/sdk-migration) — الترحيل من الأسطح القديمة المهملة
-- [الداخلية الخاصة بالإضافات](/ar/plugins/architecture) — بنية عميقة ونموذج القدرات
+- [ترحيل SDK](/ar/plugins/sdk-migration) — الترحيل من الأسطح المهجورة
+- [بنية plugin الداخلية](/ar/plugins/architecture) — البنية العميقة ونموذج القدرات
diff --git a/docs/ar/providers/google.md b/docs/ar/providers/google.md
index 4ede645f3..c8bffc2a5 100644
--- a/docs/ar/providers/google.md
+++ b/docs/ar/providers/google.md
@@ -2,37 +2,37 @@
read_when:
- تريد استخدام نماذج Google Gemini مع OpenClaw
- تحتاج إلى تدفق المصادقة بمفتاح API أو OAuth
-summary: إعداد Google Gemini (مفتاح API وOAuth، وإنشاء الصور، وفهم الوسائط، والبحث على الويب)
+summary: إعداد Google Gemini (مفتاح API + OAuth، توليد الصور، فهم الوسائط، البحث على الويب)
title: Google (Gemini)
x-i18n:
- generated_at: "2026-04-08T02:17:12Z"
+ generated_at: "2026-04-08T07:16:29Z"
model: gpt-5.4
provider: openai
- source_hash: e9e558f5ce35c853e0240350be9a1890460c5f7f7fd30b05813a656497dee516
+ source_hash: fad2ff68987301bd86145fa6e10de8c7b38d5bd5dbcd13db9c883f7f5b9a4e01
source_path: providers/google.md
workflow: 15
---
# Google (Gemini)
-يوفر plugin Google إمكانية الوصول إلى نماذج Gemini عبر Google AI Studio، بالإضافة إلى
-إنشاء الصور، وفهم الوسائط (الصور/الصوت/الفيديو)، والبحث على الويب عبر
+يوفر مكون Google الإضافي الوصول إلى نماذج Gemini من خلال Google AI Studio، بالإضافة إلى
+توليد الصور، وفهم الوسائط (الصور/الصوت/الفيديو)، والبحث على الويب عبر
Gemini Grounding.
-- الموفر: `google`
+- المزوّد: `google`
- المصادقة: `GEMINI_API_KEY` أو `GOOGLE_API_KEY`
-- API: Google Gemini API
-- موفر بديل: `google-gemini-cli` (OAuth)
+- API: Google Gemini API
+- المزوّد البديل: `google-gemini-cli` (OAuth)
-## بداية سريعة
+## البدء السريع
-1. اضبط مفتاح API:
+1. عيّن مفتاح API:
```bash
openclaw onboard --auth-choice gemini-api-key
```
-2. اضبط نموذجًا افتراضيًا:
+2. عيّن نموذجًا افتراضيًا:
```json5
{
@@ -53,15 +53,15 @@ openclaw onboard --non-interactive \
--gemini-api-key "$GEMINI_API_KEY"
```
-## OAuth (Gemini CLI)
+## OAuth (Gemini CLI)
-يستخدم موفر بديل باسم `google-gemini-cli` مصادقة PKCE OAuth بدلًا من مفتاح API.
-هذا تكامل غير رسمي؛ وقد أبلغ بعض المستخدمين عن
+يستخدم المزوّد البديل `google-gemini-cli` مصادقة PKCE OAuth بدلًا من مفتاح
+API. هذا تكامل غير رسمي؛ وقد أبلغ بعض المستخدمين عن
قيود على الحساب. استخدمه على مسؤوليتك الخاصة.
- النموذج الافتراضي: `google-gemini-cli/gemini-3-flash-preview`
- الاسم المستعار: `gemini-cli`
-- متطلب التثبيت المسبق: أن يكون Gemini CLI المحلي متاحًا باسم `gemini`
+- متطلب التثبيت المسبق: توفر Gemini CLI محليًا باسم `gemini`
- Homebrew: `brew install gemini-cli`
- npm: `npm install -g @google/gemini-cli`
- تسجيل الدخول:
@@ -75,48 +75,51 @@ openclaw models auth login --provider google-gemini-cli --set-default
- `OPENCLAW_GEMINI_OAUTH_CLIENT_ID`
- `OPENCLAW_GEMINI_OAUTH_CLIENT_SECRET`
-(أو الصيغ `GEMINI_CLI_*`.)
+(أو متغيرات `GEMINI_CLI_*`.)
-إذا فشلت طلبات Gemini CLI OAuth بعد تسجيل الدخول، فاضبط
+إذا فشلت طلبات Gemini CLI OAuth بعد تسجيل الدخول، فعيّن
`GOOGLE_CLOUD_PROJECT` أو `GOOGLE_CLOUD_PROJECT_ID` على مضيف البوابة ثم
أعد المحاولة.
إذا فشل تسجيل الدخول قبل بدء تدفق المتصفح، فتأكد من أن الأمر المحلي `gemini`
-مثبّت وموجود على `PATH`. يدعم OpenClaw كلاً من عمليات التثبيت عبر Homebrew
-وعمليات التثبيت العامة عبر npm، بما في ذلك تخطيطات Windows/npm الشائعة.
+مثبّت وموجود في `PATH`. يدعم OpenClaw كلًا من تثبيتات Homebrew
+وتثبيتات npm العامة، بما في ذلك تخطيطات Windows/npm الشائعة.
-ملاحظات استخدام Gemini CLI JSON:
+ملاحظات استخدام JSON في Gemini CLI:
- يأتي نص الرد من الحقل `response` في JSON الخاص بـ CLI.
- يعود الاستخدام إلى `stats` عندما يترك CLI الحقل `usage` فارغًا.
-- تتم تسوية `stats.cached` إلى OpenClaw `cacheRead`.
-- إذا كان `stats.input` مفقودًا، فإن OpenClaw يشتق رموز الإدخال من
+- تتم تسوية `stats.cached` إلى `cacheRead` في OpenClaw.
+- إذا كان `stats.input` مفقودًا، يشتق OpenClaw رموز الإدخال من
`stats.input_tokens - stats.cached`.
## الإمكانات
-| الإمكانية | مدعومة |
-| --------------------- | ---------------- |
-| إكمالات الدردشة | نعم |
-| إنشاء الصور | نعم |
-| إنشاء الموسيقى | نعم |
-| فهم الصور | نعم |
-| نسخ الصوت | نعم |
-| فهم الفيديو | نعم |
-| البحث على الويب (Grounding) | نعم |
+| الإمكانية | مدعومة |
+| ---------------------- | ----------------- |
+| إكمالات الدردشة | نعم |
+| توليد الصور | نعم |
+| توليد الموسيقى | نعم |
+| فهم الصور | نعم |
+| نسخ الصوت | نعم |
+| فهم الفيديو | نعم |
+| البحث على الويب (Grounding) | نعم |
| التفكير/الاستدلال | نعم (Gemini 3.1+) |
+| نماذج Gemma 4 | نعم |
-## إعادة استخدام ذاكرة Gemini المؤقتة المباشرة
+تدعم نماذج Gemma 4 (على سبيل المثال `gemma-4-26b-a4b-it`) وضع التفكير. يعيد OpenClaw كتابة `thinkingBudget` إلى `thinkingLevel` مدعوم من Google لنماذج Gemma 4. يؤدي ضبط التفكير على `off` إلى إبقاء التفكير معطّلًا بدلًا من تعيينه إلى `MINIMAL`.
-بالنسبة إلى التشغيلات المباشرة لـ Gemini API (`api: "google-generative-ai"`)، يقوم OpenClaw الآن
-بتمرير معرّف `cachedContent` المهيأ إلى طلبات Gemini.
+## إعادة استخدام ذاكرة التخزين المؤقت المباشرة لـ Gemini
-- اضبط معلمات لكل نموذج أو معلمات عامة باستخدام
+في عمليات تشغيل Gemini API المباشرة (`api: "google-generative-ai"`)، يقوم OpenClaw الآن
+بتمرير معرّف `cachedContent` مُعدّ مسبقًا إلى طلبات Gemini.
+
+- اضبط المعلمات لكل نموذج أو على مستوى عام باستخدام
`cachedContent` أو `cached_content` القديم
-- إذا وُجد الاثنان، تكون الأولوية لـ `cachedContent`
+- إذا كان كلاهما موجودًا، تكون الأولوية لـ `cachedContent`
- مثال على القيمة: `cachedContents/prebuilt-context`
-- تتم تسوية استخدام إصابة الذاكرة المؤقتة في Gemini إلى OpenClaw `cacheRead` من
- `cachedContentTokenCount` الصادر من الخدمة upstream
+- تتم تسوية استخدام إصابة ذاكرة التخزين المؤقت في Gemini إلى `cacheRead` في OpenClaw من
+ `cachedContentTokenCount` في المصدر
مثال:
@@ -136,21 +139,21 @@ openclaw models auth login --provider google-gemini-cli --set-default
}
```
-## إنشاء الصور
+## توليد الصور
-يفترض موفر إنشاء الصور `google` المضمن افتراضيًا استخدام
+يستخدم مزوّد توليد الصور `google` المضمّن افتراضيًا
`google/gemini-3.1-flash-image-preview`.
- يدعم أيضًا `google/gemini-3-pro-image-preview`
-- الإنشاء: حتى 4 صور لكل طلب
-- وضع التحرير: مفعّل، وحتى 5 صور إدخال
-- عناصر التحكم الهندسية: `size` و`aspectRatio` و`resolution`
+- التوليد: حتى 4 صور لكل طلب
+- وضع التحرير: مفعّل، حتى 5 صور إدخال
+- عناصر التحكم في الأبعاد: `size` و`aspectRatio` و`resolution`
-يُعد الموفر `google-gemini-cli` المعتمد على OAuth فقط واجهة منفصلة
-للاستدلال النصي. أما إنشاء الصور، وفهم الوسائط، وGemini Grounding فتبقى على
-معرّف الموفر `google`.
+يُعدّ المزوّد `google-gemini-cli` المعتمد على OAuth فقط سطحًا منفصلًا
+لاستدلال النص. يظل توليد الصور، وفهم الوسائط، وGemini Grounding على
+معرّف المزوّد `google`.
-لاستخدام Google كموفر الصور الافتراضي:
+لاستخدام Google كمزوّد الصور الافتراضي:
```json5
{
@@ -164,20 +167,20 @@ openclaw models auth login --provider google-gemini-cli --set-default
}
```
-راجع [إنشاء الصور](/ar/tools/image-generation) للتعرّف على
-معلمات الأداة المشتركة، واختيار الموفر، وسلوك التبديل الاحتياطي.
+راجع [توليد الصور](/ar/tools/image-generation) لمعلمات
+الأداة المشتركة، واختيار المزوّد، وسلوك التبديل الاحتياطي.
-## إنشاء الفيديو
+## توليد الفيديو
-يسجل plugin `google` المضمن أيضًا إنشاء الفيديو عبر الأداة المشتركة
-`video_generate`.
+يسجل مكون `google` الإضافي المضمّن أيضًا توليد الفيديو من خلال أداة
+`video_generate` المشتركة.
- نموذج الفيديو الافتراضي: `google/veo-3.1-fast-generate-preview`
- الأوضاع: نص إلى فيديو، وصورة إلى فيديو، وتدفقات مرجعية لفيديو واحد
- يدعم `aspectRatio` و`resolution` و`audio`
-- القيد الحالي للمدة: **من 4 إلى 8 ثوانٍ**
+- التقييد الحالي للمدة: **من 4 إلى 8 ثوانٍ**
-لاستخدام Google كموفر الفيديو الافتراضي:
+لاستخدام Google كمزوّد الفيديو الافتراضي:
```json5
{
@@ -191,22 +194,22 @@ openclaw models auth login --provider google-gemini-cli --set-default
}
```
-راجع [إنشاء الفيديو](/ar/tools/video-generation) للتعرّف على
-معلمات الأداة المشتركة، واختيار الموفر، وسلوك التبديل الاحتياطي.
+راجع [توليد الفيديو](/ar/tools/video-generation) لمعلمات
+الأداة المشتركة، واختيار المزوّد، وسلوك التبديل الاحتياطي.
-## إنشاء الموسيقى
+## توليد الموسيقى
-يسجل plugin `google` المضمن أيضًا إنشاء الموسيقى عبر الأداة المشتركة
-`music_generate`.
+يسجل مكون `google` الإضافي المضمّن أيضًا توليد الموسيقى من خلال أداة
+`music_generate` المشتركة.
- نموذج الموسيقى الافتراضي: `google/lyria-3-clip-preview`
- يدعم أيضًا `google/lyria-3-pro-preview`
-- عناصر التحكم في الموجّه: `lyrics` و`instrumental`
+- عناصر التحكم في المطالبة: `lyrics` و`instrumental`
- تنسيق الإخراج: `mp3` افتراضيًا، بالإضافة إلى `wav` على `google/lyria-3-pro-preview`
- المدخلات المرجعية: حتى 10 صور
-- يتم فصل التشغيلات المدعومة بالجلسات عبر تدفق المهمة/الحالة المشترك، بما في ذلك `action: "status"`
+- تُفصل عمليات التشغيل المدعومة بالجلسات عبر تدفق المهام/الحالة المشترك، بما في ذلك `action: "status"`
-لاستخدام Google كموفر الموسيقى الافتراضي:
+لاستخدام Google كمزوّد الموسيقى الافتراضي:
```json5
{
@@ -220,11 +223,11 @@ openclaw models auth login --provider google-gemini-cli --set-default
}
```
-راجع [إنشاء الموسيقى](/ar/tools/music-generation) للتعرّف على
-معلمات الأداة المشتركة، واختيار الموفر، وسلوك التبديل الاحتياطي.
+راجع [توليد الموسيقى](/ar/tools/music-generation) لمعلمات
+الأداة المشتركة، واختيار المزوّد، وسلوك التبديل الاحتياطي.
-## ملاحظة البيئة
+## ملاحظة حول البيئة
-إذا كانت البوابة تعمل كخدمة خلفية (launchd/systemd)، فتأكد من أن `GEMINI_API_KEY`
+إذا كانت البوابة تعمل كخدمة daemon (`launchd/systemd`)، فتأكد من أن `GEMINI_API_KEY`
متاح لتلك العملية (على سبيل المثال، في `~/.openclaw/.env` أو عبر
`env.shellEnv`).
diff --git a/docs/ar/providers/ollama.md b/docs/ar/providers/ollama.md
index 289aed30b..356cfe23e 100644
--- a/docs/ar/providers/ollama.md
+++ b/docs/ar/providers/ollama.md
@@ -1,45 +1,45 @@
---
read_when:
- تريد تشغيل OpenClaw مع نماذج سحابية أو محلية عبر Ollama
- - تحتاج إلى إرشادات إعداد وتكوين Ollama
-summary: تشغيل OpenClaw مع Ollama (النماذج السحابية والمحلية)
+ - تحتاج إلى إرشادات إعداد Ollama وتهيئته
+summary: شغّل OpenClaw مع Ollama (النماذج السحابية والمحلية)
title: Ollama
x-i18n:
- generated_at: "2026-04-08T02:19:04Z"
+ generated_at: "2026-04-08T07:16:47Z"
model: gpt-5.4
provider: openai
- source_hash: 222ec68f7d4bb29cc7796559ddef1d5059f5159e7a51e2baa3a271ddb3abb716
+ source_hash: d3295a7c879d3636a2ffdec05aea6e670e54a990ef52bd9b0cae253bc24aa3f7
source_path: providers/ollama.md
workflow: 15
---
# Ollama
-Ollama هو بيئة تشغيل محلية لـ LLM تجعل من السهل تشغيل النماذج مفتوحة المصدر على جهازك. يتكامل OpenClaw مع API الأصلي لـ Ollama (`/api/chat`)، ويدعم البث واستدعاء الأدوات، ويمكنه اكتشاف نماذج Ollama المحلية تلقائيًا عندما تختار ذلك عبر `OLLAMA_API_KEY` (أو ملف تعريف مصادقة) ولا تعرّف إدخال `models.providers.ollama` صريحًا.
+Ollama هو بيئة تشغيل محلية لنماذج LLM تجعل من السهل تشغيل النماذج مفتوحة المصدر على جهازك. يتكامل OpenClaw مع واجهة Ollama API الأصلية (`/api/chat`)، ويدعم البث واستدعاء الأدوات، ويمكنه الاكتشاف التلقائي لنماذج Ollama المحلية عند تفعيل ذلك باستخدام `OLLAMA_API_KEY` (أو ملف تعريف مصادقة) وعدم تعريف إدخال صريح لـ `models.providers.ollama`.
-**مستخدمو Ollama البعيد**: لا تستخدم عنوان URL المتوافق مع OpenAI الخاص بـ `/v1` (`http://host:11434/v1`) مع OpenClaw. فهذا يعطّل استدعاء الأدوات وقد تُخرج النماذج JSON الأدوات الخام كنص عادي. استخدم بدلًا من ذلك عنوان URL الخاص بـ API الأصلي لـ Ollama: `baseUrl: "http://host:11434"` (من دون `/v1`).
+**مستخدمو Ollama البعيد**: لا تستخدم عنوان URL المتوافق مع OpenAI عبر `/v1` (`http://host:11434/v1`) مع OpenClaw. فهذا يعطل استدعاء الأدوات وقد تُخرج النماذج JSON الخام الخاص بالأدوات كنص عادي. استخدم بدلًا من ذلك عنوان URL الخاص بواجهة Ollama API الأصلية: `baseUrl: "http://host:11434"` (من دون `/v1`).
## البدء السريع
-### الإعداد الأولي (مستحسن)
+### الإعداد الأولي (موصى به)
-أسرع طريقة لإعداد Ollama هي عبر الإعداد الأولي:
+أسرع طريقة لإعداد Ollama هي من خلال الإعداد الأولي:
```bash
openclaw onboard
```
-اختر **Ollama** من قائمة الموفّرين. سيقوم الإعداد الأولي بما يلي:
+اختر **Ollama** من قائمة موفري الخدمة. سيقوم الإعداد الأولي بما يلي:
-1. سيسألك عن عنوان URL الأساسي لـ Ollama الذي يمكن الوصول إلى المثيل من خلاله (الافتراضي `http://127.0.0.1:11434`).
-2. يتيح لك اختيار **Cloud + Local** (نماذج سحابية ونماذج محلية) أو **Local** (نماذج محلية فقط).
+1. سيسأل عن عنوان URL الأساسي لـ Ollama الذي يمكن الوصول إلى مثيلك من خلاله (الافتراضي هو `http://127.0.0.1:11434`).
+2. يتيح لك اختيار **Cloud + Local** (نماذج سحابية ومحلية) أو **Local** (نماذج محلية فقط).
3. يفتح تدفق تسجيل دخول عبر المتصفح إذا اخترت **Cloud + Local** ولم تكن قد سجلت الدخول إلى ollama.com.
-4. يكتشف النماذج المتاحة ويقترح الإعدادات الافتراضية.
+4. يكتشف النماذج المتاحة ويقترح إعدادات افتراضية.
5. يسحب النموذج المحدد تلقائيًا إذا لم يكن متاحًا محليًا.
-الوضع غير التفاعلي مدعوم أيضًا:
+كما أن الوضع غير التفاعلي مدعوم أيضًا:
```bash
openclaw onboard --non-interactive \
@@ -47,7 +47,7 @@ openclaw onboard --non-interactive \
--accept-risk
```
-يمكنك اختياريًا تحديد عنوان URL أساسي مخصص أو نموذج مخصص:
+يمكنك اختياريًا تحديد عنوان URL أساسي مخصص أو نموذج:
```bash
openclaw onboard --non-interactive \
@@ -85,20 +85,20 @@ openclaw onboard
- `Local`: نماذج محلية فقط
- `Cloud + Local`: نماذج محلية بالإضافة إلى نماذج سحابية
-- النماذج السحابية مثل `kimi-k2.5:cloud` و`minimax-m2.7:cloud` و`glm-5.1:cloud` لا **تتطلب** `ollama pull` محليًا
+- النماذج السحابية مثل `kimi-k2.5:cloud` و`minimax-m2.7:cloud` و`glm-5.1:cloud` لا تتطلب `ollama pull` محليًا
-يقترح OpenClaw حاليًا:
+يقترح OpenClaw حاليًا ما يلي:
- الافتراضي المحلي: `gemma4`
- الإعدادات الافتراضية السحابية: `kimi-k2.5:cloud` و`minimax-m2.7:cloud` و`glm-5.1:cloud`
-5. إذا كنت تفضّل الإعداد اليدوي، فقم بتمكين Ollama مباشرة لـ OpenClaw (أي قيمة تعمل؛ لا يتطلب Ollama مفتاحًا حقيقيًا):
+5. إذا كنت تفضّل الإعداد اليدوي، ففعّل Ollama لـ OpenClaw مباشرةً (أي قيمة تعمل؛ إذ لا يتطلب Ollama مفتاحًا حقيقيًا):
```bash
# تعيين متغير البيئة
export OLLAMA_API_KEY="ollama-local"
-# أو التكوين في ملف التكوين
+# أو التهيئة في ملف الإعداد
openclaw config set models.providers.ollama.apiKey "ollama-local"
```
@@ -109,7 +109,7 @@ openclaw models list
openclaw models set ollama/gemma4
```
-7. أو عيّن الإعداد الافتراضي في التكوين:
+7. أو عيّن الافتراضي في الإعداد:
```json5
{
@@ -121,17 +121,18 @@ openclaw models set ollama/gemma4
}
```
-## اكتشاف النماذج (الموفّر الضمني)
+## اكتشاف النماذج (موفر ضمني)
-عندما تعيّن `OLLAMA_API_KEY` (أو ملف تعريف مصادقة) و**لا** تعرّف `models.providers.ollama`، يكتشف OpenClaw النماذج من مثيل Ollama المحلي على `http://127.0.0.1:11434`:
+عند تعيين `OLLAMA_API_KEY` (أو ملف تعريف مصادقة) و**عدم** تعريف `models.providers.ollama`، يكتشف OpenClaw النماذج من مثيل Ollama المحلي على `http://127.0.0.1:11434`:
- يستعلم عن `/api/tags`
-- يستخدم عمليات بحث `/api/show` بأفضل جهد لقراءة `contextWindow` عند توفره
-- يضع علامة `reasoning` باستخدام استدلال يعتمد على اسم النموذج (`r1` أو `reasoning` أو `think`)
-- يضبط `maxTokens` على الحد الأقصى الافتراضي للرموز في Ollama المستخدم من قبل OpenClaw
+- يستخدم عمليات بحث `/api/show` بأفضل جهد لقراءة `contextWindow` واكتشاف القدرات (بما في ذلك الرؤية) عند توفرها
+- تُعلَّم النماذج التي تُبلغ عن قدرة `vision` عبر `/api/show` على أنها قادرة على التعامل مع الصور (`input: ["text", "image"]`)، لذلك يحقن OpenClaw الصور تلقائيًا في الموجّه لهذه النماذج
+- يعلّم `reasoning` باستخدام استدلال يعتمد على اسم النموذج (`r1` و`reasoning` و`think`)
+- يضبط `maxTokens` على الحد الأقصى الافتراضي للرموز في Ollama الذي يستخدمه OpenClaw
- يضبط جميع التكاليف على `0`
-يؤدي ذلك إلى تجنب إدخالات النماذج اليدوية مع إبقاء الكتالوج متوافقًا مع مثيل Ollama المحلي.
+يؤدي ذلك إلى تجنّب الإدخالات اليدوية للنماذج مع إبقاء الفهرس متوافقًا مع مثيل Ollama المحلي.
لمعرفة النماذج المتاحة:
@@ -140,31 +141,31 @@ ollama list
openclaw models list
```
-لإضافة نموذج جديد، ما عليك سوى سحبه عبر Ollama:
+لإضافة نموذج جديد، ما عليك سوى سحبه باستخدام Ollama:
```bash
ollama pull mistral
```
-سيتم اكتشاف النموذج الجديد تلقائيًا وسيصبح متاحًا للاستخدام.
+سيُكتشف النموذج الجديد تلقائيًا ويصبح متاحًا للاستخدام.
-إذا عيّنت `models.providers.ollama` صراحة، فسيتم تخطي الاكتشاف التلقائي، ويجب عليك تعريف النماذج يدويًا (انظر أدناه).
+إذا عيّنت `models.providers.ollama` صراحةً، فسيتم تخطي الاكتشاف التلقائي ويجب عليك تعريف النماذج يدويًا (انظر أدناه).
-## التكوين
+## التهيئة
-### إعداد أساسي (اكتشاف ضمني)
+### الإعداد الأساسي (اكتشاف ضمني)
-أبسط طريقة لتمكين Ollama هي عبر متغير البيئة:
+أبسط طريقة لتمكين Ollama هي عبر متغير بيئة:
```bash
export OLLAMA_API_KEY="ollama-local"
```
-### إعداد صريح (نماذج يدوية)
+### الإعداد الصريح (نماذج يدوية)
-استخدم التكوين الصريح عندما:
+استخدم التهيئة الصريحة عندما:
-- يعمل Ollama على مضيف/منفذ آخر.
+- يكون Ollama يعمل على مضيف أو منفذ آخر.
- تريد فرض نوافذ سياق أو قوائم نماذج محددة.
- تريد تعريفات نماذج يدوية بالكامل.
@@ -193,11 +194,11 @@ export OLLAMA_API_KEY="ollama-local"
}
```
-إذا كان `OLLAMA_API_KEY` معيّنًا، فيمكنك حذف `apiKey` من إدخال الموفّر وسيقوم OpenClaw بملئه من أجل فحوصات التوفر.
+إذا كان `OLLAMA_API_KEY` معينًا، يمكنك حذف `apiKey` من إدخال الموفر وسيقوم OpenClaw بملئه لعمليات التحقق من التوفر.
-### عنوان URL أساسي مخصص (تكوين صريح)
+### عنوان URL أساسي مخصص (تهيئة صريحة)
-إذا كان Ollama يعمل على مضيف أو منفذ مختلفين (يعطّل التكوين الصريح الاكتشاف التلقائي، لذا عرّف النماذج يدويًا):
+إذا كان Ollama يعمل على مضيف أو منفذ مختلف (تعطّل التهيئة الصريحة الاكتشاف التلقائي، لذا عرّف النماذج يدويًا):
```json5
{
@@ -205,8 +206,8 @@ export OLLAMA_API_KEY="ollama-local"
providers: {
ollama: {
apiKey: "ollama-local",
- baseUrl: "http://ollama-host:11434", // بدون /v1 - استخدم عنوان URL الخاص بـ API الأصلي لـ Ollama
- api: "ollama", // عيّنه صراحة لضمان سلوك استدعاء الأدوات الأصلي
+ baseUrl: "http://ollama-host:11434", // بدون /v1 - استخدم عنوان URL الأصلي لواجهة Ollama API
+ api: "ollama", // عيّنه صراحةً لضمان سلوك استدعاء الأدوات الأصلي
},
},
},
@@ -214,12 +215,12 @@ export OLLAMA_API_KEY="ollama-local"
```
-لا تضف `/v1` إلى عنوان URL. يستخدم المسار `/v1` الوضع المتوافق مع OpenAI، حيث لا يكون استدعاء الأدوات موثوقًا. استخدم عنوان URL الأساسي لـ Ollama من دون لاحقة مسار.
+لا تضف `/v1` إلى عنوان URL. يستخدم المسار `/v1` وضع التوافق مع OpenAI، حيث لا يكون استدعاء الأدوات موثوقًا. استخدم عنوان URL الأساسي لـ Ollama من دون لاحقة مسار.
### اختيار النموذج
-بمجرد التكوين، ستكون جميع نماذج Ollama الخاصة بك متاحة:
+بعد اكتمال التهيئة، تصبح جميع نماذج Ollama الخاصة بك متاحة:
```json5
{
@@ -236,21 +237,19 @@ export OLLAMA_API_KEY="ollama-local"
## النماذج السحابية
-تتيح لك النماذج السحابية تشغيل نماذج مستضافة سحابيًا (على سبيل المثال `kimi-k2.5:cloud` و`minimax-m2.7:cloud` و`glm-5.1:cloud`) إلى جانب نماذجك المحلية.
+تتيح لك النماذج السحابية تشغيل النماذج المستضافة سحابيًا (مثل `kimi-k2.5:cloud` و`minimax-m2.7:cloud` و`glm-5.1:cloud`) إلى جانب نماذجك المحلية.
-لاستخدام النماذج السحابية، اختر وضع **Cloud + Local** أثناء الإعداد. يتحقق المعالج مما إذا كنت قد سجلت الدخول ويفتح تدفق تسجيل دخول عبر المتصفح عند الحاجة. إذا تعذر التحقق من المصادقة، فسيعود المعالج إلى الإعدادات الافتراضية للنماذج المحلية.
+لاستخدام النماذج السحابية، اختر وضع **Cloud + Local** أثناء الإعداد. يتحقق المعالج مما إذا كنت قد سجلت الدخول ويفتح تدفق تسجيل دخول عبر المتصفح عند الحاجة. إذا تعذر التحقق من المصادقة، يعود المعالج إلى الإعدادات الافتراضية للنماذج المحلية.
-يمكنك أيضًا تسجيل الدخول مباشرة على [ollama.com/signin](https://ollama.com/signin).
+يمكنك أيضًا تسجيل الدخول مباشرةً على [ollama.com/signin](https://ollama.com/signin).
## Ollama Web Search
-يدعم OpenClaw أيضًا **Ollama Web Search** كموفّر
-`web_search` مضمّن.
+يدعم OpenClaw أيضًا **Ollama Web Search** كموفر `web_search` مضمّن.
-- يستخدم مضيف Ollama المهيأ لديك (`models.providers.ollama.baseUrl` عند
- تعيينه، وإلا `http://127.0.0.1:11434`).
-- لا يحتاج إلى مفتاح.
-- يتطلب أن يكون Ollama قيد التشغيل وأن تكون قد سجلت الدخول عبر `ollama signin`.
+- يستخدم مضيف Ollama المهيأ لديك (`models.providers.ollama.baseUrl` عند تعيينه، وإلا `http://127.0.0.1:11434`).
+- لا يتطلب مفتاحًا.
+- يتطلب أن يكون Ollama قيد التشغيل وأن تكون قد سجلت الدخول باستخدام `ollama signin`.
اختر **Ollama Web Search** أثناء `openclaw onboard` أو
`openclaw configure --section web`، أو عيّن:
@@ -267,13 +266,13 @@ export OLLAMA_API_KEY="ollama-local"
}
```
-للحصول على تفاصيل الإعداد والسلوك الكاملة، راجع [Ollama Web Search](/ar/tools/ollama-search).
+للحصول على تفاصيل الإعداد والسلوك كاملة، راجع [Ollama Web Search](/ar/tools/ollama-search).
## متقدم
### نماذج الاستدلال
-يعامل OpenClaw النماذج ذات الأسماء مثل `deepseek-r1` أو `reasoning` أو `think` على أنها قادرة على الاستدلال افتراضيًا:
+يتعامل OpenClaw مع النماذج ذات الأسماء مثل `deepseek-r1` أو `reasoning` أو `think` على أنها قادرة على الاستدلال افتراضيًا:
```bash
ollama pull deepseek-r1:32b
@@ -283,17 +282,17 @@ ollama pull deepseek-r1:32b
Ollama مجاني ويعمل محليًا، لذا يتم تعيين جميع تكاليف النماذج إلى $0.
-### تكوين البث
+### تهيئة البث
-يستخدم تكامل OpenClaw مع Ollama **API الأصلي لـ Ollama** (`/api/chat`) افتراضيًا، وهو يدعم بالكامل البث واستدعاء الأدوات في الوقت نفسه. لا يلزم أي تكوين خاص.
+يستخدم تكامل OpenClaw مع Ollama **واجهة Ollama API الأصلية** (`/api/chat`) افتراضيًا، وهي تدعم بالكامل البث واستدعاء الأدوات في الوقت نفسه. لا حاجة إلى أي تهيئة خاصة.
-#### الوضع القديم المتوافق مع OpenAI
+#### وضع التوافق القديم مع OpenAI
-**استدعاء الأدوات ليس موثوقًا في الوضع المتوافق مع OpenAI.** استخدم هذا الوضع فقط إذا كنت بحاجة إلى تنسيق OpenAI من أجل وكيل ولا تعتمد على سلوك استدعاء الأدوات الأصلي.
+**استدعاء الأدوات غير موثوق في وضع التوافق مع OpenAI.** استخدم هذا الوضع فقط إذا كنت بحاجة إلى تنسيق OpenAI لوكيل وسيط ولا تعتمد على سلوك استدعاء الأدوات الأصلي.
-إذا كنت بحاجة إلى استخدام نقطة النهاية المتوافقة مع OpenAI بدلًا من ذلك (مثلًا خلف وكيل لا يدعم إلا تنسيق OpenAI)، فعيّن `api: "openai-completions"` صراحة:
+إذا كنت تحتاج إلى استخدام نقطة النهاية المتوافقة مع OpenAI بدلًا من ذلك (على سبيل المثال، خلف وكيل وسيط لا يدعم سوى تنسيق OpenAI)، فعيّن `api: "openai-completions"` صراحةً:
```json5
{
@@ -311,9 +310,9 @@ Ollama مجاني ويعمل محليًا، لذا يتم تعيين جميع ت
}
```
-قد لا يدعم هذا الوضع البث + استدعاء الأدوات في الوقت نفسه. قد تحتاج إلى تعطيل البث باستخدام `params: { streaming: false }` في تكوين النموذج.
+قد لا يدعم هذا الوضع البث + استدعاء الأدوات في الوقت نفسه. قد تحتاج إلى تعطيل البث باستخدام `params: { streaming: false }` في تهيئة النموذج.
-عند استخدام `api: "openai-completions"` مع Ollama، يحقن OpenClaw القيمة `options.num_ctx` افتراضيًا حتى لا يعود Ollama بصمت إلى نافذة سياق قدرها 4096. إذا كان وكيلك/خادمك الصاعد يرفض حقول `options` غير المعروفة، فعطّل هذا السلوك:
+عند استخدام `api: "openai-completions"` مع Ollama، يحقن OpenClaw `options.num_ctx` افتراضيًا حتى لا يعود Ollama بصمت إلى نافذة سياق قدرها 4096. إذا كان الوكيل الوسيط/الجهة العليا يرفض حقول `options` غير المعروفة، فعطّل هذا السلوك:
```json5
{
@@ -333,7 +332,7 @@ Ollama مجاني ويعمل محليًا، لذا يتم تعيين جميع ت
### نوافذ السياق
-بالنسبة إلى النماذج المكتشفة تلقائيًا، يستخدم OpenClaw نافذة السياق التي يبلغ عنها Ollama عند توفرها، وإلا فإنه يعود إلى نافذة سياق Ollama الافتراضية المستخدمة من قبل OpenClaw. يمكنك تجاوز `contextWindow` و`maxTokens` في تكوين الموفّر الصريح.
+بالنسبة إلى النماذج المكتشفة تلقائيًا، يستخدم OpenClaw نافذة السياق التي يبلغ عنها Ollama عند توفرها، وإلا فإنه يعود إلى نافذة سياق Ollama الافتراضية التي يستخدمها OpenClaw. يمكنك تجاوز `contextWindow` و`maxTokens` في تهيئة الموفر الصريحة.
## استكشاف الأخطاء وإصلاحها
@@ -345,7 +344,7 @@ Ollama مجاني ويعمل محليًا، لذا يتم تعيين جميع ت
ollama serve
```
-وتأكد من أن API يمكن الوصول إليه:
+وتأكد من أن واجهة API قابلة للوصول:
```bash
curl http://localhost:11434/api/tags
@@ -353,15 +352,15 @@ curl http://localhost:11434/api/tags
### لا توجد نماذج متاحة
-إذا لم يكن نموذجك مدرجًا، فإما أن:
+إذا لم يكن نموذجك مدرجًا، فإما:
-- تسحب النموذج محليًا، أو
-- تعرّف النموذج صراحة في `models.providers.ollama`.
+- اسحب النموذج محليًا، أو
+- عرّف النموذج صراحةً في `models.providers.ollama`.
لإضافة نماذج:
```bash
-ollama list # اعرض ما هو مثبّت
+ollama list # اعرض ما هو مثبت
ollama pull gemma4
ollama pull gpt-oss:20b
ollama pull llama3.3 # أو نموذج آخر
@@ -381,6 +380,6 @@ ollama serve
## راجع أيضًا
-- [موفّرات النماذج](/ar/concepts/model-providers) - نظرة عامة على جميع الموفّرين
+- [موفرو النماذج](/ar/concepts/model-providers) - نظرة عامة على جميع الموفّرين
- [اختيار النموذج](/ar/concepts/models) - كيفية اختيار النماذج
-- [التكوين](/ar/gateway/configuration) - المرجع الكامل للتكوين
+- [التهيئة](/ar/gateway/configuration) - المرجع الكامل للتهيئة