macOS companion app
چرخهٔ حیات Gateway در macOS
برنامه macOS بهطور پیشفرض Gateway را از طریق launchd مدیریت میکند و
Gateway را بهصورت یک فرآیند فرزند اجرا نمیکند. ابتدا تلاش میکند به Gateway
در حال اجرای موجود روی درگاه پیکربندیشده متصل شود؛ اگر هیچ موردی در دسترس
نباشد، سرویس launchd را از طریق CLI خارجی openclaw فعال میکند (بدون زمان
اجرای تعبیهشده). این کار شروع خودکار قابلاعتماد هنگام ورود و راهاندازی
مجدد پس از خرابی را فراهم میکند.
حالت فرآیند فرزند (اجرای مستقیم Gateway توسط برنامه) امروز استفاده نمیشود. اگر به اتصال نزدیکتر با رابط کاربری نیاز دارید، Gateway را بهصورت دستی در ترمینال اجرا کنید.
رفتار پیشفرض (launchd)
- برنامه یک LaunchAgent مخصوص هر کاربر با برچسب
ai.openclaw.gatewayنصب میکند (یا هنگام استفاده از--profile/OPENCLAW_PROFILE،ai.openclaw.<profile>؛com.openclaw.*قدیمی پشتیبانی میشود). - وقتی حالت محلی فعال است، برنامه اطمینان میدهد LaunchAgent بارگذاری شده باشد و در صورت نیاز Gateway را شروع میکند.
- گزارشها در مسیر گزارش Gateway مربوط به launchd نوشته میشوند (در تنظیمات اشکالزدایی قابل مشاهده است).
دستورهای رایج:
launchctl kickstart -k gui/$UID/ai.openclaw.gateway
launchctl bootout gui/$UID/ai.openclaw.gateway
هنگام اجرای یک نمایه نامگذاریشده، برچسب را با ai.openclaw.<profile> جایگزین کنید.
ساختهای توسعه امضانشده
scripts/restart-mac.sh --no-sign برای ساختهای سریع محلی است، وقتی کلیدهای
امضا را ندارید. برای جلوگیری از اشاره launchd به یک باینری relay امضانشده، این کارها را انجام میدهد:
~/.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.
- گزارشها و نظارت قابل پیشبینی.
اگر روزی دوباره به یک حالت واقعی فرآیند فرزند نیاز باشد، باید بهعنوان یک حالت جداگانه، صریح و فقط مخصوص توسعه مستند شود.