macOS companion app
วงจรชีวิตของ Gateway บน macOS
โดยค่าเริ่มต้น แอป macOS จะจัดการ Gateway ผ่าน launchd และไม่
เริ่ม Gateway เป็นโปรเซสลูก ขั้นแรกแอปจะพยายามเชื่อมต่อกับ
Gateway ที่ทำงานอยู่แล้วบนพอร์ตที่กำหนดค่าไว้ หากไม่สามารถเข้าถึงได้
แอปจะเปิดใช้บริการ launchd ผ่าน CLI openclaw ภายนอก (ไม่มี
รันไทม์แบบฝังตัว) วิธีนี้ช่วยให้เริ่มทำงานอัตโนมัติเมื่อเข้าสู่ระบบและเริ่มใหม่เมื่อเกิดข้อขัดข้องได้อย่างน่าเชื่อถือ
ปัจจุบัน ไม่มีการใช้งาน โหมดโปรเซสลูก (ซึ่งแอปเริ่ม Gateway โดยตรง) หากคุณต้องการให้ทำงานเชื่อมโยงกับ UI อย่างใกล้ชิดยิ่งขึ้น ให้เรียกใช้ Gateway ด้วยตนเองใน เทอร์มินัล
ลักษณะการทำงานเริ่มต้น (launchd)
- แอปติดตั้ง LaunchAgent สำหรับผู้ใช้แต่ละรายที่มีป้ายกำกับ
ai.openclaw.gateway(หรือai.openclaw.<profile>เมื่อใช้--profile/OPENCLAW_PROFILE) - เมื่อเปิดใช้โหมดเฉพาะที่ แอปจะตรวจสอบให้แน่ใจว่าโหลด LaunchAgent แล้ว และ เริ่ม Gateway หากจำเป็น
- บันทึกจะถูกเขียนไปยังเส้นทางบันทึกของ launchd gateway (ดูได้ในการตั้งค่าการแก้ไขข้อบกพร่อง)
คำสั่งที่ใช้บ่อย:
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 ในตัว
- มีบันทึกและการกำกับดูแลที่คาดการณ์ได้
หากจำเป็นต้องใช้โหมดโปรเซสลูกจริงอีกครั้ง ควรจัดทำเอกสารเป็น โหมดแยกต่างหากสำหรับการพัฒนาเท่านั้นอย่างชัดเจน