macOS companion app
دورة حياة Gateway على macOS
يدير تطبيق macOS الـ Gateway عبر launchd افتراضيًا، ولا يشغّل
الـ Gateway كعملية فرعية. يحاول أولًا الاتصال بـ Gateway قيد التشغيل بالفعل
على المنفذ المُهيأ؛ وإذا تعذّر الوصول إلى أي منها، فإنه يفعّل خدمة launchd
عبر openclaw CLI الخارجي (من دون بيئة تشغيل مضمنة). يوفّر ذلك بدءًا تلقائيًا
موثوقًا عند تسجيل الدخول وإعادة التشغيل عند حدوث أعطال.
وضع العملية الفرعية (حيث يشغّل التطبيق الـ Gateway مباشرةً) غير مستخدم حاليًا. إذا كنت بحاجة إلى اقتران أوثق بواجهة المستخدم، فشغّل الـ Gateway يدويًا في طرفية.
السلوك الافتراضي (launchd)
- يثبّت التطبيق LaunchAgent خاصًا بكل مستخدم ويحمل التسمية
ai.openclaw.gateway(أوai.openclaw.<profile>عند استخدام--profile/OPENCLAW_PROFILE). - عند تمكين الوضع المحلي، يضمن التطبيق تحميل LaunchAgent ويبدأ تشغيل الـ Gateway عند الحاجة.
- تُكتب السجلات في مسار سجل Gateway الخاص بـ launchd (الظاهر في إعدادات تصحيح الأخطاء).
الأوامر الشائعة:
launchctl kickstart -k gui/$UID/ai.openclaw.gatewaylaunchctl bootout gui/$UID/ai.openclaw.gatewayاستبدل التسمية بـ ai.openclaw.<profile> عند تشغيل ملف تعريف مُسمّى.
إصدارات التطوير غير الموقّعة
يُستخدم scripts/restart-mac.sh --no-sign لإجراء عمليات بناء محلية سريعة من دون
مفاتيح توقيع. ولمنع launchd من الإشارة إلى ملف ثنائي غير موقّع للترحيل، فإنه يكتب
~/.openclaw/disable-launchagent.
تزيل عمليات التشغيل الموقّعة للبرنامج النصي scripts/restart-mac.sh هذا التجاوز إذا كانت
العلامة موجودة. لإعادة الضبط يدويًا:
rm ~/.openclaw/disable-launchagentوضع الاتصال فقط
لفرض عدم تثبيت تطبيق macOS لـ launchd أو إدارته مطلقًا، شغّله باستخدام
--attach-only (أو --no-launchd). يؤدي ذلك إلى تعيين
~/.openclaw/disable-launchagent، بحيث لا يتصل التطبيق إلا بـ Gateway قيد
التشغيل بالفعل. يمكنك تبديل السلوك نفسه في إعدادات تصحيح الأخطاء.
الوضع البعيد
لا يبدأ الوضع البعيد تشغيل Gateway محلي مطلقًا. يستخدم التطبيق نفق SSH إلى المضيف البعيد ويتصل عبر ذلك النفق.
لماذا نفضّل launchd
- البدء التلقائي عند تسجيل الدخول.
- دلالات إعادة التشغيل/KeepAlive المضمنة.
- سجلات وإشراف يمكن التنبؤ بهما.
إذا دعت الحاجة مجددًا إلى وضع عملية فرعية حقيقي، فيجب توثيقه باعتباره وضعًا منفصلًا وصريحًا مخصصًا للتطوير فقط.