CLI commands
الفحص التشخيصي
openclaw doctor
فحوصات السلامة + إصلاحات سريعة لـ Gateway والقنوات.
ذات صلة:
- استكشاف الأخطاء وإصلاحها: استكشاف الأخطاء وإصلاحها
- تدقيق الأمان: الأمان
أمثلة
openclaw doctor
openclaw doctor --repair
openclaw doctor --deep
openclaw doctor --repair --non-interactive
openclaw doctor --generate-gateway-token
الخيارات
--no-workspace-suggestions: تعطيل اقتراحات ذاكرة/بحث مساحة العمل--yes: قبول الإعدادات الافتراضية دون مطالبة--repair: تطبيق الإصلاحات الموصى بها غير المتعلقة بالخدمات دون مطالبة؛ ما زالت عمليات تثبيت خدمة Gateway وإعادة كتابتها تتطلب تأكيدًا تفاعليًا أو أوامر Gateway صريحة--fix: اسم بديل لـ--repair--force: تطبيق إصلاحات قوية، بما في ذلك الكتابة فوق إعدادات الخدمة المخصصة عند الحاجة--non-interactive: التشغيل دون مطالبات؛ للترحيلات الآمنة والإصلاحات غير المتعلقة بالخدمات فقط--generate-gateway-token: إنشاء رمز Gateway وتكوينه--deep: فحص خدمات النظام بحثًا عن عمليات تثبيت Gateway إضافية والإبلاغ عن عمليات تسليم إعادة تشغيل مشرف Gateway الأخيرة
ملاحظات:
- في وضع Nix (
OPENCLAW_NIX_MODE=1)، تظل فحوصات doctor للقراءة فقط تعمل، لكنdoctor --fixوdoctor --repairوdoctor --yesوdoctor --generate-gateway-tokenمعطلة لأنopenclaw.jsonغير قابل للتغيير. حرّر مصدر Nix لهذا التثبيت بدلًا من ذلك؛ بالنسبة إلى nix-openclaw، استخدم البدء السريع ذي الأولوية للوكيل. - لا تعمل المطالبات التفاعلية (مثل إصلاحات سلسلة المفاتيح/OAuth) إلا عندما يكون stdin طرفية TTY ولم يتم تعيين
--non-interactive. ستتجاوز عمليات التشغيل دون واجهة (cron، Telegram، بلا طرفية) المطالبات. - الأداء: تتخطى عمليات تشغيل
doctorغير التفاعلية تحميل Plugin المسبق حتى تبقى فحوصات السلامة دون واجهة سريعة. لا تزال الجلسات التفاعلية تحمّل Plugins بالكامل عندما يحتاج الفحص إلى مساهمتها. - يكتب
--fix(اسم بديل لـ--repair) نسخة احتياطية إلى~/.openclaw/openclaw.json.bakويحذف مفاتيح الإعدادات غير المعروفة، مع سرد كل إزالة. - يبلّغ
doctor --fix --non-interactiveعن تعريفات خدمة Gateway المفقودة أو القديمة لكنه لا يثبتها أو يعيد كتابتها خارج وضع إصلاح التحديث. شغّلopenclaw gateway installلخدمة مفقودة، أوopenclaw gateway install --forceعندما تريد عمدًا استبدال المشغّل. - تكتشف فحوصات سلامة الحالة الآن ملفات النصوص المتروكة في دليل الجلسات. تتطلب أرشفتها بصيغة
.deleted.<timestamp>تأكيدًا تفاعليًا؛ يتركها--fixو--yesوعمليات التشغيل دون واجهة في مكانها. - يفحص Doctor أيضًا
~/.openclaw/cron/jobs.json(أوcron.store) بحثًا عن أشكال مهام cron القديمة ويمكنه إعادة كتابتها في مكانها قبل أن يضطر المجدوِل إلى تسويتها تلقائيًا وقت التشغيل. - على Linux، يحذر doctor عندما لا يزال crontab الخاص بالمستخدم يشغّل
~/.openclaw/bin/ensure-whatsapp.shالقديم؛ لم يعد هذا السكربت مُصانًا ويمكنه تسجيل انقطاعات WhatsApp Gateway كاذبة عندما يفتقر cron إلى بيئة ناقل مستخدم systemd. - عندما يكون WhatsApp مفعّلًا، يتحقق doctor من وجود حلقة أحداث Gateway متدهورة مع استمرار عمل عملاء
openclaw-tuiالمحليين. يوقفdoctor --fixفقط عملاء TUI المحليين المتحقق منهم حتى لا تُصفّ ردود WhatsApp خلف حلقات تحديث TUI قديمة. - يعيد Doctor كتابة مراجع نماذج
openai-codex/*القديمة إلى مراجعopenai/*القياسية عبر النماذج الأساسية، والاحتياطيات، وتجاوزات heartbeat/الوكيل الفرعي/compaction، والخطافات، وتجاوزات نماذج القنوات، ودبابيس مسارات الجلسات القديمة. يختار--fixقيمةagentRuntime.id: "codex"فقط عندما يكون Codex plugin مثبتًا ومفعّلًا ويساهم بحزامcodexولديه OAuth صالح للاستخدام؛ وإلا فإنه يختارagentRuntime.id: "pi"حتى يبقى المسار على مشغّل OpenClaw الافتراضي. - ينظف Doctor حالة تحضير اعتماديات Plugin القديمة التي أنشأتها إصدارات OpenClaw الأقدم. كما يصلح Plugins القابلة للتنزيل المفقودة والمشار إليها في الإعدادات، مثل
plugins.entriesأو القنوات المكوّنة أو إعدادات المزوّد/البحث المكوّنة أو أزمنة تشغيل الوكلاء المكوّنة. أثناء تحديثات الحزمة، يتخطى doctor إصلاح Plugin الخاص بمدير الحزم حتى يكتمل استبدال الحزمة؛ أعد تشغيلopenclaw doctor --fixبعد ذلك إذا ظل Plugin مكوّن يحتاج إلى استرداد. إذا فشل التنزيل، يبلّغ doctor عن خطأ التثبيت ويحافظ على إدخال Plugin المكوّن لمحاولة الإصلاح التالية. - يصلح Doctor إعدادات Plugin القديمة بإزالة معرّفات Plugin المفقودة من
plugins.allow/plugins.entries، إضافة إلى إعدادات القنوات المتدلية المطابقة، وأهداف Heartbeat، وتجاوزات نماذج القنوات عندما يكون اكتشاف Plugin سليمًا. - يعزل Doctor إعدادات Plugin غير الصالحة بتعطيل إدخال
plugins.entries.<id>المتأثر وإزالة حمولةconfigغير الصالحة الخاصة به. يتجاوز بدء تشغيل Gateway بالفعل ذلك Plugin السيئ فقط حتى تتمكن Plugins والقنوات الأخرى من الاستمرار في العمل. - عيّن
OPENCLAW_SERVICE_REPAIR_POLICY=externalعندما يمتلك مشرف آخر دورة حياة Gateway. يظل Doctor يبلّغ عن سلامة Gateway/الخدمة ويطبق الإصلاحات غير المتعلقة بالخدمة، لكنه يتخطى تثبيت/بدء/إعادة تشغيل/تمهيد الخدمة وتنظيف الخدمة القديمة. - على Linux، يتجاهل doctor وحدات systemd الإضافية غير النشطة الشبيهة بـ Gateway ولا يعيد كتابة بيانات الأمر/نقطة الدخول الوصفية لخدمة Gateway systemd قيد التشغيل أثناء الإصلاح. أوقف الخدمة أولًا أو استخدم
openclaw gateway install --forceعندما تريد عمدًا استبدال المشغّل النشط. - يرحّل Doctor تلقائيًا إعدادات Talk المسطحة القديمة (
talk.voiceIdوtalk.modelIdوما شابه) إلىtalk.provider+talk.providers.<provider>. - لم تعد عمليات تشغيل
doctor --fixالمتكررة تبلّغ أو تطبق تسوية Talk عندما يكون الفرق الوحيد هو ترتيب مفاتيح الكائن. - يتضمن Doctor فحص جاهزية بحث الذاكرة ويمكنه التوصية بـ
openclaw configure --section modelعندما تكون بيانات اعتماد التضمين مفقودة. - يحذر Doctor عندما لا يكون أي مالك أوامر مكوّنًا. مالك الأوامر هو حساب المشغّل البشري المسموح له بتشغيل أوامر المالك فقط والموافقة على الإجراءات الخطرة. إقران الرسائل المباشرة يسمح فقط لشخص ما بالتحدث إلى البوت؛ إذا وافقت على مرسل قبل وجود تمهيد أول مالك، فعيّن
commands.ownerAllowFromصراحةً. - يحذر Doctor عندما تكون وكلاء وضع Codex مكوّنة وتوجد أصول Codex CLI شخصية في منزل Codex الخاص بالمشغّل. تستخدم عمليات تشغيل خادم تطبيق Codex المحلية منازل معزولة لكل وكيل، لذا استخدم
openclaw migrate codex --dry-runلجرد الأصول التي ينبغي ترقيتها عمدًا. - يحذر Doctor عندما تكون Skills المسموح بها للوكيل الافتراضي غير متاحة في بيئة التشغيل الحالية لأن المتطلبات الخاصة بالثنائيات أو متغيرات البيئة أو الإعدادات أو نظام التشغيل مفقودة. يمكن لـ
doctor --fixتعطيل تلك Skills غير المتاحة باستخدامskills.entries.<skill>.enabled=false؛ ثبّت/كوّن المتطلب المفقود بدلًا من ذلك عندما تريد إبقاء Skill نشطة. - إذا كان وضع sandbox مفعّلًا لكن Docker غير متاح، يبلّغ doctor عن تحذير عالي الدلالة مع المعالجة (
install Dockerأوopenclaw config set agents.defaults.sandbox.mode off). - إذا كانت ملفات سجل sandbox القديمة (
~/.openclaw/sandbox/containers.jsonأو~/.openclaw/sandbox/browsers.json) موجودة، يبلّغ doctor عنها؛ يرحّلopenclaw doctor --fixالإدخالات الصالحة إلى أدلة سجل مجزأة ويعزل الملفات القديمة غير الصالحة. - إذا كانت
gateway.auth.token/gateway.auth.passwordمُدارة عبر SecretRef وغير متاحة في مسار الأمر الحالي، يبلّغ doctor عن تحذير للقراءة فقط ولا يكتب بيانات اعتماد بديلة بنص عادي. - إذا فشل فحص SecretRef الخاص بالقناة في مسار إصلاح، يواصل doctor العمل ويبلّغ عن تحذير بدلًا من الخروج مبكرًا.
- بعد ترحيلات دليل الحالة، يحذر doctor عندما تعتمد حسابات Telegram أو Discord الافتراضية المفعّلة على بديل متغيرات البيئة ويكون
TELEGRAM_BOT_TOKENأوDISCORD_BOT_TOKENغير متاح لعملية doctor. - يتطلب الحل التلقائي لاسم مستخدم Telegram في
allowFrom(doctor --fix) رمز Telegram قابلًا للحل في مسار الأمر الحالي. إذا كان فحص الرمز غير متاح، يبلّغ doctor عن تحذير ويتخطى الحل التلقائي في تلك الجولة.
macOS: تجاوزات بيئة launchctl
إذا سبق لك تشغيل launchctl setenv OPENCLAW_GATEWAY_TOKEN ... (أو ...PASSWORD)، فإن تلك القيمة تتجاوز ملف الإعدادات لديك ويمكن أن تسبب أخطاء "غير مصرّح" مستمرة.
launchctl getenv OPENCLAW_GATEWAY_TOKEN
launchctl getenv OPENCLAW_GATEWAY_PASSWORD
launchctl unsetenv OPENCLAW_GATEWAY_TOKEN
launchctl unsetenv OPENCLAW_GATEWAY_PASSWORD