Gateway

فحوصات السلامة

دليل موجز للتحقق من اتصال القنوات دون تخمين.

فحوصات سريعة

  • openclaw status - ملخص محلي: إمكانية الوصول إلى Gateway ووضعه، وتلميح التحديث، وعمر مصادقة القناة المرتبطة، والجلسات + النشاط الأخير.
  • openclaw status --all - تشخيص محلي كامل (للقراءة فقط، وملوّن، وآمن للصقه لأغراض تصحيح الأخطاء).
  • openclaw status --deep - يطلب من Gateway قيد التشغيل إجراء فحص مباشر (health مع probe:true)، بما في ذلك فحوصات القنوات لكل حساب عند دعمها.
  • openclaw status --usage - يعرض لقطات استخدام موفّر النموذج/الحصة.
  • openclaw health - يطلب من Gateway قيد التشغيل لقطة حالته الصحية (عبر WS فقط؛ دون مقابس قنوات مباشرة من CLI).
  • openclaw health --verbose (الاسم البديل --debug) - يفرض فحصًا صحيًا مباشرًا ويطبع تفاصيل اتصال Gateway.
  • openclaw health --json - مخرجات لقطة الحالة الصحية القابلة للقراءة آليًا.
  • أرسل /status كأمر دردشة مستقل في أي قناة للحصول على رد بالحالة دون استدعاء الوكيل.
  • السجلات: تابع /tmp/openclaw/openclaw-*.log ورشّح حسب web-heartbeat وweb-reconnect وweb-auto-reply وweb-inbound.

بالنسبة إلى Discord وموفّري الدردشة الآخرين، لا تعبّر صفوف الجلسات عن حيوية المقبس. تقرأ openclaw sessions وGateway ‏sessions.list وأداة الوكيل sessions_list حالة المحادثة المخزنة. يمكن للموفّر إعادة الاتصال وإظهار حالة قناة سليمة قبل إنشاء أي صف جلسة جديد. استخدم أوامر حالة القناة والحالة الصحية أعلاه لإجراء فحوصات الاتصال المباشر.

تشخيصات معمّقة

  • بيانات الاعتماد على القرص: ls -l ~/.openclaw/credentials/whatsapp/<accountId>/creds.json (يجب أن يكون وقت التعديل حديثًا).
  • مخزن الجلسات: ls -l ~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite. يظهر عدد المستلمين والمستلمون الحديثون عبر status.
  • مسار إعادة الربط: openclaw channels logout && openclaw channels login --verbose عند ظهور رموز الحالة 409-515 أو loggedOut في السجلات. يُعاد تشغيل مسار تسجيل الدخول عبر رمز QR تلقائيًا مرة واحدة للحالة 515 بعد الاقتران.
  • تكون التشخيصات مفعّلة افتراضيًا (يعطّلها diagnostics.enabled: false). تسجّل أحداث الذاكرة أعداد بايتات RSS/الكومة وضغط العتبة/النمو؛ ويُسجَّل ضغط الذاكرة الحرج عبر مسجّل Gateway، وعند تعيين diagnostics.memoryPressureSnapshot: true، تُكتب أيضًا حزمة استقرار تسبق نفاد الذاكرة (إحصاءات كومة V8، وعدّادات Linux cgroup عند توفرها، وأعداد الموارد النشطة، وأكبر ملفات الجلسات/النصوص حسب المسار النسبي المنقّح). تسجّل تحذيرات الحيوية تأخر حلقة الأحداث/استخدامها، ونسبة أنوية CPU، وأعداد الجلسات النشطة/المنتظرة/الموجودة في قائمة الانتظار عندما تكون العملية قيد التشغيل لكنها مشبعة. تسجّل أحداث الحمولات الزائدة الحجم ما تم رفضه/اقتطاعه/تقسيمه إلى أجزاء، إلى جانب الأحجام والحدود، ولا تسجّل مطلقًا نص الرسالة أو محتويات المرفقات أو أجسام Webhook أو أجسام الطلبات/الاستجابات الخام أو الرموز المميزة أو ملفات تعريف الارتباط أو القيم السرية.
  • يقود Heartbeat نفسه مسجّل الاستقرار محدود الحجم: openclaw gateway stability (أو استدعاء Gateway ‏RPC ‏diagnostics.stability). تحفظ حالات الخروج القاتلة لـ Gateway، وانتهاء مهلة إيقاف التشغيل، وفشل بدء التشغيل بعد إعادة التشغيل، وضغط الذاكرة الحرج (عند diagnostics.memoryPressureSnapshot: true) أحدث لقطة ضمن ~/.openclaw/logs/stability/. افحص أحدث حزمة باستخدام openclaw gateway stability --bundle latest.
  • بالنسبة إلى تقارير الأخطاء، شغّل openclaw gateway diagnostics export وأرفق ملف zip المُنشأ: ملخص Markdown، وأحدث حزمة استقرار، وبيانات وصفية منقّحة للسجلات، ولقطات منقّحة لحالة Gateway وحالته الصحية، وشكل الإعدادات. تُحذف أو تُنقّح نصوص الدردشة وأجسام Webhook ومخرجات الأدوات وبيانات الاعتماد وملفات تعريف الارتباط ومعرّفات الحسابات/الرسائل والقيم السرية. راجع تصدير التشخيصات.

إعداد مراقب الحالة الصحية

  • gateway.channelHealthCheckMinutes: معدل فحص Gateway للحالة الصحية للقناة. القيمة الافتراضية: 5. عيّن 0 لتعطيل عمليات إعادة التشغيل التي ينفذها مراقب الحالة الصحية عموميًا.
  • gateway.channelStaleEventThresholdMinutes: المدة التي يمكن أن تظل فيها القناة المتصلة خاملة قبل أن يعدّها مراقب الحالة الصحية قديمة ويعيد تشغيلها. القيمة الافتراضية: 30. أبقِ هذه القيمة أكبر من أو تساوي gateway.channelHealthCheckMinutes.
  • gateway.channelMaxRestartsPerHour: الحد الأقصى المتجدد خلال ساعة واحدة لعمليات إعادة التشغيل التي ينفذها مراقب الحالة الصحية لكل قناة/حساب. القيمة الافتراضية: 10.
  • channels.<provider>.healthMonitor.enabled: يعطّل عمليات إعادة التشغيل التي ينفذها مراقب الحالة الصحية لقناة محددة مع إبقاء المراقبة العامة مفعّلة.
  • channels.<provider>.accounts.<accountId>.healthMonitor.enabled: تجاوز متعدد الحسابات تكون له الأولوية على الإعداد على مستوى القناة.
  • تنطبق هذه التجاوزات الخاصة بكل قناة على القنوات المضمّنة التي توفرها حاليًا: Discord وGoogle Chat وiMessage وIRC وMicrosoft Teams وSignal وSlack وTelegram وWhatsApp.

مراقبة وقت التشغيل

يجب أن تستخدم خدمات مراقبة وقت التشغيل الخارجية نقطة النهاية المخصصة /health، لا /v1/chat/completions.

  • استخدم: GET /health - استجابة فورية، دون إنشاء جلسة، ودون استدعاء LLM، ويُرجع {"ok":true,"status":"live"}
  • لا تستخدم: /v1/chat/completions لفحوصات الحالة الصحية - ينشئ كل طلب جلسة وكيل كاملة مع لقطة Skills وتجميع السياق واستدعاءات LLM

عند عدم توفير ترويسة x-openclaw-session-key أو حقل user، ينشئ /v1/chat/completions جلسة عشوائية جديدة لكل طلب. تنشئ خدمات المراقبة التي ترسل فحصًا كل 15 دقيقة نحو 96 جلسة/يوم، تستهلك كل منها 4-22KB. وبمرور الوقت، يؤدي هذا إلى تضخم مخزن الجلسات وقد يسبب تجاوز نافذة السياق.

أمثلة لإعداد خدمات المراقبة

  • BetterStack: عيّن عنوان URL لفحص الحالة الصحية إلى https://<your-gateway-host>:<port>/health
  • UptimeRobot: أضف مراقب HTTP جديدًا بعنوان URL ‏https://<your-gateway-host>:<port>/health
  • عام: يعيد أي طلب HTTP GET إلى /health الحالة 200 مع {"ok":true} عندما يكون Gateway سليمًا

عند حدوث عطل

  • logged out أو حالة 409-515 -> أعد الربط باستخدام openclaw channels logout ثم openclaw channels login.
  • يتعذر الوصول إلى Gateway -> شغّله: openclaw gateway --port 18789 (استخدم --force إذا كان المنفذ مشغولًا).
  • لا توجد رسائل واردة -> تأكد من اتصال الهاتف المرتبط بالإنترنت ومن السماح للمرسل (channels.whatsapp.allowFrom)؛ وبالنسبة إلى الدردشات الجماعية، تأكد من تطابق قائمة السماح + قواعد الإشارة (channels.whatsapp.groups وagents.list[].groupChat.mentionPatterns).

أمر "health" المخصص

يطلب openclaw health من Gateway قيد التشغيل لقطة حالته الصحية (دون مقابس قنوات مباشرة من CLI). ويُرجع افتراضيًا لقطة حديثة مخزنة مؤقتًا لـ Gateway، ويحدّث Gateway ذاكرة التخزين المؤقت هذه في الخلفية؛ بينما يفرض --verbose فحصًا مباشرًا بدلًا من ذلك. يبلغ الأمر عن عمر بيانات الاعتماد/المصادقة المرتبطة عند توفرها، وملخصات الفحص لكل قناة، وملخص مخزن الجلسات، ومدة الفحص. وينتهي برمز غير صفري إذا تعذر الوصول إلى Gateway أو فشل الفحص/انتهت مهلته.

الخيارات:

  • --json: مخرجات JSON قابلة للقراءة آليًا
  • --timeout <ms>: يتجاوز مهلة الفحص الافتراضية البالغة 10s
  • --verbose: يفرض فحصًا مباشرًا ويطبع تفاصيل اتصال Gateway
  • --debug: اسم بديل لـ --verbose

تتضمن لقطة الحالة الصحية: ok (قيمة منطقية)، وts (طابع زمني)، وdurationMs (وقت الفحص)، وحالة كل قناة، وتوفر الوكيل، وملخص مخزن الجلسات.

ذو صلة

Was this useful?
On this page

On this page