chore(i18n): refresh ar translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-20 07:39:02 +00:00
parent 608538cb8c
commit 29bb9e879b
11 changed files with 3940 additions and 3782 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +1,19 @@
---
read_when:
- يشير نقل القناة إلى أنه متصل لكن الردود تفشل
- تحتاج إلى فحوصات خاصة بالقناة قبل الرجوع إلى وثائق المزوّد المتعمقة
summary: استكشاف سريع لمشكلات القنوات مع مؤشرات أعطال وإصلاحات خاصة بكل قناة
title: استكشاف مشكلات القنوات وإصلاحها
- يشير نقل القناة إلى أنه متصل، لكن الردود تفشل
- تحتاج إلى عمليات تحقق خاصة بالقناة قبل التعمق في وثائق المزوّد
summary: استكشاف أخطاء مستوى القناة وإصلاحها بسرعة مع تواقيع الأعطال والإصلاحات الخاصة بكل قناة
title: استكشاف أخطاء القناة وإصلاحها
x-i18n:
generated_at: "2026-04-05T12:36:55Z"
generated_at: "2026-04-20T07:29:33Z"
model: gpt-5.4
provider: openai
source_hash: d45d8220505ea420d970b20bc66e65216c2d7024b5736db1936421ffc0676e1f
source_hash: 0aef31742cd5cc4af3fa3d3ea1acba51875ad4a1423c0e8c87372c3df31b0528
source_path: channels/troubleshooting.md
workflow: 15
---
# استكشاف مشكلات القنوات وإصلاحها
# استكشاف أخطاء القناة وإصلاحها
استخدم هذه الصفحة عندما تتصل قناة ما لكن يكون السلوك غير صحيح.
@ -29,112 +29,113 @@ openclaw doctor
openclaw channels status --probe
```
الخط الأساسي السليم:
خط الأساس السليم:
- `Runtime: running`
- `RPC probe: ok`
- `Connectivity probe: ok`
- `Capability: read-only` أو `write-capable` أو `admin-capable`
- يُظهر فحص القناة أن النقل متصل، وحيثما كان ذلك مدعومًا، `works` أو `audit ok`
## WhatsApp
### مؤشرات أعطال WhatsApp
### تواقيع أعطال WhatsApp
| العرض | أسرع فحص | الإصلاح |
| ----------------------------- | -------------------------------------------------- | -------------------------------------------------------- |
| متصل لكن لا توجد ردود على الرسائل المباشرة | `openclaw pairing list whatsapp` | وافق على المرسل أو بدّل سياسة الرسائل المباشرة/قائمة السماح. |
| يتم تجاهل رسائل المجموعات | تحقّق من `requireMention` وأنماط الإشارة في الإعدادات | اذكر البوت أو خفف سياسة الإشارة لتلك المجموعة. |
| حلقات عشوائية من قطع الاتصال/إعادة تسجيل الدخول | `openclaw channels status --probe` + السجلات | سجّل الدخول مجددًا وتحقق من سلامة دليل بيانات الاعتماد. |
| العَرَض | أسرع فحص | الإصلاح |
| ------------------------------- | --------------------------------------------------- | --------------------------------------------------------------------- |
| متصل لكن لا توجد ردود في الرسائل الخاصة | `openclaw pairing list whatsapp` | وافق على المرسل أو بدّل سياسة الرسائل الخاصة/قائمة السماح. |
| يتم تجاهل رسائل المجموعات | تحقّق من `requireMention` وأنماط الإشارة في الإعدادات | اذكر البوت أو خفّف سياسة الإشارة لتلك المجموعة. |
| انقطاعات عشوائية/حلقات إعادة تسجيل الدخول | `openclaw channels status --probe` + السجلات | أعد تسجيل الدخول وتحقّق من أن دليل بيانات الاعتماد بحالة سليمة. |
الاستكشاف الكامل للمشكلات: [/channels/whatsapp#troubleshooting](/channels/whatsapp#troubleshooting)
الاستكشاف الكامل للأخطاء وإصلاحها: [/channels/whatsapp#troubleshooting](/ar/channels/whatsapp#troubleshooting)
## Telegram
### مؤشرات أعطال Telegram
### تواقيع أعطال Telegram
| العرض | أسرع فحص | الإصلاح |
| --------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------- |
| `/start` لكن لا يوجد تدفق رد قابل للاستخدام | `openclaw pairing list telegram` | وافق على الاقتران أو غيّر سياسة الرسائل المباشرة. |
| البوت متصل لكن المجموعة تظل صامتة | تحقّق من متطلب الإشارة ووضع خصوصية البوت | عطّل وضع الخصوصية لرؤية رسائل المجموعة أو اذكر البوت. |
| فشل في الإرسال مع أخطاء شبكة | افحص السجلات بحثًا عن إخفاقات استدعاءات Telegram API | أصلح توجيه DNS/IPv6/proxy إلى `api.telegram.org`. |
| تم رفض `setMyCommands` عند بدء التشغيل | افحص السجلات بحثًا عن `BOT_COMMANDS_TOO_MUCH` | قلّل أوامر Telegram الأصلية أو أوامر plugin/Skills/الأوامر المخصصة أو عطّل القوائم الأصلية. |
| قمت بالترقية وأصبحت قائمة السماح تحظرك | `openclaw security audit` وقوائم السماح في الإعدادات | شغّل `openclaw doctor --fix` أو استبدل `@username` بمعرّفات المرسلين الرقمية. |
| العَرَض | أسرع فحص | الإصلاح |
| --------------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------- |
| `/start` لكن لا يوجد مسار رد قابل للاستخدام | `openclaw pairing list telegram` | وافق على الاقتران أو غيّر سياسة الرسائل الخاصة. |
| البوت متصل لكن المجموعة تبقى صامتة | تحقّق من متطلب الإشارة ووضع خصوصية البوت | عطّل وضع الخصوصية لإتاحة رؤية المجموعة أو اذكر البوت. |
| فشل في الإرسال مع أخطاء شبكة | افحص السجلات بحثًا عن إخفاقات استدعاءات Telegram API | أصلح توجيه DNS/IPv6/الوكيل إلى `api.telegram.org`. |
| تم رفض `setMyCommands` عند بدء التشغيل | افحص السجلات بحثًا عن `BOT_COMMANDS_TOO_MUCH` | قلّل أوامر Telegram الأصلية الخاصة بالـ Plugin/Skills/المخصّصة أو عطّل القوائم الأصلية. |
| قمت بالترقية وأصبحت قائمة السماح تمنعك | `openclaw security audit` وقوائم السماح في الإعدادات | شغّل `openclaw doctor --fix` أو استبدل `@username` بمعرّفات المرسل الرقمية. |
الاستكشاف الكامل للمشكلات: [/channels/telegram#troubleshooting](/channels/telegram#troubleshooting)
الاستكشاف الكامل للأخطاء وإصلاحها: [/channels/telegram#troubleshooting](/ar/channels/telegram#troubleshooting)
## Discord
### مؤشرات أعطال Discord
### تواقيع أعطال Discord
| العرض | أسرع فحص | الإصلاح |
| ----------------------------- | ------------------------------------- | ----------------------------------------------------------- |
| البوت متصل لكن لا يرد في الخوادم | `openclaw channels status --probe` | اسمح بالخادم/القناة وتحقق من صلاحية محتوى الرسائل. |
| يتم تجاهل رسائل المجموعات | تحقّق من السجلات بحثًا عن إسقاطات بوابة الإشارات | اذكر البوت أو اضبط `requireMention: false` للخادم/القناة. |
| ردود الرسائل المباشرة مفقودة | `openclaw pairing list discord` | وافق على اقتران الرسائل المباشرة أو عدّل سياسة الرسائل المباشرة. |
| العَرَض | أسرع فحص | الإصلاح |
| ------------------------------- | --------------------------------- | --------------------------------------------------------------- |
| البوت متصل لكن لا توجد ردود في الخادم | `openclaw channels status --probe` | اسمح بالخادم/القناة وتحقّق من إذن محتوى الرسائل. |
| يتم تجاهل رسائل المجموعات | تحقّق من السجلات لعمليات إسقاط بسبب تقييد الإشارة | اذكر البوت أو اضبط `requireMention: false` للخادم/القناة. |
| ردود الرسائل الخاصة مفقودة | `openclaw pairing list discord` | وافق على اقتران الرسائل الخاصة أو عدّل سياسة الرسائل الخاصة. |
الاستكشاف الكامل للمشكلات: [/channels/discord#troubleshooting](/channels/discord#troubleshooting)
الاستكشاف الكامل للأخطاء وإصلاحها: [/channels/discord#troubleshooting](/ar/channels/discord#troubleshooting)
## Slack
### مؤشرات أعطال Slack
### تواقيع أعطال Slack
| العرض | أسرع فحص | الإصلاح |
| ------------------------------------ | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Socket mode متصل لكن لا توجد استجابات | `openclaw channels status --probe` | تحقّق من app token وbot token والنطاقات المطلوبة؛ وراقب `botTokenStatus` / `appTokenStatus = configured_unavailable` في الإعدادات المدعومة بـ SecretRef. |
| الرسائل المباشرة محظورة | `openclaw pairing list slack` | وافق على الاقتران أو خفف سياسة الرسائل المباشرة. |
| يتم تجاهل رسالة القناة | تحقّق من `groupPolicy` وقائمة السماح للقنوات | اسمح للقناة أو بدّل السياسة إلى `open`. |
| العَرَض | أسرع فحص | الإصلاح |
| --------------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Socket mode متصل لكن لا توجد استجابات | `openclaw channels status --probe` | تحقّق من app token وbot token والنطاقات المطلوبة؛ وراقب `botTokenStatus` / `appTokenStatus = configured_unavailable` في الإعدادات المعتمدة على SecretRef. |
| الرسائل الخاصة محجوبة | `openclaw pairing list slack` | وافق على الاقتران أو خفّف سياسة الرسائل الخاصة. |
| يتم تجاهل رسالة القناة | تحقّق من `groupPolicy` وقائمة سماح القناة | اسمح للقناة أو بدّل السياسة إلى `open`. |
الاستكشاف الكامل للمشكلات: [/channels/slack#troubleshooting](/channels/slack#troubleshooting)
الاستكشاف الكامل للأخطاء وإصلاحها: [/channels/slack#troubleshooting](/ar/channels/slack#troubleshooting)
## iMessage وBlueBubbles
### مؤشرات أعطال iMessage وBlueBubbles
### تواقيع أعطال iMessage وBlueBubbles
| العرض | أسرع فحص | الإصلاح |
| ------------------------------ | ------------------------------------------------------------------- | ------------------------------------------------------ |
| لا توجد أحداث واردة | تحقّق من إمكانية الوصول إلى webhook/server وأذونات التطبيق | أصلح عنوان URL الخاص بـ webhook أو حالة خادم BlueBubbles. |
| يمكن الإرسال لكن لا يوجد استقبال على macOS | تحقّق من أذونات الخصوصية في macOS لأتمتة Messages | امنح أذونات TCC مجددًا وأعد تشغيل عملية القناة. |
| مرسل الرسائل المباشرة محظور | `openclaw pairing list imessage` أو `openclaw pairing list bluebubbles` | وافق على الاقتران أو حدّث قائمة السماح. |
| العَرَض | أسرع فحص | الإصلاح |
| --------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------- |
| لا توجد أحداث واردة | تحقّق من إمكانية الوصول إلى Webhook/الخادم وأذونات التطبيق | أصلح عنوان Webhook URL أو حالة خادم BlueBubbles. |
| يمكن الإرسال لكن لا يوجد استقبال على macOS | تحقّق من أذونات الخصوصية في macOS لأتمتة Messages | امنح أذونات TCC من جديد وأعد تشغيل عملية القناة. |
| مرسل الرسائل الخاصة محجوب | `openclaw pairing list imessage` أو `openclaw pairing list bluebubbles` | وافق على الاقتران أو حدّث قائمة السماح. |
الاستكشاف الكامل للمشكلات:
الاستكشاف الكامل للأخطاء وإصلاحها:
- [/channels/imessage#troubleshooting](/channels/imessage#troubleshooting)
- [/channels/bluebubbles#troubleshooting](/channels/bluebubbles#troubleshooting)
- [/channels/imessage#troubleshooting](/ar/channels/imessage#troubleshooting)
- [/channels/bluebubbles#troubleshooting](/ar/channels/bluebubbles#troubleshooting)
## Signal
### مؤشرات أعطال Signal
### تواقيع أعطال Signal
| العرض | أسرع فحص | الإصلاح |
| ----------------------------- | -------------------------------------- | --------------------------------------------------------- |
| يمكن الوصول إلى daemon لكن البوت صامت | `openclaw channels status --probe` | تحقّق من عنوان URL الخاص بـ daemon/الحساب في `signal-cli` ووضع الاستقبال. |
| الرسائل المباشرة محظورة | `openclaw pairing list signal` | وافق على المرسل أو عدّل سياسة الرسائل المباشرة. |
| لا يتم تشغيل الردود في المجموعات | تحقّق من قائمة السماح للمجموعة وأنماط الإشارة | أضف المرسل/المجموعة أو خفف البوابة. |
| العَرَض | أسرع فحص | الإصلاح |
| ------------------------------- | --------------------------------- | ---------------------------------------------------------------- |
| يمكن الوصول إلى الخدمة لكن البوت صامت | `openclaw channels status --probe` | تحقّق من عنوان daemon الخاص بـ `signal-cli`/الحساب ووضع الاستقبال. |
| الرسائل الخاصة محجوبة | `openclaw pairing list signal` | وافق على المرسل أو عدّل سياسة الرسائل الخاصة. |
| لا يتم تشغيل ردود المجموعات | تحقّق من قائمة سماح المجموعة وأنماط الإشارة | أضف المرسل/المجموعة أو خفّف التقييد. |
الاستكشاف الكامل للمشكلات: [/channels/signal#troubleshooting](/channels/signal#troubleshooting)
الاستكشاف الكامل للأخطاء وإصلاحها: [/channels/signal#troubleshooting](/ar/channels/signal#troubleshooting)
## QQ Bot
### مؤشرات أعطال QQ Bot
### تواقيع أعطال QQ Bot
| العرض | أسرع فحص | الإصلاح |
| ----------------------------- | ----------------------------------------- | ----------------------------------------------------------------- |
| يرد البوت بعبارة "gone to Mars" | تحقّق من `appId` و`clientSecret` في الإعدادات | اضبط بيانات الاعتماد أو أعد تشغيل gateway. |
| لا توجد رسائل واردة | `openclaw channels status --probe` | تحقّق من بيانات الاعتماد في QQ Open Platform. |
| لم يتم تحويل الصوت إلى نص | تحقّق من إعدادات مزوّد STT | اضبط `channels.qqbot.stt` أو `tools.media.audio`. |
| الرسائل الاستباقية لا تصل | تحقّق من متطلبات التفاعل في منصة QQ | قد تحظر QQ الرسائل التي يبدأها البوت من دون تفاعل حديث. |
| العَرَض | أسرع فحص | الإصلاح |
| --------------------------------- | --------------------------------------------- | -------------------------------------------------------------------- |
| يرد البوت بعبارة "gone to Mars" | تحقّق من `appId` و`clientSecret` في الإعدادات | اضبط بيانات الاعتماد أو أعد تشغيل الـ Gateway. |
| لا توجد رسائل واردة | `openclaw channels status --probe` | تحقّق من بيانات الاعتماد على QQ Open Platform. |
| لا يتم تفريغ الصوت إلى نص | تحقّق من إعدادات مزوّد STT | اضبط `channels.qqbot.stt` أو `tools.media.audio`. |
| لا تصل الرسائل الاستباقية | تحقّق من متطلبات التفاعل في منصة QQ | قد تمنع QQ الرسائل التي يبدأها البوت من دون تفاعل حديث. |
الاستكشاف الكامل للمشكلات: [/channels/qqbot#troubleshooting](/channels/qqbot#troubleshooting)
الاستكشاف الكامل للأخطاء وإصلاحها: [/channels/qqbot#troubleshooting](/ar/channels/qqbot#troubleshooting)
## Matrix
### مؤشرات أعطال Matrix
### تواقيع أعطال Matrix
| العرض | أسرع فحص | الإصلاح |
| --------------------------------- | ---------------------------------------- | -------------------------------------------------------------------------- |
| تم تسجيل الدخول لكن يتم تجاهل رسائل الغرف | `openclaw channels status --probe` | تحقّق من `groupPolicy` وقائمة السماح للغرف وبوابة الإشارات. |
| لا تتم معالجة الرسائل المباشرة | `openclaw pairing list matrix` | وافق على المرسل أو عدّل سياسة الرسائل المباشرة. |
| الغرف المشفرة تفشل | `openclaw matrix verify status` | أعد التحقق من الجهاز، ثم افحص `openclaw matrix verify backup status`. |
| استعادة النسخة الاحتياطية معلقة/معطلة | `openclaw matrix verify backup status` | شغّل `openclaw matrix verify backup restore` أو أعد التشغيل باستخدام مفتاح استرداد. |
| يبدو bootstrap/cross-signing غير صحيح | `openclaw matrix verify bootstrap` | أصلح التخزين السري وcross-signing وحالة النسخ الاحتياطي في تمريرة واحدة. |
| العَرَض | أسرع فحص | الإصلاح |
| ----------------------------------------- | ----------------------------------- | -------------------------------------------------------------------------------- |
| تم تسجيل الدخول لكن يتم تجاهل رسائل الغرفة | `openclaw channels status --probe` | تحقّق من `groupPolicy` وقائمة سماح الغرف وتقييد الإشارة. |
| لا تتم معالجة الرسائل الخاصة | `openclaw pairing list matrix` | وافق على المرسل أو عدّل سياسة الرسائل الخاصة. |
| تفشل الغرف المشفّرة | `openclaw matrix verify status` | أعد التحقق من الجهاز، ثم افحص `openclaw matrix verify backup status`. |
| استعادة النسخة الاحتياطية معلّقة/معطّلة | `openclaw matrix verify backup status` | شغّل `openclaw matrix verify backup restore` أو أعد التشغيل باستخدام مفتاح استرداد. |
| يبدو التوقيع المتبادل/التهيئة الأولية غير صحيح | `openclaw matrix verify bootstrap` | أصلح تخزين الأسرار والتوقيع المتبادل وحالة النسخ الاحتياطي في تمريرة واحدة. |
الإعداد الكامل والإعدادات: [Matrix](/channels/matrix)
الإعداد والتهيئة الكاملان: [Matrix](/ar/channels/matrix)

View File

@ -2,32 +2,36 @@
read_when:
- توسيع qa-lab أو qa-channel
- إضافة سيناريوهات QA مدعومة من المستودع
- بناء أتمتة QA أعلى واقعية حول لوحة معلومات Gateway
summary: شكل أتمتة QA الخاصة لـ qa-lab وqa-channel والسيناريوهات المُهيأة مسبقًا وتقارير البروتوكول
- بناء أتمتة QA بدرجة واقعية أعلى حول لوحة معلومات Gateway
summary: شكل أتمتة QA الخاص لـ qa-lab وqa-channel والسيناريوهات المُهيأة مسبقًا وتقارير البروتوكول
title: أتمتة QA الشاملة من البداية إلى النهاية
x-i18n:
generated_at: "2026-04-18T07:14:55Z"
generated_at: "2026-04-20T07:29:35Z"
model: gpt-5.4
provider: openai
source_hash: adf8c5f74e8fabdc8e9fd7ecd41afce8b60354c7dd24d92ac926d3c527927cd4
source_hash: 34245ce871356caeab0d9e0eeeaa9fb4e408920a4a97ad27567fa365d8db17c7
source_path: concepts/qa-e2e-automation.md
workflow: 15
---
# أتمتة QA الشاملة من البداية إلى النهاية
تهدف حزمة QA الخاصة إلى اختبار OpenClaw بطريقة أكثر واقعية وتشبه القنوات أكثر مما يمكن أن يفعله اختبار وحدة واحد.
تهدف حزمة QA الخاصة إلى اختبار OpenClaw بطريقة أكثر واقعية وتشبه القنوات
أكثر مما يمكن أن يقدمه اختبار وحدة واحد.
الأجزاء الحالية:
المكوّنات الحالية:
- `extensions/qa-channel`: قناة رسائل اصطناعية تتضمن أسطح الرسائل الخاصة، والقنوات، وسلاسل المحادثات، والتفاعلات، والتحرير، والحذف.
- `extensions/qa-lab`: واجهة مستخدم للتصحيح وناقل QA لمراقبة النص الحواري، وحقن الرسائل الواردة، وتصدير تقرير Markdown.
- `qa/`: أصول تهيئة مدعومة من المستودع لمهمة البداية وسيناريوهات QA الأساسية.
- `extensions/qa-channel`: قناة رسائل اصطناعية بأسطح DM والقناة والخيط
والتفاعل والتحرير والحذف.
- `extensions/qa-lab`: واجهة مستخدم للتصحيح وناقل QA لمراقبة النص الحواري،
وحقن الرسائل الواردة، وتصدير تقرير Markdown.
- `qa/`: أصول تمهيدية مدعومة من المستودع لمهمة البدء وسيناريوهات QA
الأساسية.
تدفق عمل مشغّل QA الحالي هو موقع QA مكوّن من لوحتين:
تدفّق عمل مشغّل QA الحالي هو موقع QA بلوحتين:
- اليسار: لوحة معلومات Gateway (Control UI) مع الوكيل.
- اليمين: QA Lab، يعرض نصًا حواريًا شبيهًا بـ Slack وخطة السيناريو.
- اليمين: QA Lab، يعرض النص الحواري الشبيه بـ Slack وخطة السيناريو.
شغّله باستخدام:
@ -35,9 +39,12 @@ x-i18n:
pnpm qa:lab:up
```
يقوم ذلك ببناء موقع QA، وبدء مسار Gateway المدعوم بـ Docker، وكشف صفحة QA Lab حيث يمكن لمشغّل أو حلقة أتمتة إعطاء الوكيل مهمة QA، ومراقبة سلوك القناة الفعلي، وتسجيل ما نجح أو فشل أو ظل معطّلًا.
يقوم هذا ببناء موقع QA، وبدء مسار Gateway المدعوم بـ Docker، وإتاحة
صفحة QA Lab حيث يمكن لمشغّل أو لحلقة أتمتة أن يكلّف الوكيل بمهمة QA،
ويراقب سلوك القناة الحقيقي، ويسجّل ما نجح وما فشل وما بقي معطّلًا.
للحصول على تكرار أسرع لواجهة مستخدم QA Lab دون إعادة بناء صورة Docker في كل مرة، ابدأ الحزمة باستخدام حزمة QA Lab مثبّتة عبر bind mount:
للحصول على تكرار أسرع على واجهة QA Lab من دون إعادة بناء صورة Docker في كل مرة،
ابدأ الحزمة باستخدام حزمة QA Lab مركّبة عبر bind mount:
```bash
pnpm openclaw qa docker-build-image
@ -46,115 +53,165 @@ pnpm qa:lab:up:fast
pnpm qa:lab:watch
```
يبقي `qa:lab:up:fast` خدمات Docker على صورة مبنية مسبقًا ويستخدم bind mount للمسار `extensions/qa-lab/web/dist` داخل حاوية `qa-lab`. ويعيد `qa:lab:watch` بناء تلك الحزمة عند التغيير، ويُعاد تحميل المتصفح تلقائيًا عندما تتغير بصمة أصول QA Lab.
يبقي `qa:lab:up:fast` خدمات Docker على صورة مبنية مسبقًا ويستخدم bind mount
لـ `extensions/qa-lab/web/dist` داخل حاوية `qa-lab`. ويعيد `qa:lab:watch`
بناء تلك الحزمة عند التغيير، ويُعاد تحميل المتصفح تلقائيًا عندما تتغير
بصمة أصول QA Lab.
لتشغيل مسار Matrix اختباري حقيقي على مستوى النقل، شغّل:
لتشغيل مسار اختبار Matrix واقعي النقل، شغّل:
```bash
pnpm openclaw qa matrix
```
يوفّر هذا المسار خادم Tuwunel homeserver مؤقتًا داخل Docker، ويسجّل مستخدمين مؤقتين للسائق، وSUT، والمراقب، وينشئ غرفة خاصة واحدة، ثم يشغّل Plugin Matrix الحقيقي داخل child خاص بـ QA gateway. يحافظ مسار النقل الحي على ضبط إعدادات child ضمن النقل الجاري اختباره، لذا يعمل Matrix بدون `qa-channel` في إعدادات child. ويكتب أصول التقارير المنظّمة وسجل stdout/stderr المجمّع في دليل إخراج Matrix QA المحدد. لالتقاط مخرجات البناء/التشغيل الخاصة بـ `scripts/run-node.mjs` الخارجية أيضًا، اضبط `OPENCLAW_RUN_NODE_OUTPUT_LOG=<path>` إلى ملف سجل محلي داخل المستودع.
يوفّر هذا المسار خادم Tuwunel منزليًا مؤقتًا داخل Docker، ويسجّل
مستخدمين مؤقتين للسائق وSUT والمراقب، وينشئ غرفة خاصة واحدة، ثم يشغّل
Plugin Matrix الحقيقي داخل عملية فرعية QA لـ Gateway. ويحافظ مسار النقل
الحي على ضبط العملية الفرعية محصورًا ضمن النقل قيد الاختبار، لذلك يعمل
Matrix من دون `qa-channel` في ضبط العملية الفرعية. ويكتب عناصر التقرير
المنظمة وسجل stdout/stderr الموحّد في دليل إخراج Matrix QA المحدد.
ولالتقاط خرج البناء/المشغّل الخارجي `scripts/run-node.mjs` أيضًا، اضبط
`OPENCLAW_RUN_NODE_OUTPUT_LOG=<path>` إلى ملف سجل محلي في المستودع.
لتشغيل مسار Telegram اختباري حقيقي على مستوى النقل، شغّل:
لتشغيل مسار اختبار Telegram واقعي النقل، شغّل:
```bash
pnpm openclaw qa telegram
```
يستهدف هذا المسار مجموعة Telegram خاصة حقيقية واحدة بدلًا من توفير خادم مؤقت. ويتطلب `OPENCLAW_QA_TELEGRAM_GROUP_ID` و`OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` و`OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN`، بالإضافة إلى روبوتين مختلفين في المجموعة الخاصة نفسها. يجب أن يملك روبوت SUT اسم مستخدم على Telegram، وتعمل المراقبة بين الروبوتات بأفضل شكل عندما يكون Bot-to-Bot Communication Mode مفعّلًا لكلا الروبوتين في `@BotFather`.
يستهدف هذا المسار مجموعة Telegram خاصة حقيقية واحدة بدلًا من توفير
خادم مؤقت. وهو يتطلب `OPENCLAW_QA_TELEGRAM_GROUP_ID`،
و`OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN`، و
`OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN`، بالإضافة إلى
روبوتين مختلفين داخل المجموعة الخاصة نفسها. يجب أن يمتلك روبوت SUT
اسم مستخدم على Telegram، وتعمل المراقبة من روبوت إلى روبوت بأفضل شكل
عندما يكون Bot-to-Bot Communication Mode مفعّلًا لكلا الروبوتين في
`@BotFather`.
ينهي الأمر التنفيذ برمز غير صفري عند فشل أي سيناريو. استخدم `--allow-failures`
عندما تريد العناصر الناتجة من دون رمز خروج فاشل.
تتشارك مسارات النقل الحي الآن عقدًا أصغر واحدًا بدلًا من أن يخترع كلٌّ منها شكله الخاص لقائمة السيناريوهات.
تتشارك مسارات النقل الحية الآن عقدًا أصغر واحدًا بدلًا من أن يخترع كل منها
شكل قائمة السيناريوهات الخاص به:
يبقى `qa-channel` مجموعة سلوك المنتج الاصطناعية الواسعة وليس جزءًا من مصفوفة تغطية النقل الحي.
يبقى `qa-channel` مجموعة السلوكيات الاصطناعية الواسعة على مستوى المنتج،
وليس جزءًا من مصفوفة تغطية النقل الحي.
| المسار | Canary | بوابة الإشارة | حظر قائمة السماح | رد من المستوى الأعلى | استئناف بعد إعادة التشغيل | متابعة السلسلة | عزل السلسلة | مراقبة التفاعل | أمر المساعدة |
| ------ | ------ | -------------- | ----------------- | --------------------- | -------------------------- | -------------- | ------------ | ---------------- | ------------ |
| Matrix | x | x | x | x | x | x | x | x | |
| Telegram | x | | | | | | | | x |
| المسار | Canary | بوابة الإشارة | حظر قائمة السماح | رد من المستوى الأعلى | استئناف بعد إعادة التشغيل | متابعة الخيط | عزل الخيط | مراقبة التفاعل | أمر المساعدة |
| ------ | ------ | -------------- | ----------------- | --------------------- | -------------------------- | ------------ | ---------- | --------------- | ------------ |
| Matrix | x | x | x | x | x | x | x | x | |
| Telegram | x | | | | | | | | x |
يحافظ هذا على `qa-channel` كمجموعة سلوك المنتج الواسعة بينما تتشارك Matrix وTelegram ووسائط النقل الحية المستقبلية قائمة تحقق صريحة واحدة لعقد النقل.
يبقي هذا `qa-channel` كمجموعة سلوكيات واسعة على مستوى المنتج بينما تتشارك
Matrix وTelegram ووسائل النقل الحية المستقبلية قائمة تحقق صريحة واحدة
لعقد النقل.
لتشغيل مسار Linux VM مؤقت دون إدخال Docker في مسار QA، شغّل:
لتشغيل مسار Linux VM مؤقت من دون إدخال Docker في مسار QA، شغّل:
```bash
pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline
```
يقوم هذا بتشغيل ضيف Multipass جديد، وتثبيت التبعيات، وبناء OpenClaw داخل الضيف، وتشغيل `qa suite`، ثم نسخ تقرير QA والملخص المعتادين مرة أخرى إلى `.artifacts/qa-e2e/...` على المضيف.
ويعيد استخدام سلوك اختيار السيناريو نفسه الذي تستخدمه `qa suite` على المضيف.
تنفذ تشغيلات الحزمة على المضيف وMultipass عدة سيناريوهات محددة بالتوازي مع عمّال Gateway معزولين افتراضيًا، حتى 64 عاملًا أو عدد السيناريوهات المحدد. استخدم `--concurrency <count>` لضبط عدد العمّال، أو `--concurrency 1` للتنفيذ التسلسلي.
تُمرَّر في التشغيلات الحية مدخلات مصادقة QA المدعومة والعملية للضيف: مفاتيح المزوّد المعتمدة على البيئة، ومسار إعدادات مزوّد QA الحي، و`CODEX_HOME` عند توفره. أبقِ `--output-dir` تحت جذر المستودع حتى يتمكن الضيف من الكتابة مرة أخرى عبر مساحة العمل المركبة.
يُقلع هذا ضيف Multipass جديدًا، ويثبّت التبعيات، ويبني OpenClaw داخل
الضيف، ويشغّل `qa suite`، ثم ينسخ تقرير QA العادي والملخص إلى
`.artifacts/qa-e2e/...` على المضيف.
ويعيد استخدام سلوك اختيار السيناريو نفسه الذي يستخدمه `qa suite` على المضيف.
تنفّذ عمليات suite على المضيف وMultipass عدة سيناريوهات محددة بالتوازي
مع عمّال Gateway معزولين افتراضيًا. يفترض `qa-channel` درجة تزامن
افتراضية قدرها 4، مع حد أعلى بعدد السيناريوهات المحددة. استخدم
`--concurrency <count>` لضبط عدد العمّال، أو `--concurrency 1`
للتنفيذ التسلسلي.
ينهي الأمر التنفيذ برمز غير صفري عند فشل أي سيناريو. استخدم `--allow-failures`
عندما تريد العناصر الناتجة من دون رمز خروج فاشل.
تقوم التشغيلات الحية بتمرير مدخلات مصادقة QA المدعومة والعملية للضيف:
مفاتيح المزوّدات المعتمدة على env، ومسار ضبط مزوّد QA الحي، و
`CODEX_HOME` عند وجوده. أبقِ `--output-dir` داخل جذر المستودع لكي يتمكن
الضيف من الكتابة عائدًا عبر مساحة العمل المركّبة.
## الأصول المهيأة مسبقًا والمدعومة من المستودع
## البذور المدعومة من المستودع
توجد أصول التهيئة في `qa/`:
توجد أصول البذور في `qa/`:
- `qa/scenarios/index.md`
- `qa/scenarios/<theme>/*.md`
هذه موجودة عمدًا في git حتى تكون خطة QA مرئية للبشر وللوكيل معًا.
هذه الملفات موجودة عمدًا في git بحيث تكون خطة QA مرئية للبشر وللوكيل
على حد سواء.
يجب أن يظل `qa-lab` مشغّل Markdown عامًا. كل ملف Markdown للسيناريو هو مصدر الحقيقة لتشغيل اختبار واحد ويجب أن يحدد:
يجب أن يبقى `qa-lab` مشغّل Markdown عامًا. يجب أن يكون كل ملف Markdown
للسيناريو هو مصدر الحقيقة لتشغيل اختبار واحد، ويجب أن يعرّف:
- بيانات تعريف السيناريو
- بيانات تعريف اختيارية للفئة، والقدرة، والمسار، والمخاطر
- بيانات تعريف اختيارية للفئة والقدرة والمسار والمخاطر
- مراجع الوثائق والكود
- متطلبات Plugin اختيارية
- تصحيحًا اختياريًا لإعدادات Gateway
- تصحيح ضبط Gateway اختياري
- `qa-flow` القابل للتنفيذ
يُسمح لسطح التشغيل القابل لإعادة الاستخدام الذي يدعم `qa-flow` بأن يظل عامًا وعابرًا للاهتمامات. على سبيل المثال، يمكن لسيناريوهات Markdown دمج مساعدين من جانب النقل مع مساعدين من جانب المتصفح يقودون Control UI المضمّن عبر واجهة Gateway `browser.request` من دون إضافة مشغّل ذي حالات خاصة.
يُسمح لسطح وقت التشغيل القابل لإعادة الاستخدام الذي يدعم `qa-flow` بأن
يبقى عامًا وعابرًا للوظائف. على سبيل المثال، يمكن لسيناريوهات Markdown أن
تجمع بين أدوات جهة النقل وأدوات جهة المتصفح التي تقود Control UI المضمّن
عبر وصلة Gateway `browser.request` من دون إضافة مشغّل بحالة خاصة.
يجب تجميع ملفات السيناريو حسب قدرة المنتج بدلًا من مجلد شجرة المصدر. أبقِ معرّفات السيناريو ثابتة عند نقل الملفات؛ واستخدم `docsRefs` و`codeRefs` لتتبّع التنفيذ.
يجب تجميع ملفات السيناريو حسب قدرة المنتج بدلًا من مجلد شجرة المصدر.
أبقِ معرّفات السيناريوهات ثابتة عند نقل الملفات؛ استخدم `docsRefs` و`codeRefs`
لتتبّع التنفيذ.
يجب أن تبقى القائمة الأساسية واسعة بما يكفي لتغطية:
- محادثات الرسائل الخاصة والقنوات
- سلوك السلاسل
- محادثات DM والقناة
- سلوك الخيوط
- دورة حياة إجراءات الرسائل
- استدعاءات Cron
- استرجاع الذاكرة
- تبديل النماذج
- تسليم المهام إلى وكلاء فرعيين
- تبديل النموذج
- تمرير العمل إلى الوكيل الفرعي
- قراءة المستودع وقراءة الوثائق
- مهمة بناء صغيرة مثل Lobster Invaders
## مسارات محاكاة المزوّد
## مسارات مزوّدات المحاكاة
تحتوي `qa suite` على مسارين محليين لمحاكاة المزوّد:
يحتوي `qa suite` على مسارين محليين لمزوّدات المحاكاة:
- `mock-openai` هو محاكي OpenClaw الواعي بالسيناريو. ويظل مسار المحاكاة الحتمي الافتراضي لـ QA المدعوم من المستودع وبوابات التكافؤ.
- `aimock` يشغّل خادم مزوّد مدعومًا بـ AIMock لتغطية تجريبية للبروتوكول، والملفات الثابتة، والتسجيل/إعادة التشغيل، والفوضى. وهو إضافة ولا يستبدل موزّع السيناريو `mock-openai`.
- `mock-openai` هو محاكي OpenClaw الواعي بالسيناريو. ويظل مسار المحاكاة
الحتمي الافتراضي لـ QA المدعوم من المستودع وبوابات التكافؤ.
- يبدأ `aimock` خادم مزوّد مدعومًا بـ AIMock لتغطية البروتوكول والتجهيزات
والتسجيل/إعادة التشغيل والفوضى بشكل تجريبي. وهو إضافة ولا يستبدل
مرسل السيناريوهات `mock-openai`.
يوجد تنفيذ مسار المزوّد تحت `extensions/qa-lab/src/providers/`.
ويمتلك كل مزوّد إعداداته الافتراضية، وبدء خادمه المحلي، وإعدادات نموذج Gateway، واحتياجات تجهيز ملف تعريف المصادقة، وأعلام القدرات الحية/الوهمية الخاصة به. يجب أن يمر الكود المشترك للحزمة وGateway عبر سجل المزوّدين بدلًا من التفريع على أسماء المزوّدين.
ويمتلك كل مزوّد إعداداته الافتراضية، وبدء خادمه المحلي، وضبط نموذج Gateway،
واحتياجات تهيئة ملف تعريف المصادقة، وعلامات القدرات الحية/التمثيلية.
يجب أن يمر كود suite وGateway المشترك عبر سجل المزوّدات بدلًا من
التفرع بناءً على أسماء المزوّدات.
## محوّلات النقل
## مهايئات النقل
يمتلك `qa-lab` واجهة نقل عامة لسيناريوهات QA المكتوبة بـ Markdown.
ويُعد `qa-channel` أول محوّل على هذه الواجهة، لكن هدف التصميم أوسع: يجب أن تتمكن القنوات المستقبلية، الحقيقية أو الاصطناعية، من الاندماج في مشغّل الحزمة نفسه بدلًا من إضافة مشغّل QA خاص بالنقل.
يمتلك `qa-lab` وصلة نقل عامة لسيناريوهات QA في Markdown.
`qa-channel` هو أول مهايئ على تلك الوصلة، لكن هدف التصميم أوسع:
يجب أن تتمكن القنوات المستقبلية الحقيقية أو الاصطناعية من الاندماج في
مشغّل suite نفسه بدلًا من إضافة مشغّل QA خاص بالنقل.
على مستوى البنية، يكون التقسيم كالتالي:
على مستوى البنية، يكون التقسيم كما يلي:
- يمتلك `qa-lab` تنفيذ السيناريو العام، وتوازي العمّال، وكتابة الأصول، وإعداد التقارير.
- يمتلك محوّل النقل إعدادات Gateway، والجاهزية، ومراقبة الوارد والصادر، وإجراءات النقل، وحالة النقل الموحّدة.
- تحدد ملفات سيناريو Markdown تحت `qa/scenarios/` تشغيل الاختبار؛ ويقدم `qa-lab` سطح التشغيل القابل لإعادة الاستخدام الذي ينفذه.
- يمتلك `qa-lab` تنفيذ السيناريو العام، وتزامن العمّال، وكتابة العناصر الناتجة، وإعداد التقارير.
- يمتلك مهايئ النقل ضبط Gateway، والجاهزية، ومراقبة الوارد والصادر، وإجراءات النقل، وحالة النقل المطبّعة.
- تحدد ملفات سيناريوهات Markdown ضمن `qa/scenarios/` تشغيل الاختبار؛ ويوفر `qa-lab` سطح وقت التشغيل القابل لإعادة الاستخدام الذي ينفذه.
توجد إرشادات التبنّي للمشرفين الخاصة بمحوّلات القنوات الجديدة في
[الاختبار](/ar/help/testing#adding-a-channel-to-qa).
توجد إرشادات التبنّي الخاصة بالمشرفين لمهايئات القنوات الجديدة في
[Testing](/ar/help/testing#adding-a-channel-to-qa).
## إعداد التقارير
يصدّر `qa-lab` تقرير بروتوكول بصيغة Markdown من المخطط الزمني لناقل المراقبة.
يصدّر `qa-lab` تقرير بروتوكول بصيغة Markdown من الخط الزمني للناقل المُراقب.
يجب أن يجيب التقرير عن:
- ما الذي نجح
- ما الذي فشل
- ما الذي ظل معطّلًا
- ما سيناريوهات المتابعة التي تستحق الإضافة
- ما الذي بقي معطّلًا
- ما سيناريوهات المتابعة الجديرة بالإضافة
لفحوصات الشخصية والأسلوب، شغّل السيناريو نفسه عبر عدة مراجع نماذج حية واكتب تقرير Markdown مُحكَّمًا:
لفحوصات الطابع والأسلوب، شغّل السيناريو نفسه عبر عدة مراجع نماذج حية
واكتب تقرير Markdown مُحكّمًا:
```bash
pnpm openclaw qa character-eval \
@ -173,22 +230,41 @@ pnpm openclaw qa character-eval \
--judge-concurrency 16
```
يشغّل هذا الأمر عمليات child محلية لـ QA gateway، وليس Docker. يجب أن تضبط سيناريوهات تقييم الشخصية الشخصيةَ عبر `SOUL.md`، ثم تنفذ أدوار مستخدم عادية مثل الدردشة، ومساعدة مساحة العمل، ومهام الملفات الصغيرة. ويجب ألا يُخبَر النموذج المرشح بأنه قيد التقييم. يحتفظ الأمر بكل نص حواري كامل، ويسجّل إحصاءات التشغيل الأساسية، ثم يطلب من نماذج التحكيم في الوضع السريع مع استدلال `xhigh` ترتيب التشغيلات حسب الطبيعية والطابع وروح الدعابة.
استخدم `--blind-judge-models` عند مقارنة المزوّدين: إذ يستمر موجه التحكيم في الحصول على كل نص حواري وحالة تشغيل، لكن تُستبدل مراجع المرشحين بتسميات محايدة مثل `candidate-01`؛ ثم يربط التقرير التصنيفات مرة أخرى بالمراجع الحقيقية بعد التحليل.
تستخدم تشغيلات المرشحين افتراضيًا مستوى تفكير `high`، مع `xhigh` لنماذج OpenAI التي تدعمه. يمكنك تجاوز مرشح محدد ضمنيًا باستخدام
`--model provider/model,thinking=<level>`. ولا يزال `--thinking <level>` يضبط قيمة احتياطية عامة، ويُحتفظ بالنموذج الأقدم `--model-thinking <provider/model=level>` من أجل التوافق.
تستخدم مراجع المرشحين الخاصة بـ OpenAI الوضع السريع افتراضيًا حتى تُستخدم المعالجة ذات الأولوية حيثما كان المزوّد يدعمها. أضف `,fast` أو `,no-fast` أو `,fast=false` ضمنيًا عندما يحتاج مرشح واحد أو حكم واحد إلى تجاوز. مرّر `--fast` فقط عندما تريد فرض الوضع السريع لكل نموذج مرشح. وتُسجَّل مدد المرشحين والحكام في التقرير لتحليل المقاييس، لكن موجهات التحكيم تنص صراحةً على عدم الترتيب حسب السرعة.
تستخدم تشغيلات نماذج المرشحين والحكام افتراضيًا توازيًا مقداره 16. خفّض
`--concurrency` أو `--judge-concurrency` عندما تجعل حدود المزوّد أو ضغط Gateway المحلي التشغيل مشوشًا أكثر من اللازم.
عند عدم تمرير أي `--model` للمرشح، يستخدم تقييم الشخصية افتراضيًا
`openai/gpt-5.4` و`openai/gpt-5.2` و`openai/gpt-5` و`anthropic/claude-opus-4-6` و`anthropic/claude-sonnet-4-6` و`zai/glm-5.1` و`moonshot/kimi-k2.5` و
`google/gemini-3.1-pro-preview`.
وعند عدم تمرير أي `--judge-model`، تكون النماذج الحاكمة الافتراضية هي
يشغّل هذا الأمر عمليات QA Gateway فرعية محلية، وليس Docker. يجب أن تضبط
سيناريوهات تقييم الطابع الشخصية من خلال `SOUL.md`، ثم تشغّل أدوار مستخدم
اعتيادية مثل الدردشة ومساعدة مساحة العمل ومهام الملفات الصغيرة. يجب ألّا
يُبلَّغ النموذج المرشح بأنه قيد التقييم. يحافظ الأمر على كل نص حواري كامل،
ويسجل إحصاءات التشغيل الأساسية، ثم يطلب من نماذج التحكيم في الوضع السريع
مع تفكير `xhigh` ترتيب التشغيلات حسب الطبيعية والانطباع العام والفكاهة.
استخدم `--blind-judge-models` عند مقارنة المزوّدات: يظل موجّه التحكيم
يتلقى كل نص حواري وحالة تشغيل، لكن مراجع المرشحين تُستبدل بوسوم محايدة
مثل `candidate-01`؛ ويعيد التقرير ربط الترتيب بالمراجع الحقيقية بعد
التحليل.
تستخدم تشغيلات المرشحين افتراضيًا تفكير `high`، مع `xhigh` لنماذج OpenAI
التي تدعمه. يمكنك تجاوز مرشح محدد ضمنيًا باستخدام
`--model provider/model,thinking=<level>`. ولا يزال `--thinking <level>`
يضبط قيمة احتياطية عامة، كما يُحتفظ بالنموذج الأقدم
`--model-thinking <provider/model=level>` من أجل التوافق.
تستخدم مراجع مرشحي OpenAI الوضع السريع افتراضيًا بحيث تُستخدم المعالجة ذات
الأولوية عندما يدعمها المزوّد. أضف `,fast` أو `,no-fast` أو `,fast=false`
ضمنيًا عندما يحتاج مرشح أو حكم واحد إلى تجاوز. مرّر `--fast` فقط عندما تريد
فرض الوضع السريع على كل نموذج مرشح. تُسجَّل مدد المرشحين والحكّام في التقرير
من أجل تحليل المقارنة المعيارية، لكن موجّهات الحكّام تنص صراحة على عدم
الترتيب حسب السرعة.
يستخدم كل من تشغيلات النماذج المرشحة والحكّام درجة تزامن 16 افتراضيًا.
خفّض `--concurrency` أو `--judge-concurrency` عندما تجعل حدود المزوّد أو ضغط
Gateway المحلي التشغيل شديد الضجيج.
عند عدم تمرير أي `--model` مرشح، يستخدم تقييم الطابع افتراضيًا
`openai/gpt-5.4` و`openai/gpt-5.2` و`openai/gpt-5` و`anthropic/claude-opus-4-6`،
و`anthropic/claude-sonnet-4-6`، و`zai/glm-5.1`،
و`moonshot/kimi-k2.5`، و
`google/gemini-3.1-pro-preview` عندما لا يتم تمرير `--model`.
وعند عدم تمرير أي `--judge-model`، تكون القيم الافتراضية للحكّام:
`openai/gpt-5.4,thinking=xhigh,fast` و
`anthropic/claude-opus-4-6,thinking=high`.
## الوثائق ذات الصلة
- [الاختبار](/ar/help/testing)
- [قناة QA](/ar/channels/qa-channel)
- [لوحة المعلومات](/web/dashboard)
- [Testing](/ar/help/testing)
- [QA Channel](/ar/channels/qa-channel)
- [Dashboard](/web/dashboard)

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +1,22 @@
---
read_when:
- إضافة ترحيلات doctor أو تعديلها
- إدخال تغييرات جذرية على الإعدادات
summary: 'أمر Doctor: فحوصات السلامة، وترحيلات الإعدادات، وخطوات الإصلاح'
- إضافة أو تعديل ترحيلات doctor
- إدخال تغييرات جذرية على التهيئة
summary: 'أمر Doctor: فحوصات السلامة، وترحيلات التهيئة، وخطوات الإصلاح'
title: Doctor
x-i18n:
generated_at: "2026-04-09T01:29:20Z"
generated_at: "2026-04-20T07:29:54Z"
model: gpt-5.4
provider: openai
source_hash: 75d321bd1ad0e16c29f2382e249c51edfc3a8d33b55bdceea39e7dbcd4901fce
source_hash: 61a5e01a306058c49be6095f7c8082d779a55d63cf3b5f4c4096173943faf51b
source_path: gateway/doctor.md
workflow: 15
---
# Doctor
يُعد `openclaw doctor` أداة الإصلاح + الترحيل في OpenClaw. فهو يصلح
الإعدادات/الحالة القديمة، ويفحص السلامة، ويوفر خطوات إصلاح عملية.
`openclaw doctor` هي أداة الإصلاح + الترحيل في OpenClaw. تقوم بإصلاح
التهيئة/الحالة القديمة، وتتحقق من السلامة، وتوفّر خطوات إصلاح عملية.
## البدء السريع
@ -30,34 +30,34 @@ openclaw doctor
openclaw doctor --yes
```
اقبل القيم الافتراضية من دون مطالبة (بما في ذلك خطوات إصلاح إعادة التشغيل/الخدمة/بيئة sandbox عند الاقتضاء).
اقبل القيم الافتراضية بدون مطالبة (بما في ذلك خطوات إصلاح إعادة التشغيل/الخدمة/العزل عند الاقتضاء).
```bash
openclaw doctor --repair
```
طبّق الإصلاحات الموصى بها من دون مطالبة (إصلاحات + عمليات إعادة تشغيل حيث يكون ذلك آمنًا).
طبّق الإصلاحات الموصى بها بدون مطالبة (الإصلاحات + إعادة التشغيل حيث يكون ذلك آمنًا).
```bash
openclaw doctor --repair --force
```
طبّق الإصلاحات القوية أيضًا (يستبدل إعدادات supervisor المخصصة).
طبّق أيضًا الإصلاحات القوية (يستبدل تهيئات المشرف المخصصة).
```bash
openclaw doctor --non-interactive
```
شغّل بدون مطالبات وطبّق فقط الترحيلات الآمنة (تطبيع الإعدادات + نقل الحالة على القرص). يتخطى إجراءات إعادة التشغيل/الخدمة/بيئة sandbox التي تتطلب تأكيدًا بشريًا.
تعمل ترحيلات الحالة القديمة تلقائيًا عند اكتشافها.
شغّل بدون مطالبات وطبّق فقط الترحيلات الآمنة (تطبيع التهيئة + نقل الحالة على القرص). يتخطى إجراءات إعادة التشغيل/الخدمة/العزل التي تتطلب تأكيدًا بشريًا.
تُشغَّل ترحيلات الحالة القديمة تلقائيًا عند اكتشافها.
```bash
openclaw doctor --deep
```
افحص خدمات النظام لاكتشاف تثبيتات Gateway إضافية (launchd/systemd/schtasks).
افحص خدمات النظام بحثًا عن تثبيتات Gateway إضافية (launchd/systemd/schtasks).
إذا أردت مراجعة التغييرات قبل الكتابة، فافتح ملف الإعدادات أولًا:
إذا أردت مراجعة التغييرات قبل الكتابة، افتح ملف التهيئة أولًا:
```bash
cat ~/.openclaw/openclaw.json
@ -65,108 +65,106 @@ cat ~/.openclaw/openclaw.json
## ما الذي يفعله (ملخص)
- تحديث اختياري قبل التنفيذ لتثبيتات git (تفاعلي فقط).
- تحديث اختياري قبل التشغيل لتثبيتات git (في الوضع التفاعلي فقط).
- فحص حداثة بروتوكول واجهة المستخدم (يعيد بناء Control UI عندما يكون مخطط البروتوكول أحدث).
- فحص السلامة + مطالبة بإعادة التشغيل.
- ملخص حالة Skills (مؤهلة/مفقودة/محجوبة) وحالة الإضافات.
- تطبيع الإعدادات للقيم القديمة.
- ترحيل إعدادات Talk من الحقول المسطحة القديمة `talk.*` إلى `talk.provider` + `talk.providers.<provider>`.
- فحوصات ترحيل المتصفح لإعدادات إضافة Chrome القديمة وجهوزية Chrome MCP.
- تحذيرات تجاوز موفّر OpenCode (`models.providers.opencode` / `models.providers.opencode-go`).
- ملخص حالة Skills (مؤهلة/مفقودة/محجوبة) وحالة Plugin.
- تطبيع التهيئة للقيم القديمة.
- ترحيل تهيئة Talk من حقول `talk.*` المسطحة القديمة إلى `talk.provider` + `talk.providers.<provider>`.
- فحوصات ترحيل المتصفح لتهيئات Chrome extension القديمة وجاهزية Chrome MCP.
- تحذيرات تجاوز OpenCode provider (`models.providers.opencode` / `models.providers.opencode-go`).
- تحذيرات حجب Codex OAuth (`models.providers.openai-codex`).
- فحص متطلبات OAuth TLS لملفات OpenAI Codex OAuth التعريفية.
- ترحيل الحالة القديمة على القرص (sessions/دليل agent/مصادقة WhatsApp).
- ترحيل مفتاح عقد بيان plugin القديم (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders``contracts`).
- ترحيل مخزن cron القديم (`jobId`, `schedule.cron`, حقول delivery/payload العلوية، و`provider` داخل payload، ووظائف fallback للويب هوك البسيطة `notify: true`).
- فحص ملفات قفل الجلسات وتنظيف الأقفال القديمة.
- فحوصات سلامة الحالة والصلاحيات (الجلسات، والسجلات، ودليل الحالة).
- فحوصات صلاحيات ملف الإعدادات (`chmod 600`) عند التشغيل محليًا.
- سلامة مصادقة النماذج: يفحص انتهاء OAuth، ويمكنه تحديث الرموز الموشكة على الانتهاء، ويبلغ عن حالات التهدئة/التعطيل لملفات تعريف المصادقة.
- اكتشاف دليل مساحة عمل إضافي (`~/openclaw`).
- إصلاح صورة sandbox عند تفعيل العزل.
- ترحيل الخدمة القديمة واكتشاف Gateway إضافي.
- ترحيل الحالة القديمة لقناة Matrix (في وضع `--fix` / `--repair`).
- فحوصات وقت تشغيل Gateway (الخدمة مثبّتة ولكنها لا تعمل؛ تسمية launchd مخزنة مؤقتًا).
- تحذيرات حالة القنوات (يتم فحصها من Gateway الجاري تشغيله).
- تدقيق إعدادات supervisor (launchd/systemd/schtasks) مع إصلاح اختياري.
- فحوصات أفضل ممارسات وقت تشغيل Gateway (Node مقابل Bun، ومسارات مديري الإصدارات).
- تشخيص تعارض منفذ Gateway (الافتراضي `18789`).
- تحذيرات أمنية لسياسات الرسائل الخاصة المفتوحة.
- فحوصات مصادقة Gateway لوضع الرمز المحلي (يوفر إنشاء رمز عندما لا يوجد مصدر رمز؛ ولا يستبدل إعدادات SecretRef الخاصة بالرمز).
- فحص متطلبات OAuth TLS لملفات تعريف OpenAI Codex OAuth.
- ترحيل الحالة القديمة على القرص (الجلسات/دليل العامل/مصادقة WhatsApp).
- ترحيل مفتاح عقد Plugin manifest القديم (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders``contracts`).
- ترحيل مخزن Cron القديم (`jobId`, `schedule.cron`, وحقول delivery/payload العلوية، و`provider` داخل payload، ووظائف Webhook الاحتياطية البسيطة `notify: true`).
- فحص ملفات قفل الجلسة وتنظيف الأقفال القديمة.
- فحوصات سلامة الحالة والصلاحيات (الجلسات، والنصوص المفرغة، ودليل الحالة).
- فحوصات صلاحيات ملف التهيئة (`chmod 600`) عند التشغيل محليًا.
- سلامة مصادقة النموذج: يتحقق من انتهاء OAuth، ويمكنه تحديث الرموز المميزة التي توشك على الانتهاء، ويعرض حالات التهدئة/التعطيل لملفات تعريف المصادقة.
- اكتشاف دليل workspace إضافي (`~/openclaw`).
- إصلاح صورة العزل عندما يكون sandboxing مفعّلًا.
- ترحيل الخدمة القديمة واكتشاف Gateways إضافية.
- ترحيل حالة Matrix channel القديمة (في وضع `--fix` / `--repair`).
- فحوصات وقت تشغيل Gateway (الخدمة مثبتة لكنها لا تعمل؛ تسمية launchd مخزنة مؤقتًا).
- تحذيرات حالة القنوات (يتم فحصها من Gateway العامل).
- تدقيق تهيئة المشرف (launchd/systemd/schtasks) مع إصلاح اختياري.
- فحوصات أفضل ممارسات وقت تشغيل Gateway (Node مقابل Bun، ومسارات مدير الإصدارات).
- تشخيصات تعارض منفذ Gateway (الافتراضي `18789`).
- تحذيرات أمنية لسياسات الرسائل المباشرة المفتوحة.
- فحوصات مصادقة Gateway لوضع الرمز المحلي (يعرض إنشاء رمز عند عدم وجود مصدر رمز؛ ولا يستبدل تهيئات token SecretRef).
- اكتشاف مشاكل إقران الأجهزة (طلبات الإقران الأولى المعلقة، وترقيات الدور/النطاق المعلقة، وانحراف cache رموز الأجهزة المحلية القديمة، وانحراف المصادقة في السجلات المقترنة).
- فحص `systemd linger` على Linux.
- فحص حجم ملف تمهيد مساحة العمل (تحذيرات الاقتطاع/الاقتراب من الحد لملفات السياق).
- فحص حالة الإكمال الصدفي والتثبيت/الترقية التلقائيين.
- فحص جاهزية موفّر embedding للبحث في الذاكرة (نموذج محلي، أو مفتاح API بعيد، أو ملف QMD ثنائي).
- فحوصات تثبيت المصدر (عدم تطابق مساحة عمل pnpm، وغياب أصول UI، وغياب ملف tsx الثنائي).
- يكتب الإعدادات المحدّثة + بيانات تعريف المعالج.
- فحص حجم ملف bootstrap الخاص بـ workspace (تحذيرات القطع/الاقتراب من الحد الأقصى لملفات السياق).
- فحص حالة shell completion والتثبيت/الترقية التلقائية.
- فحص جاهزية موفّر embedding للبحث في الذاكرة (نموذج محلي، أو مفتاح API بعيد، أو ثنائي QMD).
- فحوصات تثبيت المصدر (عدم تطابق pnpm workspace، وأصول UI المفقودة، وملف tsx الثنائي المفقود).
- يكتب التهيئة المحدّثة + بيانات wizard الوصفية.
## الإكمال الرجعي وإعادة الضبط في Dreams UI
## الإكمال والتصفير في واجهة Dreams UI
يتضمن مشهد Dreams في Control UI إجراءات **Backfill** و**Reset** و**Clear Grounded**
لسير العمل الخاص بالأحلام المرتكزة. تستخدم هذه الإجراءات
أساليب RPC على نمط doctor في Gateway، لكنها **ليست** جزءًا من إصلاح/ترحيل
CLI الخاص بـ `openclaw doctor`.
لسير عمل grounded dreaming. تستخدم هذه الإجراءات أساليب RPC بأسلوب doctor في
Gateway، لكنها **ليست** جزءًا من إصلاح/ترحيل CLI الخاص بـ `openclaw doctor`.
ما الذي تفعله:
- يفحص **Backfill** ملفات `memory/YYYY-MM-DD.md` التاريخية في
مساحة العمل النشطة، ويشغّل مرور يوميات REM المرتكزة، ويكتب إدخالات
إكمال رجعي قابلة للعكس في `DREAMS.md`.
- يزيل **Reset** فقط إدخالات يوميات الإكمال الرجعي المعلَّمة من `DREAMS.md`.
- يزيل **Clear Grounded** فقط الإدخالات المرحلية قصيرة الأجل المرتكزة فقط
التي جاءت من إعادة تشغيل تاريخية ولم تراكم بعد استدعاءً حيًا أو
دعمًا يوميًا.
- يقوم **Backfill** بفحص ملفات `memory/YYYY-MM-DD.md` التاريخية في
workspace النشط، ويشغّل تمرير grounded REM diary، ويكتب إدخالات backfill
قابلة للعكس داخل `DREAMS.md`.
- يقوم **Reset** بإزالة إدخالات diary ذات backfill المعلّمة فقط من `DREAMS.md`.
- يقوم **Clear Grounded** بإزالة الإدخالات المرحلية grounded-only قصيرة الأمد فقط
التي جاءت من إعادة تشغيل تاريخية ولم تراكم بعد استدعاءً حيًا أو دعمًا يوميًا.
ما الذي لا تفعله بمفردها:
ما الذي **لا** تفعله بمفردها:
- لا تعدّل `MEMORY.md`
- لا تشغّل ترحيلات doctor الكاملة
- لا ترحّل المرشحين المرتكزين تلقائيًا إلى مخزن الترقية قصير الأجل الحي
ما لم تشغّل صراحةً مسار CLI المرحلي أولًا
- لا ترحّل المرشحين grounded تلقائيًا إلى مخزن الترقية الحي قصير الأمد
إلا إذا شغّلت مسار CLI المرحلي أولًا صراحةً
إذا أردت أن تؤثر إعادة التشغيل التاريخية المرتكزة في
مسار الترقية العميق المعتاد، فاستخدم مسار CLI بدلًا من ذلك:
إذا كنت تريد أن تؤثر إعادة التشغيل التاريخية grounded في مسار الترقية العميق
الاعتيادي، فاستخدم تدفق CLI بدلًا من ذلك:
```bash
openclaw memory rem-backfill --path ./memory --stage-short-term
```
يؤدي ذلك إلى ترحيل المرشحين الدائمين المرتكزين إلى مخزن الأحلام قصير الأجل
مع إبقاء `DREAMS.md` كسطح للمراجعة.
يؤدي ذلك إلى ترحيل المرشحين الدائمين grounded إلى مخزن dreaming قصير الأمد مع
الإبقاء على `DREAMS.md` كسطح مراجعة.
## السلوك المفصل والمبررات
### 0) تحديث اختياري (تثبيتات git)
إذا كان هذا checkout من git وكان doctor يعمل بشكل تفاعلي، فإنه يعرض
إذا كان هذا checkout من git وكان doctor يعمل تفاعليًا، فسيعرض
التحديث (fetch/rebase/build) قبل تشغيل doctor.
### 1) تطبيع الإعدادات
### 1) تطبيع التهيئة
إذا كانت الإعدادات تحتوي على أشكال قيم قديمة (مثل `messages.ackReaction`
من دون تجاوز خاص بالقناة)، فإن doctor يطبّعها إلى
إذا كانت التهيئة تحتوي على أشكال قيم قديمة (على سبيل المثال `messages.ackReaction`
من دون تجاوز خاص بقناة)، فإن doctor يطبعها إلى
المخطط الحالي.
ويشمل ذلك حقول Talk المسطحة القديمة. فالإعدادات العامة الحالية لـ Talk هي
`talk.provider` + `talk.providers.<provider>`. ويعيد doctor كتابة
الأشكال القديمة مثل
يشمل ذلك حقول Talk المسطحة القديمة. تهيئة Talk العامة الحالية هي
`talk.provider` + `talk.providers.<provider>`. يعيد doctor كتابة أشكال
`talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` /
`talk.apiKey` إلى خريطة الموفّر.
`talk.apiKey` القديمة إلى خريطة provider.
### 2) ترحيلات مفاتيح الإعدادات القديمة
### 2) ترحيلات مفاتيح التهيئة القديمة
عندما تحتوي الإعدادات على مفاتيح مهجورة، ترفض الأوامر الأخرى التشغيل وتطلب
عندما تحتوي التهيئة على مفاتيح مهملة، ترفض الأوامر الأخرى التشغيل وتطلب
منك تشغيل `openclaw doctor`.
سيقوم Doctor بما يلي:
سيقوم doctor بما يلي:
- شرح المفاتيح القديمة التي تم العثور عليها.
- شرح المفاتيح القديمة التي عُثر عليها.
- عرض الترحيل الذي طبّقه.
- إعادة كتابة `~/.openclaw/openclaw.json` بالمخطط المحدّث.
كما أن Gateway يشغّل ترحيلات doctor تلقائيًا عند بدء التشغيل عندما يكتشف
تنسيق إعدادات قديمًا، بحيث يتم إصلاح الإعدادات القديمة من دون تدخل يدوي.
تتم معالجة ترحيلات مخزن وظائف Cron بواسطة `openclaw doctor --fix`.
يشغّل Gateway أيضًا ترحيلات doctor تلقائيًا عند بدء التشغيل عندما يكتشف
تنسيق تهيئة قديمًا، بحيث تُصلَح التهيئات القديمة دون تدخل يدوي.
تُعالَج ترحيلات مخزن وظائف Cron بواسطة `openclaw doctor --fix`.
الترحيلات الحالية:
@ -175,9 +173,9 @@ openclaw memory rem-backfill --path ./memory --stage-short-term
- `routing.groupChat.historyLimit``messages.groupChat.historyLimit`
- `routing.groupChat.mentionPatterns``messages.groupChat.mentionPatterns`
- `routing.queue``messages.queue`
- `routing.bindings``bindings` في المستوى الأعلى
- `routing.bindings``bindings` من المستوى الأعلى
- `routing.agents`/`routing.defaultAgentId` → `agents.list` + `agents.list[].default`
- الحقول القديمة `talk.voiceId`/`talk.voiceAliases`/`talk.modelId`/`talk.outputFormat`/`talk.apiKey` → `talk.provider` + `talk.providers.<provider>`
- `talk.voiceId`/`talk.voiceAliases`/`talk.modelId`/`talk.outputFormat`/`talk.apiKey` القديمة`talk.provider` + `talk.providers.<provider>`
- `routing.agentToAgent``tools.agentToAgent`
- `routing.transcribeAudio``tools.media.audio.models`
- `messages.tts.<provider>` (`openai`/`elevenlabs`/`microsoft`/`edge`) → `messages.tts.providers.<provider>`
@ -190,7 +188,7 @@ openclaw memory rem-backfill --path ./memory --stage-short-term
- `plugins.entries.voice-call.config.streaming.openaiApiKey|sttModel|silenceDurationMs|vadThreshold`
`plugins.entries.voice-call.config.streaming.providers.openai.*`
- `bindings[].match.accountID``bindings[].match.accountId`
- بالنسبة إلى القنوات التي تحتوي على `accounts` مسماة ولكن لا تزال فيها قيم قنوات علوية لحساب واحد، انقل تلك القيم ذات النطاق الحسابي إلى الحساب المُرقّى المختار لتلك القناة (`accounts.default` لمعظم القنوات؛ ويمكن لـ Matrix الحفاظ على هدف مسمى/افتراضي مطابق موجود)
- بالنسبة إلى القنوات التي تحتوي على `accounts` مسماة مع بقاء قيم قناة أحادية الحساب على المستوى الأعلى، انقل هذه القيم ذات النطاق الحسابي إلى الحساب المُرقّى المختار لتلك القناة (`accounts.default` لمعظم القنوات؛ ويمكن لـ Matrix الاحتفاظ بهدف مسمى/افتراضي مطابق موجود)
- `identity``agents.list[].identity`
- `agent.*``agents.defaults` + `tools.*` (tools/elevated/exec/sandbox/subagents)
- `agent.model`/`allowedModels`/`modelAliases`/`modelFallbacks`/`imageModelFallbacks`
@ -199,355 +197,383 @@ openclaw memory rem-backfill --path ./memory --stage-short-term
- `browser.profiles.*.driver: "extension"``"existing-session"`
- إزالة `browser.relayBindHost` (إعداد relay قديم للإضافة)
وتشمل تحذيرات Doctor أيضًا إرشادات الافتراضي للحسابات للقنوات متعددة الحسابات:
تتضمن تحذيرات doctor أيضًا إرشادات حول الحساب الافتراضي للقنوات متعددة الحسابات:
- إذا تم إعداد إدخالين أو أكثر في `channels.<channel>.accounts` من دون `channels.<channel>.defaultAccount` أو `accounts.default`، يحذر doctor من أن التوجيه الاحتياطي قد يختار حسابًا غير متوقع.
- إذا تم ضبط `channels.<channel>.defaultAccount` على معرّف حساب غير معروف، يحذر doctor ويسرد معرّفات الحسابات المهيأة.
- إذا تم ضبط إدخالين أو أكثر في `channels.<channel>.accounts` من دون `channels.<channel>.defaultAccount` أو `accounts.default`، فسيحذر doctor من أن توجيه الرجوع يمكن أن يختار حسابًا غير متوقع.
- إذا تم ضبط `channels.<channel>.defaultAccount` على معرّف حساب غير معروف، فسيحذر doctor ويعرض معرّفات الحسابات المضبوطة.
### 2b) تجاوزات موفّر OpenCode
### 2b) تجاوزات OpenCode provider
إذا أضفت يدويًا `models.providers.opencode` أو `opencode-zen` أو `opencode-go`،
فإن ذلك يتجاوز فهرس OpenCode المضمّن من `@mariozechner/pi-ai`.
وقد يفرض ذلك استخدام واجهة API خاطئة للنماذج أو يجعل التكاليف صفرًا. يحذر doctor حتى تتمكن
من إزالة التجاوز واستعادة توجيه API + التكاليف لكل نموذج.
إذا أضفت `models.providers.opencode` أو `opencode-zen` أو `opencode-go`
يدويًا، فهذا يتجاوز كتالوج OpenCode المدمج من `@mariozechner/pi-ai`.
قد يؤدي ذلك إلى فرض النماذج على API خاطئ أو تصفير التكاليف. يحذر doctor كي
تتمكن من إزالة هذا التجاوز واستعادة توجيه API والتكاليف لكل نموذج.
### 2c) ترحيل المتصفح وجهوزية Chrome MCP
### 2c) ترحيل المتصفح وجاهزية Chrome MCP
إذا كانت إعدادات المتصفح لا تزال تشير إلى مسار إضافة Chrome الذي أُزيل، فإن doctor
يطبعها إلى نموذج الربط الحالي لـ Chrome MCP المحلي على المضيف:
إذا كانت تهيئة المتصفح ما تزال تشير إلى مسار Chrome extension الذي أُزيل، فسيقوم doctor
بتطبيعها إلى نموذج الإرفاق المحلي بالمضيف الحالي لـ Chrome MCP:
- `browser.profiles.*.driver: "extension"` تصبح `"existing-session"`
- تتم إزالة `browser.relayBindHost`
كما يدقق doctor مسار Chrome MCP المحلي على المضيف عندما تستخدم
`defaultProfile: "user"` أو ملف تعريف `existing-session` مهيأ:
كما يدقق doctor مسار Chrome MCP المحلي على المضيف عندما تستخدم `defaultProfile:
"user"` أو ملف `existing-session` مضبوط:
- يفحص ما إذا كان Google Chrome مثبتًا على نفس المضيف لملفات التعريف
ذات الاتصال التلقائي الافتراضي
- يفحص إصدار Chrome المكتشف ويحذر عندما يكون أقل من Chrome 144
- يذكّرك بتمكين التنقيح عن بُعد في صفحة فحص المتصفح (مثل
- يتحقق مما إذا كان Google Chrome مثبتًا على المضيف نفسه لملفات
التعريف ذات الاتصال التلقائي الافتراضي
- يتحقق من إصدار Chrome المكتشف ويحذر عندما يكون أقل من Chrome 144
- يذكّرك بتمكين التصحيح عن بُعد في صفحة فحص المتصفح (مثل
`chrome://inspect/#remote-debugging` أو `brave://inspect/#remote-debugging`
أو `edge://inspect/#remote-debugging`)
لا يمكن لـ Doctor تمكين الإعداد من جهة Chrome نيابةً عنك. ولا يزال Chrome MCP المحلي على المضيف
لا يمكن لـ doctor تمكين إعداد Chrome هذا نيابةً عنك. لا يزال Chrome MCP المحلي
يتطلب ما يلي:
- متصفحًا قائمًا على Chromium بإصدار 144+ على مضيف gateway/node
- أن يكون المتصفح قيد التشغيل محليًا
- تمكين التنقيح عن بُعد في ذلك المتصفح
- الموافقة على أول مطالبة موافقة على الربط في المتصفح
- متصفحًا مبنيًا على Chromium بإصدار 144+ على مضيف gateway/node
- تشغيل المتصفح محليًا
- تمكين التصحيح عن بُعد في ذلك المتصفح
- الموافقة على أول مطالبة موافقة على الإرفاق في المتصفح
الجهوزية هنا تتعلق فقط بمتطلبات الربط المحلي. ويحتفظ existing-session
بحدود مسار Chrome MCP الحالية؛ أما المسارات المتقدمة مثل `responsebody` وتصدير PDF
واعتراض التنزيلات والإجراءات الدفعية فما تزال تتطلب
متصفحًا مُدارًا أو ملف تعريف CDP خامًا.
الجاهزية هنا تتعلق فقط بمتطلبات الإرفاق المحلي. يحتفظ existing-session
بحدود مسارات Chrome MCP الحالية؛ وما تزال المسارات المتقدمة مثل `responsebody` وتصدير PDF
واعتراض التنزيل وإجراءات الدُفعات تتطلب متصفحًا مُدارًا
أو ملف CDP خامًا.
لا ينطبق هذا الفحص على تدفقات Docker أو sandbox أو remote-browser أو غيرها
من التدفقات عديمة الواجهة. فهي تواصل استخدام CDP الخام.
لا ينطبق هذا الفحص على تدفقات Docker أو sandbox أو remote-browser أو غيرها من
التدفقات عديمة الواجهة. فهذه تستمر في استخدام CDP الخام.
### 2d) متطلبات OAuth TLS
عند إعداد ملف تعريف OpenAI Codex OAuth، يفحص doctor نقطة نهاية
تفويض OpenAI للتحقق من أن حزمة TLS المحلية لـ Node/OpenSSL يمكنها
التحقق من سلسلة الشهادات. إذا فشل الفحص بخطأ شهادة (مثل
`UNABLE_TO_GET_ISSUER_CERT_LOCALLY` أو شهادة منتهية أو شهادة موقعة ذاتيًا)،
يطبع doctor إرشادات إصلاح خاصة بالمنصة. وعلى macOS مع Node من Homebrew،
يكون الإصلاح عادةً `brew postinstall ca-certificates`. ومع `--deep`، يعمل
الفحص حتى إذا كان Gateway سليمًا.
عند ضبط ملف تعريف OpenAI Codex OAuth، يجري doctor فحصًا لنقطة
تفويض OpenAI للتحقق من أن مكدس TLS المحلي الخاص بـ Node/OpenSSL يمكنه
التحقق من سلسلة الشهادات. إذا فشل الفحص بسبب خطأ شهادة (على سبيل المثال
`UNABLE_TO_GET_ISSUER_CERT_LOCALLY` أو شهادة منتهية الصلاحية أو شهادة موقعة ذاتيًا)،
فسيطبع doctor إرشادات إصلاح خاصة بالمنصة. على macOS مع Homebrew Node، يكون
الإصلاح عادةً `brew postinstall ca-certificates`. ومع `--deep`، يُشغَّل الفحص
حتى إذا كان Gateway سليمًا.
### 2c) تجاوزات موفّر Codex OAuth
### 2c) تجاوزات Codex OAuth provider
إذا كنت قد أضفت سابقًا إعدادات نقل OpenAI قديمة ضمن
`models.providers.openai-codex`، فقد تحجب مسار
موفّر Codex OAuth المضمّن الذي تستخدمه الإصدارات الأحدث تلقائيًا. ويحذر
doctor عندما يرى إعدادات النقل القديمة هذه إلى جانب Codex OAuth حتى
تتمكن من إزالة أو إعادة كتابة تجاوز النقل القديم واستعادة
سلوك التوجيه/الاحتياطيات المضمّن. وما تزال الوكلاء المخصصة والتجاوزات
المعتمدة على الرؤوس فقط مدعومة ولا تطلق هذا التحذير.
إذا كنت قد أضفت سابقًا إعدادات نقل OpenAI القديمة تحت
`models.providers.openai-codex`، فقد تحجب مسار Codex OAuth provider
المدمج الذي تستخدمه الإصدارات الأحدث تلقائيًا. يحذر doctor عندما يرى
إعدادات النقل القديمة تلك إلى جانب Codex OAuth حتى تتمكن من إزالة أو إعادة كتابة
تجاوز النقل القديم واستعادة سلوك التوجيه/الرجوع المدمج.
لا تزال الوكلاء المخصصة والتجاوزات المعتمدة على الترويسات فقط مدعومة ولا
تؤدي إلى هذا التحذير.
### 3) ترحيلات الحالة القديمة (تخطيط القرص)
يمكن لـ Doctor ترحيل التخطيطات القديمة على القرص إلى البنية الحالية:
يمكن لـ doctor ترحيل التخطيطات الأقدم على القرص إلى البنية الحالية:
- مخزن الجلسات + السجلات:
- مخزن الجلسات + النصوص المفرغة:
- من `~/.openclaw/sessions/` إلى `~/.openclaw/agents/<agentId>/sessions/`
- دليل Agent:
- دليل العامل:
- من `~/.openclaw/agent/` إلى `~/.openclaw/agents/<agentId>/agent/`
- حالة مصادقة WhatsApp (Baileys):
- من `~/.openclaw/credentials/*.json` القديمة (باستثناء `oauth.json`)
- إلى `~/.openclaw/credentials/whatsapp/<accountId>/...` (معرّف الحساب الافتراضي: `default`)
هذه الترحيلات تتم بأفضل جهد وهي idempotent؛ وسيُصدر doctor تحذيرات عندما
يترك أي مجلدات قديمة خلفه كنسخ احتياطية. كما أن Gateway/CLI يرحّل
الجلسات القديمة + دليل agent تلقائيًا عند بدء التشغيل بحيث تهبط
السجلات/المصادقة/النماذج في المسار الخاص بكل agent من دون تشغيل doctor يدويًا.
ويتم ترحيل مصادقة WhatsApp عمدًا فقط عبر `openclaw doctor`. كما أن تطبيع
Talk provider/provider-map يقارن الآن وفق المساواة البنيوية، لذا لم تعد
الاختلافات في ترتيب المفاتيح فقط تطلق تغييرات no-op متكررة مع
`doctor --fix`.
هذه الترحيلات تُنفّذ بأفضل جهد وهي قابلة للتكرار بأمان؛ وسيصدر doctor تحذيرات عندما
يترك أي مجلدات قديمة خلفه كنسخ احتياطية. كما يقوم Gateway/CLI أيضًا بترحيل
الجلسات القديمة + دليل العامل تلقائيًا عند بدء التشغيل بحيث تستقر السجلات/المصادقة/النماذج في
المسار الخاص بكل عامل من دون الحاجة إلى تشغيل doctor يدويًا. أما مصادقة WhatsApp
فمقصود أن تُرحّل فقط عبر `openclaw doctor`. كما أن تطبيع Talk provider/provider-map
يقارن الآن بالمساواة البنيوية، لذلك لم تعد الفروقات في ترتيب المفاتيح وحدها
تؤدي إلى تغييرات متكررة عديمة الأثر في `doctor --fix`.
### 3a) ترحيلات بيانات plugin القديمة
### 3a) ترحيلات plugin manifest القديمة
يفحص Doctor جميع بيانات plugin المثبتة لاكتشاف مفاتيح
القدرات العلوية المهجورة (`speechProviders`, `realtimeTranscriptionProviders`,
يفحص doctor جميع plugin manifests المثبتة بحثًا عن مفاتيح الإمكانات
العليا المهملة (`speechProviders`, `realtimeTranscriptionProviders`,
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
`imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`,
`webSearchProviders`). وعند العثور عليها، يعرض نقلها إلى الكائن `contracts`
وإعادة كتابة ملف البيان في مكانه. هذا الترحيل idempotent؛
فإذا كان المفتاح `contracts` يحتوي بالفعل على القيم نفسها، تتم إزالة
المفتاح القديم من دون تكرار البيانات.
`webSearchProviders`). وعند العثور عليها، يعرض نقلها إلى كائن `contracts`
وإعادة كتابة ملف manifest في مكانه. هذا الترحيل قابل للتكرار بأمان؛
وإذا كان مفتاح `contracts` يحتوي بالفعل على القيم نفسها، فسيُزال المفتاح القديم
من دون تكرار البيانات.
### 3b) ترحيلات مخزن cron القديمة
### 3b) ترحيلات مخزن Cron القديمة
يفحص Doctor أيضًا مخزن وظائف cron (`~/.openclaw/cron/jobs.json` افتراضيًا،
أو `cron.store` عند تجاوزه) لاكتشاف أشكال الوظائف القديمة التي لا يزال
الجدول الزمني يقبلها للتوافق.
يفحص doctor أيضًا مخزن وظائف Cron (`~/.openclaw/cron/jobs.json` افتراضيًا،
أو `cron.store` عند تجاوزه) بحثًا عن أشكال الوظائف القديمة التي لا يزال
المجدول يقبلها للتوافق.
تشمل عمليات تنظيف cron الحالية ما يلي:
تشمل عمليات تنظيف Cron الحالية ما يلي:
- `jobId``id`
- `schedule.cron``schedule.expr`
- حقول payload العلوية (`message`, `model`, `thinking`, ...) → `payload`
- حقول delivery العلوية (`deliver`, `channel`, `to`, `provider`, ...) → `delivery`
- أسماء delivery المستعارة `provider` داخل payload → `delivery.channel` صريح
- وظائف fallback القديمة البسيطة للويب هوك `notify: true``delivery.mode="webhook"` صريح مع `delivery.to=cron.webhook`
- حقول payload ذات المستوى الأعلى (`message`, `model`, `thinking`, ...) → `payload`
- حقول delivery ذات المستوى الأعلى (`deliver`, `channel`, `to`, `provider`, ...) → `delivery`
- أسماء provider المستعارة الخاصة بتسليم payload → `delivery.channel` صريح
- وظائف Webhook الاحتياطية القديمة البسيطة `notify: true``delivery.mode="webhook"` صريح مع `delivery.to=cron.webhook`
لا يرحّل Doctor وظائف `notify: true` تلقائيًا إلا عندما يمكنه
فعل ذلك من دون تغيير السلوك. وإذا جمعت وظيفة بين fallback notify القديم و
وضع delivery غير webhook موجود، فإن doctor يحذر ويترك الوظيفة للمراجعة اليدوية.
لا يرحّل doctor وظائف `notify: true` تلقائيًا إلا عندما يمكنه فعل ذلك من دون
تغيير السلوك. إذا كانت الوظيفة تجمع بين الرجوع الاحتياطي القديم للإشعار ووضع
تسليم غير Webhook موجود بالفعل، فسيحذر doctor ويترك تلك الوظيفة للمراجعة اليدوية.
### 3c) تنظيف قفل الجلسة
### 3c) تنظيف أقفال الجلسات
يفحص Doctor كل دليل جلسات agent بحثًا عن ملفات قفل كتابة قديمة — وهي الملفات التي تُترك
وراءها عندما تخرج الجلسة بشكل غير طبيعي. ولكل ملف قفل يتم العثور عليه، يبلّغ بما يلي:
يفحص doctor كل دليل جلسات للعوامل بحثًا عن ملفات قفل كتابة قديمة — وهي ملفات تُترك
عندما تخرج الجلسة بشكل غير طبيعي. ولكل ملف قفل يعثر عليه فإنه يعرض:
المسار، وPID، وما إذا كان PID لا يزال حيًا، وعمر القفل، وما إذا كان
يُعتبر قديمًا (PID ميت أو أقدم من 30 دقيقة). وفي وضع `--fix` / `--repair`
يزيل ملفات القفل القديمة تلقائيًا؛ وإلا فإنه يطبع ملاحظة ويطلب
منك إعادة التشغيل باستخدام `--fix`.
يُعد قديمًا (PID ميت أو أقدم من 30 دقيقة). وفي وضع `--fix` / `--repair`
يزيل ملفات القفل القديمة تلقائيًا؛ وإلا فإنه يطبع ملاحظة
ويطلب منك إعادة التشغيل مع `--fix`.
### 4) فحوصات سلامة الحالة (استمرارية الجلسة، والتوجيه، والسلامة)
دليل الحالة هو الجذع التشغيلي. وإذا اختفى، فستفقد
الجلسات وبيانات الاعتماد والسجلات والإعدادات (إلا إذا كانت لديك نسخ احتياطية في مكان آخر).
دليل الحالة هو جذع الدماغ التشغيلي. إذا اختفى، ستفقد
الجلسات، وبيانات الاعتماد، والسجلات، والتهيئة (ما لم تكن لديك نسخ احتياطية في مكان آخر).
يفحص Doctor ما يلي:
يتحقق doctor من:
- **غياب دليل الحالة**: يحذر من فقدان كارثي للحالة، ويطالب بإعادة إنشاء
- **غياب دليل الحالة**: يحذر من فقدان الحالة الكارثي، ويطالب بإعادة إنشاء
الدليل، ويذكّرك بأنه لا يمكنه استعادة البيانات المفقودة.
- **صلاحيات دليل الحالة**: يتحقق من قابلية الكتابة؛ ويعرض إصلاح الصلاحيات
(ويصدر تلميح `chown` عند اكتشاف عدم تطابق المالك/المجموعة).
- **دليل حالة macOS المتزامن سحابيًا**: يحذر عندما تُحل الحالة ضمن iCloud Drive
- **دليل حالة macOS المتزامن سحابيًا**: يحذر عندما تشير الحالة إلى iCloud Drive
(`~/Library/Mobile Documents/com~apple~CloudDocs/...`) أو
`~/Library/CloudStorage/...` لأن المسارات المدعومة بالمزامنة قد تتسبب في بطء الإدخال/الإخراج
وسباقات القفل/المزامنة.
- **دليل حالة Linux على SD أو eMMC**: يحذر عندما تُحل الحالة إلى مصدر تركيب `mmcblk*`،
لأن الإدخال/الإخراج العشوائي المعتمد على SD أو eMMC قد يكون أبطأ ويتعرض لاستهلاك أسرع
مع كتابات الجلسات وبيانات الاعتماد.
- **غياب دلائل الجلسات**: إن `sessions/` ودليل مخزن الجلسات
مطلوبان للحفاظ على السجل وتجنب أعطال `ENOENT`.
- **عدم تطابق السجلات**: يحذر عندما تحتوي إدخالات الجلسات الحديثة على ملفات
سجل مفقودة.
- **جلسة رئيسية “JSONL بسطر واحد”**: يعلّم الحالة عندما يحتوي السجل الرئيسي على
سطر واحد فقط (السجل لا يتراكم).
- **أدلة حالة متعددة**: يحذر عند وجود عدة مجلدات `~/.openclaw` عبر
أدلة منزلية أو عندما يشير `OPENCLAW_STATE_DIR` إلى مكان آخر (قد ينقسم السجل بين التثبيتات).
`~/Library/CloudStorage/...` لأن المسارات المدعومة بالمزامنة قد تسبب إدخال/إخراج أبطأ
وسباقات في القفل/المزامنة.
- **دليل حالة Linux على SD أو eMMC**: يحذر عندما تشير الحالة إلى مصدر
تركيب `mmcblk*`، لأن الإدخال/الإخراج العشوائي المعتمد على SD أو eMMC قد يكون أبطأ
ويؤدي إلى تآكل أسرع تحت كتابات الجلسات وبيانات الاعتماد.
- **غياب أدلة الجلسات**: إن `sessions/` ودليل مخزن الجلسات
مطلوبان للاحتفاظ بالسجل وتجنب أعطال `ENOENT`.
- **عدم تطابق النصوص المفرغة**: يحذر عندما تحتوي إدخالات الجلسات الحديثة على
ملفات نصوص مفرغة مفقودة.
- **الجلسة الرئيسية “JSONL بسطر واحد”**: يعلّم عندما يحتوي النص المفرغ الرئيسي على سطر واحد فقط
(أي أن السجل لا يتراكم).
- **أدلة حالة متعددة**: يحذر عندما توجد عدة مجلدات `~/.openclaw` عبر
الأدلة المنزلية أو عندما يشير `OPENCLAW_STATE_DIR` إلى مكان آخر (قد
ينقسم السجل بين التثبيتات).
- **تذكير الوضع البعيد**: إذا كان `gateway.mode=remote`، يذكّرك doctor بتشغيله
على المضيف البعيد (لأن الحالة موجودة هناك).
- **صلاحيات ملف الإعدادات**: يحذر إذا كان `~/.openclaw/openclaw.json`
قابلاً للقراءة من المجموعة/العالم ويعرض تشديده إلى `600`.
على المضيف البعيد (فالحالة توجد هناك).
- **صلاحيات ملف التهيئة**: يحذر إذا كان `~/.openclaw/openclaw.json`
قابلًا للقراءة من المجموعة/العالم ويعرض تشديدها إلى `600`.
### 5) سلامة مصادقة النماذج (انتهاء OAuth)
### 5) سلامة مصادقة النموذج (انتهاء OAuth)
يفحص Doctor ملفات OAuth التعريفية في مخزن المصادقة، ويحذر عندما تكون
الرموز المميزة على وشك الانتهاء/منتهية، ويمكنه تحديثها عندما يكون ذلك آمنًا. وإذا كان
ملف تعريف OAuth/token الخاص بـ Anthropic قديمًا، فإنه يقترح
مفتاح Anthropic API أو مسار Anthropic setup-token.
ولا تظهر مطالبات التحديث إلا عند التشغيل بشكل تفاعلي (TTY)؛ أما `--non-interactive`
يفحص doctor ملفات OAuth التعريفية في مخزن المصادقة، ويحذر عندما تكون الرموز المميزة
قيد الانتهاء/منتهية، ويمكنه تحديثها عندما يكون ذلك آمنًا. إذا كان ملف
تعريف Anthropic OAuth/token قديمًا، فإنه يقترح مفتاح Anthropic API أو
مسار رمز إعداد Anthropic.
تظهر مطالبات التحديث فقط عند التشغيل التفاعلي (TTY)؛ أما `--non-interactive`
فيتخطى محاولات التحديث.
وعندما يفشل تحديث OAuth فشلًا دائمًا (مثل `refresh_token_reused` أو
`invalid_grant` أو عندما يخبرك الموفّر بتسجيل الدخول مرة أخرى
فإن doctor يبلغ بأن إعادة المصادقة مطلوبة ويطبع
أمر `openclaw models auth login --provider ...` الدقيق المطلوب تشغيله.
عندما يفشل تحديث OAuth بشكل دائم (مثل `refresh_token_reused`،
أو `invalid_grant`، أو عندما يخبرك المزوّد بضرورة تسجيل الدخول مجددًا
فإن doctor يبلّغ بأن إعادة المصادقة مطلوبة ويطبع الأمر الدقيق
`openclaw models auth login --provider ...` الذي يجب تشغيله.
كما يبلغ Doctor أيضًا عن ملفات تعريف المصادقة غير القابلة للاستخدام مؤقتًا بسبب:
كما يعرض doctor أيضًا ملفات تعريف المصادقة غير القابلة للاستخدام مؤقتًا بسبب:
- فترات تهدئة قصيرة (حدود المعدل/المهلات/إخفاقات المصادقة)
- تعطيلات أطول (إخفاقات الفوترة/الرصيد)
### 6) التحقق من نموذج Hooks
إذا كان `hooks.gmail.model` مضبوطًا، فإن doctor يتحقق من مرجع النموذج
مقابل الفهرس وقائمة السماح ويحذر عندما لا يمكن حله أو يكون غير مسموح.
إذا كان `hooks.gmail.model` مضبوطًا، فإن doctor يتحقق من مرجع النموذج مقابل
الكتالوج وقائمة السماح ويحذر عندما لا يمكن حله أو يكون غير مسموح به.
### 7) إصلاح صورة sandbox
### 7) إصلاح صورة Sandbox
عند تفعيل العزل، يفحص doctor صور Docker ويعرض بناءها أو
عندما يكون sandboxing مفعّلًا، يتحقق doctor من صور Docker ويعرض بناءها أو
التبديل إلى الأسماء القديمة إذا كانت الصورة الحالية مفقودة.
### 7b) تبعيات وقت تشغيل plugin المجمعة
### 7b) تبعيات وقت تشغيل Plugin المجمّعة
يتحقق Doctor من وجود تبعيات وقت التشغيل الخاصة بالـ plugin المجمعة (مثل
حزم وقت تشغيل Discord plugin) في جذر تثبيت OpenClaw.
وإذا كانت أي منها مفقودة، فإن doctor يبلغ عن الحزم ويثبتها في
يتحقق doctor من أن تبعيات وقت تشغيل Plugin المجمّعة (على سبيل المثال
حزم وقت تشغيل Discord plugin) موجودة في جذر تثبيت OpenClaw.
إذا كانت أي منها مفقودة، فسيعرض doctor الحزم ويثبتها في
وضع `openclaw doctor --fix` / `openclaw doctor --repair`.
### 8) ترحيلات خدمة Gateway وتلميحات التنظيف
يكتشف Doctor خدمات Gateway القديمة (launchd/systemd/schtasks) و
يكتشف doctor خدمات Gateway القديمة (launchd/systemd/schtasks) و
يعرض إزالتها وتثبيت خدمة OpenClaw باستخدام منفذ Gateway الحالي.
كما يمكنه أيضًا فحص خدمات إضافية شبيهة بـ Gateway وطباعة تلميحات للتنظيف.
وتُعتبر خدمات OpenClaw Gateway المسماة بحسب الملف التعريفي خدمات من الدرجة الأولى ولا
تُوسم بأنها "إضافية".
كما يمكنه أيضًا البحث عن خدمات إضافية شبيهة بـ Gateway وطباعة تلميحات للتنظيف.
وتُعد خدمات OpenClaw Gateway المسماة حسب الملف التعريفي من الدرجة الأولى ولا
تُعلَّم على أنها "إضافية".
### 8b) ترحيل Matrix عند بدء التشغيل
عندما يحتوي حساب قناة Matrix على ترحيل حالة قديم معلّق أو قابل للتنفيذ،
عندما يكون لدى حساب Matrix channel ترحيل حالة قديم معلّق أو قابل للتنفيذ،
فإن doctor (في وضع `--fix` / `--repair`) ينشئ لقطة قبل الترحيل ثم
يشغّل خطوات الترحيل بأفضل جهد: ترحيل حالة Matrix القديمة وإعداد
الحالة المشفرة القديمة. وكلتا الخطوتين غير قاتلتين؛ تُسجّل الأخطاء ويستمر
بدء التشغيل. وفي وضع القراءة فقط (`openclaw doctor` بدون `--fix`) يتم
تخطي هذا الفحص بالكامل.
يشغّل خطوات الترحيل بأفضل جهد: ترحيل حالة Matrix القديمة وتجهيز
الحالة المشفرة القديمة. كلتا الخطوتين غير قاتلتين؛ تُسجّل الأخطاء ويستمر
بدء التشغيل. أما في وضع القراءة فقط (`openclaw doctor` بدون `--fix`) فيُتخطى هذا الفحص
بالكامل.
### 9) تحذيرات أمنية
### 8c) إقران الجهاز وانحراف المصادقة
يصدر Doctor تحذيرات عندما يكون موفّر مفتوحًا للرسائل الخاصة من دون قائمة سماح، أو
عندما تكون سياسة ما مهيأة بطريقة خطرة.
يفحص doctor الآن حالة إقران الجهاز كجزء من تمرير السلامة المعتاد.
ما الذي يعرضه:
- طلبات الإقران الأولى المعلقة
- ترقيات الدور المعلقة للأجهزة المقترنة بالفعل
- ترقيات النطاق المعلقة للأجهزة المقترنة بالفعل
- إصلاحات عدم تطابق المفتاح العام عندما يبقى معرّف الجهاز مطابقًا لكن
هوية الجهاز لم تعد تطابق السجل المعتمد
- السجلات المقترنة التي تفتقد رمزًا نشطًا لدور معتمد
- الرموز المقترنة التي تنحرف نطاقاتها خارج خط الأساس المعتمد للإقران
- إدخالات cache الرموز المحلية للجهاز الحالي التي تسبق
تدوير الرمز على جانب Gateway أو تحمل بيانات نطاق وصفية قديمة
لا يوافق doctor تلقائيًا على طلبات الإقران ولا يدوّر رموز الأجهزة تلقائيًا. بل
يطبع الخطوات التالية الدقيقة بدلًا من ذلك:
- فحص الطلبات المعلقة باستخدام `openclaw devices list`
- اعتماد الطلب المحدد باستخدام `openclaw devices approve <requestId>`
- تدوير رمز جديد باستخدام `openclaw devices rotate --device <deviceId> --role <role>`
- إزالة سجل قديم واعتماده من جديد باستخدام `openclaw devices remove <deviceId>`
هذا يغلق الثغرة الشائعة "مقترن بالفعل لكنه ما يزال يطلب الإقران":
فالآن يميّز doctor بين الإقران لأول مرة وبين ترقيات الدور/النطاق
المعلقة وبين انحراف الرمز/هوية الجهاز القديم.
### 9) التحذيرات الأمنية
يصدر doctor تحذيرات عندما يكون provider مفتوحًا للرسائل المباشرة من دون
قائمة سماح، أو عندما تُضبط سياسة بطريقة خطرة.
### 10) systemd linger (Linux)
إذا كان يعمل كخدمة مستخدم systemd، فإن doctor يضمن تمكين lingering حتى يبقى
Gateway حيًا بعد تسجيل الخروج.
إذا كان التشغيل كخدمة مستخدم systemd، فإن doctor يضمن تفعيل lingering لكي
يبقى Gateway قيد التشغيل بعد تسجيل الخروج.
### 11) حالة مساحة العمل (Skills، وplugins، والأدلة القديمة)
### 11) حالة Workspace (Skills وPlugins والأدلة القديمة)
يطبع Doctor ملخصًا لحالة مساحة العمل الخاصة بالـ agent الافتراضي:
يطبع doctor ملخصًا عن حالة workspace للعامل الافتراضي:
- **حالة Skills**: يحسب Skills المؤهلة وتلك ذات المتطلبات المفقودة والمحجوبة بقائمة السماح.
- **أدلة مساحة العمل القديمة**: يحذر عند وجود `~/openclaw` أو أدلة مساحة عمل قديمة أخرى
إلى جانب مساحة العمل الحالية.
- **حالة Plugin**: يحسب الإضافات المحمّلة/المعطلة/التي بها أخطاء؛ ويسرد معرفات plugin عند وجود
أي أخطاء؛ ويبلغ عن قدرات bundle plugin.
- **تحذيرات توافق plugin**: يعلّم plugins التي تواجه مشكلات توافق مع
- **حالة Skills**: يحصي Skills المؤهلة، والتي تفتقد المتطلبات، والمحجوبة بقائمة السماح.
- **أدلة Workspace القديمة**: يحذر عند وجود `~/openclaw` أو أدلة workspace قديمة أخرى
إلى جانب workspace الحالي.
- **حالة Plugin**: يحصي Plugins المحمّلة/المعطلة/التي بها أخطاء؛ ويسرد معرّفات Plugins لأي
أخطاء؛ ويعرض قدرات bundle plugin.
- **تحذيرات توافق Plugin**: يعلّم Plugins التي لديها مشكلات توافق مع
وقت التشغيل الحالي.
- **تشخيصات plugin**: يعرض أي تحذيرات أو أخطاء وقت التحميل تصدرها
سجلات plugin.
- **تشخيصات Plugin**: يعرض أي تحذيرات أو أخطاء وقت التحميل صادرة عن
سجل Plugin.
### 11b) حجم ملف التمهيد
### 11b) حجم ملف Bootstrap
يفحص Doctor ما إذا كانت ملفات تمهيد مساحة العمل (مثل `AGENTS.md` أو
`CLAUDE.md` أو غيرها من ملفات السياق المحقونة) قريبة من ميزانية
الأحرف المهيأة أو تجاوزتها. ويبلغ لكل ملف عن عدد الأحرف الخام مقابل المحقونة، ونسبة
الاقتطاع، وسبب الاقتطاع (`max/file` أو `max/total`)، وإجمالي الأحرف
المحقونة كنسبة من الميزانية الإجمالية. وعندما تكون الملفات مقتطعة أو قريبة من
الحد، فإن doctor يطبع نصائح لضبط `agents.defaults.bootstrapMaxChars`
يتحقق doctor مما إذا كانت ملفات bootstrap الخاصة بـ workspace (مثل `AGENTS.md`،
أو `CLAUDE.md`، أو ملفات السياق المحقونة الأخرى) قريبة من ميزانية
الأحرف المضبوطة أو تتجاوزها. ويعرض لكل ملف عدد الأحرف الخام مقابل المحقونة، ونسبة
الاقتطاع، وسبب الاقتطاع (`max/file` أو `max/total`)، وإجمالي الأحرف المحقونة
كنسبة من الميزانية الإجمالية. وعندما تكون الملفات مقتطعة أو قريبة من
الحد، يطبع doctor نصائح لضبط `agents.defaults.bootstrapMaxChars`
و`agents.defaults.bootstrapTotalMaxChars`.
### 11c) الإكمال الصدفي
### 11c) Shell completion
يفحص Doctor ما إذا كان الإكمال باستخدام Tab مثبتًا للصدفة الحالية
يتحقق doctor مما إذا كان إكمال tab مثبتًا للصدفة الحالية
(zsh أو bash أو fish أو PowerShell):
- إذا كان ملف تعريف الصدفة يستخدم نمط إكمال ديناميكي بطيء
(`source <(openclaw completion ...)`)، فإن doctor يرقّيه إلى
صيغة الملف المخبأ الأسرع.
- إذا كان الإكمال مهيأً في الملف التعريفي لكن ملف التخزين المؤقت مفقود،
فإن doctor يعيد إنشاء التخزين المؤقت تلقائيًا.
- إذا لم يكن هناك أي إكمال مهيأ على الإطلاق، فإن doctor يطلب تثبيته
(في الوضع التفاعلي فقط؛ ويتم تخطيه مع `--non-interactive`).
متغير الملف المخبأ الأسرع.
- إذا كان الإكمال مضبوطًا في ملف التعريف لكن ملف cache مفقودًا،
فإن doctor يعيد إنشاء cache تلقائيًا.
- إذا لم يكن هناك أي إعداد للإكمال إطلاقًا، فإن doctor يعرض تثبيته
(في الوضع التفاعلي فقط؛ ويُتخطى مع `--non-interactive`).
شغّل `openclaw completion --write-state` لإعادة إنشاء التخزين المؤقت يدويًا.
شغّل `openclaw completion --write-state` لإعادة إنشاء cache يدويًا.
### 12) فحوصات مصادقة Gateway (الرمز المحلي)
### 12) فحوصات مصادقة Gateway (الرمز المحلي)
يفحص Doctor جاهزية مصادقة رمز Gateway المحلي.
يتحقق doctor من جاهزية مصادقة رمز Gateway المحلي.
- إذا كان وضع الرمز يحتاج إلى رمز ولا يوجد مصدر رمز، فإن doctor يعرض إنشاء واحد.
- إذا كان `gateway.auth.token` مُدارًا بواسطة SecretRef لكنه غير متاح، فإن doctor يحذر ولا يستبدله بنص صريح.
- يفرض `openclaw doctor --generate-gateway-token` الإنشاء فقط عندما لا يكون هناك SecretRef مهيأ للرمز.
- إذا كانت `gateway.auth.token` مُدارة بواسطة SecretRef لكنها غير متاحة، فإن doctor يحذر ولا يستبدلها بنص عادي.
- يفرض `openclaw doctor --generate-gateway-token` الإنشاء فقط عندما لا يكون هناك SecretRef مضبوط للرمز.
### 12b) إصلاحات للقراءة فقط مع مراعاة SecretRef
تحتاج بعض مسارات الإصلاح إلى فحص بيانات الاعتماد المهيأة من دون إضعاف
تحتاج بعض تدفقات الإصلاح إلى فحص بيانات الاعتماد المضبوطة من دون إضعاف
سلوك الفشل السريع في وقت التشغيل.
- يستخدم `openclaw doctor --fix` الآن نموذج الملخص نفسه الخاص بـ SecretRef للقراءة فقط كما في أوامر عائلة status لإصلاحات إعدادات مستهدفة.
- مثال: يحاول إصلاح `allowFrom` / `groupAllowFrom` `@username` في Telegram استخدام بيانات اعتماد البوت المهيأة عندما تكون متاحة.
- إذا كان رمز Telegram bot مهيأً عبر SecretRef لكنه غير متاح في مسار الأمر الحالي، فإن doctor يبلغ بأن بيانات الاعتماد مهيأة ولكنها غير متاحة ويتخطى الحل التلقائي بدلًا من الانهيار أو الإبلاغ خطأً عن أن الرمز مفقود.
- يستخدم `openclaw doctor --fix` الآن نموذج الملخص نفسه للقراءة فقط مع مراعاة SecretRef كما في أوامر عائلة status لإجراء إصلاحات تهيئة مستهدفة.
- مثال: يحاول إصلاح Telegram `allowFrom` / `groupAllowFrom` الخاص بـ `@username` استخدام بيانات اعتماد البوت المضبوطة عند توفرها.
- إذا كان رمز Telegram bot مضبوطًا عبر SecretRef لكنه غير متاح في مسار الأمر الحالي، فإن doctor يبلّغ أن بيانات الاعتماد مضبوطة ولكن غير متاحة، ويتخطى الحل التلقائي بدلًا من التعطل أو الإبلاغ خطأً عن أن الرمز مفقود.
### 13) فحص سلامة Gateway + إعادة التشغيل
يشغّل Doctor فحص سلامة ويعرض إعادة تشغيل Gateway عندما يبدو
يشغّل doctor فحص سلامة ويعرض إعادة تشغيل Gateway عندما يبدو
غير سليم.
### 13b) جاهزية البحث في الذاكرة
يفحص Doctor ما إذا كان موفّر embedding المهيأ للبحث في الذاكرة جاهزًا
للـ agent الافتراضي. ويعتمد السلوك على backend والموفّر المهيأين:
يتحقق doctor مما إذا كان embedding provider المضبوط للبحث في الذاكرة جاهزًا
للعامل الافتراضي. ويعتمد السلوك على الواجهة الخلفية وprovider المضبوطين:
- **QMD backend**: يفحص ما إذا كان الملف الثنائي `qmd` متاحًا وقابلًا للتشغيل.
وإذا لم يكن كذلك، يطبع إرشادات إصلاح بما في ذلك حزمة npm وخيار مسار ثنائي يدوي.
- **موفّر محلي صريح**: يفحص وجود ملف نموذج محلي أو عنوان URL معرّف
لنموذج بعيد/قابل للتنزيل. وإذا كان مفقودًا، يقترح التبديل إلى موفّر بعيد.
- **موفّر بعيد صريح** (`openai` و`voyage` وغيرها): يتحقق من وجود مفتاح API
- **الواجهة الخلفية QMD**: يفحص ما إذا كان الملف الثنائي `qmd` متاحًا وقابلًا للتشغيل.
وإذا لم يكن كذلك، فيطبع إرشادات إصلاح تشمل حزمة npm وخيار مسار ثنائي يدوي.
- **Local provider صريح**: يتحقق من وجود ملف نموذج محلي أو عنوان URL
معروف لنموذج بعيد/قابل للتنزيل. وإذا كان مفقودًا، يقترح التبديل إلى provider بعيد.
- **Remote provider صريح** (`openai` أو `voyage` أو غيرهما): يتحقق من وجود مفتاح API
في البيئة أو مخزن المصادقة. ويطبع تلميحات إصلاح عملية إذا كان مفقودًا.
- **موفّر تلقائي**: يفحص توفر النموذج المحلي أولًا، ثم يحاول كل موفّر بعيد
وفق ترتيب الاختيار التلقائي.
- **Auto provider**: يتحقق أولًا من توفر النموذج المحلي، ثم يجرّب كل
remote providers وفق ترتيب الاختيار التلقائي.
وعندما تكون نتيجة فحص Gateway متاحة (كان Gateway سليمًا وقت
الفحص)، فإن doctor يطابق نتيجتها مع الإعدادات المرئية من CLI ويشير
عندما تتوفر نتيجة فحص من Gateway (أي كان Gateway سليمًا وقت
الفحص)، يقارن doctor نتيجتها مع التهيئة المرئية لـ CLI ويشير
إلى أي اختلاف.
استخدم `openclaw memory status --deep` للتحقق من جاهزية embedding وقت التشغيل.
### 14) تحذيرات حالة القنوات
إذا كان Gateway سليمًا، فإن doctor يشغّل فحص حالة القنوات ويبلغ
عن التحذيرات مع الإصلاحات المقترحة.
إذا كان Gateway سليمًا، يشغّل doctor فحص حالة القنوات ويعرض
التحذيرات مع الإصلاحات المقترحة.
### 15) تدقيق إعدادات supervisor + الإصلاح
### 15) تدقيق تهيئة المشرف + الإصلاح
يفحص Doctor إعدادات supervisor المثبّتة (launchd/systemd/schtasks) لاكتشاف
الافتراضيات المفقودة أو القديمة (مثل تبعيات systemd للشبكة عند الاتصال و
يفحص doctor تهيئة المشرف المثبتة (`launchd/systemd/schtasks`) بحثًا عن
القيم الافتراضية المفقودة أو القديمة (مثل تبعيات systemd الخاصة بـ network-online و
تأخير إعادة التشغيل). وعندما يجد عدم تطابق، فإنه يوصي بالتحديث ويمكنه
إعادة كتابة ملف الخدمة/المهمة إلى الافتراضيات الحالية.
إعادة كتابة ملف الخدمة/المهمة إلى القيم الافتراضية الحالية.
ملاحظات:
- يطلب `openclaw doctor` تأكيدًا قبل إعادة كتابة إعدادات supervisor.
- يطلب `openclaw doctor` التأكيد قبل إعادة كتابة تهيئة المشرف.
- يقبل `openclaw doctor --yes` مطالبات الإصلاح الافتراضية.
- يطبّق `openclaw doctor --repair` الإصلاحات الموصى بها من دون مطالبات.
- يقوم `openclaw doctor --repair --force` باستبدال إعدادات supervisor المخصصة.
- إذا كانت مصادقة الرمز تتطلب رمزًا وكان `gateway.auth.token` مُدارًا بواسطة SecretRef، فإن تثبيت/إصلاح خدمة doctor يتحقق من SecretRef لكنه لا يحفظ قيم الرمز النصية الصريحة المحلولة في بيانات بيئة خدمة supervisor.
- إذا كانت مصادقة الرمز تتطلب رمزًا وكان SecretRef المهيأ للرمز غير محلول، فإن doctor يمنع مسار التثبيت/الإصلاح مع إرشادات عملية.
- إذا كان كل من `gateway.auth.token` و`gateway.auth.password` مهيأين وكان `gateway.auth.mode` غير مضبوط، فإن doctor يمنع التثبيت/الإصلاح حتى يتم ضبط الوضع صراحةً.
- بالنسبة إلى وحدات systemd الخاصة بمستخدمي Linux، تشمل فحوصات انجراف الرمز في doctor الآن كلا المصدرين `Environment=` و`EnvironmentFile=` عند مقارنة بيانات مصادقة الخدمة.
- يطبّق `openclaw doctor --repair` الإصلاحات الموصى بها بدون مطالبات.
- يستبدل `openclaw doctor --repair --force` تهيئات المشرف المخصصة.
- إذا كانت مصادقة الرمز تتطلب رمزًا وكانت `gateway.auth.token` مُدارة بواسطة SecretRef، فإن تثبيت/إصلاح خدمة doctor يتحقق من SecretRef لكنه لا يحفظ قيم الرمز العادي المحلولة في بيانات بيئة خدمة المشرف الوصفية.
- إذا كانت مصادقة الرمز تتطلب رمزًا وكان token SecretRef المضبوط غير محلول، فإن doctor يمنع مسار التثبيت/الإصلاح مع إرشادات عملية.
- إذا كان كل من `gateway.auth.token` و`gateway.auth.password` مضبوطين وكان `gateway.auth.mode` غير مضبوط، فإن doctor يمنع التثبيت/الإصلاح حتى يُضبط الوضع صراحةً.
- بالنسبة إلى وحدات user-systemd على Linux، تتضمن فحوصات انحراف الرمز في doctor الآن كلاً من مصدري `Environment=` و`EnvironmentFile=` عند مقارنة بيانات مصادقة الخدمة الوصفية.
- يمكنك دائمًا فرض إعادة كتابة كاملة عبر `openclaw gateway install --force`.
### 16) تشخيصات وقت تشغيل Gateway + المنفذ
يفحص Doctor وقت تشغيل الخدمة (PID، وآخر حالة خروج) ويحذر عندما تكون
الخدمة مثبتة لكنها لا تعمل فعليًا. كما يفحص تعارضات
المنفذ على منفذ Gateway (الافتراضي `18789`) ويبلغ عن الأسباب المحتملة (Gateway يعمل بالفعل،
يفحص doctor وقت تشغيل الخدمة (PID، وآخر حالة خروج) ويحذر عندما تكون
الخدمة مثبتة لكنها لا تعمل فعليًا. كما يتحقق أيضًا من تعارضات المنفذ
على منفذ Gateway (الافتراضي `18789`) ويعرض الأسباب المحتملة (Gateway يعمل بالفعل،
أو نفق SSH).
### 17) أفضل ممارسات وقت تشغيل Gateway
يحذر Doctor عندما تعمل خدمة Gateway على Bun أو على مسار Node مُدار بالإصدارات
(`nvm` أو `fnm` أو `volta` أو `asdf` وغيرها). تتطلب قنوات WhatsApp + Telegram
Node، وقد تتعطل مسارات مديري الإصدارات بعد الترقيات لأن الخدمة لا
تحمّل تهيئة الصدفة لديك. ويعرض doctor الترحيل إلى تثبيت Node نظامي عندما
يحذر doctor عندما تعمل خدمة Gateway على Bun أو على مسار Node مُدار بإدارة إصدارات
(`nvm` أو `fnm` أو `volta` أو `asdf` أو غيرها). تتطلب قنوات WhatsApp + Telegram Node،
وقد تتعطل مسارات إدارة الإصدارات بعد الترقيات لأن الخدمة لا
تحمّل تهيئة الصدفة الخاصة بك. يعرض doctor الترحيل إلى تثبيت Node على مستوى النظام عندما
يكون متاحًا (Homebrew/apt/choco).
### 18) كتابة الإعدادات + بيانات تعريف المعالج
### 18) كتابة التهيئة + بيانات wizard الوصفية
يحفظ Doctor أي تغييرات في الإعدادات ويضع بيانات تعريف المعالج لتسجيل
يحفظ doctor أي تغييرات في التهيئة ويضع وسم بيانات wizard الوصفية لتسجيل
تشغيل doctor.
### 19) نصائح مساحة العمل (النسخ الاحتياطي + نظام الذاكرة)
### 19) نصائح Workspace (النسخ الاحتياطي + نظام الذاكرة)
يقترح Doctor نظام ذاكرة لمساحة العمل عند غيابه ويطبع نصيحة للنسخ الاحتياطي
إذا لم تكن مساحة العمل تحت git بالفعل.
يقترح doctor نظام ذاكرة لـ workspace عند غيابه ويطبع نصيحة حول النسخ الاحتياطي
إذا لم يكن workspace تحت git بالفعل.
راجع [/concepts/agent-workspace](/ar/concepts/agent-workspace) للحصول على دليل كامل إلى
بنية مساحة العمل والنسخ الاحتياطي عبر git (يُوصى باستخدام GitHub أو GitLab خاص).
راجع [/concepts/agent-workspace](/ar/concepts/agent-workspace) للحصول على دليل كامل حول
بنية workspace والنسخ الاحتياطي عبر git (يوصى باستخدام GitHub أو GitLab خاص).

View File

@ -4,30 +4,30 @@ read_when:
summary: دليل التشغيل لخدمة Gateway ودورة حياتها وعملياتها
title: دليل تشغيل Gateway
x-i18n:
generated_at: "2026-04-07T07:17:46Z"
generated_at: "2026-04-20T07:29:32Z"
model: gpt-5.4
provider: openai
source_hash: fd2c21036e88612861ef2195b8ff7205aca31386bb11558614ade8d1a54fdebd
source_hash: e1004cdd43b1db6794f3ca83da38dbdb231a1976329d9d6d851e2b02405278d8
source_path: gateway/index.md
workflow: 15
---
# دليل تشغيل Gateway
استخدم هذه الصفحة لبدء التشغيل في اليوم الأول وعمليات التشغيل في اليوم الثاني لخدمة Gateway.
استخدم هذه الصفحة لبدء التشغيل في اليوم الأول وعمليات خدمة Gateway في اليوم الثاني.
<CardGroup cols={2}>
<Card title="استكشاف الأخطاء المتعمق" icon="siren" href="/ar/gateway/troubleshooting">
تشخيص يبدأ من الأعراض مع سلاسل أوامر دقيقة وتواقيع السجلات.
<Card title="استكشاف الأخطاء وإصلاحها المتقدم" icon="siren" href="/ar/gateway/troubleshooting">
تشخيص يبدأ من الأعراض مع تسلسلات أوامر دقيقة وتواقيع السجلات.
</Card>
<Card title="الإعدادات" icon="sliders" href="/ar/gateway/configuration">
دليل إعداد موجّه للمهام + مرجع إعدادات كامل.
<Card title="الإعداد" icon="sliders" href="/ar/gateway/configuration">
دليل إعداد موجّه حسب المهام + مرجع إعداد كامل.
</Card>
<Card title="إدارة الأسرار" icon="key-round" href="/ar/gateway/secrets">
عقد SecretRef وسلوك اللقطة في وقت التشغيل وعمليات الترحيل/إعادة التحميل.
عقد SecretRef، وسلوك اللقطة وقت التشغيل، وعمليات الترحيل/إعادة التحميل.
</Card>
<Card title="عقد خطة الأسرار" icon="shield-check" href="/ar/gateway/secrets-plan-contract">
قواعد `secrets apply` الدقيقة للهدف/المسار وسلوك ملفات تعريف المصادقة المعتمدة على المراجع فقط.
قواعد الهدف/المسار الدقيقة لـ `secrets apply` وسلوك ملف تعريف المصادقة المعتمد على المراجع فقط.
</Card>
</CardGroup>
@ -38,9 +38,9 @@ x-i18n:
```bash
openclaw gateway --port 18789
# debug/trace mirrored to stdio
# ينعكس debug/trace إلى stdio
openclaw gateway --port 18789 --verbose
# force-kill listener on selected port, then start
# اقتل بالقوة المستمع على المنفذ المحدد، ثم ابدأ
openclaw gateway --force
```
@ -54,27 +54,27 @@ openclaw status
openclaw logs --follow
```
الأساس السليم: `Runtime: running` و`RPC probe: ok`.
خط الأساس السليم: `Runtime: running` و`Connectivity probe: ok` و`Capability: ...` المطابقة لما تتوقعه. استخدم `openclaw gateway status --require-rpc` عندما تحتاج إلى إثبات RPC بنطاق القراءة، وليس مجرد إمكانية الوصول.
</Step>
<Step title="تحقق من جاهزية القنوات">
<Step title="تحقق من جاهزية القناة">
```bash
openclaw channels status --probe
```
مع Gateway يمكن الوصول إليه، يشغّل هذا فحوصات مباشرة لكل حساب للقنوات وتدقيقات اختيارية.
إذا تعذر الوصول إلى Gateway، يعود CLI إلى ملخصات القنوات المعتمدة على الإعدادات فقط بدلًا
من مخرجات الفحص المباشر.
مع Gateway يمكن الوصول إليه، يشغّل هذا فحوصات قنوات مباشرة لكل حساب وتدقيقات اختيارية.
إذا تعذر الوصول إلى Gateway، يعود CLI إلى ملخصات القنوات المعتمدة على الإعداد فقط
بدلًا من مخرجات الفحص المباشر.
</Step>
</Steps>
<Note>
تراقب إعادة تحميل إعدادات Gateway مسار ملف الإعدادات النشط (المُحدَّد من افتراضيات الملف الشخصي/الحالة، أو `OPENCLAW_CONFIG_PATH` عند ضبطه).
تراقب إعادة تحميل إعداد Gateway مسار ملف الإعداد النشط (يُحل من الإعدادات الافتراضية للملف الشخصي/الحالة، أو `OPENCLAW_CONFIG_PATH` عند تعيينه).
الوضع الافتراضي هو `gateway.reload.mode="hybrid"`.
بعد أول تحميل ناجح، تقدّم العملية الجارية اللقطة النشطة من الإعدادات الموجودة في الذاكرة؛ وتؤدي إعادة التحميل الناجحة إلى تبديل تلك اللقطة بشكل ذري.
بعد أول تحميل ناجح، تخدم العملية الجارية لقطة الإعداد النشطة داخل الذاكرة؛ وتبدّل إعادة التحميل الناجحة تلك اللقطة بشكل ذري.
</Note>
## نموذج وقت التشغيل
@ -82,17 +82,17 @@ openclaw channels status --probe
- عملية واحدة تعمل دائمًا للتوجيه ومستوى التحكم واتصالات القنوات.
- منفذ واحد متعدد الإرسال من أجل:
- WebSocket للتحكم/RPC
- واجهات HTTP API متوافقة مع OpenAI (`/v1/models` و`/v1/embeddings` و`/v1/chat/completions` و`/v1/responses` و`/tools/invoke`)
- Control UI وhooks
- واجهات HTTP البرمجية، متوافقة مع OpenAI (`/v1/models`, `/v1/embeddings`, `/v1/chat/completions`, `/v1/responses`, `/tools/invoke`)
- واجهة التحكم وHooks
- وضع الربط الافتراضي: `loopback`.
- المصادقة مطلوبة افتراضيًا. تستخدم إعدادات السر المشترك
- تكون المصادقة مطلوبة افتراضيًا. تستخدم إعدادات السر المشترك
`gateway.auth.token` / `gateway.auth.password` (أو
`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`)، ويمكن لإعدادات
الوكيل العكسي غير المعتمدة على loopback استخدام `gateway.auth.mode: "trusted-proxy"`.
## نقاط النهاية المتوافقة مع OpenAI
أصبحت واجهة التوافق الأعلى أثرًا في OpenClaw الآن هي:
أصبحت أعلى واجهات التوافق ذات الأثر الأكبر في OpenClaw الآن:
- `GET /v1/models`
- `GET /v1/models/{id}`
@ -103,38 +103,38 @@ openclaw channels status --probe
لماذا تهم هذه المجموعة:
- تتحقق معظم تكاملات Open WebUI وLobeChat وLibreChat من `/v1/models` أولًا.
- تتوقع العديد من مسارات RAG والذاكرة وجود `/v1/embeddings`.
- تفضّل العملاء الأصليون للوكلاء بشكل متزايد `/v1/responses`.
- تتوقع كثير من مسارات RAG والذاكرة `/v1/embeddings`.
- يفضل العملاء الأصليون للوكلاء بشكل متزايد `/v1/responses`.
ملاحظة تخطيطية:
- `/v1/models` موجّه للوكلاء أولًا: فهو يعيد `openclaw` و`openclaw/default` و`openclaw/<agentId>`.
- `openclaw/default` هو الاسم المستعار الثابت الذي يطابق دائمًا الوكيل الافتراضي المكوّن.
- استخدم `x-openclaw-model` عندما تريد تجاوز مزوّد/نموذج الخلفية؛ وإلا يظل إعداد النموذج والتضمين العادي للوكيل المحدد هو المتحكم.
- `/v1/models` موجه للوكلاء أولًا: فهو يعيد `openclaw` و`openclaw/default` و`openclaw/<agentId>`.
- `openclaw/default` هو الاسم المستعار المستقر الذي يرتبط دائمًا بالوكيل الافتراضي المضبوط.
- استخدم `x-openclaw-model` عندما تريد تجاوزًا لمزوّد/نموذج الواجهة الخلفية؛ وإلا فسيظل إعداد النموذج والتضمين العادي للوكيل المحدد هو المتحكم.
كل هذه النقاط تعمل على منفذ Gateway الرئيسي وتستخدم نفس حد مصادقة المشغّل الموثوق مثل بقية واجهة HTTP API الخاصة بـ Gateway.
كل هذه تعمل على منفذ Gateway الرئيسي وتستخدم نفس حد مصادقة المشغل الموثوق مثل بقية واجهة Gateway HTTP البرمجية.
### أسبقية المنفذ والربط
| الإعداد | ترتيب التحديد |
| ------------ | ------------------------------------------------------------ |
| الإعداد | ترتيب الحل |
| ------- | ----------- |
| منفذ Gateway | `--port``OPENCLAW_GATEWAY_PORT``gateway.port``18789` |
| وضع الربط | CLI/override → `gateway.bind``loopback` |
| وضع الربط | CLI/override → `gateway.bind``loopback` |
### أوضاع إعادة التحميل السريع
| `gateway.reload.mode` | السلوك |
| --------------------- | ---------------------------------------- |
| `off` | لا توجد إعادة تحميل للإعدادات |
| `hot` | تطبيق التغييرات الآمنة للتحديث السريع فقط |
| `restart` | إعادة التشغيل عند التغييرات التي تتطلب إعادة تحميل |
| `hybrid` (الافتراضي) | تطبيق سريع عندما يكون آمنًا، وإعادة تشغيل عند الحاجة |
| `gateway.reload.mode` | السلوك |
| --------------------- | ------ |
| `off` | لا توجد إعادة تحميل للإعداد |
| `hot` | طبّق فقط التغييرات الآمنة للإعادة السريعة |
| `restart` | أعد التشغيل عند التغييرات التي تتطلب إعادة تحميل |
| `hybrid` (افتراضي) | تطبيق سريع عند الأمان، وإعادة تشغيل عند الحاجة |
## مجموعة أوامر المشغّل
## مجموعة أوامر المشغل
```bash
openclaw gateway status
openclaw gateway status --deep # adds a system-level service scan
openclaw gateway status --deep # يضيف فحص خدمة على مستوى النظام
openclaw gateway status --json
openclaw gateway install
openclaw gateway restart
@ -144,15 +144,15 @@ openclaw logs --follow
openclaw doctor
```
إن `gateway status --deep` مخصص لاكتشاف الخدمات الإضافية (وحدات LaunchDaemons/systemd system
وschtasks)، وليس لفحص سلامة RPC أعمق.
إن `gateway status --deep` مخصص لاكتشاف الخدمات الإضافية (وحدات
LaunchDaemons/systemd system/schtasks)، وليس لفحص سلامة RPC أعمق.
## عدة Gateways (على المضيف نفسه)
## عدة Gateways (على نفس المضيف)
يجب أن تشغّل معظم عمليات التثبيت Gateway واحدًا لكل جهاز. يمكن لـ Gateway واحد استضافة عدة
ينبغي أن تشغّل معظم عمليات التثبيت Gateway واحدة لكل جهاز. ويمكن لـ Gateway واحدة استضافة عدة
وكلاء وقنوات.
تحتاج إلى عدة Gateways فقط عندما تريد العزل عمدًا أو روبوت إنقاذ.
أنت تحتاج إلى عدة Gateways فقط عندما تريد العزل عمدًا أو bot إنقاذ.
فحوصات مفيدة:
@ -161,15 +161,15 @@ openclaw gateway status --deep
openclaw gateway probe
```
ما الذي يجب توقعه:
ما الذي يمكن توقعه:
- يمكن أن يبلّغ `gateway status --deep` عن `Other gateway-like services detected (best effort)`
ويعرض تلميحات تنظيف عندما تظل تثبيتات launchd/systemd/schtasks القديمة موجودة.
- يمكن أن يحذّر `gateway probe` من `multiple reachable gateways` عندما يستجيب أكثر من هدف
- قد يعرض `gateway status --deep` الرسالة `Other gateway-like services detected (best effort)`
ويطبع تلميحات تنظيف عندما تظل تثبيتات launchd/systemd/schtasks القديمة موجودة.
- قد يحذر `gateway probe` من `multiple reachable gateways` عندما يستجيب أكثر من هدف
واحد.
- إذا كان ذلك مقصودًا، فاعزل المنافذ والإعدادات/الحالة وجذور مساحة العمل لكل Gateway.
- إذا كان ذلك مقصودًا، فاعزل المنافذ والإعداد والحالة وجذور مساحة العمل لكل Gateway.
إعداد مفصل: [/gateway/multiple-gateways](/ar/gateway/multiple-gateways).
الإعداد التفصيلي: [/gateway/multiple-gateways](/ar/gateway/multiple-gateways).
## الوصول عن بُعد
@ -180,19 +180,19 @@ openclaw gateway probe
ssh -N -L 18789:127.0.0.1:18789 user@host
```
ثم صِل العملاء محليًا بـ `ws://127.0.0.1:18789`.
ثم صِل العملاء محليًا إلى `ws://127.0.0.1:18789`.
<Warning>
لا تتجاوز أنفاق SSH مصادقة Gateway. في إعدادات السر المشترك، لا يزال يتعين على العملاء
إرسال `token`/`password` حتى عبر النفق. أما في الأوضاع التي تحمل هوية،
فلا يزال يتعين على الطلب استيفاء مسار المصادقة هذا.
لا تتجاوز أنفاق SSH مصادقة Gateway. بالنسبة إلى مصادقة السر المشترك، ما يزال على العملاء
إرسال `token`/`password` حتى عبر النفق. أما في الأوضاع المعتمدة على الهوية،
فما يزال على الطلب استيفاء مسار المصادقة ذلك.
</Warning>
راجع: [Gateway البعيد](/ar/gateway/remote) و[المصادقة](/ar/gateway/authentication) و[Tailscale](/ar/gateway/tailscale).
راجع: [Gateway عن بُعد](/ar/gateway/remote)، [المصادقة](/ar/gateway/authentication)، [Tailscale](/ar/gateway/tailscale).
## الإشراف ودورة حياة الخدمة
استخدم عمليات التشغيل الخاضعة للإشراف من أجل موثوقية شبيهة بالإنتاج.
استخدم التشغيل الخاضع للإشراف للحصول على موثوقية أقرب إلى الإنتاج.
<Tabs>
<Tab title="macOS (launchd)">
@ -204,7 +204,7 @@ openclaw gateway restart
openclaw gateway stop
```
تسميات LaunchAgent هي `ai.openclaw.gateway` (الافتراضي) أو `ai.openclaw.<profile>` (ملف شخصي مسمّى). يقوم `openclaw doctor` بتدقيق انجراف إعدادات الخدمة وإصلاحه.
تسميات LaunchAgent هي `ai.openclaw.gateway` (الافتراضي) أو `ai.openclaw.<profile>` (ملف شخصي مسمّى). يقوم `openclaw doctor` بتدقيق انجراف إعداد الخدمة وإصلاحه.
</Tab>
@ -254,35 +254,35 @@ openclaw gateway restart
openclaw gateway stop
```
يستخدم بدء التشغيل المُدار الأصلي في Windows Scheduled Task باسم `OpenClaw Gateway`
(أو `OpenClaw Gateway (<profile>)` للملفات الشخصية المسمّاة). إذا تم رفض إنشاء
Scheduled Task، يعود OpenClaw إلى مشغّل داخل مجلد Startup لكل مستخدم
يستخدم بدء التشغيل المُدار الأصلي في Windows مهمة مجدولة باسم `OpenClaw Gateway`
(أو `OpenClaw Gateway (<profile>)` للملفات الشخصية المسماة). إذا تم رفض إنشاء
المهمة المجدولة، يعود OpenClaw إلى مُشغّل داخل مجلد Startup خاص بالمستخدم
يشير إلى `gateway.cmd` داخل دليل الحالة.
</Tab>
<Tab title="Linux (system service)">
استخدم وحدة نظام للمضيفات متعددة المستخدمين/الدائمة التشغيل.
استخدم وحدة نظام للمضيفات متعددة المستخدمين/العاملة دائمًا.
```bash
sudo systemctl daemon-reload
sudo systemctl enable --now openclaw-gateway[-<profile>].service
```
استخدم نص الخدمة نفسه كما في وحدة المستخدم، ولكن ثبّته ضمن
استخدم نفس جسم الخدمة مثل وحدة المستخدم، ولكن ثبّته تحت
`/etc/systemd/system/openclaw-gateway[-<profile>].service` واضبط
`ExecStart=` إذا كان ملف `openclaw` التنفيذي لديك موجودًا في مكان آخر.
`ExecStart=` إذا كان الملف التنفيذي `openclaw` لديك موجودًا في مكان آخر.
</Tab>
</Tabs>
## عدة Gateways على مضيف واحد
يجب أن تشغّل معظم الإعدادات **Gateway** واحدًا.
استخدم عدة Gateways فقط للعزل/الاستمرارية الصارمة (على سبيل المثال ملف إنقاذ).
ينبغي أن تشغّل معظم الإعدادات **Gateway واحدة**.
استخدم عدة Gateways فقط للعزل/التكرار الصارم (مثل ملف شخصي للإنقاذ).
قائمة التحقق لكل نسخة:
قائمة التحقق لكل مثيل:
- `gateway.port` فريد
- `OPENCLAW_CONFIG_PATH` فريد
@ -298,7 +298,7 @@ OPENCLAW_CONFIG_PATH=~/.openclaw/b.json OPENCLAW_STATE_DIR=~/.openclaw-b opencla
راجع: [عدة Gateways](/ar/gateway/multiple-gateways).
### المسار السريع لملف التطوير
### المسار السريع لملف dev الشخصي
```bash
openclaw --dev setup
@ -306,25 +306,25 @@ openclaw --dev gateway --allow-unconfigured
openclaw --dev status
```
تتضمن القيم الافتراضية حالة/إعدادات معزولة ومنفذ Gateway أساسي `19001`.
تتضمن الإعدادات الافتراضية حالة/إعدادًا معزولين ومنفذ Gateway أساسي `19001`.
## مرجع سريع للبروتوكول (منظور المشغّل)
## مرجع سريع للبروتوكول (منظور المشغل)
- يجب أن يكون أول إطار من العميل هو `connect`.
- يعيد Gateway لقطة `hello-ok` (`presence` و`health` و`stateVersion` و`uptimeMs` والحدود/السياسة).
- `hello-ok.features.methods` / `events` هما قائمة اكتشاف متحفظة، وليسا
- إن `hello-ok.features.methods` / `events` هي قائمة اكتشاف محافظة، وليست
تفريغًا مولدًا لكل مسار مساعد قابل للاستدعاء.
- الطلبات: `req(method, params)``res(ok/payload|error)`.
- تشمل الأحداث الشائعة `connect.challenge` و`agent` و`chat` و
`session.message` و`session.tool` و`sessions.changed` و`presence` و`tick` و
`health` و`heartbeat` وأحداث دورة حياة الاقتران/الموافقة و`shutdown`.
- تتضمن الأحداث الشائعة `connect.challenge` و`agent` و`chat`،
و`session.message` و`session.tool` و`sessions.changed` و`presence` و`tick`،
و`health` و`heartbeat`، وأحداث دورة حياة الاقتران/الموافقة، و`shutdown`.
تشغيلات الوكيل تمر بمرحلتين:
تعمل تشغيلات الوكيل على مرحلتين:
1. إقرار قبول فوري (`status:"accepted"`)
2. استجابة إكمال نهائية (`status:"ok"|"error"`)، مع أحداث `agent` متدفقة بينهما.
1. إشعار قبول فوري (`status:"accepted"`)
2. استجابة إكمال نهائية (`status:"ok"|"error"`)، مع تدفق أحداث `agent` بينهما.
راجع وثائق البروتوكول الكاملة: [بروتوكول Gateway](/ar/gateway/protocol).
راجع مستندات البروتوكول الكاملة: [بروتوكول Gateway](/ar/gateway/protocol).
## الفحوصات التشغيلية
@ -341,26 +341,26 @@ openclaw channels status --probe
openclaw health
```
### استعادة الفجوات
### استرداد الفجوات
لا تُعاد الأحداث. عند وجود فجوات في التسلسل، حدّث الحالة (`health` و`system-presence`) قبل المتابعة.
لا تُعاد الأحداث. عند وجود فجوات في التسلسل، حدّث الحالة (`health`, `system-presence`) قبل المتابعة.
## تواقيع الأعطال الشائعة
| التوقيع | المشكلة المحتملة |
| ------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| `refusing to bind gateway ... without auth` | ربط غير loopback من دون مسار مصادقة صالح لـ Gateway |
| `another gateway instance is already listening` / `EADDRINUSE` | تعارض منفذ |
| `Gateway start blocked: set gateway.mode=local` | الإعداد مضبوط على الوضع البعيد، أو ختم الوضع المحلي مفقود من إعداد تالف |
| `unauthorized` during connect | عدم تطابق المصادقة بين العميل وGateway |
| التوقيع | المشكلة المحتملة |
| ------- | ---------------- |
| `refusing to bind gateway ... without auth` | ربط غير loopback من دون مسار مصادقة صالح لـ Gateway |
| `another gateway instance is already listening` / `EADDRINUSE` | تعارض منفذ |
| `Gateway start blocked: set gateway.mode=local` | الإعداد مضبوط على الوضع البعيد، أو أن ختم الوضع المحلي مفقود من إعداد تالف |
| `unauthorized` during connect | عدم تطابق المصادقة بين العميل وGateway |
للاطلاع على سلاسل تشخيص كاملة، استخدم [استكشاف أخطاء Gateway](/ar/gateway/troubleshooting).
للحصول على تسلسلات تشخيص كاملة، استخدم [استكشاف أخطاء Gateway وإصلاحها](/ar/gateway/troubleshooting).
## ضمانات السلامة
## ضمانات الأمان
- تفشل عملاء بروتوكول Gateway بسرعة عندما لا يكون Gateway متاحًا (من دون رجوع احتياطي ضمني إلى القناة المباشرة).
- يفشل عملاء بروتوكول Gateway بسرعة عند عدم توفر Gateway (من دون أي رجوع ضمني إلى قناة مباشرة).
- تُرفض الإطارات الأولى غير الصالحة/غير `connect` ويُغلق الاتصال.
- يرسل الإغلاق السلس الحدث `shutdown` قبل إغلاق المقبس.
- يصدر الإيقاف السلس الحدث `shutdown` قبل إغلاق المقبس.
---
@ -368,7 +368,7 @@ openclaw health
- [استكشاف الأخطاء وإصلاحها](/ar/gateway/troubleshooting)
- [العملية الخلفية](/ar/gateway/background-process)
- [الإعدادات](/ar/gateway/configuration)
- [السلامة](/ar/gateway/health)
- [الإعداد](/ar/gateway/configuration)
- [الصحة](/ar/gateway/health)
- [Doctor](/ar/gateway/doctor)
- [المصادقة](/ar/gateway/authentication)

View File

@ -1,21 +1,21 @@
---
read_when:
- أحالَك مركز استكشاف الأخطاء وإصلاحها إلى هنا لإجراء تشخيص أعمق
- أنت بحاجة إلى أقسام دليل تشغيل قائمة على الأعراض ومستقرة تتضمن أوامر دقيقة
summary: دليل متعمق لاستكشاف الأخطاء وإصلاحها لـ gateway والقنوات والأتمتة والعُقد والمتصفح
- تحتاج إلى أقسام دليل إجرائي مستقرة قائمة على الأعراض مع أوامر دقيقة
summary: دليل استكشاف الأخطاء وإصلاحها المتعمق لـ Gateway والقنوات والأتمتة والعُقد والمتصفح
title: استكشاف الأخطاء وإصلاحها
x-i18n:
generated_at: "2026-04-11T02:45:06Z"
generated_at: "2026-04-20T07:29:33Z"
model: gpt-5.4
provider: openai
source_hash: 7ef2faccba26ede307861504043a6415bc1f12dc64407771106f63ddc5b107f5
source_hash: d93a82407dbb1314b91a809ff9433114e1e9a3b56d46547ef53a8196bac06260
source_path: gateway/troubleshooting.md
workflow: 15
---
# استكشاف أخطاء Gateway وإصلاحها
هذه الصفحة هي دليل التشغيل المتعمق.
هذه الصفحة هي الدليل الإجرائي المتعمق.
ابدأ من [/help/troubleshooting](/ar/help/troubleshooting) إذا كنت تريد مسار الفرز السريع أولًا.
## تسلسل الأوامر
@ -32,13 +32,14 @@ openclaw channels status --probe
الإشارات الصحية المتوقعة:
- يعرض `openclaw gateway status` القيمتين `Runtime: running` و`RPC probe: ok`.
- يبلّغ `openclaw doctor` عن عدم وجود مشكلات إعداد/خدمة معيقة.
- يعرض `openclaw channels status --probe` حالة النقل المباشرة لكل حساب، ونتائج الفحص/التدقيق حيثما كان ذلك مدعومًا، مثل `works` أو `audit ok`.
- يعرض `openclaw gateway status` القيم `Runtime: running` و`Connectivity probe: ok` وسطر `Capability: ...`.
- يبلّغ `openclaw doctor` بعدم وجود مشكلات حظر في الإعدادات/الخدمة.
- يعرض `openclaw channels status --probe` حالة النقل الحية لكل حساب، وعند الدعم،
نتائج الفحص/التدقيق مثل `works` أو `audit ok`.
## Anthropic 429 يتطلب استخدامًا إضافيًا للسياق الطويل
## Anthropic 429: مطلوب استخدام إضافي للسياق الطويل
استخدم هذا القسم عندما تتضمن السجلات/الأخطاء:
استخدم هذا عندما تتضمن السجلات/الأخطاء:
`HTTP 429: rate_limit_error: Extra usage is required for long context requests`.
```bash
@ -49,15 +50,15 @@ openclaw config get agents.defaults.models
ابحث عن:
- أن نموذج Anthropic Opus/Sonnet المحدد يحتوي على `params.context1m: true`.
- أن بيانات اعتماد Anthropic الحالية غير مؤهلة لاستخدام السياق الطويل.
- أن الطلبات تفشل فقط في الجلسات الطويلة أو تشغيلات النماذج التي تحتاج إلى مسار 1M التجريبي.
- نموذج Anthropic Opus/Sonnet المحدد يحتوي على `params.context1m: true`.
- بيانات اعتماد Anthropic الحالية غير مؤهلة لاستخدام السياق الطويل.
- تفشل الطلبات فقط في الجلسات الطويلة/عمليات تشغيل النماذج التي تحتاج إلى مسار beta بحجم 1M.
خيارات الإصلاح:
1. عطّل `context1m` لذلك النموذج للرجوع إلى نافذة السياق العادية.
2. استخدم بيانات اعتماد Anthropic مؤهلة لطلبات السياق الطويل، أو بدّل إلى مفتاح Anthropic API.
3. اضبط نماذج احتياطية حتى تستمر التشغيلات عندما تُرفض طلبات Anthropic للسياق الطويل.
3. اضبط نماذج احتياطية حتى تستمر عمليات التشغيل عند رفض طلبات Anthropic ذات السياق الطويل.
ذو صلة:
@ -65,13 +66,13 @@ openclaw config get agents.defaults.models
- [/reference/token-use](/ar/reference/token-use)
- [/help/faq#why-am-i-seeing-http-429-ratelimiterror-from-anthropic](/ar/help/faq#why-am-i-seeing-http-429-ratelimiterror-from-anthropic)
## خلفية محلية متوافقة مع OpenAI تجتاز الفحوصات المباشرة لكن تشغيلات الوكيل تفشل
## الخلفية المحلية المتوافقة مع OpenAI تمرر الفحوصات المباشرة لكن تشغيلات الوكيل تفشل
استخدم هذا القسم عندما:
استخدم هذا عندما:
- ينجح `curl ... /v1/models`
- تنجح استدعاءات `/v1/chat/completions` المباشرة الصغيرة
- تفشل تشغيلات نماذج OpenClaw فقط أثناء أدوار الوكيل العادية
- تفشل عمليات تشغيل نموذج OpenClaw فقط أثناء أدوار الوكيل العادية
```bash
curl http://127.0.0.1:1234/v1/models
@ -84,22 +85,31 @@ openclaw logs --follow
ابحث عن:
- أن الاستدعاءات المباشرة الصغيرة تنجح، لكن تشغيلات OpenClaw تفشل فقط مع المطالبات الأكبر
- أخطاء في الخلفية بشأن توقّع `messages[].content` أن يكون سلسلة نصية
- تعطل الخلفية الذي يظهر فقط مع أعداد أكبر من رموز المطالبات أو مطالبات وقت تشغيل الوكيل الكاملة
- تنجح الاستدعاءات المباشرة الصغيرة، لكن تشغيلات OpenClaw تفشل فقط مع المطالبات الأكبر
- أخطاء في الخلفية حول توقّع `messages[].content` أن يكون سلسلة نصية
- تعطل الخلفية الذي يظهر فقط مع أعداد أكبر من رموز المطالبات أو مع مطالبات وقت تشغيل الوكيل الكاملة
الأنماط الشائعة:
السمات الشائعة:
- `messages[...].content: invalid type: sequence, expected a string` → الخلفية ترفض أجزاء محتوى Chat Completions المهيكلة. الإصلاح: اضبط `models.providers.<provider>.models[].compat.requiresStringContent: true`.
- تنجح الطلبات المباشرة الصغيرة، لكن تشغيلات وكلاء OpenClaw تفشل مع تعطل الخلفية/النموذج (مثل Gemma على بعض إصدارات `inferrs`) → من المرجح أن نقل OpenClaw صحيح بالفعل؛ الخلفية هي التي تفشل مع شكل مطالبة وقت تشغيل الوكيل الأكبر.
- تتراجع الإخفاقات بعد تعطيل الأدوات لكنها لا تختفي → كانت مخططات الأدوات جزءًا من الضغط، لكن المشكلة المتبقية ما تزال في سعة النموذج/الخادم المصدر أو في خطأ بالخلفية.
- `messages[...].content: invalid type: sequence, expected a string` → الخلفية
ترفض أجزاء محتوى Chat Completions المهيكلة. الإصلاح: اضبط
`models.providers.<provider>.models[].compat.requiresStringContent: true`.
- تنجح الطلبات المباشرة الصغيرة، لكن أدوار وكيل OpenClaw تفشل مع تعطل الخلفية/النموذج
(مثلًا Gemma على بعض إصدارات `inferrs`) → من المرجح أن نقل OpenClaw
صحيح بالفعل؛ المشكلة في الخلفية التي تفشل مع شكل مطالبة وقت تشغيل الوكيل الأكبر.
- تقل حالات الفشل بعد تعطيل الأدوات لكنها لا تختفي → كانت مخططات الأدوات
جزءًا من الضغط، لكن المشكلة المتبقية ما تزال في السعة أو في خطأ بالخلفية/الخادم upstream.
خيارات الإصلاح:
1. اضبط `compat.requiresStringContent: true` للخلفيات التي لا تدعم إلا محتوى Chat Completions النصي.
2. اضبط `compat.supportsTools: false` للنماذج/الخلفيات التي لا تستطيع التعامل بشكل موثوق مع سطح مخطط أدوات OpenClaw.
3. خفّض ضغط المطالبات حيثما أمكن: bootstrap أصغر لمساحة العمل، وسجل جلسة أقصر، ونموذج محلي أخف، أو خلفية ذات دعم أقوى للسياق الطويل.
4. إذا استمرت الطلبات المباشرة الصغيرة في النجاح بينما ما تزال أدوار وكيل OpenClaw تتعطل داخل الخلفية، فاعتبر ذلك قيدًا في الخادم/النموذج المصدر وقدّم بلاغ إعادة إنتاج هناك مع شكل الحمولة المقبول.
1. اضبط `compat.requiresStringContent: true` للخلفيات التي تدعم Chat Completions النصية فقط.
2. اضبط `compat.supportsTools: false` للنماذج/الخلفيات التي لا تستطيع التعامل
بشكل موثوق مع سطح مخطط أدوات OpenClaw.
3. خفّض ضغط المطالبات حيثما أمكن: تهيئة مساحة عمل أصغر، سجل جلسة أقصر،
نموذج محلي أخف، أو خلفية ذات دعم أقوى للسياق الطويل.
4. إذا استمرت الطلبات المباشرة الصغيرة بالنجاح بينما ما تزال أدوار وكيل OpenClaw
تتعطل داخل الخلفية، فاعتبرها قيدًا في الخادم/النموذج upstream وقدّم
إعادة إنتاج هناك مع شكل الحمولة المقبول.
ذو صلة:
@ -109,7 +119,7 @@ openclaw logs --follow
## لا توجد ردود
إذا كانت القنوات تعمل لكن لا يوجد أي رد، فتحقق من التوجيه والسياسة قبل إعادة توصيل أي شيء.
إذا كانت القنوات تعمل لكن لا يصل أي رد، فتحقق من التوجيه والسياسة قبل إعادة توصيل أي شيء.
```bash
openclaw status
@ -121,15 +131,15 @@ openclaw logs --follow
ابحث عن:
- اقتران معلّق لمرسلي الرسائل المباشرة.
- اشتراط الإشارة في المجموعات (`requireMention` و`mentionPatterns`).
- إقران معلّق لمرسلي الرسائل المباشرة.
- فرض الإشارة في المجموعات (`requireMention` و`mentionPatterns`).
- عدم تطابق قائمة السماح للقناة/المجموعة.
الأنماط الشائعة:
السمات الشائعة:
- `drop guild message (mention required` → تم تجاهل رسالة المجموعة حتى تتم الإشارة.
- `pairing request` → يحتاج المرسل إلى الموافقة.
- `blocked` / `allowlist` → تمت تصفية المرسل/القناة بواسطة السياسة.
- `drop guild message (mention required` → تم تجاهل رسالة المجموعة إلى حين وجود إشارة.
- `pairing request` → يحتاج المرسل إلى موافقة.
- `blocked` / `allowlist` → تم تصفية المرسل/القناة بواسطة السياسة.
ذو صلة:
@ -137,9 +147,9 @@ openclaw logs --follow
- [/channels/pairing](/ar/channels/pairing)
- [/channels/groups](/ar/channels/groups)
## اتصال Dashboard وControl UI
## اتصال واجهة التحكم Dashboard/Control UI
عندما يتعذر على dashboard أو Control UI الاتصال، تحقّق من عنوان URL ووضع المصادقة وافتراضات السياق الآمن.
عندما يتعذر على Dashboard/Control UI الاتصال، تحقّق من عنوان URL ووضع المصادقة وافتراضات السياق الآمن.
```bash
openclaw gateway status
@ -151,36 +161,49 @@ openclaw gateway status --json
ابحث عن:
- عنوان URL الصحيح للفحص وdashboard.
- عدم تطابق وضع/رمز المصادقة بين العميل وgateway.
- استخدام HTTP حيث تكون هوية الجهاز مطلوبة.
- عنوان URL الصحيح للفحص وDashboard.
- عدم تطابق وضع/رمز المصادقة بين العميل وGateway.
- استخدام HTTP عندما تكون هوية الجهاز مطلوبة.
الأنماط الشائعة:
السمات الشائعة:
- `device identity required` → سياق غير آمن أو غياب مصادقة الجهاز.
- `origin not allowed` → قيمة `Origin` في المتصفح غير موجودة في `gateway.controlUi.allowedOrigins` (أو أنك تتصل من أصل متصفح غير loopback بدون قائمة سماح صريحة).
- `device nonce required` / `device nonce mismatch` → العميل لا يكمل تدفق مصادقة الجهاز القائم على التحدي (`connect.challenge` + `device.nonce`).
- `device signature invalid` / `device signature expired` → وقّع العميل الحمولة الخاطئة (أو استخدم طابعًا زمنيًا قديمًا) للمصافحة الحالية.
- `AUTH_TOKEN_MISMATCH` مع `canRetryWithDeviceToken=true` → يمكن للعميل تنفيذ إعادة محاولة موثوقة واحدة باستخدام رمز جهاز مخزن مؤقتًا.
- تعيد محاولة الرمز المخزن مؤقتًا استخدام مجموعة النطاقات المخزنة مع رمز الجهاز المقترن. أما المستدعون الذين يمررون `deviceToken` صريحًا أو `scopes` صريحة فيحتفظون بمجموعة النطاقات المطلوبة لديهم بدلًا من ذلك.
- خارج مسار إعادة المحاولة هذا، تكون أولوية مصادقة الاتصال: الرمز/كلمة المرور المشتركة الصريحة أولًا، ثم `deviceToken` الصريح، ثم رمز الجهاز المخزن، ثم رمز bootstrap.
- في مسار Control UI غير المتزامن عبر Tailscale Serve، تتم مَسلسلة المحاولات الفاشلة لنفس `{scope, ip}` قبل أن يسجل المحدِّد الفشل. لذلك قد تُظهر محاولتا إعادة سيئتان ومتزامنتان من العميل نفسه الرسالة `retry later` في المحاولة الثانية بدلًا من حالتي عدم تطابق عاديتين.
- `too many failed authentication attempts (retry later)` من عميل loopback ذي أصل متصفح → يتم حظر الإخفاقات المتكررة مؤقتًا من ذلك `Origin` المُطبَّع نفسه؛ ويستخدم أصل localhost آخر حاوية منفصلة.
- `unauthorized` متكرر بعد تلك إعادة المحاولة → انجراف في الرمز المشترك/رمز الجهاز؛ حدّث إعدادات الرمز وأعِد الموافقة على رمز الجهاز أو دوّره إذا لزم الأمر.
- `gateway connect failed:` → الهدف host/port/url غير صحيح.
- `origin not allowed` → قيمة `Origin` في المتصفح ليست ضمن `gateway.controlUi.allowedOrigins`
(أو أنك تتصل من أصل متصفح غير loopback بدون
قائمة سماح صريحة).
- `device nonce required` / `device nonce mismatch` → العميل لا يُكمل
تدفق مصادقة الجهاز القائم على التحدي (`connect.challenge` + `device.nonce`).
- `device signature invalid` / `device signature expired` → العميل وقّع الحمولة الخطأ
(أو استخدم طابعًا زمنيًا قديمًا) للمصافحة الحالية.
- `AUTH_TOKEN_MISMATCH` مع `canRetryWithDeviceToken=true` → يمكن للعميل إجراء إعادة محاولة موثوقة واحدة باستخدام رمز جهاز مخزّن مؤقتًا.
- تعيد محاولة الرمز المخزّن مؤقتًا استخدام مجموعة النطاقات المخزنة مع
رمز الجهاز المقترن. أما المستدعون الذين يمررون `deviceToken` صريحًا / `scopes` صريحة فيحتفظون
بمجموعة النطاقات المطلوبة الخاصة بهم بدلًا من ذلك.
- خارج مسار إعادة المحاولة هذا، تكون أولوية مصادقة الاتصال كالتالي: الرمز
المشترك/كلمة المرور الصريحان أولًا، ثم `deviceToken` الصريح، ثم رمز الجهاز المخزن،
ثم رمز bootstrap.
- في مسار Control UI غير المتزامن عبر Tailscale Serve، تُسلسَل المحاولات الفاشلة
لنفس `{scope, ip}` قبل أن يسجل المحدِّد الفشل. لذلك يمكن أن تُظهر محاولتا إعادة سيئتان متزامنتان من العميل نفسه
الرسالة `retry later`
في المحاولة الثانية بدلًا من ظهور حالتي عدم تطابق عاديتين.
- `too many failed authentication attempts (retry later)` من عميل loopback
ذي أصل متصفح → تُحظر مؤقتًا الإخفاقات المتكررة من نفس `Origin` بعد تطبيعه؛
ويستخدم أصل localhost آخر حصة منفصلة.
- تكرار `unauthorized` بعد إعادة المحاولة تلك → انجراف في الرمز المشترك/رمز الجهاز؛ حدّث إعدادات الرمز وأعد اعتماد/تدوير رمز الجهاز عند الحاجة.
- `gateway connect failed:` → المضيف/المنفذ/عنوان URL الهدف غير صحيح.
### خريطة سريعة لتفاصيل رموز المصادقة
استخدم `error.details.code` من استجابة `connect` الفاشلة لاختيار الإجراء التالي:
| رمز التفاصيل | المعنى | الإجراء الموصى به |
| --------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AUTH_TOKEN_MISSING` | لم يرسل العميل رمزًا مشتركًا مطلوبًا. | الصق/اضبط الرمز في العميل ثم أعد المحاولة. لمسارات dashboard: `openclaw config get gateway.auth.token` ثم الصقه في إعدادات Control UI. |
| `AUTH_TOKEN_MISMATCH` | الرمز المشترك لا يطابق رمز مصادقة gateway. | إذا كانت `canRetryWithDeviceToken=true`، اسمح بإعادة محاولة موثوقة واحدة. تعيد محاولات الرمز المخزن مؤقتًا استخدام النطاقات المعتمدة المخزنة؛ أما المستدعون الذين يمررون `deviceToken` أو `scopes` صريحة فيحتفظون بالنطاقات المطلوبة. إذا استمر الفشل، شغّل [قائمة التحقق من استرداد انجراف الرمز](/cli/devices#token-drift-recovery-checklist). |
| `AUTH_DEVICE_TOKEN_MISMATCH` | رمز كل جهاز المخزن مؤقتًا قديم أو ملغى. | دوّر رمز الجهاز أو أعد الموافقة عليه باستخدام [CLI الأجهزة](/cli/devices)، ثم أعد الاتصال. |
| `PAIRING_REQUIRED` | هوية الجهاز معروفة لكنها غير معتمدة لهذا الدور. | وافق على الطلب المعلّق: `openclaw devices list` ثم `openclaw devices approve <requestId>`. |
| رمز التفاصيل | المعنى | الإجراء الموصى به |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `AUTH_TOKEN_MISSING` | لم يرسل العميل رمزًا مشتركًا مطلوبًا. | الصق/اضبط الرمز في العميل ثم أعد المحاولة. لمسارات Dashboard: `openclaw config get gateway.auth.token` ثم الصقه في إعدادات Control UI. |
| `AUTH_TOKEN_MISMATCH` | لم يطابق الرمز المشترك رمز مصادقة Gateway. | إذا كانت `canRetryWithDeviceToken=true`، اسمح بإعادة محاولة موثوقة واحدة. تعيد محاولات الرمز المخزّن مؤقتًا استخدام النطاقات المعتمدة المخزنة؛ أما المستدعون الذين يمررون `deviceToken` / `scopes` صريحة فيحتفظون بالنطاقات المطلوبة. إذا استمر الفشل، شغّل [قائمة التحقق من استرداد انجراف الرمز](/cli/devices#token-drift-recovery-checklist). |
| `AUTH_DEVICE_TOKEN_MISMATCH` | رمز كل جهاز المخزّن مؤقتًا قديم أو أُلغي. | دوّر/أعد اعتماد رمز الجهاز باستخدام [CLI الأجهزة](/cli/devices)، ثم أعد الاتصال. |
| `PAIRING_REQUIRED` | تتطلب هوية الجهاز موافقة. تحقّق من `error.details.reason` لمعرفة `not-paired` أو `scope-upgrade` أو `role-upgrade` أو `metadata-upgrade`، واستخدم `requestId` / `remediationHint` عند توفرهما. | وافق على الطلب المعلّق: `openclaw devices list` ثم `openclaw devices approve <requestId>`. تستخدم ترقيات النطاق/الدور المسار نفسه بعد مراجعة الوصول المطلوب. |
فحص ترحيل مصادقة الأجهزة v2:
فحص ترحيل مصادقة الجهاز v2:
```bash
openclaw --version
@ -188,35 +211,37 @@ openclaw doctor
openclaw gateway status
```
إذا أظهرت السجلات أخطاء nonce/التوقيع، فحدّث العميل المتصل وتحقّق من أنه:
إذا أظهرت السجلات أخطاء nonce/signature، فحدّث العميل المتصل وتحقق من أنه:
1. ينتظر `connect.challenge`
2. يوقّع الحمولة المرتبطة بالتحدي
3. يرسل `connect.params.device.nonce` مع nonce التحدي نفسه
3. يرسل `connect.params.device.nonce` مع nonce التحدي نفسها
إذا تم رفض `openclaw devices rotate` / `revoke` / `remove` بشكل غير متوقع:
- يمكن لجلسات رمز الجهاز المقترن إدارة **أجهزتها فقط** ما لم تكن جلسة المستدعي تملك أيضًا `operator.admin`
- لا يمكن لـ `openclaw devices rotate --scope ...` طلب نطاقات المشغّل إلا إذا كانت جلسة المستدعي تملك هذه النطاقات بالفعل
- يمكن لجلسات رموز الأجهزة المقترنة إدارة **جهازها فقط**
ما لم يكن لدى المستدعي أيضًا `operator.admin`
- لا يمكن لـ `openclaw devices rotate --scope ...` طلب نطاقات operator
إلا إذا كانت جلسة المستدعي تحملها بالفعل
ذو صلة:
- [/web/control-ui](/web/control-ui)
- [/gateway/configuration](/ar/gateway/configuration) (أوضاع مصادقة gateway)
- [/gateway/configuration](/ar/gateway/configuration) (أوضاع مصادقة Gateway)
- [/gateway/trusted-proxy-auth](/ar/gateway/trusted-proxy-auth)
- [/gateway/remote](/ar/gateway/remote)
- [/cli/devices](/cli/devices)
## خدمة Gateway لا تعمل
استخدم هذا القسم عندما تكون الخدمة مثبّتة لكن العملية لا تظل قيد التشغيل.
استخدم هذا عندما تكون الخدمة مثبتة لكن العملية لا تبقى قيد التشغيل.
```bash
openclaw gateway status
openclaw status
openclaw logs --follow
openclaw doctor
openclaw gateway status --deep # يفحص أيضًا الخدمات على مستوى النظام
openclaw gateway status --deep # يفحص أيضًا خدمات النظام
```
ابحث عن:
@ -224,15 +249,15 @@ openclaw gateway status --deep # يفحص أيضًا الخدمات على م
- `Runtime: stopped` مع تلميحات الخروج.
- عدم تطابق إعدادات الخدمة (`Config (cli)` مقابل `Config (service)`).
- تعارضات المنفذ/المستمع.
- عمليات تثبيت launchd/systemd/schtasks إضافية عند استخدام `--deep`.
- تثبيتات launchd/systemd/schtasks إضافية عند استخدام `--deep`.
- تلميحات تنظيف `Other gateway-like services detected (best effort)`.
الأنماط الشائعة:
السمات الشائعة:
- `Gateway start blocked: set gateway.mode=local` أو `existing config is missing gateway.mode`وضع gateway المحلي غير مفعّل، أو تم العبث بملف الإعداد وفقد قيمة `gateway.mode`. الإصلاح: اضبط `gateway.mode="local"` في إعداداتك، أو أعد تشغيل `openclaw onboard --mode local` / `openclaw setup` لإعادة ختم إعدادات الوضع المحلي المتوقعة. إذا كنت تشغّل OpenClaw عبر Podman، فمسار الإعدادات الافتراضي هو `~/.openclaw/openclaw.json`.
- `refusing to bind gateway ... without auth` → ربط غير loopback بدون مسار مصادقة صالح للـ gateway (رمز/كلمة مرور، أو trusted-proxy حيث يكون مضبوطًا).
- `Gateway start blocked: set gateway.mode=local` أو `existing config is missing gateway.mode`لم يتم تمكين وضع Gateway المحلي، أو تم العبث بملف الإعدادات وفقد `gateway.mode`. الإصلاح: اضبط `gateway.mode="local"` في إعداداتك، أو أعد تشغيل `openclaw onboard --mode local` / `openclaw setup` لإعادة ختم إعدادات الوضع المحلي المتوقعة. إذا كنت تشغّل OpenClaw عبر Podman، فإن مسار الإعدادات الافتراضي هو `~/.openclaw/openclaw.json`.
- `refusing to bind gateway ... without auth` → ربط غير loopback من دون مسار مصادقة صالح لـ Gateway (رمز/كلمة مرور، أو trusted-proxy عند ضبطه).
- `another gateway instance is already listening` / `EADDRINUSE` → تعارض منفذ.
- `Other gateway-like services detected (best effort)` → توجد وحدات launchd/systemd/schtasks قديمة أو متوازية. ينبغي لمعظم الإعدادات الاحتفاظ بـ gateway واحد لكل جهاز؛ وإذا كنت تحتاج فعلًا إلى أكثر من واحد، فاعزل المنافذ والإعدادات/الحالة/مساحة العمل. راجع [/gateway#multiple-gateways-same-host](/ar/gateway#multiple-gateways-same-host).
- `Other gateway-like services detected (best effort)` → توجد وحدات launchd/systemd/schtasks قديمة أو متوازية. في معظم الإعدادات يجب الإبقاء على Gateway واحد لكل جهاز؛ وإذا كنت تحتاج بالفعل إلى أكثر من واحد، فعليك عزل المنافذ + الإعدادات/الحالة/مساحة العمل. راجع [/gateway#multiple-gateways-same-host](/ar/gateway#multiple-gateways-same-host).
ذو صلة:
@ -242,7 +267,7 @@ openclaw gateway status --deep # يفحص أيضًا الخدمات على م
## تحذيرات فحص Gateway
استخدم هذا القسم عندما يصل `openclaw gateway probe` إلى شيء ما، لكنه ما يزال يطبع كتلة تحذير.
استخدم هذا عندما يصل `openclaw gateway probe` إلى شيء ما، لكنه ما يزال يطبع كتلة تحذير.
```bash
openclaw gateway probe
@ -253,14 +278,15 @@ openclaw gateway probe --ssh user@gateway-host
ابحث عن:
- `warnings[].code` و`primaryTargetId` في مخرجات JSON.
- ما إذا كان التحذير متعلقًا بالرجوع إلى SSH، أو بوجود عدة gateway، أو بنطاقات مفقودة، أو بمراجع مصادقة غير محلولة.
- ما إذا كان التحذير متعلقًا بالرجوع إلى SSH أو بوجود عدة Gateways أو بنطاقات مفقودة أو بمراجع مصادقة غير محلولة.
الأنماط الشائعة:
السمات الشائعة:
- `SSH tunnel failed to start; falling back to direct probes.` → فشل إعداد SSH، لكن الأمر ما يزال يحاول الفحص المباشر للأهداف المضبوطة/loopback.
- `multiple reachable gateways detected` → استجاب أكثر من هدف واحد. ويعني هذا عادةً إعدادًا مقصودًا لعدة gateway أو وجود مستمعات قديمة/مكررة.
- `Probe diagnostics are limited by gateway scopes (missing operator.read)` → نجح الاتصال، لكن تفاصيل RPC محدودة بالنطاقات؛ قم بإقران هوية الجهاز أو استخدم بيانات اعتماد تملك `operator.read`.
- نص تحذير SecretRef غير المحلول في `gateway.auth.*` / `gateway.remote.*` → لم تكن بيانات المصادقة متاحة في مسار هذا الأمر للهدف الذي فشل.
- `SSH tunnel failed to start; falling back to direct probes.` → فشل إعداد SSH، لكن الأمر ما يزال يحاول الأهداف المباشرة المضبوطة/الـ loopback.
- `multiple reachable gateways detected` → استجاب أكثر من هدف واحد. عادةً ما يعني هذا إعدادًا مقصودًا لعدة Gateways أو مستمعات قديمة/مكررة.
- `Read-probe diagnostics are limited by gateway scopes (missing operator.read)` → نجح الاتصال، لكن تفاصيل RPC محدودة بالنطاق؛ قم بإقران هوية الجهاز أو استخدم بيانات اعتماد تتضمن `operator.read`.
- `Capability: pairing-pending` أو `gateway closed (1008): pairing required` → استجاب Gateway، لكن هذا العميل ما يزال يحتاج إلى الإقران/الموافقة قبل الوصول التشغيلي العادي.
- نص تحذير SecretRef غير المحلول في `gateway.auth.*` / `gateway.remote.*` → لم تكن مادة المصادقة متاحة في مسار هذا الأمر للهدف الذي فشل.
ذو صلة:
@ -283,14 +309,14 @@ openclaw config get channels
ابحث عن:
- سياسة الرسائل المباشرة (`pairing` أو `allowlist` أو `open` أو `disabled`).
- قائمة السماح للمجموعات ومتطلبات الإشارة.
- قائمة السماح للمجموعة ومتطلبات الإشارة.
- أذونات/نطاقات API المفقودة الخاصة بالقناة.
الأنماط الشائعة:
السمات الشائعة:
- `mention required` → تم تجاهل الرسالة بسبب سياسة الإشارة في المجموعات.
- `mention required` → تم تجاهل الرسالة بسبب سياسة الإشارة في المجموعة.
- آثار `pairing` / الموافقة المعلقة → لم تتم الموافقة على المرسل.
- `missing_scope`, `not_in_channel`, `Forbidden`, `401/403` → مشكلة في مصادقة/أذونات القناة.
- `missing_scope` أو `not_in_channel` أو `Forbidden` أو `401/403` → مشكلة في مصادقة/أذونات القناة.
ذو صلة:
@ -301,7 +327,7 @@ openclaw config get channels
## تسليم Cron وHeartbeat
إذا لم يعمل cron أو heartbeat أو لم يتم التسليم، فتحقق أولًا من حالة المجدول، ثم من هدف التسليم.
إذا لم يعمل Cron أو Heartbeat أو لم يتم التسليم، فتحقق أولًا من حالة المجدول ثم من هدف التسليم.
```bash
openclaw cron status
@ -313,19 +339,19 @@ openclaw logs --follow
ابحث عن:
- أن cron مفعّل وأن وقت الاستيقاظ التالي موجود.
- أن يكون Cron ممكّنًا ووقت التنبيه التالي موجودًا.
- حالة سجل تشغيل المهمة (`ok` أو `skipped` أو `error`).
- أسباب تخطي heartbeat (`quiet-hours` أو `requests-in-flight` أو `alerts-disabled` أو `empty-heartbeat-file` أو `no-tasks-due`).
- أسباب تخطي Heartbeat (`quiet-hours` أو `requests-in-flight` أو `alerts-disabled` أو `empty-heartbeat-file` أو `no-tasks-due`).
الأنماط الشائعة:
السمات الشائعة:
- `cron: scheduler disabled; jobs will not run automatically` → تم تعطيل cron.
- `cron: scheduler disabled; jobs will not run automatically` → تم تعطيل Cron.
- `cron: timer tick failed` → فشل نبض المجدول؛ تحقق من أخطاء الملفات/السجلات/وقت التشغيل.
- `heartbeat skipped` مع `reason=quiet-hours` → خارج نافذة الساعات النشطة.
- `heartbeat skipped` مع `reason=empty-heartbeat-file` → يوجد `HEARTBEAT.md` لكنه يحتوي فقط على أسطر فارغة / عناوين Markdown، لذلك يتجاوز OpenClaw استدعاء النموذج.
- `heartbeat skipped` مع `reason=empty-heartbeat-file` → يوجد `HEARTBEAT.md` لكنه يحتوي فقط على أسطر فارغة / عناوين Markdown، لذلك يتخطى OpenClaw استدعاء النموذج.
- `heartbeat skipped` مع `reason=no-tasks-due` → يحتوي `HEARTBEAT.md` على كتلة `tasks:`، لكن لا توجد أي مهام مستحقة في هذه النبضة.
- `heartbeat: unknown accountId` → معرّف حساب غير صالح لهدف تسليم heartbeat.
- `heartbeat skipped` مع `reason=dm-blocked` → تم تحليل هدف heartbeat إلى وجهة بأسلوب الرسائل المباشرة بينما كان `agents.defaults.heartbeat.directPolicy` (أو التجاوز الخاص بكل وكيل) مضبوطًا على `block`.
- `heartbeat: unknown accountId` → معرّف حساب غير صالح لهدف تسليم Heartbeat.
- `heartbeat skipped` مع `reason=dm-blocked` → تم تحليل هدف Heartbeat إلى وجهة من نمط الرسائل المباشرة بينما تم ضبط `agents.defaults.heartbeat.directPolicy` (أو التجاوز الخاص بالوكيل) على `block`.
ذو صلة:
@ -333,9 +359,9 @@ openclaw logs --follow
- [/automation/cron-jobs](/ar/automation/cron-jobs)
- [/gateway/heartbeat](/ar/gateway/heartbeat)
## أداة العقدة المقترنة تفشل
## فشل أداة Node المقترنة
إذا كانت العقدة مقترنة لكن الأدوات تفشل، فاعزل حالة الواجهة الأمامية والأذونات والموافقة.
إذا كانت Node مقترنة لكن الأدوات تفشل، فاعزل حالة الواجهة الأمامية والأذونات والموافقة.
```bash
openclaw nodes status
@ -347,14 +373,14 @@ openclaw status
ابحث عن:
- أن العقدة متصلة وتملك الإمكانات المتوقعة.
- أن تكون Node متصلة مع الإمكانات المتوقعة.
- منح أذونات نظام التشغيل للكاميرا/الميكروفون/الموقع/الشاشة.
- حالة موافقات التنفيذ وقائمة السماح.
الأنماط الشائعة:
السمات الشائعة:
- `NODE_BACKGROUND_UNAVAILABLE` → يجب أن يكون تطبيق العقدة في الواجهة الأمامية.
- `*_PERMISSION_REQUIRED` / `LOCATION_PERMISSION_REQUIRED`أذونات نظام التشغيل مفقودة.
- `NODE_BACKGROUND_UNAVAILABLE` → يجب أن يكون تطبيق Node في الواجهة الأمامية.
- `*_PERMISSION_REQUIRED` / `LOCATION_PERMISSION_REQUIRED`إذن نظام تشغيل مفقود.
- `SYSTEM_RUN_DENIED: approval required` → موافقة التنفيذ معلقة.
- `SYSTEM_RUN_DENIED: allowlist miss` → تم حظر الأمر بواسطة قائمة السماح.
@ -364,9 +390,9 @@ openclaw status
- [/nodes/index](/ar/nodes/index)
- [/tools/exec-approvals](/ar/tools/exec-approvals)
## أداة المتصفح تفشل
## فشل أداة المتصفح
استخدم هذا القسم عندما تفشل إجراءات أداة المتصفح رغم أن gateway نفسه سليم.
استخدم هذا عندما تفشل إجراءات أداة المتصفح رغم أن Gateway نفسه سليم.
```bash
openclaw browser status
@ -378,30 +404,30 @@ openclaw doctor
ابحث عن:
- ما إذا كانت `plugins.allow` مضبوطة وتتضمن `browser`.
- مسار ملف المتصفح التنفيذي صالح.
- ما إذا كان `plugins.allow` مضبوطًا ويتضمن `browser`.
- مسار تنفيذي متصفح صالح.
- إمكانية الوصول إلى ملف تعريف CDP.
- توفر Chrome المحلي لملفات التعريف `existing-session` / `user`.
- توفر Chrome المحلي لملفات تعريف `existing-session` / `user`.
الأنماط الشائعة:
السمات الشائعة:
- `unknown command "browser"` أو `unknown command 'browser'` → تم استبعاد plugin المتصفح المضمّن بواسطة `plugins.allow`.
- غياب أداة المتصفح / عدم توفرها بينما `browser.enabled=true` → تستبعد `plugins.allow` القيمة `browser`، لذلك لم يتم تحميل plugin أصلًا.
- `Failed to start Chrome CDP on port` → فشل تشغيل عملية المتصفح.
- `unknown command "browser"` أو `unknown command 'browser'` → تم استبعاد Plugin المتصفح المضمّن بواسطة `plugins.allow`.
- أداة المتصفح مفقودة / غير متاحة بينما `browser.enabled=true` → يستبعد `plugins.allow` قيمة `browser`، لذلك لم يتم تحميل Plugin أصلًا.
- `Failed to start Chrome CDP on port` → فشلت عملية المتصفح في الإطلاق.
- `browser.executablePath not found` → المسار المضبوط غير صالح.
- `browser.cdpUrl must be http(s) or ws(s)` → يستخدم عنوان CDP URL المضبوط مخططًا غير مدعوم مثل `file:` أو `ftp:`.
- `browser.cdpUrl has invalid port` → يحتوي CDP URL المضبوط على منفذ سيئ أو خارج النطاق.
- `No Chrome tabs found for profile="user"` → لا يحتوي ملف تعريف الإرفاق Chrome MCP على أي ألسنة Chrome محلية مفتوحة.
- `Remote CDP for profile "<name>" is not reachable` → لا يمكن الوصول إلى نقطة نهاية CDP البعيدة المضبوطة من مضيف gateway.
- `Browser attachOnly is enabled ... not reachable` أو `Browser attachOnly is enabled and CDP websocket ... is not reachable` → لا يوجد هدف يمكن الوصول إليه لملف التعريف attach-only، أو أن نقطة نهاية HTTP استجابت لكن تعذر مع ذلك فتح CDP WebSocket.
- `Playwright is not available in this gateway build; '<feature>' is unsupported.` → يفتقر تثبيت gateway الحالي إلى حزمة Playwright الكاملة؛ ما يزال من الممكن عمل لقطات ARIA ولقطات الشاشة الأساسية للصفحة، لكن التنقل ولقطات AI ولقطات العناصر بمحددات CSS وتصدير PDF تبقى غير متاحة.
- `browser.cdpUrl must be http(s) or ws(s)` → يستخدم عنوان CDP المضبوط مخططًا غير مدعوم مثل `file:` أو `ftp:`.
- `browser.cdpUrl has invalid port` → يحتوي عنوان CDP المضبوط على منفذ سيئ أو خارج النطاق.
- `No Chrome tabs found for profile="user"` → لا توجد علامات تبويب Chrome محلية مفتوحة لملف تعريف إرفاق Chrome MCP.
- `Remote CDP for profile "<name>" is not reachable` → لا يمكن الوصول إلى نقطة نهاية CDP البعيدة المضبوطة من مضيف Gateway.
- `Browser attachOnly is enabled ... not reachable` أو `Browser attachOnly is enabled and CDP websocket ... is not reachable` → لا يوجد هدف يمكن الوصول إليه لملف تعريف attach-only، أو أن نقطة نهاية HTTP استجابت لكن لم يكن بالإمكان فتح WebSocket الخاص بـ CDP.
- `Playwright is not available in this gateway build; '<feature>' is unsupported.` → يفتقر تثبيت Gateway الحالي إلى حزمة Playwright الكاملة؛ ما تزال لقطات ARIA ولقطات الشاشة الأساسية للصفحات تعمل، لكن التنقل ولقطات AI ولقطات عناصر CSS selector وتصدير PDF تبقى غير متاحة.
- `fullPage is not supported for element screenshots` → مزج طلب لقطة الشاشة بين `--full-page` و`--ref` أو `--element`.
- `element screenshots are not supported for existing-session profiles; use ref from snapshot.` → يجب أن تستخدم استدعاءات لقطات الشاشة في Chrome MCP / `existing-session` التقاط الصفحة أو `--ref` من لقطة، وليس CSS `--element`.
- `existing-session file uploads do not support element selectors; use ref/inputRef.` → تحتاج خطافات رفع الملفات في Chrome MCP إلى مراجع لقطات، وليس محددات CSS.
- `existing-session file uploads currently support one file at a time.` → أرسل ملف رفع واحدًا لكل استدعاء في ملفات تعريف Chrome MCP.
- `existing-session dialog handling does not support timeoutMs.` → لا تدعم خطافات مربعات الحوار في ملفات تعريف Chrome MCP تجاوزات المهلة.
- `element screenshots are not supported for existing-session profiles; use ref from snapshot.` → يجب أن تستخدم استدعاءات لقطات شاشة Chrome MCP / `existing-session` التقاط الصفحة أو `--ref` من snapshot، وليس CSS `--element`.
- `existing-session file uploads do not support element selectors; use ref/inputRef.` → تحتاج Hooks رفع الملفات في Chrome MCP إلى مراجع snapshot، وليس محددات CSS.
- `existing-session file uploads currently support one file at a time.` → أرسل عملية رفع واحدة لكل استدعاء في ملفات تعريف Chrome MCP.
- `existing-session dialog handling does not support timeoutMs.` → لا تدعم Hooks مربعات الحوار في ملفات تعريف Chrome MCP تجاوزات المهلة.
- `response body is not supported for existing-session profiles yet.` → ما يزال `responsebody` يتطلب متصفحًا مُدارًا أو ملف تعريف CDP خامًا.
- تجاوزات viewport / الوضع الداكن / اللغة / عدم الاتصال القديمة على ملفات التعريف attach-only أو CDP البعيدة → شغّل `openclaw browser stop --browser-profile <name>` لإغلاق جلسة التحكم النشطة وتحرير حالة محاكاة Playwright/CDP بدون إعادة تشغيل gateway بالكامل.
- بقاء تجاوزات viewport / dark-mode / locale / offline القديمة في ملفات تعريف attach-only أو CDP البعيدة → شغّل `openclaw browser stop --browser-profile <name>` لإغلاق جلسة التحكم النشطة وتحرير حالة محاكاة Playwright/CDP من دون إعادة تشغيل Gateway بالكامل.
ذو صلة:
@ -410,7 +436,7 @@ openclaw doctor
## إذا قمت بالترقية وتعطل شيء فجأة
تكون معظم الأعطال بعد الترقية بسبب انجراف الإعدادات أو فرض افتراضات أكثر صرامة الآن.
معظم الأعطال بعد الترقية تكون بسبب انجراف الإعدادات أو فرض قيم افتراضية أكثر صرامة الآن.
### 1) تغيّر سلوك المصادقة وتجاوز عنوان URL
@ -421,17 +447,17 @@ openclaw config get gateway.remote.url
openclaw config get gateway.auth.mode
```
ما الذي يجب التحقق منه:
ما يجب التحقق منه:
- إذا كانت `gateway.mode=remote`، فقد تستهدف استدعاءات CLI جهة بعيدة بينما خدمتك المحلية تعمل بشكل جيد.
- لا تعود استدعاءات `--url` الصريحة إلى بيانات الاعتماد المخزنة.
- إذا كان `gateway.mode=remote`، فقد تستهدف استدعاءات CLI نظامًا بعيدًا بينما خدمتك المحلية تعمل بشكل جيد.
- لا تعود الاستدعاءات الصريحة `--url` إلى بيانات الاعتماد المخزنة.
الأنماط الشائعة:
السمات الشائعة:
- `gateway connect failed:`هدف URL غير صحيح.
- `unauthorized` → يمكن الوصول إلى نقطة النهاية لكن المصادقة غير صحيحة.
- `gateway connect failed:`عنوان URL الهدف غير صحيح.
- `unauthorized` → يمكن الوصول إلى نقطة النهاية لكن المصادقة خاطئة.
### 2) أصبحت ضوابط الربط والمصادقة أكثر صرامة
### 2) أصبحت قيود الربط والمصادقة أكثر صرامة
```bash
openclaw config get gateway.bind
@ -441,17 +467,17 @@ openclaw gateway status
openclaw logs --follow
```
ما الذي يجب التحقق منه:
ما يجب التحقق منه:
- تحتاج عمليات الربط غير loopback (`lan` أو `tailnet` أو `custom`) إلى مسار مصادقة gateway صالح: مصادقة برمز/كلمة مرور مشتركة، أو نشر `trusted-proxy` غير loopback مضبوط بشكل صحيح.
- لا تستبدل المفاتيح القديمة مثل `gateway.token` القيمة `gateway.auth.token`.
- تتطلب عمليات الربط غير loopback (`lan` أو `tailnet` أو `custom`) مسار مصادقة صالحًا لـ Gateway: مصادقة برمز/كلمة مرور مشتركة، أو نشر `trusted-proxy` غير loopback مضبوطًا بشكل صحيح.
- لا تحل المفاتيح القديمة مثل `gateway.token` محل `gateway.auth.token`.
الأنماط الشائعة:
السمات الشائعة:
- `refusing to bind gateway ... without auth` → ربط غير loopback بدون مسار مصادقة gateway صالح.
- `RPC probe: failed` بينما وقت التشغيل يعمل → gateway يعمل لكن يتعذر الوصول إليه باستخدام المصادقة/عنوان URL الحاليين.
- `refusing to bind gateway ... without auth` → ربط غير loopback من دون مسار مصادقة صالح لـ Gateway.
- `Connectivity probe: failed` بينما وقت التشغيل يعمل → Gateway حي لكنه غير قابل للوصول باستخدام المصادقة/عنوان URL الحاليين.
### 3) تغيّرت حالة الاقتران وهوية الجهاز
### 3) تغيّرت حالة الإقران وهوية الجهاز
```bash
openclaw devices list
@ -460,17 +486,17 @@ openclaw logs --follow
openclaw doctor
```
ما الذي يجب التحقق منه:
ما يجب التحقق منه:
- موافقات الأجهزة المعلقة لـ dashboard/nodes.
- موافقات اقتران الرسائل المباشرة المعلقة بعد تغييرات السياسة أو الهوية.
- موافقات الأجهزة المعلقة لـ Dashboard/Nodes.
- موافقات إقران الرسائل المباشرة المعلقة بعد تغييرات السياسة أو الهوية.
الأنماط الشائعة:
السمات الشائعة:
- `device identity required` → لم يتم استيفاء مصادقة الجهاز.
- `pairing required` → يجب الموافقة على المرسل/الجهاز.
إذا استمر عدم تطابق إعدادات الخدمة ووقت التشغيل بعد هذه الفحوصات، فأعد تثبيت بيانات تعريف الخدمة من دليل profile/state نفسه:
إذا استمر عدم تطابق إعدادات الخدمة ووقت التشغيل بعد عمليات التحقق، فأعد تثبيت بيانات تعريف الخدمة من الدليل نفسه الخاص بالملف الشخصي/الحالة:
```bash
openclaw gateway install --force

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,14 @@
---
read_when:
- OpenClaw لا يعمل وتحتاج إلى أسرع طريق إلى الحل
- لا يعمل OpenClaw وتحتاج إلى أسرع طريق إلى الإصلاح
- تريد مسار فرز أولي قبل التعمق في أدلة التشغيل التفصيلية
summary: مركز استكشاف الأخطاء وإصلاحها في OpenClaw بدءًا من الأعراض
title: استكشاف الأخطاء وإصلاحها العام
x-i18n:
generated_at: "2026-04-11T02:45:31Z"
generated_at: "2026-04-20T07:30:23Z"
model: gpt-5.4
provider: openai
source_hash: 16b38920dbfdc8d4a79bbb5d6fab2c67c9f218a97c36bb4695310d7db9c4614a
source_hash: cc5d8c9f804084985c672c5a003ce866e8142ab99fe81abb7a0d38e22aea4b88
source_path: help/troubleshooting.md
workflow: 15
---
@ -19,7 +19,7 @@ x-i18n:
## أول 60 ثانية
شغّل هذا التسلسل بالترتيب نفسه تمامًا:
شغّل هذا التسلسل بالضبط وبالترتيب:
```bash
openclaw status
@ -33,45 +33,47 @@ openclaw logs --follow
المخرجات الجيدة في سطر واحد:
- `openclaw status` → يعرض القنوات المكوّنة من دون أخطاء مصادقة واضحة.
- `openclaw status` → يعرض القنوات المضبوطة ولا توجد أخطاء مصادقة واضحة.
- `openclaw status --all` → التقرير الكامل موجود وقابل للمشاركة.
- `openclaw gateway probe` → يمكن الوصول إلى هدف gateway المتوقع (`Reachable: yes`). تشير `RPC: limited - missing scope: operator.read` إلى تشخيصات متدهورة، وليس إلى فشل في الاتصال.
- `openclaw gateway status``Runtime: running` و`RPC probe: ok`.
- `openclaw doctor` → لا توجد أخطاء حظر في الإعدادات/الخدمة.
- `openclaw channels status --probe` → عندما يكون الوصول إلى gateway ممكنًا، يعرض حالة النقل المباشرة لكل حساب بالإضافة إلى نتائج الفحص/التدقيق مثل `works` أو `audit ok`؛ وإذا تعذر الوصول إلى gateway، يعود الأمر إلى ملخصات تعتمد على الإعدادات فقط.
- `openclaw logs --follow` → نشاط مستقر، ولا توجد أخطاء قاتلة متكررة.
- `openclaw gateway probe` → يمكن الوصول إلى هدف Gateway المتوقع (`Reachable: yes`). يوضّح `Capability: ...` مستوى المصادقة الذي أمكن للفحص إثباته، و`Read probe: limited - missing scope: operator.read` يعني تشخيصًا متدهورًا وليس فشلًا في الاتصال.
- `openclaw gateway status``Runtime: running` و`Connectivity probe: ok` وسطر `Capability: ...` منطقي. استخدم `--require-rpc` إذا كنت تحتاج أيضًا إلى إثبات RPC بنطاق القراءة.
- `openclaw doctor` → لا توجد أخطاء إعداد/خدمة مانعة.
- `openclaw channels status --probe` → يعرض Gateway القابل للوصول حالة نقل مباشرة لكل حساب
بالإضافة إلى نتائج الفحص/التدقيق مثل `works` أو `audit ok`؛ وإذا تعذر
الوصول إلى Gateway، يعود الأمر إلى ملخصات تعتمد على الإعداد فقط.
- `openclaw logs --follow` → نشاط مستمر، من دون أخطاء قاتلة متكررة.
## 429 لسياق Anthropic الطويل
## 429 من Anthropic للسياق الطويل
إذا رأيت:
`HTTP 429: rate_limit_error: Extra usage is required for long context requests`
`HTTP 429: rate_limit_error: Extra usage is required for long context requests`,
فانتقل إلى [/gateway/troubleshooting#anthropic-429-extra-usage-required-for-long-context](/ar/gateway/troubleshooting#anthropic-429-extra-usage-required-for-long-context).
## تعمل الواجهة الخلفية المحلية المتوافقة مع OpenAI مباشرة لكنها تفشل في OpenClaw
## تعمل الواجهة الخلفية المحلية المتوافقة مع OpenAI مباشرة ولكنها تفشل في OpenClaw
إذا كانت الواجهة الخلفية المحلية أو المستضافة ذاتيًا على `/v1` تستجيب لطلبات الفحص المباشرة الصغيرة على
`/v1/chat/completions` لكنها تفشل مع `openclaw infer model run` أو أثناء دورات
الوكيل العادية:
إذا كانت الواجهة الخلفية المحلية أو المستضافة ذاتيًا `/v1` تستجيب لفحوصات
`/v1/chat/completions` المباشرة الصغيرة لكنها تفشل عند `openclaw infer model run` أو
في دورات الوكيل العادية:
1. إذا كانت رسالة الخطأ تشير إلى أن `messages[].content` يجب أن تكون سلسلة نصية، فاضبط
1. إذا ذكرت الرسالة أن `messages[].content` يجب أن يكون سلسلة نصية، فاضبط
`models.providers.<provider>.models[].compat.requiresStringContent: true`.
2. إذا استمرت الواجهة الخلفية في الفشل فقط أثناء دورات وكيل OpenClaw، فاضبط
`models.providers.<provider>.models[].compat.supportsTools: false` وأعد المحاولة.
3. إذا كانت الاستدعاءات المباشرة الصغيرة لا تزال تعمل لكن موجّهات OpenClaw الأكبر تتسبب في تعطل
الواجهة الخلفية، فتعامل مع المشكلة المتبقية على أنها قيد في النموذج/الخادم من المصدر
وتابع في دليل التشغيل التفصيلي:
2. إذا استمرت الواجهة الخلفية في الفشل فقط في دورات وكيل OpenClaw، فاضبط
`models.providers.<provider>.models[].compat.supportsTools: false` ثم أعد المحاولة.
3. إذا كانت الاستدعاءات المباشرة الصغيرة ما تزال تعمل ولكن المطالبات الأكبر في OpenClaw تتسبب في تعطل
الواجهة الخلفية، فاعتبر المشكلة المتبقية قيدًا في النموذج/الخادم من المصدر
وتابع في دليل التشغيل المتعمق:
[/gateway/troubleshooting#local-openai-compatible-backend-passes-direct-probes-but-agent-runs-fail](/ar/gateway/troubleshooting#local-openai-compatible-backend-passes-direct-probes-but-agent-runs-fail)
## فشل تثبيت plugin بسبب غياب openclaw extensions
## يفشل تثبيت Plugin بسبب فقدان openclaw extensions
إذا فشل التثبيت مع `package.json missing openclaw.extensions`، فهذا يعني أن حزمة plugin
إذا فشل التثبيت مع `package.json missing openclaw.extensions`، فهذا يعني أن حزمة Plugin
تستخدم بنية قديمة لم يعد OpenClaw يقبلها.
أصلح ذلك في حزمة plugin:
الإصلاح في حزمة Plugin:
1. أضف `openclaw.extensions` إلى `package.json`.
2. وجّه الإدخالات إلى ملفات وقت التشغيل المبنية (عادةً `./dist/index.js`).
3. أعد نشر plugin ثم شغّل `openclaw plugins install <package>` مرة أخرى.
3. أعد نشر Plugin ثم شغّل `openclaw plugins install <package>` مرة أخرى.
مثال:
@ -85,28 +87,28 @@ openclaw logs --follow
}
```
مرجع: [بنية plugins](/ar/plugins/architecture)
المرجع: [معمارية Plugin](/ar/plugins/architecture)
## شجرة القرارات
## شجرة القرار
```mermaid
flowchart TD
A[OpenClaw is not working] --> B{What breaks first}
B --> C[No replies]
B --> D[Dashboard or Control UI will not connect]
B --> E[Gateway will not start or service not running]
B --> F[Channel connects but messages do not flow]
B --> G[Cron or heartbeat did not fire or did not deliver]
B --> H[Node is paired but camera canvas screen exec fails]
B --> I[Browser tool fails]
A[OpenClaw لا يعمل] --> B{ما الذي يتعطل أولًا}
B --> C[لا توجد ردود]
B --> D[لوحة المعلومات أو واجهة التحكم لا تتصل]
B --> E[Gateway لا يبدأ أو أن الخدمة غير قيد التشغيل]
B --> F[القناة تتصل لكن الرسائل لا تتدفق]
B --> G[Cron أو Heartbeat لم يُشغَّلا أو لم يُسلَّما]
B --> H[تم إقران Node لكن أداة camera canvas screen exec تفشل]
B --> I[أداة المتصفح تفشل]
C --> C1[/No replies section/]
D --> D1[/Control UI section/]
E --> E1[/Gateway section/]
F --> F1[/Channel flow section/]
G --> G1[/Automation section/]
H --> H1[/Node tools section/]
I --> I1[/Browser section/]
C --> C1[/قسم عدم وجود ردود/]
D --> D1[/قسم واجهة التحكم/]
E --> E1[/قسم Gateway/]
F --> F1[/قسم تدفق القناة/]
G --> G1[/قسم الأتمتة/]
H --> H1[/قسم أدوات Node/]
I --> I1[/قسم المتصفح/]
```
<AccordionGroup>
@ -122,17 +124,18 @@ flowchart TD
تبدو المخرجات الجيدة كالتالي:
- `Runtime: running`
- `RPC probe: ok`
- تعرض قناتك اتصال النقل، وعند الدعم، `works` أو `audit ok` في `channels status --probe`
- يظهر المرسِل على أنه معتمد (أو أن سياسة الرسائل الخاصة DM مفتوحة/ضمن قائمة السماح)
- `Connectivity probe: ok`
- `Capability: read-only` أو `write-capable` أو `admin-capable`
- تعرض قناتك اتصال النقل، وحيثما كان ذلك مدعومًا، `works` أو `audit ok` في `channels status --probe`
- يظهر المرسل على أنه تمت الموافقة عليه (أو أن سياسة الرسائل المباشرة DM مفتوحة/قائمة سماح)
التواقيع الشائعة في السجل:
تواقيع السجلات الشائعة:
- `drop guild message (mention required` → منع حظر الإشارة معالجة الرسالة في Discord.
- `pairing request` → المرسِل غير معتمد وينتظر الموافقة على الاقتران عبر DM.
- `blocked` / `allowlist` في سجلات القناة → تم ترشيح المرسِل أو الغرفة أو المجموعة.
- `drop guild message (mention required` → منعت بوابة الإشارة معالجة الرسالة في Discord.
- `pairing request` → المرسل غير معتمد وينتظر موافقة إقران DM.
- `blocked` / `allowlist` في سجلات القناة → تمت تصفية المرسل أو الغرفة أو المجموعة.
الصفحات التفصيلية:
الصفحات المتعمقة:
- [/gateway/troubleshooting#no-replies](/ar/gateway/troubleshooting#no-replies)
- [/channels/troubleshooting](/ar/channels/troubleshooting)
@ -140,7 +143,7 @@ flowchart TD
</Accordion>
<Accordion title="لوحة المعلومات أو Control UI لا يتصلان">
<Accordion title="لوحة المعلومات أو واجهة التحكم لا تتصل">
```bash
openclaw status
openclaw gateway status
@ -151,27 +154,28 @@ flowchart TD
تبدو المخرجات الجيدة كالتالي:
- يظهر `Dashboard: http://...` في `openclaw gateway status`
- `RPC probe: ok`
- يتم عرض `Dashboard: http://...` في `openclaw gateway status`
- `Connectivity probe: ok`
- `Capability: read-only` أو `write-capable` أو `admin-capable`
- لا توجد حلقة مصادقة في السجلات
التواقيع الشائعة في السجل:
تواقيع السجلات الشائعة:
- `device identity required` → لا يمكن لـ HTTP/سياق غير آمن إكمال مصادقة الجهاز.
- `origin not allowed` → إن `Origin` الخاص بالمتصفح غير مسموح له لهدف gateway الخاص بـ Control UI.
- `AUTH_TOKEN_MISMATCH` مع تلميحات إعادة المحاولة (`canRetryWithDeviceToken=true`) → قد يحدث تلقائيًا retry واحد موثوق باستخدام رمز الجهاز.
- تعيد إعادة المحاولة باستخدام الرمز المخزّن استخدام مجموعة النطاقات المخزنة مؤقتًا والمحفوظة مع
- `device identity required` → لا يستطيع سياق HTTP/غير الآمن إكمال مصادقة الجهاز.
- `origin not allowed``Origin` الخاص بالمتصفح غير مسموح له لهدف Gateway
الخاص بواجهة التحكم.
- `AUTH_TOKEN_MISMATCH` مع تلميحات إعادة المحاولة (`canRetryWithDeviceToken=true`) → قد تحدث إعادة محاولة واحدة تلقائيًا باستخدام رمز جهاز موثوق.
- تعيد محاولة الرمز المخبأ تلك استخدام مجموعة النطاقات المخزنة مؤقتًا مع
رمز الجهاز المقترن. أما المستدعون الذين يستخدمون `deviceToken` صريحًا / `scopes` صريحة فيحتفظون
بمجموعة النطاقات المطلوبة الخاصة بهم بدلًا من ذلك.
- في مسار Control UI غير المتزامن لـ Tailscale Serve، تتم سلسلة المحاولات الفاشلة لنفس
`{scope, ip}` قبل أن يسجّل المحدِّد الفشل، لذلك قد تُظهر إعادة محاولة ثانية سيئة ومتزامنة بالفعل
بمجموعة النطاقات المطلوبة الخاصة بهم.
- في مسار واجهة التحكم غير المتزامن عبر Tailscale Serve، تُسلسل المحاولات الفاشلة لنفس
`{scope, ip}` قبل أن يسجل المحدِّد الفشل، لذلك قد تُظهر إعادة محاولة سيئة ثانية متزامنة بالفعل
`retry later`.
- `too many failed authentication attempts (retry later)` من
مصدر متصفح localhost → يتم قفل الإخفاقات المتكررة من `Origin` نفسه مؤقتًا؛ ويستخدم Origin آخر على localhost مجموعة منفصلة.
- `unauthorized` متكرر بعد إعادة المحاولة تلك → رمز/كلمة مرور خاطئة، أو عدم تطابق في وضع المصادقة، أو رمز جهاز مقترن قديم.
- `gateway connect failed:` → تستهدف الواجهة عنوان URL/منفذًا خاطئًا أو أن gateway غير قابل للوصول.
- `too many failed authentication attempts (retry later)` من origin متصفح محلي localhost → تُقفل الإخفاقات المتكررة من `Origin` نفسه مؤقتًا؛ بينما يستخدم origin محلي آخر حاوية منفصلة.
- تكرار `unauthorized` بعد تلك إعادة المحاولة → token/password خاطئ، أو عدم تطابق وضع المصادقة، أو رمز جهاز مقترن قديم.
- `gateway connect failed:` → تستهدف الواجهة عنوان URL/منفذًا خاطئًا أو Gateway غير قابل للوصول.
الصفحات التفصيلية:
الصفحات المتعمقة:
- [/gateway/troubleshooting#dashboard-control-ui-connectivity](/ar/gateway/troubleshooting#dashboard-control-ui-connectivity)
- [/web/control-ui](/web/control-ui)
@ -179,7 +183,7 @@ flowchart TD
</Accordion>
<Accordion title="Gateway لا يبدأ أو أن الخدمة مثبّتة لكنها لا تعمل">
<Accordion title="Gateway لا يبدأ أو أن الخدمة المثبتة ليست قيد التشغيل">
```bash
openclaw status
openclaw gateway status
@ -192,15 +196,16 @@ flowchart TD
- `Service: ... (loaded)`
- `Runtime: running`
- `RPC probe: ok`
- `Connectivity probe: ok`
- `Capability: read-only` أو `write-capable` أو `admin-capable`
التواقيع الشائعة في السجل:
تواقيع السجلات الشائعة:
- `Gateway start blocked: set gateway.mode=local` أو `existing config is missing gateway.mode` → وضع gateway هو remote، أو أن ملف الإعدادات يفتقد علامة الوضع المحلي ويجب إصلاحه.
- `refusing to bind gateway ... without auth` → ربط غير loopback من دون مسار مصادقة صالح لـ gateway (رمز/كلمة مرور، أو trusted-proxy حيثما تم تكوينه).
- `Gateway start blocked: set gateway.mode=local` أو `existing config is missing gateway.mode` → وضع Gateway هو remote، أو أن ملف الإعداد يفتقد ختم الوضع المحلي ويجب إصلاحه.
- `refusing to bind gateway ... without auth` → ربط غير loopback من دون مسار مصادقة صالح لـ Gateway (token/password، أو trusted-proxy حيث يكون مضبوطًا).
- `another gateway instance is already listening` أو `EADDRINUSE` → المنفذ مستخدم بالفعل.
الصفحات التفصيلية:
الصفحات المتعمقة:
- [/gateway/troubleshooting#gateway-service-not-running](/ar/gateway/troubleshooting#gateway-service-not-running)
- [/gateway/background-process](/ar/gateway/background-process)
@ -208,7 +213,7 @@ flowchart TD
</Accordion>
<Accordion title="القناة متصلة لكن الرسائل لا تتدفق">
<Accordion title="القناة تتصل لكن الرسائل لا تتدفق">
```bash
openclaw status
openclaw gateway status
@ -220,23 +225,23 @@ flowchart TD
تبدو المخرجات الجيدة كالتالي:
- نقل القناة متصل.
- تنجح فحوصات الاقتران/قائمة السماح.
- يتم اكتشاف الإشارات حيث يكون ذلك مطلوبًا.
- تنجح فحوصات الإقران/قائمة السماح.
- يتم اكتشاف الإشارات حيث تكون مطلوبة.
التواقيع الشائعة في السجل:
تواقيع السجلات الشائعة:
- `mention required` → منع حظر الإشارة المعالجة في المجموعة.
- `pairing` / `pending` → مرسِل DM غير معتمد بعد.
- `not_in_channel`, `missing_scope`, `Forbidden`, `401/403` → مشكلة في رمز أذونات القناة.
- `mention required` → منعت بوابة الإشارة في المجموعة المعالجة.
- `pairing` / `pending` → مرسل DM لم تتم الموافقة عليه بعد.
- `not_in_channel`, `missing_scope`, `Forbidden`, `401/403` → مشكلة في رمز صلاحيات القناة.
الصفحات التفصيلية:
الصفحات المتعمقة:
- [/gateway/troubleshooting#channel-connected-messages-not-flowing](/ar/gateway/troubleshooting#channel-connected-messages-not-flowing)
- [/channels/troubleshooting](/ar/channels/troubleshooting)
</Accordion>
<Accordion title="لم يعمل Cron أو heartbeat أو لم يقم بالتسليم">
<Accordion title="لم يتم تشغيل Cron أو Heartbeat أو لم يتم تسليمهما">
```bash
openclaw status
openclaw gateway status
@ -248,21 +253,21 @@ flowchart TD
تبدو المخرجات الجيدة كالتالي:
- يعرض `cron.status` أنه مفعّل مع وقت استيقاظ تالٍ.
- يعرض `cron.status` أنه مفعّل مع وقت الاستيقاظ التالي.
- يعرض `cron runs` إدخالات `ok` حديثة.
- heartbeat مفعّل وليس خارج الساعات النشطة.
- Heartbeat مفعّل وليس خارج الساعات النشطة.
التواقيع الشائعة في السجل:
تواقيع السجلات الشائعة:
- `cron: scheduler disabled; jobs will not run automatically`cron معطّل.
- `heartbeat skipped` مع `reason=quiet-hours` → خارج الساعات النشطة المكوّنة.
- `heartbeat skipped` مع `reason=empty-heartbeat-file`الملف `HEARTBEAT.md` موجود لكنه يحتوي فقط على هيكل فارغ/عناوين فقط.
- `heartbeat skipped` مع `reason=no-tasks-due` → وضع مهام `HEARTBEAT.md` نشط، لكن لم يحن موعد أي من فواصل المهام بعد.
- `heartbeat skipped` مع `reason=alerts-disabled`تم تعطيل كل ظهور heartbeat (`showOk` و`showAlerts` و`useIndicator` كلها متوقفة).
- `requests-in-flight` → المسار الرئيسي مشغول؛ تم تأجيل إيقاظ heartbeat.
- `unknown accountId` → حساب هدف تسليم heartbeat غير موجود.
- `cron: scheduler disabled; jobs will not run automatically`Cron معطّل.
- `heartbeat skipped` مع `reason=quiet-hours` → خارج الساعات النشطة المضبوطة.
- `heartbeat skipped` مع `reason=empty-heartbeat-file`يوجد `HEARTBEAT.md` لكنه يحتوي فقط على هيكل فارغ/عناوين فقط.
- `heartbeat skipped` مع `reason=no-tasks-due` → وضع مهام `HEARTBEAT.md` نشط لكن لم يحن موعد أي من فواصل المهام بعد.
- `heartbeat skipped` مع `reason=alerts-disabled`كل إظهار Heartbeat معطّل (`showOk` و`showAlerts` و`useIndicator` كلها متوقفة).
- `requests-in-flight` → المسار الرئيسي مشغول؛ تم تأجيل استيقاظ Heartbeat.
- `unknown accountId` → حساب هدف تسليم Heartbeat غير موجود.
الصفحات التفصيلية:
الصفحات المتعمقة:
- [/gateway/troubleshooting#cron-and-heartbeat-delivery](/ar/gateway/troubleshooting#cron-and-heartbeat-delivery)
- [/automation/cron-jobs#troubleshooting](/ar/automation/cron-jobs#troubleshooting)
@ -270,7 +275,7 @@ flowchart TD
</Accordion>
<Accordion title="Node مقترن لكن أداة camera canvas screen exec تفشل">
<Accordion title="تم إقران Node لكن الأداة تفشل في camera canvas screen exec">
```bash
openclaw status
openclaw gateway status
@ -281,18 +286,18 @@ flowchart TD
تبدو المخرجات الجيدة كالتالي:
- تظهر Node على أنها متصلة ومقترنة بالدور `node`.
- توجد الإمكانية للأمر الذي تستدعيه.
- حالة الإذن ممنوحة للأداة.
- Node مدرجة على أنها متصلة ومقترنة للدور `node`.
- توجد Capability للأمر الذي تستدعيه.
- حالة الصلاحية ممنوحة للأداة.
التواقيع الشائعة في السجل:
تواقيع السجلات الشائعة:
- `NODE_BACKGROUND_UNAVAILABLE`أحضر تطبيق node إلى الواجهة.
- `*_PERMISSION_REQUIRED` → تم رفض إذن نظام التشغيل أو أنه مفقود.
- `SYSTEM_RUN_DENIED: approval required` → الموافقة على exec معلقة.
- `SYSTEM_RUN_DENIED: allowlist miss` → الأمر غير موجود في قائمة السماح الخاصة بـ exec.
- `NODE_BACKGROUND_UNAVAILABLE`اجلب تطبيق Node إلى الواجهة.
- `*_PERMISSION_REQUIRED` → تم رفض صلاحية نظام التشغيل أو أنها مفقودة.
- `SYSTEM_RUN_DENIED: approval required` → الموافقة على exec لا تزال معلقة.
- `SYSTEM_RUN_DENIED: allowlist miss` → الأمر ليس ضمن قائمة سماح exec.
الصفحات التفصيلية:
الصفحات المتعمقة:
- [/gateway/troubleshooting#node-paired-tool-fails](/ar/gateway/troubleshooting#node-paired-tool-fails)
- [/nodes/troubleshooting](/ar/nodes/troubleshooting)
@ -300,7 +305,7 @@ flowchart TD
</Accordion>
<Accordion title="بدأ Exec يطلب الموافقة فجأة">
<Accordion title="أصبح Exec يطلب الموافقة فجأة">
```bash
openclaw config get tools.exec.host
openclaw config get tools.exec.security
@ -310,14 +315,14 @@ flowchart TD
ما الذي تغيّر:
- إذا لم يتم تعيين `tools.exec.host`، فالقيمة الافتراضية هي `auto`.
- يَحل `host=auto` إلى `sandbox` عندما يكون وقت تشغيل sandbox نشطًا، وإلى `gateway` بخلاف ذلك.
- إن `host=auto` مخصص للتوجيه فقط؛ أما سلوك "YOLO" من دون مطالبة فيأتي من `security=full` مع `ask=off` على gateway/node.
- في `gateway` و`node`، إذا لم يتم تعيين `tools.exec.security` فالقيمة الافتراضية هي `full`.
- وإذا لم يتم تعيين `tools.exec.ask` فالقيمة الافتراضية هي `off`.
- النتيجة: إذا كنت ترى طلبات موافقة، فهذا يعني أن بعض السياسات المحلية على المضيف أو الخاصة بكل جلسة قد شددت exec بعيدًا عن الإعدادات الافتراضية الحالية.
- إذا كانت `tools.exec.host` غير مضبوطة، فالقيمة الافتراضية هي `auto`.
- تحل `host=auto` إلى `sandbox` عندما يكون وقت تشغيل sandbox نشطًا، وإلى `gateway` بخلاف ذلك.
- `host=auto` مخصص للتوجيه فقط؛ أما سلوك "YOLO" من دون مطالبة فيأتي من `security=full` مع `ask=off` على gateway/node.
- في `gateway` و`node`، تكون القيمة الافتراضية لـ `tools.exec.security` عند عدم ضبطها هي `full`.
- تكون القيمة الافتراضية لـ `tools.exec.ask` عند عدم ضبطها هي `off`.
- النتيجة: إذا كنت ترى طلبات موافقة، فهذا يعني أن بعض السياسات المحلية للمضيف أو الخاصة بالجلسة قد شددت exec بعيدًا عن الإعدادات الافتراضية الحالية.
لاستعادة السلوك الافتراضي الحالي من دون موافقة:
لاستعادة السلوك الحالي الافتراضي من دون موافقة:
```bash
openclaw config set tools.exec.host gateway
@ -328,17 +333,17 @@ flowchart TD
بدائل أكثر أمانًا:
- عيّن فقط `tools.exec.host=gateway` إذا كنت تريد فقط توجيهًا ثابتًا على المضيف.
- استخدم `security=allowlist` مع `ask=on-miss` إذا كنت تريد exec على المضيف ولكنك لا تزال تريد المراجعة عند عدم التطابق مع قائمة السماح.
- فعّل وضع sandbox إذا كنت تريد أن يعود `host=auto` إلى `sandbox`.
- اضبط فقط `tools.exec.host=gateway` إذا كنت تريد فقط توجيهًا ثابتًا للمضيف.
- استخدم `security=allowlist` مع `ask=on-miss` إذا كنت تريد exec على المضيف ولكنك ما زلت تريد المراجعة عند الإخفاق في قائمة السماح.
- فعّل وضع sandbox إذا كنت تريد أن تُحل `host=auto` مرة أخرى إلى `sandbox`.
التواقيع الشائعة في السجل:
تواقيع السجلات الشائعة:
- `Approval required.` → الأمر ينتظر `/approve ...`.
- `SYSTEM_RUN_DENIED: approval required` → موافقة exec على مضيف node معلقة.
- `SYSTEM_RUN_DENIED: approval required` → موافقة exec على مضيف Node معلقة.
- `exec host=sandbox requires a sandbox runtime for this session` → تم اختيار sandbox ضمنيًا/صراحةً لكن وضع sandbox متوقف.
الصفحات التفصيلية:
الصفحات المتعمقة:
- [/tools/exec](/ar/tools/exec)
- [/tools/exec-approvals](/ar/tools/exec-approvals)
@ -346,7 +351,7 @@ flowchart TD
</Accordion>
<Accordion title="أداة Browser تفشل">
<Accordion title="أداة المتصفح تفشل">
```bash
openclaw status
openclaw gateway status
@ -357,22 +362,22 @@ flowchart TD
تبدو المخرجات الجيدة كالتالي:
- تعرض حالة Browser `running: true` مع Browser/profile محدد.
- تعرض حالة المتصفح `running: true` ومتصفحًا/ملفًا شخصيًا محددًا.
- يبدأ `openclaw`، أو يمكن لـ `user` رؤية علامات تبويب Chrome المحلية.
التواقيع الشائعة في السجل:
تواقيع السجلات الشائعة:
- `unknown command "browser"` أو `unknown command 'browser'` → تم تعيين `plugins.allow` ولا يتضمن `browser`.
- `Failed to start Chrome CDP on port` → فشل تشغيل Browser المحلي.
- `browser.executablePath not found` → مسار الملف التنفيذي المكوَّن غير صحيح.
- `browser.cdpUrl must be http(s) or ws(s)` → يستخدم عنوان CDP URL المكوَّن مخططًا غير مدعوم.
- `browser.cdpUrl has invalid port` → يحتوي عنوان CDP URL المكوَّن على منفذ غير صالح أو خارج النطاق.
- `No Chrome tabs found for profile="user"` → لا يحتوي profile الإرفاق Chrome MCP على علامات تبويب Chrome محلية مفتوحة.
- `Remote CDP for profile "<name>" is not reachable` → لا يمكن الوصول إلى نقطة نهاية CDP البعيدة المكوَّنة من هذا المضيف.
- `Browser attachOnly is enabled ... not reachable` أو `Browser attachOnly is enabled and CDP websocket ... is not reachable` → لا يملك profile ذو `attach-only` هدف CDP مباشرًا.
- تجاوزات قديمة لـ viewport / dark-mode / locale / offline على profiles ذات `attach-only` أو CDP البعيد → شغّل `openclaw browser stop --browser-profile <name>` لإغلاق جلسة التحكم النشطة وتحرير حالة المحاكاة من دون إعادة تشغيل gateway.
- `unknown command "browser"` أو `unknown command 'browser'` → تم ضبط `plugins.allow` ولا يتضمن `browser`.
- `Failed to start Chrome CDP on port` → فشل تشغيل المتصفح المحلي.
- `browser.executablePath not found` → مسار الملف التنفيذي المضبوط غير صحيح.
- `browser.cdpUrl must be http(s) or ws(s)` → يستخدم عنوان CDP المضبوط مخططًا غير مدعوم.
- `browser.cdpUrl has invalid port` → يحتوي عنوان CDP المضبوط على منفذ سيئ أو خارج النطاق.
- `No Chrome tabs found for profile="user"` → لا يحتوي ملف الإرفاق Chrome MCP على علامات تبويب Chrome محلية مفتوحة.
- `Remote CDP for profile "<name>" is not reachable` → لا يمكن الوصول إلى نقطة نهاية CDP البعيدة المضبوطة من هذا المضيف.
- `Browser attachOnly is enabled ... not reachable` أو `Browser attachOnly is enabled and CDP websocket ... is not reachable` → لا يحتوي ملف attach-only على هدف CDP مباشر.
- تجاوزات viewport / الوضع الداكن / locale / عدم الاتصال القديمة على ملفات attach-only أو CDP البعيدة → شغّل `openclaw browser stop --browser-profile <name>` لإغلاق جلسة التحكم النشطة وتحرير حالة المحاكاة من دون إعادة تشغيل Gateway.
الصفحات التفصيلية:
الصفحات المتعمقة:
- [/gateway/troubleshooting#browser-tool-fails](/ar/gateway/troubleshooting#browser-tool-fails)
- [/tools/browser#missing-browser-command-or-tool](/ar/tools/browser#missing-browser-command-or-tool)
@ -385,8 +390,8 @@ flowchart TD
## ذو صلة
- [الأسئلة الشائعة](/ar/help/faq) — الأسئلة المتداولة
- [استكشاف أخطاء Gateway وإصلاحها](/ar/gateway/troubleshooting) — المشكلات الخاصة بـ gateway
- [Doctor](/ar/gateway/doctor) — فحوصات السلامة والإصلاحات المؤتمتة
- [الأسئلة الشائعة](/ar/help/faq) — الأسئلة المتكررة
- [استكشاف أخطاء Gateway وإصلاحها](/ar/gateway/troubleshooting) — المشكلات الخاصة بـ Gateway
- [Doctor](/ar/gateway/doctor) — فحوصات السلامة والإصلاحات الآلية
- [استكشاف أخطاء القنوات وإصلاحها](/ar/channels/troubleshooting) — مشكلات اتصال القنوات
- [استكشاف أخطاء الأتمتة وإصلاحها](/ar/automation/cron-jobs#troubleshooting) — مشكلات cron وheartbeat
- [استكشاف أخطاء الأتمتة وإصلاحها](/ar/automation/cron-jobs#troubleshooting) — مشكلات Cron وHeartbeat

File diff suppressed because it is too large Load Diff