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.
  • گزارش‌ها و نظارت قابل پیش‌بینی.

اگر روزی دوباره به یک حالت واقعی فرآیند فرزند نیاز باشد، باید به‌عنوان یک حالت جداگانه، صریح و فقط مخصوص توسعه مستند شود.

مرتبط