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>). - هنگامی که حالت محلی فعال است، برنامه اطمینان حاصل میکند که 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.
- گزارشها و نظارت قابلپیشبینی.
اگر دوباره به یک حالت واقعی فرایند فرزند نیاز باشد، باید بهعنوان حالتی جداگانه، صریح و مختص توسعه مستند شود.