Gateway
استكشاف الأخطاء وإصلاحها
هذه الصفحة هي دليل التشغيل التفصيلي. ابدأ من /help/troubleshooting إذا كنت تريد مسار الفرز السريع أولًا.
تسلسل الأوامر
شغّل هذه أولًا، بهذا الترتيب:
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctoropenclaw channels status --probeالمؤشرات السليمة المتوقعة:
- يعرض
openclaw gateway statusالسطرRuntime: running، وConnectivity probe: ok، وسطرCapability: .... - يبلّغ
openclaw doctorعن عدم وجود مشكلات إعدادات/خدمات حاجبة. - يعرض
openclaw channels status --probeحالة النقل الحية لكل حساب، وحيثما يكون ذلك مدعومًا، نتائج الفحص/التدقيق مثلworksأوaudit ok.
بعد التحديث
استخدم هذا عندما يكتمل تحديث لكن يكون Gateway متوقفًا، أو تكون القنوات فارغة، أو تبدأ استدعاءات النموذج بالفشل مع أخطاء 401.
openclaw status --allopenclaw update status --jsonopenclaw gateway status --deepopenclaw doctor --fixopenclaw gateway restartابحث عن:
Update restartفيopenclaw status/openclaw status --all. تتضمن عمليات التسليم المعلّقة أو الفاشلة الأمر التالي الذي يجب تشغيله.plugin load failed: dependency tree corrupted; run openclaw doctor --fixضمن القنوات. يعني ذلك أن إعدادات القناة ما زالت موجودة، لكن تسجيل Plugin فشل قبل أن تتمكن القناة من التحميل.- أخطاء 401 من المزوّد بعد إعادة المصادقة. يفحص
openclaw doctor --fixظلال مصادقة OAuth القديمة لكل وكيل ويزيل النسخ القديمة لكي تحل جميع الوكلاء إلى الملف الشخصي المشترك الحالي.
عمليات التثبيت منقسمة الحالة وحارس الإعدادات الأحدث
استخدم هذا عندما تتوقف خدمة Gateway بشكل غير متوقع بعد تحديث، أو عندما تعرض السجلات أن ثنائية openclaw أقدم من الإصدار الذي كتب openclaw.json آخر مرة.
يختم OpenClaw عمليات كتابة الإعدادات بـ meta.lastTouchedVersion. لا تزال الأوامر للقراءة فقط قادرة على فحص إعدادات كتبها OpenClaw أحدث، لكن تعديلات العملية والخدمة ترفض المتابعة من ثنائية أقدم. تشمل الإجراءات المحظورة بدء خدمة Gateway، وإيقافها، وإعادة تشغيلها، وإلغاء تثبيتها، وإعادة تثبيت الخدمة قسرًا، وبدء Gateway في وضع الخدمة، وتنظيف المنفذ عبر gateway --force.
which openclawopenclaw --versionopenclaw gateway status --deepopenclaw config get meta.lastTouchedVersionFix PATH
أصلح PATH بحيث يحل openclaw إلى التثبيت الأحدث، ثم أعد تشغيل الإجراء.
Reinstall the gateway service
أعد تثبيت خدمة Gateway المقصودة من التثبيت الأحدث:
openclaw gateway install --forceopenclaw gateway restartRemove stale wrappers
أزل حزمة النظام القديمة أو إدخالات الغلاف القديمة التي لا تزال تشير إلى ثنائية openclaw قديمة.
عدم تطابق البروتوكول بعد الرجوع
استخدم هذا عندما تواصل السجلات طباعة protocol mismatch بعد خفض إصدار OpenClaw أو الرجوع عنه. يعني ذلك أن Gateway أقدم يعمل، لكن عملية عميل محلية أحدث لا تزال تحاول إعادة الاتصال بنطاق بروتوكول لا يستطيع Gateway الأقدم التحدث به.
openclaw --versionwhich -a openclawopenclaw gateway status --deepopenclaw doctor --deepopenclaw logs --followابحث عن:
protocol mismatch ... client=... v<version> min=<n> max=<n> expected=<n>في سجلات Gateway.Established clients:فيopenclaw gateway status --deepأوGateway clientsفيopenclaw doctor --deep. يسرد هذا عملاء TCP النشطين المتصلين بمنفذ Gateway، بما في ذلك PIDs وأسطر الأوامر عندما يسمح نظام التشغيل بذلك.- عملية عميل يشير سطر أوامرها إلى تثبيت OpenClaw الأحدث أو الغلاف الذي رجعت عنه.
الإصلاح:
- أوقف أو أعد تشغيل عملية عميل OpenClaw القديمة المعروضة بواسطة
gateway status --deep. - أعد تشغيل التطبيقات أو الأغلفة التي تضمّن OpenClaw، مثل لوحات المعلومات المحلية، والمحررات، ومساعدات خوادم التطبيقات، أو أصداف
openclaw logs --followطويلة التشغيل. - أعد تشغيل
openclaw gateway status --deepأوopenclaw doctor --deepوتأكد من اختفاء PID العميل القديم.
لا تجعل Gateway أقدم يقبل بروتوكولًا أحدث غير متوافق. تحمي زيادات البروتوكول عقد السلك؛ استرداد الرجوع مشكلة تنظيف عمليات/إصدارات.
تخطي الرابط الرمزي لـ Skills باعتباره خروجًا عن المسار
استخدم هذا عندما تتضمن السجلات:
Skipping escaped skill path outside its configured root: ... reason=symlink-escapeيتعامل OpenClaw مع كل جذر Skills كحد احتواء. يُتخطى رابط رمزي ضمن
~/.agents/skills، أو <workspace>/.agents/skills، أو <workspace>/skills، أو
~/.openclaw/skills عندما يحل هدفه الحقيقي إلى خارج ذلك الجذر
ما لم يكن الهدف موثوقًا به صراحة.
افحص الرابط:
ls -l ~/.agents/skills/<name>realpath ~/.agents/skills/<name>openclaw config get skills.loadإذا كان الهدف مقصودًا، فاضبط كلًا من جذر Skills المباشر وهدف الرابط الرمزي المسموح به:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}ثم ابدأ جلسة جديدة أو انتظر حتى يحدّث مراقب Skills. أعد تشغيل Gateway إذا كانت العملية الجارية أقدم من تغيير الإعدادات.
لا تستخدم أهدافًا واسعة مثل ~، أو /، أو مجلد مشروع متزامن كامل.
أبقِ allowSymlinkTargets محصورًا بجذر Skills الحقيقي الذي يحتوي على أدلة
SKILL.md الموثوقة.
إذا كان يجب أن يكتب تطبيق Skill Workshop أيضًا عبر مسارات Skills لمساحة العمل المرتبطة رمزيًا
والموثوقة هذه، ففعّل skills.workshop.allowSymlinkTargetWrites. أبقه
معطلًا لجذور Skills المشتركة للقراءة فقط.
ذات صلة:
Anthropic 429 يتطلب استخدامًا إضافيًا للسياق الطويل
استخدم هذا عندما تتضمن السجلات/الأخطاء: HTTP 429: rate_limit_error: Extra usage is required for long context requests.
openclaw logs --followopenclaw models statusopenclaw config get agents.defaults.modelsابحث عن:
- النموذج المحدد من Anthropic هو نموذج Claude 4.x بقدرة 1M ومتاح عمومًا، أو أن النموذج لديه
params.context1m: trueقديم. - اعتماد Anthropic الحالي غير مؤهل لاستخدام السياق الطويل.
- تفشل الطلبات فقط في الجلسات/تشغيلات النماذج الطويلة التي تحتاج إلى مسار سياق 1M.
خيارات الإصلاح:
Use a standard context window
بدّل إلى نموذج بنافذة سياق قياسية، أو أزل context1m القديم من إعدادات
نموذج أقدم ليس متاحًا عمومًا لسياق 1M.
Use an eligible credential
استخدم اعتماد Anthropic مؤهلًا لطلبات السياق الطويل، أو بدّل إلى مفتاح Anthropic API.
Configure fallback models
اضبط نماذج احتياطية لكي تستمر التشغيلات عندما تُرفض طلبات Anthropic للسياق الطويل.
ذات صلة:
ردود 403 محظورة من المنبع
استخدم هذا عندما يعيد مزوّد LLM من المنبع خطأ 403 عامًا مثل
Your request was blocked.
لا تفترض أن هذه مشكلة إعدادات OpenClaw دائمًا. يمكن أن يأتي الرد من طبقة أمان في المنبع مثل CDN، أو WAF، أو قاعدة إدارة روبوتات، أو وكيل عكسي أمام نقطة نهاية متوافقة مع OpenAI.
openclaw statusopenclaw gateway statusopenclaw logs --followابحث عن:
- عدة نماذج ضمن المزوّد نفسه تفشل بالطريقة نفسها
- HTML أو نص أمان عام بدلًا من خطأ API عادي من المزوّد
- أحداث أمان من جهة المزوّد في وقت الطلب نفسه
- نجاح فحص
curlمباشر صغير بينما تفشل الطلبات العادية ذات شكل SDK
أصلح التصفية من جهة المزوّد أولًا عندما تشير الأدلة إلى حظر WAF/CDN. فضّل قاعدة سماح أو تخطٍ محدودة النطاق لمسار API الذي يستخدمه OpenClaw، وتجنب تعطيل الحماية للموقع كله.
ذات صلة:
الواجهة الخلفية المحلية المتوافقة مع OpenAI تجتاز الفحوصات المباشرة لكن تشغيلات الوكيل تفشل
استخدم هذا عندما:
- يعمل
curl ... /v1/models - تعمل استدعاءات
/v1/chat/completionsالمباشرة الصغيرة - تفشل تشغيلات نماذج OpenClaw فقط في أدوار الوكيل العادية
curl http://127.0.0.1:1234/v1/modelscurl http://127.0.0.1:1234/v1/chat/completions \ -H 'content-type: application/json' \ -d '{"model":"<id>","messages":[{"role":"user","content":"hi"}],"stream":false}'openclaw infer model run --model <provider/model> --prompt "hi" --jsonopenclaw logs --followابحث عن:
- نجاح الاستدعاءات المباشرة الصغيرة، لكن فشل تشغيلات OpenClaw فقط مع المطالبات الأكبر
- أخطاء
model_not_foundأو 404 رغم أن/v1/chat/completionsالمباشر يعمل بمعرّف النموذج المجرّد نفسه - أخطاء الواجهة الخلفية حول توقع أن يكون
messages[].contentسلسلة نصية - تحذيرات
incomplete turn detected ... stopReason=stop payloads=0متقطعة مع واجهة خلفية محلية متوافقة مع OpenAI - انهيارات الواجهة الخلفية التي تظهر فقط مع أعداد رموز مطالبات أكبر أو مطالبات وقت تشغيل الوكيل الكاملة
Common signatures
model_not_foundمع خادم محلي بأسلوب MLX/vLLM → تحقق من أنbaseUrlيتضمن/v1، وأنapiهو"openai-completions"لواجهات/v1/chat/completionsالخلفية، وأنmodels.providers.<provider>.models[].idهو المعرّف المحلي المجرّد لدى المزوّد. حدده مع بادئة المزوّد مرة واحدة، مثلmlx/mlx-community/Qwen3-30B-A3B-6bit؛ وأبقِ إدخال الفهرس علىmlx-community/Qwen3-30B-A3B-6bit.messages[...].content: invalid type: sequence, expected a string→ ترفض الواجهة الخلفية أجزاء محتوى Chat Completions المنظمة. الإصلاح: عيّنmodels.providers.<provider>.models[].compat.requiresStringContent: true.validation.keysأو مفاتيح الرسائل المسموح بها مثل["role","content"]→ ترفض الواجهة الخلفية بيانات تعريف إعادة التشغيل بأسلوب OpenAI في رسائل Chat Completions. الإصلاح: عيّنmodels.providers.<provider>.models[].compat.strictMessageKeys: true.incomplete turn detected ... stopReason=stop payloads=0→ أكملت الواجهة الخلفية طلب Chat Completions لكنها لم تُعد نص مساعد مرئيًا للمستخدم لذلك الدور. يعيد OpenClaw محاولة الأدوار الفارغة المتوافقة مع OpenAI والآمنة لإعادة التشغيل مرة واحدة؛ تعني الإخفاقات المستمرة عادة أن الواجهة الخلفية تصدر محتوى فارغًا/غير نصي أو تكبت نص الإجابة النهائية.- تنجح الطلبات المباشرة الصغيرة، لكن تشغيلات وكلاء OpenClaw تفشل مع انهيارات في الواجهة الخلفية/النموذج (مثل Gemma على بعض بُنى
inferrs) → من المرجح أن نقل OpenClaw صحيح بالفعل؛ الواجهة الخلفية تفشل على شكل مطالبة وقت تشغيل الوكيل الأكبر. - تتقلص الإخفاقات بعد تعطيل الأدوات لكنها لا تختفي → كانت مخططات الأدوات جزءًا من الضغط، لكن المشكلة المتبقية لا تزال سعة نموذج/خادم من المنبع أو عطلًا في الواجهة الخلفية.
Fix options
- عيّن
compat.requiresStringContent: trueلواجهات Chat Completions الخلفية التي تقبل السلاسل النصية فقط. - عيّن
compat.strictMessageKeys: trueلواجهات Chat Completions الخلفية الصارمة التي تقبل فقطroleوcontentفي كل رسالة. - عيّن
compat.supportsTools: falseللنماذج/الواجهات الخلفية التي لا تستطيع التعامل مع سطح مخطط أدوات OpenClaw بشكل موثوق. - خفّض ضغط المطالبة حيثما أمكن: تمهيد مساحة عمل أصغر، سجل جلسة أقصر، نموذج محلي أخف، أو واجهة خلفية بدعم أقوى للسياق الطويل.
- إذا استمرت الطلبات المباشرة الصغيرة في النجاح بينما ما زالت أدوار وكيل OpenClaw تنهار داخل الواجهة الخلفية، فتعامل معها كقيد في الخادم/النموذج من المنبع وقدّم إعادة إنتاج هناك مع شكل الحمولة المقبول.
ذات صلة:
لا توجد ردود
إذا كانت القنوات تعمل لكن لا شيء يجيب، فتحقق من التوجيه والسياسة قبل إعادة توصيل أي شيء.
openclaw statusopenclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw config get channelsopenclaw logs --followابحث عن:
- اقتران معلق لمرسلي الرسائل المباشرة.
- تقييد ذكر المجموعة (
requireMention,mentionPatterns). - عدم تطابق قوائم السماح للقناة/المجموعة.
العلامات الشائعة:
drop guild message (mention required→ تم تجاهل رسالة المجموعة حتى يحدث ذكر.pairing request→ يحتاج المرسل إلى موافقة.blocked/allowlist→ تمت تصفية المرسل/القناة بواسطة السياسة.
ذات صلة:
اتصال واجهة تحكم لوحة المعلومات
عندما لا تتصل لوحة المعلومات/واجهة التحكم، تحقق من عنوان URL ووضع المصادقة وافتراضات السياق الآمن.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --jsonابحث عن:
- عنوان URL الصحيح للفحص وعنوان URL للوحة المعلومات.
- عدم تطابق وضع المصادقة/الرمز بين العميل وGateway.
- استخدام HTTP حيث تكون هوية الجهاز مطلوبة.
إذا تعذر على متصفح محلي الاتصال بـ 127.0.0.1:18789 بعد تحديث، فاستعد أولًا
خدمة Gateway المحلية وتأكد من أنها تخدم لوحة المعلومات:
openclaw gateway restartlsof -i :18789curl http://127.0.0.1:18789إذا أرجع curl صفحة HTML الخاصة بـ OpenClaw، فهذا يعني أن Gateway يعمل وأن المشكلة المتبقية
غالبًا هي ذاكرة التخزين المؤقت للمتصفح، أو رابط عميق قديم، أو حالة تبويب قديمة. افتح
http://127.0.0.1:18789 مباشرة وانتقل من لوحة المعلومات. إذا لم تترك إعادة التشغيل
الخدمة قيد التشغيل، فشغل openclaw gateway start وأعد التحقق من
openclaw gateway status.
علامات الاتصال / المصادقة
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الصريح بمجموعة النطاقات المطلوبة بدلًا من ذلك. AUTH_SCOPE_MISMATCH→ تم التعرف على رمز الجهاز، لكن نطاقاته المعتمدة لا تغطي طلب الاتصال هذا؛ أعد الاقتران أو وافق على عقد النطاق المطلوب بدلًا من تدوير رمز Gateway مشترك.- خارج مسار إعادة المحاولة هذا، تكون أولوية مصادقة الاتصال كالتالي: الرمز/كلمة المرور المشتركة الصريحة أولًا، ثم
deviceTokenالصريح، ثم رمز الجهاز المخزن، ثم رمز bootstrap. - في مسار واجهة التحكم غير المتزامن لـ 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 |
لم يرسل العميل رمزًا مشتركًا مطلوبًا. | الصق/عيّن الرمز في العميل وأعد المحاولة. لمسارات لوحة المعلومات: openclaw config get gateway.auth.token ثم الصقه في إعدادات واجهة التحكم. |
AUTH_TOKEN_MISMATCH |
لم يطابق الرمز المشترك رمز مصادقة Gateway. | إذا كان canRetryWithDeviceToken=true، فاسمح بإعادة محاولة موثوقة واحدة. تعيد محاولات الرمز المخزن مؤقتًا استخدام النطاقات المعتمدة المخزنة؛ يحتفظ مستدعو deviceToken / scopes الصريحون بالنطاقات المطلوبة. إذا استمر الفشل، فشغل قائمة تحقق استرداد انجراف الرمز. |
AUTH_DEVICE_TOKEN_MISMATCH |
رمز كل جهاز المخزن مؤقتًا قديم أو ملغى. | دوّر/أعد اعتماد رمز الجهاز باستخدام CLI الأجهزة، ثم أعد الاتصال. |
AUTH_SCOPE_MISMATCH |
رمز الجهاز صالح، لكن دوره/نطاقاته المعتمدة لا تغطي طلب الاتصال هذا. | أعد إقران الجهاز أو وافق على عقد النطاق المطلوب؛ لا تعامل هذا كانجراف للرمز المشترك. |
PAIRING_REQUIRED |
تحتاج هوية الجهاز إلى موافقة. تحقق من error.details.reason بحثًا عن not-paired أو scope-upgrade أو role-upgrade أو metadata-upgrade، واستخدم requestId / remediationHint عند وجودهما. |
وافق على الطلب المعلق: openclaw devices list ثم openclaw devices approve <requestId>. تستخدم ترقيات النطاق/الدور التدفق نفسه بعد مراجعة الوصول المطلوب. |
فحص ترحيل مصادقة الجهاز v2:
openclaw --versionopenclaw doctoropenclaw gateway statusإذا عرضت السجلات أخطاء nonce/التوقيع، فحدّث العميل المتصل وتحقق منه:
انتظر connect.challenge
ينتظر العميل connect.challenge الصادر من Gateway.
وقّع الحمولة
يوقع العميل الحمولة المرتبطة بالتحدي.
أرسل nonce الجهاز
يرسل العميل connect.params.device.nonce مع nonce التحدي نفسه.
إذا تم رفض openclaw devices rotate / revoke / remove بشكل غير متوقع:
- يمكن لجلسات رمز الجهاز المقترن إدارة جهازها الخاص بها فقط ما لم يكن لدى المستدعي أيضًا
operator.admin - يمكن لـ
openclaw devices rotate --scope ...طلب نطاقات مشغل يحتفظ بها بالفعل المستدعي الحالي فقط
ذات صلة:
- التكوين (أوضاع مصادقة Gateway)
- واجهة التحكم
- الأجهزة
- الوصول عن بعد
- مصادقة الوكيل الموثوق
خدمة Gateway لا تعمل
استخدم هذا عندما تكون الخدمة مثبتة لكن العملية لا تبقى قيد التشغيل.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --deep # also scan system-level servicesابحث عن:
Runtime: stoppedمع تلميحات الخروج.- عدم تطابق تكوين الخدمة (
Config (cli)مقابلConfig (service)). - تعارضات المنفذ/المستمع.
- تثبيتات 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 صالح (رمز/كلمة مرور، أو وكيل موثوق حيث يكون مكونًا).another gateway instance is already listening/EADDRINUSE→ تعارض منفذ.Other gateway-like services detected (best effort)→ توجد وحدات launchd/systemd/schtasks قديمة أو موازية. ينبغي أن تحتفظ معظم الإعدادات بـ Gateway واحد لكل جهاز؛ إذا كنت تحتاج فعلًا إلى أكثر من واحد، فاعزل المنافذ + التكوين/الحالة/مساحة العمل. راجع /gateway#multiple-gateways-same-host.System-level OpenClaw gateway service detectedمن doctor → توجد وحدة systemd على مستوى النظام بينما خدمة مستوى المستخدم مفقودة. أزل التكرار أو عطله قبل السماح لـ doctor بتثبيت خدمة مستخدم، أو عيّنOPENCLAW_SERVICE_REPAIR_POLICY=externalإذا كانت وحدة النظام هي المشرف المقصود.Gateway service port does not match current gateway config→ لا يزال المشرف المثبت يثبت--portالقديم. شغلopenclaw doctor --fixأوopenclaw gateway install --force، ثم أعد تشغيل خدمة Gateway.
ذات صلة:
يتوقف Gateway على macOS عن الاستجابة بصمت، ثم يستأنف عندما تلمس لوحة المعلومات
استخدم هذا عندما تصبح القنوات (Telegram، WhatsApp، وما إلى ذلك) على مضيف macOS صامتة من دقائق إلى ساعات في كل مرة، ويبدو أن Gateway يعود في اللحظة التي تفتح فيها واجهة التحكم، أو تدخل عبر SSH، أو تتفاعل مع المضيف بطريقة أخرى. لا تظهر عادة أي أعراض واضحة في openclaw status لأنه بحلول الوقت الذي تنظر فيه يكون Gateway قد عاد للعمل.
ls ~/.openclaw/logs/stability/ | tail -5openclaw gateway stability --bundle latestpmset -g log | grep -iE "sleep|wake|maintenance" | tail -50launchctl print gui/$UID/ai.openclaw.gateway | grep -E "state|last exit|runs"ابحث عن:
- حزمة واحدة أو أكثر من حزم
*-uncaught_exception.jsonفي~/.openclaw/logs/stability/يكون فيهاerror.codeمضبوطًا على رمز شبكة عابر مثلENETDOWNأوENETUNREACHأوEHOSTUNREACHأوECONNREFUSED. - أسطر
pmset -g logمثلEntering Sleep state due to 'Maintenance Sleep'أوen0 driver is slow (msg: WillChangeState to 0)المتزامنة مع الطوابع الزمنية للانهيار. يضع Power Nap / سكون الصيانة مشغل Wi-Fi لفترة وجيزة في الحالة 0؛ وأيconnect()صادر يقع ضمن تلك النافذة قد يفشل معENETDOWNحتى على مضيف لديه اتصال كامل بالشبكة في الظروف الأخرى. - مخرجات
launchctl printالتي تعرضstate = not runningمع عدةrunsحديثة ورمز خروج، خصوصًا عندما تكون الفجوة بين الانهيار والتشغيل التالي في حدود ساعة بدلًا من ثوان. يطبق macOS launchd بوابة غير موثقة للحماية من إعادة التشغيل بعد سلسلة انهيارات، وقد تتوقف عن احترامKeepAlive=trueإلى أن يعيد تفعيلها محفز خارجي مثل تسجيل الدخول التفاعلي أو اتصال لوحة التحكم أوlaunchctl kickstart.
التواقيع الشائعة:
- حزمة استقرار يكون فيها
error.codeهوENETDOWNأو رمزًا شقيقًا، مع مكدس استدعاءات يشير إلى NodenetlookupAndConnect/Socket.connect. يصنف OpenClaw2026.5.26والإصدارات الأحدث هذه الأخطاء كأخطاء شبكة عابرة غير ضارة، بحيث لا تنتشر بعد الآن إلى معالج الاستثناءات غير الملتقطة على المستوى الأعلى؛ إذا كنت تستخدم إصدارًا أقدم، فحدّث أولًا. - فترات هدوء طويلة تنتهي فور اتصالك بواجهة Control UI أو دخولك إلى المضيف عبر SSH: النشاط المرئي للمستخدم هو ما يعيد تفعيل بوابة إعادة التشغيل في launchd، وليس أي شيء تفعله لوحة التحكم للـ Gateway.
- ازدياد عداد
runsخلال اليوم من دون سطر مقابلreceived SIG*; shutting downفي~/Library/Logs/openclaw/gateway.log: تسجل عمليات الإيقاف النظيفة إشارة؛ أما الانهيارات العابرة فلا تفعل.
ما العمل:
-
حدّث الـ Gateway إذا كنت تشغل إصدارًا أقدم من
2026.5.26. بعد التحديث، ستسجل أخطاءENETDOWNالمستقبلية كتحذيرات بدلًا من إنهاء العملية. -
قلل نشاط سكون الصيانة على مضيفات Mac mini / أجهزة سطح المكتب المعدة للعمل كخوادم دائمة التشغيل:
bash sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0يقلل هذا بشكل كبير، لكنه لا يزيل تمامًا، اضطراب المشغل الأساسي. لا يزال بإمكان النظام تنفيذ بعض حالات سكون الصيانة للحفاظ على TCP keepalive وصيانة mDNS بغض النظر عن هذه الرايات.
-
أضف مراقب liveness بحيث تُكتشف بسرعة أي سلسلة انهيارات مستقبلية يوقفها launchd:
bash # Example launchd-aware liveness check, suitable for a 5-minute cron or LaunchAgentstate=$(launchctl print gui/$UID/ai.openclaw.gateway 2>/dev/null | awk -F'= ' '/state =/ {print $2; exit}')if [ "$state" != "running" ]; then launchctl kickstart -k gui/$UID/ai.openclaw.gatewayfiالهدف هو إعادة تفعيل بوابة إعادة التشغيل خارجيًا؛
KeepAlive=trueوحده لا يكفي على macOS بعد سلسلة انهيارات.
ذات صلة:
خروج Gateway أثناء الاستخدام العالي للذاكرة
استخدم هذا عندما يختفي الـ Gateway تحت الحمل، أو يبلّغ المشرف عن إعادة تشغيل بنمط OOM، أو تذكر السجلات critical memory pressure bundle written.
openclaw gateway status --deepopenclaw logs --followopenclaw gateway stability --bundle latestopenclaw gateway diagnostics exportابحث عن:
Reason: diagnostic.memory.pressure.criticalفي أحدث حزمة استقرار.Memory pressure:معcritical/rss_thresholdأوcritical/heap_thresholdأوcritical/rss_growth.- قيم
V8 heap:القريبة من حد heap. - إدخالات
Largest session files:مثلagents/<agent>/sessions/<session>.jsonlأوsessions/<session>.jsonl. - عدادات ذاكرة cgroup في Linux عندما يعمل الـ Gateway داخل حاوية أو خدمة محدودة الذاكرة.
التواقيع الشائعة:
- يظهر
critical memory pressure bundle writtenقبل إعادة التشغيل بقليل → التقط OpenClaw حزمة استقرار قبل OOM. افحصها باستخدامopenclaw gateway stability --bundle latest. - يظهر
memory pressure: level=critical ... memoryPressureSnapshot=disabledفي سجلات Gateway → اكتشف OpenClaw ضغط ذاكرة حرجًا، لكن لقطة الاستقرار قبل OOM معطلة. - يشير
Largest session files:إلى مسار نص محادثة منقح كبير جدًا → قلل سجل الجلسات المحتفظ به، وافحص نمو الجلسات، أو انقل النصوص القديمة خارج المخزن النشط قبل إعادة التشغيل. - البايتات المستخدمة في
V8 heap:قريبة من حد heap → خفّض ضغط الموجه/الجلسة، أو قلل العمل المتزامن، أو ارفع حد heap في Node فقط بعد التأكد من أن عبء العمل متوقع. Memory pressure: critical/rss_growth→ نمت الذاكرة بسرعة داخل نافذة أخذ عينات واحدة. افحص أحدث السجلات بحثًا عن استيراد كبير، أو مخرجات أداة خارجة عن السيطرة، أو محاولات متكررة، أو دفعة من أعمال agent المنتظرة في الطابور.- يظهر ضغط ذاكرة حرج في السجلات لكن لا توجد حزمة → هذا هو الافتراضي. اضبط
diagnostics.memoryPressureSnapshot: trueلالتقاط حزمة الاستقرار قبل OOM في أحداث ضغط الذاكرة الحرجة المستقبلية.
حزمة الاستقرار خالية من الحمولة. تتضمن أدلة تشغيلية عن الذاكرة ومسارات ملفات نسبية منقحة، وليس نص الرسائل أو أجسام Webhook أو بيانات الاعتماد أو الرموز أو ملفات تعريف الارتباط أو معرّفات الجلسات الخام. أرفق تصدير التشخيصات بتقارير الأخطاء بدلًا من نسخ السجلات الخام.
ذات صلة:
رفض Gateway تهيئة غير صالحة
استخدم هذا عندما يفشل بدء تشغيل Gateway مع Invalid config أو تقول سجلات إعادة التحميل الساخن
إنه تخطى تعديلًا غير صالح.
openclaw logs --followopenclaw config fileopenclaw config validateopenclaw doctorابحث عن:
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- ملف
openclaw.json.rejected.*مؤرخ بجانب التهيئة النشطة - ملف
openclaw.json.clobbered.*مؤرخ إذا أصلحdoctor --fixتعديلًا مباشرًا معطوبًا - يحتفظ OpenClaw بأحدث 32 ملفًا من ملفات
.clobbered.*لكل مسار تهيئة ويدوّر الملفات الأقدم
What happened
- لم تجتز التهيئة التحقق أثناء بدء التشغيل أو إعادة التحميل الساخن أو كتابة يملكها OpenClaw.
- يفشل بدء تشغيل Gateway بشكل مغلق بدلًا من إعادة كتابة
openclaw.json. - تتخطى إعادة التحميل الساخن التعديلات الخارجية غير الصالحة وتبقي تهيئة وقت التشغيل الحالية نشطة.
- ترفض الكتابات التي يملكها OpenClaw الحمولات غير الصالحة/المتلفة قبل الالتزام وتحفظ
.rejected.*. - يملك
openclaw doctor --fixالإصلاح. يمكنه إزالة بادئات غير JSON أو استعادة آخر نسخة معروفة بأنها سليمة مع الحفاظ على الحمولة المرفوضة كـ.clobbered.*. - عندما تحدث إصلاحات كثيرة لمسار تهيئة واحد، يدوّر OpenClaw ملفات
.clobbered.*الأقدم بحيث تبقى أحدث حمولة جرى إصلاحها متاحة.
Inspect and repair
CONFIG="$(openclaw config file)"ls -lt "$CONFIG".clobbered.* "$CONFIG".rejected.* 2>/dev/null | headdiff -u "$CONFIG" "$(ls -t "$CONFIG".clobbered.* 2>/dev/null | head -n 1)"openclaw config validateopenclaw doctorCommon signatures
- وجود
.clobbered.*→ احتفظ doctor بتعديل خارجي معطوب أثناء إصلاح التهيئة النشطة. - وجود
.rejected.*→ فشلت كتابة تهيئة يملكها OpenClaw في فحوصات المخطط أو clobber قبل الالتزام. Config write rejected:→ حاولت الكتابة إسقاط الشكل المطلوب، أو تقليص الملف بشدة، أو حفظ تهيئة غير صالحة.config reload skipped (invalid config):→ فشل تعديل مباشر في التحقق وتم تجاهله من Gateway العامل.Invalid config at ...→ فشل بدء التشغيل قبل إقلاع خدمات Gateway.missing-meta-vs-last-goodأوgateway-mode-missing-vs-last-goodأوsize-drop-vs-last-good:*→ رُفضت كتابة يملكها OpenClaw لأنها فقدت حقولًا أو حجمًا مقارنة بالنسخة الاحتياطية الأخيرة المعروفة بأنها سليمة.Config last-known-good promotion skipped→ احتوى المرشح على عناصر نائبة منقحة للأسرار مثل***.
Fix options
- شغّل
openclaw doctor --fixللسماح لـ doctor بإصلاح تهيئة ذات بادئة/متلفة أو استعادة آخر نسخة معروفة بأنها سليمة. - انسخ فقط المفاتيح المقصودة من
.clobbered.*أو.rejected.*، ثم طبقها باستخدامopenclaw config setأوconfig.patch. - شغّل
openclaw config validateقبل إعادة التشغيل. - إذا عدّلت يدويًا، فاحتفظ بتهيئة JSON5 الكاملة، وليس فقط الكائن الجزئي الذي أردت تغييره.
ذات صلة:
تحذيرات فحص Gateway
استخدم هذا عندما يصل openclaw gateway probe إلى شيء ما، لكنه لا يزال يطبع كتلة تحذير.
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --ssh user@gateway-hostابحث عن:
warnings[].codeوprimaryTargetIdفي مخرجات JSON.- ما إذا كان التحذير متعلقًا بالرجوع إلى SSH، أو تعدد الـ gateways، أو نقص النطاقات، أو مراجع مصادقة غير محلولة.
التواقيع الشائعة:
SSH tunnel failed to start; falling back to direct probes.→ فشل إعداد SSH، لكن الأمر لا يزال يحاول الأهداف المباشرة المهيأة/أهداف الاسترجاع المحلي.multiple reachable gateway identities detected→ أجابت gateways مميزة، أو لم يتمكن OpenClaw من إثبات أن الأهداف القابلة للوصول هي Gateway نفسه. يُعامل نفق SSH أو عنوان URL وكيل أو عنوان URL بعيد مهيأ إلى Gateway نفسه كـ Gateway واحد بعدة وسائل نقل، حتى عندما تختلف منافذ النقل.Read-probe diagnostics are limited by gateway scopes (missing operator.read)→ نجح الاتصال، لكن RPC التفصيلي محدود بالنطاق؛ اقرن هوية الجهاز أو استخدم بيانات اعتماد تتضمنoperator.read.Gateway accepted the WebSocket connection, but follow-up read diagnostics failed→ نجح الاتصال، لكن مجموعة RPC التشخيصية الكاملة انتهت مهلتها أو فشلت. تعامل مع هذا كـ Gateway قابل للوصول مع تشخيصات متدهورة؛ قارنconnect.okوconnect.rpcOkفي مخرجات--json.Capability: pairing-pendingأوgateway closed (1008): pairing required→ أجاب الـ Gateway، لكن هذا العميل لا يزال يحتاج إلى الاقتران/الموافقة قبل وصول المشغل العادي.- نص تحذير SecretRef غير محلول لـ
gateway.auth.*/gateway.remote.*→ لم تكن مادة المصادقة متاحة في مسار الأمر هذا للهدف الفاشل.
ذات صلة:
القناة متصلة، لكن الرسائل لا تتدفق
إذا كانت حالة القناة متصلة لكن تدفق الرسائل متوقف، فركز على السياسة والأذونات وقواعد التسليم الخاصة بالقناة.
openclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw status --deepopenclaw logs --followopenclaw config get channelsابحث عن:
- سياسة الرسائل الخاصة DM (
pairing،allowlist،open،disabled). - قائمة السماح للمجموعات ومتطلبات الإشارة.
- أذونات/نطاقات API القناة المفقودة.
التواقيع الشائعة:
mention required→ تم تجاهل الرسالة بسبب سياسة الإشارة في المجموعة.- آثار
pairing/ الموافقة المعلقة → المرسل غير معتمد. missing_scope،not_in_channel،Forbidden،401/403→ مشكلة في مصادقة/أذونات القناة.
ذات صلة:
تسليم Cron و Heartbeat
إذا لم يعمل cron أو heartbeat أو لم يتم التسليم، فتحقق أولًا من حالة المجدول، ثم هدف التسليم.
openclaw cron statusopenclaw cron listopenclaw cron runs --id <jobId> --limit 20openclaw system heartbeat lastopenclaw logs --followابحث عن:
- تفعيل Cron ووجود موعد التنبيه التالي.
- حالة سجل تشغيل المهمة (
ok،skipped،error). - أسباب تخطي Heartbeat (
quiet-hours،requests-in-flight،cron-in-progress،lanes-busy،alerts-disabled،empty-heartbeat-file،no-tasks-due).
التواقيع الشائعة
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موجود لكنه لا يحتوي إلا على فراغات أو تعليق أو ترويسة أو سياج أو هيكل قائمة تحقق فارغة، لذلك يتخطى 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.
ذات صلة:
Node مقترن، والأداة تفشل
إذا كان Node مقترنًا لكن الأدوات تفشل، فاعزل حالة الواجهة الأمامية والأذونات والموافقة.
openclaw nodes statusopenclaw nodes describe --node <idOrNameOrIp>openclaw approvals get --node <idOrNameOrIp>openclaw logs --followopenclaw statusابحث عن:
- أن يكون Node متصلًا بالإنترنت مع الإمكانات المتوقعة.
- منح أذونات نظام التشغيل للكاميرا/الميكروفون/الموقع/الشاشة.
- موافقات التنفيذ وحالة قائمة السماح.
التواقيع الشائعة:
NODE_BACKGROUND_UNAVAILABLE→ يجب أن يكون تطبيق Node في الواجهة الأمامية.*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ إذن نظام تشغيل مفقود.SYSTEM_RUN_DENIED: approval required→ موافقة التنفيذ معلقة.SYSTEM_RUN_DENIED: allowlist miss→ الأمر محظور بواسطة قائمة السماح.
ذات صلة:
فشل أداة المتصفح
استخدم هذا عندما تفشل إجراءات أداة المتصفح رغم أن Gateway نفسه سليم.
openclaw browser statusopenclaw browser start --browser-profile openclawopenclaw browser profilesopenclaw logs --followopenclaw doctorابحث عن:
- ما إذا كان
plugins.allowمضبوطًا ويتضمنbrowser. - مسار ملف المتصفح التنفيذي صالحًا.
- إمكانية الوصول إلى ملف تعريف CDP.
- توفر Chrome محليًا لملفات تعريف
existing-session/user.
تواقيع Plugin / الملف التنفيذي
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)→ يستخدم عنوان URL المكوّن لـ CDP مخططًا غير مدعوم مثلfile:أوftp:.browser.cdpUrl has invalid port→ يحتوي عنوان URL المكوّن لـ CDP على منفذ سيئ أو خارج النطاق.Playwright is not available in this gateway build; '<feature>' is unsupported.→ تثبيت Gateway الحالي يفتقد تبعية وقت تشغيل المتصفح الأساسية؛ أعد تثبيت OpenClaw أو حدّثه، ثم أعد تشغيل Gateway. لا تزال لقطات ARIA ولقطات الصفحة الأساسية تعمل، لكن التنقل ولقطات الذكاء الاصطناعي ولقطات عناصر محددات CSS وتصدير PDF تبقى غير متاحة.
تواقيع Chrome MCP / الجلسة الحالية
Could not find DevToolsActivePort for chrome→ تعذر على Chrome MCP في الجلسة الحالية الارتباط بدليل بيانات المتصفح المحدد بعد. افتح صفحة فحص المتصفح، وفعّل التصحيح عن بعد، وأبقِ المتصفح مفتوحًا، ووافق على مطالبة الارتباط الأولى، ثم أعد المحاولة. إذا لم تكن حالة تسجيل الدخول مطلوبة، ففضّل ملف التعريف المُدارopenclaw.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→ لا يحتوي ملف تعريف الارتباط فقط على هدف قابل للوصول، أو أن نقطة نهاية HTTP أجابت لكن تعذر فتح CDP WebSocket مع ذلك.
تواقيع العنصر / لقطة الشاشة / الرفع
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 تجاوزات المهلة.existing-session type does not support timeoutMs overrides.→ احذفtimeoutMsمنact:typeعلى ملفات تعريفprofile="user"/ جلسات Chrome MCP الحالية، أو استخدم ملف تعريف متصفح مُدار/CDP عندما تكون مهلة مخصصة مطلوبة.existing-session evaluate does not support timeoutMs overrides.→ احذفtimeoutMsمنact:evaluateعلى ملفات تعريفprofile="user"/ جلسات Chrome MCP الحالية، أو استخدم ملف تعريف متصفح مُدار/CDP عندما تكون مهلة مخصصة مطلوبة.response body is not supported for existing-session profiles yet.→ لا يزالresponsebodyيتطلب متصفحًا مُدارًا أو ملف تعريف CDP خامًا.- تجاوزات منفذ العرض / الوضع الداكن / اللغة المحلية / عدم الاتصال القديمة على ملفات تعريف الارتباط فقط أو CDP البعيد → شغّل
openclaw browser stop --browser-profile <name>لإغلاق جلسة التحكم النشطة وتحرير حالة محاكاة Playwright/CDP دون إعادة تشغيل Gateway بالكامل.
ذات صلة:
إذا أجريت ترقية وتعطل شيء فجأة
معظم الأعطال بعد الترقية تكون بسبب انجراف التكوين أو فرض افتراضيات أكثر صرامة الآن.
1. تغير سلوك المصادقة وتجاوز عنوان URL
openclaw gateway statusopenclaw config get gateway.modeopenclaw config get gateway.remote.urlopenclaw config get gateway.auth.modeما يجب التحقق منه:
- إذا كان
gateway.mode=remote، فقد تستهدف استدعاءات CLI الخدمة البعيدة بينما تكون خدمتك المحلية سليمة. - استدعاءات
--urlالصريحة لا تعود إلى بيانات الاعتماد المخزنة.
التواقيع الشائعة:
gateway connect failed:→ هدف عنوان URL خاطئ.unauthorized→ نقطة النهاية قابلة للوصول لكن المصادقة خاطئة.
2. أصبحت ضوابط الربط والمصادقة أكثر صرامة
openclaw config get gateway.bindopenclaw config get gateway.auth.modeopenclaw config get gateway.auth.tokenopenclaw gateway statusopenclaw logs --followما يجب التحقق منه:
- تحتاج عمليات الربط غير المحلية (
lan،tailnet،custom) إلى مسار مصادقة Gateway صالح: مصادقة الرمز/كلمة المرور المشتركة، أو نشرtrusted-proxyغير محلي مكوّن بشكل صحيح. - المفاتيح القديمة مثل
gateway.tokenلا تستبدلgateway.auth.token.
التواقيع الشائعة:
refusing to bind gateway ... without auth→ ربط غير محلي دون مسار مصادقة Gateway صالح.Connectivity probe: failedبينما وقت التشغيل يعمل → Gateway حي لكنه غير قابل للوصول باستخدام المصادقة/عنوان URL الحاليين.
3. تغيرت حالة الاقتران وهوية الجهاز
openclaw devices listopenclaw pairing list --channel <channel> [--account <id>]openclaw logs --followopenclaw doctorما يجب التحقق منه:
- موافقات الأجهزة المعلقة للوحة التحكم/Nodes.
- موافقات اقتران الرسائل المباشرة المعلقة بعد تغييرات السياسة أو الهوية.
التواقيع الشائعة:
device identity required→ لم يتم استيفاء مصادقة الجهاز.pairing required→ يجب الموافقة على المرسل/الجهاز.
إذا ظل تكوين الخدمة ووقت التشغيل غير متفقين بعد الفحوصات، فأعد تثبيت بيانات تعريف الخدمة من ملف التعريف/دليل الحالة نفسه:
openclaw gateway install --forceopenclaw gateway restartذات صلة: