Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
openclaw doctor هي أداة الإصلاح + الترحيل في OpenClaw. تصلح الإعدادات/الحالة القديمة، وتتحقق من السلامة، وتوفر خطوات إصلاح قابلة للتنفيذ.
البدء السريع
أوضاع التشغيل دون واجهة والأتمتة
- --yes
- --repair
- --repair --force
- --non-interactive
- --deep
ما الذي يفعله (ملخص)
الصحة وواجهة المستخدم والتحديثات
الصحة وواجهة المستخدم والتحديثات
- تحديث اختياري قبل التشغيل لتثبيتات git (تفاعلي فقط).
- فحص حداثة بروتوكول واجهة المستخدم (يعيد بناء Control UI عندما يكون مخطط البروتوكول أحدث).
- فحص الصحة + مطالبة إعادة التشغيل.
- ملخص حالة Skills (مؤهلة/مفقودة/محظورة) وحالة Plugin.
الإعدادات والترحيلات
الإعدادات والترحيلات
- تطبيع الإعدادات للقيم القديمة.
- ترحيل إعدادات Talk من حقول
talk.*المسطحة القديمة إلىtalk.provider+talk.providers.<provider>. - فحوصات ترحيل المتصفح لإعدادات إضافة Chrome القديمة وجاهزية Chrome MCP.
- تحذيرات تجاوز موفر OpenCode (
models.providers.opencode/models.providers.opencode-go). - تحذيرات حجب Codex OAuth (
models.providers.openai-codex). - فحص متطلبات OAuth TLS الأساسية لملفات تعريف OpenAI Codex OAuth.
- تحذيرات قائمة سماح Plugin/الأدوات عندما يكون
plugins.allowمقيدا لكن سياسة الأدوات لا تزال تطلب wildcard أو أدوات مملوكة لـ Plugin. - ترحيل الحالة القديمة على القرص (sessions/agent dir/WhatsApp auth).
- ترحيل مفتاح عقد بيان Plugin القديم (
speechProviders,realtimeTranscriptionProviders,realtimeVoiceProviders,mediaUnderstandingProviders,imageGenerationProviders,videoGenerationProviders,webFetchProviders,webSearchProviders→contracts). - ترحيل مخزن cron القديم (
jobId,schedule.cron, حقول delivery/payload في المستوى الأعلى، payloadprovider, مهام webhook fallback البسيطةnotify: true). - تنظيف سياسة التشغيل القديمة على مستوى الوكيل بالكامل؛ سياسة تشغيل الموفر/النموذج هي محدد المسار النشط.
- تنظيف إعدادات Plugin القديمة عندما تكون plugins مفعلة؛ عندما يكون
plugins.enabled=false، تعامل مراجع Plugin القديمة كإعدادات احتواء خاملة وتحفظ.
الحالة والسلامة
الحالة والسلامة
- فحص ملف قفل الجلسة وتنظيف الأقفال القديمة.
- إصلاح نصوص الجلسات للفروع المكررة الخاصة بإعادة كتابة المطالبات التي أنشأتها إصدارات 2026.4.24 المتأثرة.
- اكتشاف علامات tombstone لاسترداد إعادة تشغيل الوكلاء الفرعيين العالقين، مع دعم
--fixلمسح أعلام الاسترداد الملغاة القديمة حتى لا يستمر بدء التشغيل في اعتبار الفرع ملغى بسبب إعادة التشغيل. - فحوصات سلامة الحالة والأذونات (sessions, transcripts, state dir).
- فحوصات أذونات ملف الإعدادات (chmod 600) عند التشغيل محليا.
- صحة مصادقة النموذج: تفحص انتهاء OAuth، ويمكنها تحديث الرموز التي تقترب من الانتهاء، وتبلغ عن حالات التهدئة/التعطيل في auth-profile.
- اكتشاف مجلد مساحة عمل إضافي (
~/openclaw).
Gateway والخدمات والمشرفون
Gateway والخدمات والمشرفون
- إصلاح صورة sandbox عندما يكون sandboxing مفعلا.
- ترحيل الخدمة القديمة واكتشاف Gateway إضافي.
- ترحيل حالة قناة Matrix القديمة (في وضع
--fix/--repair). - فحوصات تشغيل Gateway (الخدمة مثبتة لكنها لا تعمل؛ تسمية launchd مخزنة مؤقتا).
- تحذيرات حالة القنوات (مفحوصة من Gateway قيد التشغيل).
- فحوصات الأذونات الخاصة بالقنوات موجودة ضمن
openclaw channels capabilities؛ على سبيل المثال، تدقق أذونات قناة Discord الصوتية باستخدامopenclaw channels capabilities --channel discord --target channel:<channel-id>. - فحوصات استجابة WhatsApp لتدهور صحة حلقة أحداث Gateway مع استمرار عمل عملاء TUI المحليين؛ يوقف
--fixعملاء TUI المحليين المتحقق منهم فقط. - إصلاح مسار Codex لمراجع النماذج القديمة
openai-codex/*في النماذج الأساسية، والبدائل، وتجاوزات heartbeat/subagent/compaction، والخطافات، وتجاوزات نماذج القنوات، وتثبيتات مسارات الجلسات؛ يعيد--fixكتابتها إلىopenai/*، ويزيل تثبيتات سياسة التشغيل القديمة للجلسات/الوكيل بالكامل، ويترك مراجع وكيل OpenAI القياسية على حزمة Codex الافتراضية. - تدقيق إعدادات المشرف (launchd/systemd/schtasks) مع إصلاح اختياري.
- تنظيف بيئة الوكيل المضمن لخدمات Gateway التي التقطت قيم
HTTP_PROXY/HTTPS_PROXY/NO_PROXYمن shell أثناء التثبيت أو التحديث. - فحوصات أفضل ممارسات تشغيل Gateway (Node مقابل Bun، مسارات مديري الإصدارات).
- تشخيص تعارض منفذ Gateway (الافتراضي
18789).
المصادقة والأمان والاقتران
المصادقة والأمان والاقتران
- تحذيرات أمان لسياسات الرسائل المباشرة المفتوحة.
- فحوصات مصادقة Gateway لوضع الرمز المحلي (تعرض إنشاء رمز عندما لا يوجد مصدر رموز؛ ولا تستبدل إعدادات token SecretRef).
- اكتشاف مشكلات اقتران الجهاز (طلبات الاقتران الأولى المعلقة، ترقيات الدور/النطاق المعلقة، انحراف ذاكرة التخزين المؤقت القديمة لرمز الجهاز المحلي، وانحراف مصادقة سجل الاقتران).
مساحة العمل وshell
مساحة العمل وshell
- فحص systemd linger على Linux.
- فحص حجم ملف تمهيد مساحة العمل (تحذيرات الاقتطاع/الاقتراب من الحد لملفات السياق).
- فحص جاهزية Skills للوكيل الافتراضي؛ يبلغ عن Skills المسموح بها مع bins أو env أو config أو متطلبات نظام تشغيل مفقودة، ويمكن لـ
--fixتعطيل Skills غير المتاحة فيskills.entries. - فحص حالة إكمال shell والتثبيت/الترقية التلقائية.
- فحص جاهزية موفر تضمين البحث في الذاكرة (نموذج محلي، مفتاح API بعيد، أو ملف QMD ثنائي).
- فحوصات تثبيت المصدر (عدم تطابق مساحة عمل pnpm، أصول واجهة المستخدم المفقودة، ملف tsx الثنائي المفقود).
- يكتب الإعدادات المحدثة + بيانات معالج الإعداد الوصفية.
ملء واجهة Dreams UI بأثر رجعي وإعادة ضبطها
يتضمن مشهد Dreams في Control UI إجراءات Backfill وReset وClear Grounded لسير عمل Dreaming المؤرض. تستخدم هذه الإجراءات طرائق RPC بأسلوب Gateway doctor، لكنها ليست جزءا من إصلاح/ترحيل CLI فيopenclaw doctor.
ما تفعله:
- يفحص Backfill ملفات
memory/YYYY-MM-DD.mdالتاريخية في مساحة العمل النشطة، ويشغل تمرير يوميات REM المؤرض، ويكتب إدخالات ملء بأثر رجعي قابلة للعكس فيDREAMS.md. - يزيل Reset إدخالات يوميات الملء بأثر رجعي المحددة فقط من
DREAMS.md. - يزيل Clear Grounded فقط الإدخالات المرحلية قصيرة الأمد والمؤرضة فقط التي جاءت من إعادة تشغيل تاريخية ولم تجمع بعد استدعاء حيا أو دعما يوميا.
- لا تعدل
MEMORY.md - لا تشغل ترحيلات doctor كاملة
- لا تدرج المرشحين المؤرضين تلقائيا في مخزن الترقية الحي قصير الأمد إلا إذا شغلت مسار CLI المرحلي صراحة أولا
DREAMS.md كسطح للمراجعة.
السلوك المفصل والمسوغ
0. تحديث اختياري (تثبيتات git)
0. تحديث اختياري (تثبيتات git)
1. تطبيع الإعدادات
1. تطبيع الإعدادات
messages.ackReaction دون تجاوز خاص بالقناة)، فإن doctor يطبعها إلى المخطط الحالي.يشمل ذلك حقول Talk المسطحة القديمة. إعداد الكلام العام الحالي في Talk هو talk.provider + talk.providers.<provider>، وإعداد الصوت الفوري هو talk.realtime.*. يعيد doctor كتابة أشكال talk.voiceId / talk.voiceAliases / talk.modelId / talk.outputFormat / talk.apiKey القديمة إلى خريطة الموفر، ويعيد كتابة محددات realtime القديمة في المستوى الأعلى (talk.mode, talk.transport, talk.brain, talk.model, talk.voice) إلى talk.realtime.يحذر doctor أيضا عندما يكون plugins.allow غير فارغ وتستخدم سياسة الأدوات
إدخالات wildcard أو أدوات مملوكة لـ Plugin. لا يطابق tools.allow: ["*"] إلا الأدوات
من plugins التي تحمل فعليا؛ ولا يتجاوز قائمة سماح Plugin الحصرية.
يكتب doctor القيمة plugins.bundledDiscovery: "compat" لإعدادات قائمة السماح
القديمة المرحلة للحفاظ على سلوك الموفرات المضمنة الحالي، ثم
يشير إلى إعداد "allowlist" الأكثر صرامة.2. ترحيلات مفاتيح الإعدادات القديمة
2. ترحيلات مفاتيح الإعدادات القديمة
openclaw doctor.سيقوم doctor بما يلي:- شرح المفاتيح القديمة التي عثر عليها.
- إظهار الترحيل الذي طبقه.
- إعادة كتابة
~/.openclaw/openclaw.jsonبالمخطط المحدث.
openclaw doctor --fix؛ ولا يعيد كتابة openclaw.json عند بدء التشغيل. تتولى openclaw doctor --fix أيضا ترحيلات مخزن مهام Cron.الترحيلات الحالية:routing.allowFrom→channels.whatsapp.allowFromrouting.groupChat.requireMention→channels.whatsapp/telegram/imessage.groups."*".requireMentionrouting.groupChat.historyLimit→messages.groupChat.historyLimitrouting.groupChat.mentionPatterns→messages.groupChat.mentionPatternschannels.telegram.requireMention→channels.telegram.groups."*".requireMention- إعدادات القنوات المكوّنة التي تفتقد سياسة رد مرئية →
messages.groupChat.visibleReplies: "message_tool" routing.queue→messages.queuerouting.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 في الوقت الفعلي القديمة على المستوى الأعلى (
talk.mode/talk.transport/talk.brain/talk.model/talk.voice) +talk.provider/talk.providers→talk.realtime routing.agentToAgent→tools.agentToAgentrouting.transcribeAudio→tools.media.audio.modelsmessages.tts.<provider>(openai/elevenlabs/microsoft/edge) →messages.tts.providers.<provider>messages.tts.provider: "edge"وmessages.tts.providers.edge→messages.tts.provider: "microsoft"وmessages.tts.providers.microsoftchannels.discord.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.voice.tts.providers.<provider>channels.discord.accounts.<id>.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.accounts.<id>.voice.tts.providers.<provider>plugins.entries.voice-call.config.tts.<provider>(openai/elevenlabs/microsoft/edge) →plugins.entries.voice-call.config.tts.providers.<provider>plugins.entries.voice-call.config.tts.provider: "edge"وplugins.entries.voice-call.config.tts.providers.edge→provider: "microsoft"وproviders.microsoftplugins.entries.voice-call.config.provider: "log"→"mock"plugins.entries.voice-call.config.twilio.from→plugins.entries.voice-call.config.fromNumberplugins.entries.voice-call.config.streaming.sttProvider→plugins.entries.voice-call.config.streaming.providerplugins.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 بهدف مسمى/افتراضي مطابق موجود) identity→agents.list[].identityagent.*→agents.defaults+tools.*(tools/elevated/exec/sandbox/subagents)agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacks→agents.defaults.models+agents.defaults.model.primary/fallbacks+agents.defaults.imageModel.primary/fallbacks- أزل
agents.defaults.llm؛ استخدمmodels.providers.<id>.timeoutSecondsلمهل انتظار المزود/النموذج البطيئة browser.ssrfPolicy.allowPrivateNetwork→browser.ssrfPolicy.dangerouslyAllowPrivateNetworkbrowser.profiles.*.driver: "extension"→"existing-session"- أزل
browser.relayBindHost(إعداد مرحّل الإضافة القديم) models.providers.*.api: "openai"القديمة →"openai-completions"(يتخطى بدء Gateway أيضًا المزودين الذين تم تعيينapiلديهم إلى قيمة تعداد مستقبلية أو غير معروفة بدلًا من الفشل المغلق)- أزل
plugins.entries.codex.config.codexDynamicToolsProfile؛ يحافظ خادم تطبيق Codex دائمًا على أدوات مساحة العمل الأصلية في Codex كأدوات أصلية
- إذا تم تكوين إدخالين أو أكثر من
channels.<channel>.accountsمن دونchannels.<channel>.defaultAccountأوaccounts.default، يحذر Doctor من أن توجيه الرجوع قد يختار حسابًا غير متوقع. - إذا تم تعيين
channels.<channel>.defaultAccountإلى معرّف حساب غير معروف، يحذر Doctor ويسرد معرّفات الحسابات المكوّنة.
2b. تجاوزات مزود OpenCode
2b. تجاوزات مزود OpenCode
models.providers.opencode أو opencode-zen أو opencode-go يدويًا، فإنه يتجاوز كتالوج OpenCode المدمج من @earendil-works/pi-ai. قد يؤدي ذلك إلى إجبار النماذج على API غير صحيح أو تصفير التكاليف. يحذر Doctor حتى تتمكن من إزالة التجاوز واستعادة توجيه API والتكاليف لكل نموذج.2c. ترحيل المتصفح وجاهزية Chrome MCP
2c. ترحيل المتصفح وجاهزية Chrome MCP
- يصبح
browser.profiles.*.driver: "extension"هو"existing-session" - تتم إزالة
browser.relayBindHost
defaultProfile: "user" أو ملف تعريف existing-session مكوّن:- يتحقق مما إذا كان Google Chrome مثبتًا على المضيف نفسه لملفات التعريف الافتراضية ذات الاتصال التلقائي
- يتحقق من إصدار Chrome المكتشف ويحذر عندما يكون أقل من Chrome 144
- يذكّرك بتمكين تصحيح الأخطاء عن بُعد في صفحة فحص المتصفح (على سبيل المثال
chrome://inspect/#remote-debuggingأوbrave://inspect/#remote-debuggingأوedge://inspect/#remote-debugging)
- متصفحًا قائمًا على Chromium بإصدار 144+ على مضيف gateway/node
- تشغيل المتصفح محليًا
- تمكين تصحيح الأخطاء عن بُعد في ذلك المتصفح
- الموافقة على مطالبة موافقة الإرفاق الأولى في المتصفح
responsebody وتصدير PDF واعتراض التنزيلات والإجراءات الدفعية تتطلب متصفحًا مُدارًا أو ملف تعريف CDP خامًا.لا ينطبق هذا الفحص على Docker أو sandbox أو remote-browser أو التدفقات الأخرى عديمة الواجهة. تستمر هذه في استخدام CDP الخام.2d. متطلبات OAuth TLS الأساسية
2d. متطلبات OAuth TLS الأساسية
UNABLE_TO_GET_ISSUER_CERT_LOCALLY، أو شهادة منتهية الصلاحية، أو شهادة موقعة ذاتيًا)، يطبع doctor إرشادات إصلاح خاصة بالنظام الأساسي. على macOS مع Node من Homebrew، يكون الإصلاح عادةً brew postinstall ca-certificates. مع --deep، يُشغَّل الفحص حتى إذا كان Gateway سليمًا.2e. تجاوزات موفر Codex OAuth
2e. تجاوزات موفر Codex OAuth
models.providers.openai-codex، فقد تحجب مسار موفر Codex OAuth المدمج الذي تستخدمه الإصدارات الأحدث تلقائيًا. يحذرك Doctor عندما يرى إعدادات النقل القديمة هذه إلى جانب Codex OAuth حتى تتمكن من إزالة تجاوز النقل القديم أو إعادة كتابته واستعادة سلوك التوجيه/الرجوع الاحتياطي المدمج. لا تزال الوكلاء المخصصون والتجاوزات المعتمدة على الرؤوس فقط مدعومة ولا تؤدي إلى ظهور هذا التحذير.2f. إصلاح مسار Codex
2f. إصلاح مسار Codex
openai-codex/*. يستخدم توجيه حزام Codex الأصلي مراجع نماذج معيارية openai/*؛ تمر دورات وكيل OpenAI عبر حزام خادم تطبيق Codex بدلًا من مسار OpenClaw PI OpenAI.في وضع --fix / --repair، يعيد doctor كتابة مراجع الوكيل الافتراضي والمراجع الخاصة بكل وكيل المتأثرة، بما في ذلك النماذج الأساسية، والبدائل الاحتياطية، وتجاوزات heartbeat/الوكيل الفرعي/compaction، والخطافات، وتجاوزات نماذج القنوات، وحالة مسار الجلسة المستمرة القديمة:- يتحول
openai-codex/gpt-*إلىopenai/gpt-*. - ينتقل قصد Codex إلى إدخالات
agentRuntime.id: "codex"محددة بنطاق الموفر/النموذج لمراجع نماذج الوكلاء التي تم إصلاحها، بحيث تظل ملفات تعريف المصادقةopenai-codex:...قابلة للاختيار بعد أن يصبح مرجع النموذجopenai/*. - تتم إزالة إعدادات وقت التشغيل القديمة للوكيل بالكامل وتثبيتات وقت التشغيل المستمرة للجلسات لأن اختيار وقت التشغيل محدد بنطاق الموفر/النموذج.
- تُحفظ سياسة وقت التشغيل الحالية للموفر/النموذج ما لم يحتج مرجع النموذج القديم الذي تم إصلاحه إلى توجيه Codex للحفاظ على مسار المصادقة القديم.
- تُحفظ قوائم بدائل النماذج الحالية مع إعادة كتابة إدخالاتها القديمة؛ وتنتقل الإعدادات المنسوخة لكل نموذج من المفتاح القديم إلى مفتاح
openai/*المعياري. - يتم إصلاح
modelProvider/providerOverrideوmodel/modelOverrideالمستمرة للجلسة، وإشعارات الرجوع الاحتياطي، وتثبيتات ملف تعريف المصادقة عبر جميع مخازن جلسات الوكلاء المكتشفة. - يعني
/codex ...“التحكم في محادثة Codex أصلية من الدردشة أو ربطها.” - يعني
/acp ...أوruntime: "acp"“استخدام محول ACP/acpx الخارجي.”
2g. تنظيف مسار الجلسة
2g. تنظيف مسار الجلسة
openclaw doctor --fix مسح الحالة القديمة المنشأة تلقائيًا مثل تثبيتات النماذج modelOverrideSource: "auto"، وبيانات تعريف نموذج وقت التشغيل، ومعرفات الحزام المثبتة، وروابط جلسات CLI، وتجاوزات ملف تعريف المصادقة التلقائية عندما لا يعود المسار المالك لها مكوّنًا. يتم الإبلاغ عن اختيارات نماذج الجلسة الصريحة من المستخدم أو القديمة للمراجعة اليدوية وتُترك دون تغيير؛ بدّلها باستخدام /model ... أو /new أو أعد تعيين الجلسة عندما لا يعود ذلك المسار مقصودًا.3. ترحيلات الحالة القديمة (تخطيط القرص)
3. ترحيلات الحالة القديمة (تخطيط القرص)
- مخزن الجلسات + النصوص:
- من
~/.openclaw/sessions/إلى~/.openclaw/agents/<agentId>/sessions/
- من
- دليل الوكيل:
- من
~/.openclaw/agent/إلى~/.openclaw/agents/<agentId>/agent/
- من
- حالة مصادقة WhatsApp (Baileys):
- من
~/.openclaw/credentials/*.jsonالقديم (باستثناءoauth.json) - إلى
~/.openclaw/credentials/whatsapp/<accountId>/...(معرف الحساب الافتراضي:default)
- من
openclaw doctor فقط. تقارن تسوية موفر المحادثة/خريطة الموفر الآن بالمساواة البنيوية، لذلك لم تعد الفروقات التي تقتصر على ترتيب المفاتيح تؤدي إلى تغييرات doctor --fix متكررة بلا أثر.3a. ترحيلات بيان Plugin القديم
3a. ترحيلات بيان Plugin القديم
speechProviders، realtimeTranscriptionProviders، realtimeVoiceProviders، mediaUnderstandingProviders، imageGenerationProviders، videoGenerationProviders، webFetchProviders، webSearchProviders). عند العثور عليها، يعرض نقلها إلى كائن contracts وإعادة كتابة ملف البيان في مكانه. هذا الترحيل قابل للتكرار؛ إذا كان مفتاح contracts يحتوي بالفعل على القيم نفسها، تتم إزالة المفتاح القديم دون تكرار البيانات.3b. ترحيلات مخزن Cron القديم
3b. ترحيلات مخزن Cron القديم
~/.openclaw/cron/jobs.json افتراضيًا، أو cron.store عند تجاوزه) بحثًا عن أشكال مهام قديمة لا يزال المجدول يقبلها للتوافق.تشمل عمليات تنظيف cron الحالية:jobId→idschedule.cron→schedule.expr- حقول الحمولة في المستوى الأعلى (
message،model،thinking، …) →payload - حقول التسليم في المستوى الأعلى (
deliver،channel،to،provider، …) →delivery - الأسماء المستعارة للتسليم
providerفي الحمولة →delivery.channelصريح - مهام Webhook الاحتياطية القديمة البسيطة
notify: true→delivery.mode="webhook"صريح معdelivery.to=cron.webhook
notify: true تلقائيًا إلا عندما يمكنها فعل ذلك من دون تغيير السلوك. إذا جمعت مهمة بين الرجوع الاحتياطي القديم للإشعار ووضع تسليم غير Webhook موجود، فتعرض أداة الفحص تحذيرًا وتترك تلك المهمة للمراجعة اليدوية.على Linux، تعرض أداة الفحص أيضًا تحذيرًا عندما لا يزال crontab الخاص بالمستخدم يستدعي ~/.openclaw/bin/ensure-whatsapp.sh القديم. هذا السكربت المحلي للمضيف لا تتم صيانته بواسطة OpenClaw الحالي، ويمكنه كتابة رسائل Gateway inactive خاطئة إلى ~/.openclaw/logs/whatsapp-health.log عندما لا يستطيع cron الوصول إلى ناقل مستخدم systemd. أزل إدخال crontab القديم باستخدام crontab -e؛ واستخدم openclaw channels status --probe وopenclaw doctor وopenclaw gateway status لفحوصات الصحة الحالية.3c. تنظيف قفل الجلسة
3c. تنظيف قفل الجلسة
--fix / --repair تزيل ملفات القفل القديمة تلقائيًا؛ وإلا فتطبع ملاحظة وتطلب منك إعادة التشغيل مع --fix.3d. إصلاح فرع نص الجلسة
3d. إصلاح فرع نص الجلسة
--fix / --repair، تنسخ أداة الفحص كل ملف متأثر احتياطيًا بجانب الأصل وتعيد كتابة النص إلى الفرع النشط كي لا يرى سجل Gateway وقارئو الذاكرة أدوارًا مكررة بعد الآن.4. فحوصات سلامة الحالة (استمرارية الجلسة والتوجيه والسلامة)
4. فحوصات سلامة الحالة (استمرارية الجلسة والتوجيه والسلامة)
- دليل الحالة مفقود: تحذر من فقدان كارثي للحالة، وتطلب إعادة إنشاء الدليل، وتذكّرك بأنها لا تستطيع استرداد البيانات المفقودة.
- أذونات دليل الحالة: تتحقق من قابلية الكتابة؛ وتعرض إصلاح الأذونات (وتصدر تلميح
chownعند اكتشاف عدم تطابق المالك/المجموعة). - دليل حالة macOS متزامن مع السحابة: تحذر عندما يُحل مسار الحالة ضمن iCloud Drive (
~/Library/Mobile Documents/com~apple~CloudDocs/...) أو~/Library/CloudStorage/...لأن المسارات المدعومة بالمزامنة يمكن أن تسبب إدخال/إخراج أبطأ وتسابقات قفل/مزامنة. - دليل حالة Linux على SD أو eMMC: تحذر عندما يُحل مسار الحالة إلى مصدر تركيب
mmcblk*، لأن الإدخال/الإخراج العشوائي المدعوم بـ SD أو eMMC يمكن أن يكون أبطأ ويتآكل أسرع تحت كتابات الجلسات وبيانات الاعتماد. - أدلة الجلسات مفقودة: يلزم وجود
sessions/ودليل مخزن الجلسات لاستمرار السجل وتجنب أعطالENOENT. - عدم تطابق النص: تحذر عندما تكون إدخالات الجلسات الحديثة تفتقد ملفات النص.
- الجلسة الرئيسية “JSONL بسطر واحد”: تضع علامة عندما يحتوي النص الرئيسي على سطر واحد فقط (السجل لا يتراكم).
- عدة أدلة حالة: تحذر عندما توجد عدة مجلدات
~/.openclawعبر أدلة المنزل أو عندما يشيرOPENCLAW_STATE_DIRإلى مكان آخر (يمكن أن ينقسم السجل بين التثبيتات). - تذكير الوضع البعيد: إذا كان
gateway.mode=remote، تذكّرك أداة الفحص بتشغيلها على المضيف البعيد (توجد الحالة هناك). - أذونات ملف التكوين: تحذر إذا كان
~/.openclaw/openclaw.jsonقابلًا للقراءة من المجموعة/العالم وتعرض تشديده إلى600.
5. صحة مصادقة النموذج (انتهاء OAuth)
5. صحة مصادقة النموذج (انتهاء OAuth)
--non-interactive محاولات التحديث.عندما يفشل تحديث OAuth بشكل دائم (مثل refresh_token_reused أو invalid_grant أو عندما يطلب منك مزود تسجيل الدخول مرة أخرى)، تبلغ أداة الفحص أن إعادة المصادقة مطلوبة وتطبع أمر openclaw models auth login --provider ... الدقيق المطلوب تشغيله.تعرض أداة الفحص أيضًا ملفات تعريف المصادقة غير القابلة للاستخدام مؤقتًا بسبب:- فترات تهدئة قصيرة (حدود معدل/مهلات/فشل مصادقة)
- تعطيلات أطول (فشل الفوترة/الرصيد)
6. التحقق من نموذج الخطافات
6. التحقق من نموذج الخطافات
hooks.gmail.model مضبوطًا، تتحقق أداة الفحص من مرجع النموذج مقابل الكتالوج وقائمة السماح وتحذر عندما لا يمكن حله أو يكون غير مسموح.7. إصلاح صورة الصندوق الرملي
7. إصلاح صورة الصندوق الرملي
7b. تنظيف تثبيت Plugin
7b. تنظيف تثبيت Plugin
openclaw doctor --fix / openclaw doctor --repair. يشمل ذلك جذور التبعيات المولدة القديمة، وأدلة مرحلة التثبيت القديمة، ومخلفات الحزم المحلية من كود إصلاح تبعيات Plugin المجمعة السابق، والنسخ المدارة اليتيمة أو المستردة من npm لملحقات @openclaw/* المجمعة التي يمكن أن تحجب بيان الحزمة المجمعة الحالي. كما تعيد أداة الفحص ربط حزمة openclaw الخاصة بالمضيف داخل ملحقات npm المدارة التي تعلن peerDependencies.openclaw، بحيث تستمر استيرادات التشغيل المحلية للحزمة مثل openclaw/plugin-sdk/* في الحل بعد التحديثات أو إصلاحات npm.يمكن لأداة الفحص أيضًا إعادة تثبيت الملحقات القابلة للتنزيل المفقودة عندما يشير إليها التكوين لكن سجل Plugin المحلي لا يستطيع العثور عليها. تشمل الأمثلة plugins.entries المادية، وإعدادات القناة/المزود/البحث المكوّنة، وتشغيلات الوكلاء المكوّنة. أثناء تحديثات الحزم، تتجنب أداة الفحص تشغيل إصلاح Plugin عبر مدير الحزم بينما يجري تبديل الحزمة الأساسية؛ شغّل openclaw doctor --fix مرة أخرى بعد التحديث إذا كان Plugin مكوّن لا يزال يحتاج إلى الاسترداد. لا يشغّل بدء Gateway ولا إعادة تحميل التكوين مديري الحزم؛ وتظل تثبيتات Plugin عملًا صريحًا عبر أداة الفحص/التثبيت/التحديث.8. ترحيلات خدمة Gateway وتلميحات التنظيف
8. ترحيلات خدمة Gateway وتلميحات التنظيف
openclaw gateway status --deep أو openclaw doctor --deep، ثم أزل التكرار أو اضبط OPENCLAW_SERVICE_REPAIR_POLICY=external عندما يكون مشرف نظام هو مالك دورة حياة Gateway.8b. ترحيل Startup Matrix
8b. ترحيل Startup Matrix
--fix / --repair) لقطة قبل الترحيل ثم تشغّل خطوات الترحيل بأفضل جهد: ترحيل حالة Matrix القديمة وتحضير الحالة المشفرة القديمة. كلتا الخطوتين غير قاتلتين؛ تُسجل الأخطاء ويستمر بدء التشغيل. في وضع القراءة فقط (openclaw doctor دون --fix) يُتخطى هذا الفحص بالكامل.8c. اقتران الجهاز وانحراف المصادقة
8c. اقتران الجهاز وانحراف المصادقة
- طلبات اقتران أول مرة معلقة
- ترقيات أدوار معلقة للأجهزة المقترنة مسبقًا
- ترقيات نطاق معلقة للأجهزة المقترنة مسبقًا
- إصلاحات عدم تطابق المفتاح العام حيث لا يزال معرّف الجهاز مطابقًا لكن هوية الجهاز لم تعد تطابق السجل المعتمد
- سجلات مقترنة تفتقد رمزًا نشطًا لدور معتمد
- رموز مقترنة انحرفت نطاقاتها خارج خط أساس الاقتران المعتمد
- إدخالات رمز جهاز مخزنة محليًا للجهاز الحالي تسبق تدوير رمز من جهة Gateway أو تحمل بيانات وصفية قديمة للنطاق
- افحص الطلبات المعلقة باستخدام
openclaw devices list - وافق على الطلب الدقيق باستخدام
openclaw devices approve <requestId> - دوّر رمزًا جديدًا باستخدام
openclaw devices rotate --device <deviceId> --role <role> - أزل سجلًا قديمًا وأعد اعتماده باستخدام
openclaw devices remove <deviceId>
9. تحذيرات الأمان
9. تحذيرات الأمان
10. systemd linger (Linux)
10. systemd linger (Linux)
11. حالة مساحة العمل (Skills وPlugin والأدلة القديمة)
11. حالة مساحة العمل (Skills وPlugin والأدلة القديمة)
- حالة Skills: تعد Skills المؤهلة، وناقصة المتطلبات، والمحظورة بقائمة السماح.
- أدلة مساحة العمل القديمة: تحذر عندما توجد
~/openclawأو أدلة مساحة عمل قديمة أخرى بجانب مساحة العمل الحالية. - حالة Plugin: تعد الملحقات المفعلة/المعطلة/التي بها أخطاء؛ وتسرد معرّفات Plugin لأي أخطاء؛ وتعرض قدرات Plugin المجمعة.
- تحذيرات توافق Plugin: تضع علامة على الملحقات التي لديها مشاكل توافق مع بيئة التشغيل الحالية.
- تشخيصات Plugin: تعرض أي تحذيرات أو أخطاء وقت التحميل صادرة عن سجل Plugin.
11b. حجم ملف التمهيد
11b. حجم ملف التمهيد
AGENTS.md أو CLAUDE.md أو ملفات سياق محقونة أخرى) قريبة من ميزانية الأحرف المكوّنة أو تتجاوزها. وتعرض لكل ملف عدد الأحرف الخام مقابل المحقونة، ونسبة الاقتطاع، وسبب الاقتطاع (max/file أو max/total)، وإجمالي الأحرف المحقونة كجزء من الميزانية الإجمالية. عندما تكون الملفات مقتطعة أو قريبة من الحد، تطبع أداة الفحص نصائح لضبط agents.defaults.bootstrapMaxChars وagents.defaults.bootstrapTotalMaxChars.11d. تنظيف Plugin قناة قديم
11d. تنظيف Plugin قناة قديم
openclaw doctor --fix Plugin قناة مفقودًا، فإنه يزيل أيضًا التكوين المتدلي ذي نطاق القناة الذي أشار إلى ذلك Plugin: إدخالات channels.<id>، وأهداف Heartbeat التي سمّت القناة، وتجاوزات agents.*.models["<channel>/*"]. يمنع هذا حلقات تمهيد Gateway حيث اختفى تشغيل القناة لكن التكوين لا يزال يطلب من Gateway الارتباط بها.11c. إكمال الصدفة
11c. إكمال الصدفة
- إذا كان ملف تعريف الصدفة يستخدم نمط إكمال ديناميكيًا بطيئًا (
source <(openclaw completion ...))، فسيُرقّيه doctor إلى صيغة ملف ذاكرة تخزين مؤقت أسرع. - إذا كان الإكمال مكوّنًا في ملف التعريف لكن ملف ذاكرة التخزين المؤقت مفقود، فسيعيد doctor إنشاء ذاكرة التخزين المؤقت تلقائيًا.
- إذا لم يكن أي إكمال مكوّنًا على الإطلاق، فسيطالب doctor بتثبيته (في الوضع التفاعلي فقط؛ ويتم تخطيه مع
--non-interactive).
openclaw completion --write-state لإعادة إنشاء ذاكرة التخزين المؤقت يدويًا.12. فحوصات مصادقة Gateway (رمز محلي)
12. فحوصات مصادقة Gateway (رمز محلي)
- إذا كان وضع الرمز يحتاج إلى رمز ولا يوجد أي مصدر رمز، يعرض doctor إنشاء واحد.
- إذا كان
gateway.auth.tokenمُدارًا عبر SecretRef لكنه غير متاح، يحذّر doctor ولا يستبدله بنص صريح. - يفرض
openclaw doctor --generate-gateway-tokenالإنشاء فقط عندما لا يكون أي SecretRef للرمز مكوّنًا.
12b. إصلاحات للقراءة فقط ومدركة لـ SecretRef
12b. إصلاحات للقراءة فقط ومدركة لـ SecretRef
- يستخدم
openclaw doctor --fixالآن نموذج ملخص SecretRef نفسه للقراءة فقط الذي تستخدمه أوامر عائلة الحالة لإصلاحات التكوين المستهدفة. - مثال: يحاول إصلاح Telegram
allowFrom/groupAllowFrom@usernameاستخدام بيانات اعتماد البوت المكوّنة عند توفرها. - إذا كان رمز بوت Telegram مكوّنًا عبر SecretRef لكنه غير متاح في مسار الأمر الحالي، يبلّغ doctor بأن بيانات الاعتماد مكوّنة لكنها غير متاحة، ويتخطى الحل التلقائي بدلًا من التعطل أو الإبلاغ خطأً عن أن الرمز مفقود.
13. فحص صحة Gateway + إعادة التشغيل
13. فحص صحة Gateway + إعادة التشغيل
13b. جاهزية بحث الذاكرة
13b. جاهزية بحث الذاكرة
- خلفية QMD: يتحقق مما إذا كان ملف
qmdالثنائي متاحًا وقابلًا للبدء. إذا لم يكن كذلك، يطبع إرشادات إصلاح تشمل حزمة npm وخيار مسار ثنائي يدوي. - موفر محلي صريح: يتحقق من وجود ملف نموذج محلي أو عنوان URL معروف لنموذج بعيد/قابل للتنزيل. إذا كان مفقودًا، يقترح التحويل إلى موفر بعيد.
- موفر بعيد صريح (
openai،voyage، إلخ): يتحقق من وجود مفتاح API في البيئة أو مخزن المصادقة. يطبع تلميحات إصلاح قابلة للتنفيذ إذا كان مفقودًا. - موفر تلقائي: يتحقق من توفر النموذج المحلي أولًا، ثم يجرب كل موفر بعيد بترتيب الاختيار التلقائي.
openclaw memory status --deep للتحقق من جاهزية التضمينات في وقت التشغيل.14. تحذيرات حالة القناة
14. تحذيرات حالة القناة
15. تدقيق تكوين المشرف + الإصلاح
15. تدقيق تكوين المشرف + الإصلاح
- يطلب
openclaw doctorالتأكيد قبل إعادة كتابة تكوين المشرف. - يقبل
openclaw doctor --yesمطالبات الإصلاح الافتراضية. - يطبق
openclaw doctor --repairالإصلاحات الموصى بها دون مطالبات. - يستبدل
openclaw doctor --repair --forceتكوينات المشرف المخصصة. - يبقي
OPENCLAW_SERVICE_REPAIR_POLICY=externaldoctor في وضع القراءة فقط لدورة حياة خدمة Gateway. يظل يبلّغ عن صحة الخدمة ويشغّل الإصلاحات غير الخدمية، لكنه يتخطى تثبيت/بدء/إعادة تشغيل/تمهيد الخدمة، وإعادة كتابة تكوينات المشرف، وتنظيف الخدمات القديمة لأن مشرفًا خارجيًا يملك دورة الحياة تلك. - على Linux، لا يعيد doctor كتابة بيانات تعريف الأمر/نقطة الدخول بينما تكون وحدة systemd المطابقة لـ Gateway نشطة. كما يتجاهل وحدات Gateway-like الإضافية غير القديمة وغير النشطة أثناء فحص الخدمات المكررة حتى لا تنشئ ملفات الخدمة المصاحبة ضجيج تنظيف.
- إذا كانت مصادقة الرمز تتطلب رمزًا وكان
gateway.auth.tokenمُدارًا عبر SecretRef، فإن تثبيت/إصلاح خدمة doctor يتحقق من SecretRef لكنه لا يحفظ قيم الرمز النصية الصريحة المحلولة في بيانات تعريف بيئة خدمة المشرف. - يكتشف Doctor قيم بيئة الخدمة المُدارة المدعومة بـ
.env/SecretRef التي كانت تثبيتات LaunchAgent أو systemd أو Windows Scheduled Task القديمة تضمنها بشكل مباشر، ويعيد كتابة بيانات تعريف الخدمة بحيث تُحمّل تلك القيم من مصدر وقت التشغيل بدلًا من تعريف المشرف. - يكتشف Doctor عندما يظل أمر الخدمة يثبت
--portقديمًا بعد تغييرgateway.portويعيد كتابة بيانات تعريف الخدمة إلى المنفذ الحالي. - إذا كانت مصادقة الرمز تتطلب رمزًا وكان SecretRef للرمز المكوّن غير محلول، يحظر doctor مسار التثبيت/الإصلاح مع إرشادات قابلة للتنفيذ.
- إذا كان كل من
gateway.auth.tokenوgateway.auth.passwordمكوّنين وكانgateway.auth.modeغير مضبوط، يحظر doctor التثبيت/الإصلاح حتى يُضبط الوضع صراحةً. - بالنسبة إلى وحدات user-systemd على Linux، تشمل فحوصات انحراف رمز doctor الآن مصادر
Environment=وEnvironmentFile=عند مقارنة بيانات تعريف مصادقة الخدمة. - ترفض إصلاحات خدمة Doctor إعادة كتابة خدمة Gateway أو إيقافها أو إعادة تشغيلها من ملف OpenClaw ثنائي أقدم عندما يكون التكوين قد كُتب آخر مرة بإصدار أحدث. راجع استكشاف أخطاء Gateway وإصلاحها.
- يمكنك دائمًا فرض إعادة كتابة كاملة عبر
openclaw gateway install --force.
16. تشخيصات وقت تشغيل Gateway والمنفذ
16. تشخيصات وقت تشغيل Gateway والمنفذ
18789) ويبلّغ عن الأسباب المحتملة (Gateway يعمل مسبقًا، نفق SSH).17. أفضل ممارسات وقت تشغيل Gateway
17. أفضل ممارسات وقت تشغيل Gateway
nvm، fnm، volta، asdf، إلخ). تتطلب قنوات WhatsApp + Telegram استخدام Node، ويمكن أن تتعطل مسارات مدير الإصدارات بعد الترقيات لأن الخدمة لا تحمّل تهيئة الصدفة لديك. يعرض Doctor الترحيل إلى تثبيت Node على مستوى النظام عند توفره (Homebrew/apt/choco).تستخدم LaunchAgents المثبتة أو المصلحة حديثًا على macOS مسار PATH نظاميًا موحدًا (/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin) بدلًا من نسخ PATH للصدفة التفاعلية، بحيث تظل الثنائيات النظامية المُدارة عبر Homebrew متاحة بينما لا تغيّر أدلة Volta وasdf وfnm وpnpm وغيرها من أدلة مديري الإصدارات أي Node تحلّه العمليات الفرعية. لا تزال خدمات Linux تحتفظ بجذور بيئة صريحة (NVM_DIR، FNM_DIR، VOLTA_HOME، ASDF_DATA_DIR، BUN_INSTALL، PNPM_HOME) وأدلة user-bin مستقرة، لكن أدلة الرجوع الاحتياطي المتوقعة لمديري الإصدارات لا تُكتب إلى PATH الخاص بالخدمة إلا عندما تكون تلك الأدلة موجودة على القرص.18. كتابة التكوين + بيانات معالج الإعداد التعريفية
18. كتابة التكوين + بيانات معالج الإعداد التعريفية
19. نصائح مساحة العمل (النسخ الاحتياطي + نظام الذاكرة)
19. نصائح مساحة العمل (النسخ الاحتياطي + نظام الذاكرة)