Community translations by veiseule.ai — Help improve them on Crowdin
Skip to main content

วงจรชีวิตของGatewayบนmacOS

แอปmacOS จัดการGatewayผ่านlaunchd เป็นค่าเริ่มต้น และจะไม่สตาร์ต Gatewayเป็นโปรเซสลูก แอปจะพยายามเชื่อมต่อกับGatewayที่กำลังรันอยู่แล้วบนพอร์ตที่กำหนดก่อน หากไม่พบจึงจะเปิดใช้งานบริการlaunchdผ่านCLIภายนอก openclaw (ไม่มีรันไทม์ฝังมา) วิธีนี้ช่วยให้เริ่มอัตโนมัติเมื่อเข้าสู่ระบบและรีสตาร์ตเมื่อเกิดการแครชได้อย่างเชื่อถือได้ มันจะพยายามเชื่อมต่อกับ Gateway ที่กำลังทำงานอยู่แล้วบนพอร์ตที่กำหนดค่าไว้ก่อน หากไม่สามารถเข้าถึงได้ ระบบจะเปิดใช้งานบริการ launchd ผ่าน CLI ภายนอก openclaw (ไม่มีรันไทม์ฝังในตัว) 1. สิ่งนี้ช่วยให้คุณเริ่มอัตโนมัติเมื่อเข้าสู่ระบบได้อย่างเชื่อถือได้ และรีสตาร์ตใหม่เมื่อเกิดการแครช

โหมดโปรเซสลูก (Gatewayถูกสตาร์ตโดยแอปโดยตรง) ยังไม่ถูกใช้งาน ในปัจจุบัน หากต้องการการเชื่อมโยงกับUIที่แน่นขึ้น ให้รันGatewayด้วยตนเองในเทอร์มินัล 2. หากคุณต้องการการเชื่อมต่อกับ UI ที่แน่นแฟ้นกว่า ให้รัน Gateway ด้วยตนเองในเทอร์มินัล

พฤติกรรมเริ่มต้น (launchd)

  • แอปติดตั้ง LaunchAgent ต่อผู้ใช้โดยมีป้ายกำกับ bot.molt.gateway (หรือ bot.molt.<profile> เมื่อใช้ --profile/OPENCLAW_PROFILE; รองรับ legacy com.openclaw.*).
  • เมื่อเปิดใช้งานโหมดLocal แอปจะตรวจให้แน่ใจว่า LaunchAgent ถูกโหลด และ จะสตาร์ตGatewayหากจำเป็น
  • บันทึกถูกเขียนไปยังพาธล็อกGatewayของlaunchd (ดูได้ใน Debug Settings)

คำสั่งที่ใช้บ่อย:

launchctl kickstart -k gui/$UID/bot.molt.gateway
launchctl bootout gui/$UID/bot.molt.gateway

แทนที่ป้ายกำกับด้วย bot.molt.<profile> เมื่อรันโปรไฟล์ที่มีชื่อ

3. บิลด์สำหรับนักพัฒนาแบบไม่ได้เซ็นชื่อ

scripts/restart-mac.sh --no-sign ใช้สำหรับบิลด์โลคัลอย่างรวดเร็วเมื่อคุณยังไม่มี คีย์สำหรับการเซ็นชื่อ เพื่อป้องกันไม่ให้launchdชี้ไปยังไบนารีรีเลย์ที่ไม่ถูกเซ็นชื่อ แอปจะ: 4. เพื่อป้องกันไม่ให้ launchd ชี้ไปยังไบนารีรีเลย์ที่ไม่ได้เซ็นชื่อ มันจะ:

  • เขียน ~/.openclaw/disable-launchagent.

การรันแบบเซ็นชื่อของ scripts/restart-mac.sh จะล้างการแทนค่านี้หากพบมาร์กเกอร์ หากต้องการรีเซ็ตด้วยตนเอง: 5. วิธีรีเซ็ตด้วยตนเอง:

rm ~/.openclaw/disable-launchagent

โหมดแนบอย่างเดียว (Attach-only)

หากต้องการบังคับให้แอปmacOS ไม่ติดตั้งหรือจัดการlaunchdเลย ให้เปิดแอปด้วย --attach-only (หรือ --no-launchd) ซึ่งจะตั้งค่า ~/.openclaw/disable-launchagent, ทำให้แอปทำได้เพียงแนบเข้ากับGatewayที่กำลังรันอยู่แล้ว คุณสามารถสลับพฤติกรรมเดียวกันได้ใน Debug Settings 6. สิ่งนี้จะตั้งค่า ~/.openclaw/disable-launchagent ดังนั้นแอปจะเชื่อมต่อเฉพาะกับ Gateway ที่กำลังรันอยู่แล้วเท่านั้น 7. คุณสามารถสลับพฤติกรรมเดียวกันนี้ได้ใน Debug Settings

โหมดRemote

  1. โหมด Remote จะไม่เริ่ม Gateway ภายในเครื่อง โหมดRemoteจะไม่สตาร์ตGatewayในเครื่อง แอปจะใช้อุโมงค์SSHไปยังโฮสต์ระยะไกลและเชื่อมต่อผ่านอุโมงค์นั้น

เหตุผลที่เราเลือกใช้launchd

  • เริ่มอัตโนมัติเมื่อเข้าสู่ระบบ
  • มีกลไกรีสตาร์ต/KeepAliveในตัว
  • บันทึกและการกำกับดูแลที่คาดเดาได้

หากจำเป็นต้องมีโหมดโปรเซสลูกจริงๆ อีกครั้ง ควรจัดทำเอกสารเป็นโหมดสำหรับนักพัฒนาเท่านั้นที่แยกชัดเจน