macOS companion app

การควบคุมระยะไกล

โฟลว์นี้ทำให้แอป macOS ทำหน้าที่เป็นรีโมตคอนโทรลเต็มรูปแบบสำหรับ OpenClaw Gateway ที่ทำงานบนโฮสต์อื่น (เดสก์ท็อป/เซิร์ฟเวอร์) ได้ แอปสามารถเชื่อมต่อโดยตรงไปยัง URL ของ Gateway บน LAN/Tailnet ที่เชื่อถือได้ หรือจัดการอุโมงค์ SSH เมื่อ Gateway ระยะไกลเป็นแบบ loopback-only การตรวจสุขภาพ, การส่งต่อ Voice Wake และเว็บแชทใช้การกำหนดค่าระยะไกลเดียวกันจาก การตั้งค่า → ทั่วไป

โหมด

  • ภายในเครื่อง (Mac เครื่องนี้): ทุกอย่างทำงานบนแล็ปท็อป ไม่มี SSH เกี่ยวข้อง
  • ระยะไกลผ่าน SSH (ค่าเริ่มต้น): คำสั่ง OpenClaw จะถูกเรียกใช้บนโฮสต์ระยะไกล แอป Mac เปิดการเชื่อมต่อ SSH ด้วย -o BatchMode พร้อม identity/key ที่คุณเลือกและการส่งต่อพอร์ตภายในเครื่อง
  • ระยะไกลโดยตรง (ws/wss): ไม่มีอุโมงค์ SSH แอป Mac เชื่อมต่อกับ URL ของ Gateway โดยตรง (เช่น ผ่าน LAN, Tailscale, Tailscale Serve หรือ reverse proxy HTTPS สาธารณะ)

ทรานสปอร์ตระยะไกล

โหมดระยะไกลรองรับทรานสปอร์ตสองแบบ:

  • อุโมงค์ SSH (ค่าเริ่มต้น): ใช้ ssh -N -L ... เพื่อส่งต่อพอร์ต Gateway ไปยัง localhost Gateway จะเห็น IP ของ Node เป็น 127.0.0.1 เพราะอุโมงค์เป็น loopback
  • โดยตรง (ws/wss): เชื่อมต่อไปยัง URL ของ Gateway โดยตรง Gateway จะเห็น IP ไคลเอนต์จริง

ในโหมดอุโมงค์ SSH ชื่อโฮสต์ LAN/tailnet ที่ค้นพบจะถูกบันทึกเป็น gateway.remote.sshTarget แอปจะคง gateway.remote.url ไว้ที่ปลายทางอุโมงค์ภายในเครื่อง เช่น ws://127.0.0.1:18789 เพื่อให้ CLI, เว็บแชท และ บริการโฮสต์ Node ภายในเครื่องทั้งหมดใช้ทรานสปอร์ต loopback ที่ปลอดภัยเดียวกัน เมื่อการค้นพบคืนค่าทั้ง IP Tailnet ดิบและชื่อโฮสต์ที่เสถียร แอปจะเลือก Tailscale MagicDNS หรือชื่อ LAN ก่อน เพื่อให้การเชื่อมต่อระยะไกลทนต่อการเปลี่ยนแปลงที่อยู่ได้ดีกว่า หากพอร์ตอุโมงค์ภายในเครื่องต่างจากพอร์ต Gateway ระยะไกล ให้ตั้งค่า gateway.remote.remotePort เป็นพอร์ตบนโฮสต์ระยะไกล

การทำงานอัตโนมัติของเบราว์เซอร์ในโหมดระยะไกลเป็นความรับผิดชอบของโฮสต์ Node ของ CLI ไม่ใช่ Node ของแอป macOS แบบเนทีฟ แอปจะเริ่มบริการโฮสต์ Node ที่ติดตั้งไว้เมื่อ ทำได้ หากคุณต้องการควบคุมเบราว์เซอร์จาก Mac เครื่องนั้น ให้ติดตั้ง/เริ่มด้วย openclaw node install ... และ openclaw node start (หรือเรียก openclaw node run ... ใน foreground) แล้วกำหนดเป้าหมายไปยัง Node ที่รองรับเบราว์เซอร์นั้น

ข้อกำหนดเบื้องต้นบนโฮสต์ระยะไกล

  1. ติดตั้ง Node + pnpm และ build/ติดตั้ง OpenClaw CLI (pnpm install && pnpm build && pnpm link --global)
  2. ตรวจสอบให้แน่ใจว่า openclaw อยู่ใน PATH สำหรับเชลล์แบบไม่โต้ตอบ (สร้าง symlink ไปที่ /usr/local/bin หรือ /opt/homebrew/bin หากจำเป็น)
  3. สำหรับทรานสปอร์ต SSH เท่านั้น: เปิด SSH พร้อมการยืนยันตัวตนด้วยคีย์ เราแนะนำ IP ของ Tailscale เพื่อให้เข้าถึงได้อย่างเสถียรเมื่อนอก LAN

การตั้งค่าแอป macOS

หากต้องการกำหนดค่าแอปล่วงหน้าโดยไม่ใช้โฟลว์ต้อนรับ:

bash
openclaw-mac configure-remote \  --ssh-target user@gateway.local \  --local-port 18789 \  --remote-port 18789 \  --token "$OPENCLAW_GATEWAY_TOKEN"

สำหรับ Gateway ที่เข้าถึงได้อยู่แล้วบน LAN หรือ Tailnet ที่เชื่อถือได้ ให้ข้าม SSH ทั้งหมด:

bash
openclaw-mac configure-remote \  --direct-url ws://192.168.0.202:18789 \  --token "$OPENCLAW_GATEWAY_TOKEN"

คำสั่งนี้เขียนการกำหนดค่าระยะไกล ทำเครื่องหมายว่า onboarding เสร็จสมบูรณ์ และให้แอปเป็นเจ้าของ ทรานสปอร์ตที่เลือกเมื่อเริ่มทำงาน

  1. เปิด การตั้งค่า → ทั่วไป
  2. ภายใต้ OpenClaw ทำงานที่ ให้เลือก ระยะไกล และตั้งค่า:
    • ทรานสปอร์ต: อุโมงค์ SSH หรือ โดยตรง (ws/wss)
    • เป้าหมาย SSH: user@host (เลือกใส่ :port ได้)
      • หาก Gateway อยู่บน LAN เดียวกันและประกาศ Bonjour ให้เลือกจากรายการที่ค้นพบเพื่อเติมฟิลด์นี้โดยอัตโนมัติ
    • URL ของ Gateway (เฉพาะแบบโดยตรง): wss://gateway.example.ts.net (หรือ ws://... สำหรับภายในเครื่อง/LAN)
    • ไฟล์ identity (ขั้นสูง): พาธไปยังคีย์ของคุณ
    • รากโปรเจกต์ (ขั้นสูง): พาธ checkout ระยะไกลที่ใช้สำหรับคำสั่ง
    • พาธ CLI (ขั้นสูง): พาธทางเลือกไปยัง entrypoint/ไบนารี openclaw ที่เรียกใช้ได้ (เติมอัตโนมัติเมื่อมีการประกาศ)
  3. กด ทดสอบระยะไกล ความสำเร็จหมายถึง openclaw status --json ระยะไกลทำงานถูกต้อง ความล้มเหลวมักหมายถึงปัญหา PATH/CLI; exit 127 หมายถึงไม่พบ CLI บนเครื่องระยะไกล
  4. ตอนนี้การตรวจสุขภาพและเว็บแชทจะทำงานผ่านทรานสปอร์ตที่เลือกโดยอัตโนมัติ

เว็บแชท

  • อุโมงค์ SSH: เว็บแชทเชื่อมต่อกับ Gateway ผ่านพอร์ตควบคุม WebSocket ที่ส่งต่อไว้ (ค่าเริ่มต้น 18789)
  • โดยตรง (ws/wss): เว็บแชทเชื่อมต่อโดยตรงไปยัง URL ของ Gateway ที่กำหนดค่าไว้
  • ไม่มีเซิร์ฟเวอร์ HTTP สำหรับ WebChat แยกต่างหากอีกต่อไป

สิทธิ์

  • โฮสต์ระยะไกลต้องมีการอนุมัติ TCC แบบเดียวกับภายในเครื่อง (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications) เรียก onboarding บนเครื่องนั้นเพื่อให้สิทธิ์หนึ่งครั้ง
  • Node ประกาศสถานะสิทธิ์ผ่าน node.list / node.describe เพื่อให้เอเจนต์รู้ว่ามีอะไรพร้อมใช้งาน

หมายเหตุด้านความปลอดภัย

  • ควรใช้การ bind แบบ loopback บนโฮสต์ระยะไกล แล้วเชื่อมต่อผ่าน SSH, Tailscale Serve หรือ URL โดยตรงของ Tailnet/LAN ที่เชื่อถือได้
  • อุโมงค์ SSH ใช้การตรวจสอบ host-key แบบเข้มงวด ให้เชื่อถือ host key ก่อนเพื่อให้มีอยู่ใน ~/.ssh/known_hosts
  • หากคุณ bind Gateway กับอินเทอร์เฟซที่ไม่ใช่ loopback ต้องกำหนดให้ใช้การยืนยันตัวตน Gateway ที่ถูกต้อง: token, password หรือ reverse proxy ที่รับรู้ identity พร้อม gateway.auth.mode: "trusted-proxy"
  • ดู ความปลอดภัย และ Tailscale

โฟลว์เข้าสู่ระบบ WhatsApp (ระยะไกล)

  • เรียก openclaw channels login --verbose บนโฮสต์ระยะไกล สแกน QR ด้วย WhatsApp บนโทรศัพท์ของคุณ
  • เรียก login ซ้ำบนโฮสต์นั้นหาก auth หมดอายุ การตรวจสุขภาพจะแสดงปัญหาการเชื่อมโยง

การแก้ปัญหา

  • exit 127 / not found: openclaw ไม่อยู่ใน PATH สำหรับเชลล์แบบ non-login เพิ่มลงใน /etc/paths, shell rc ของคุณ หรือสร้าง symlink ไปที่ /usr/local/bin//opt/homebrew/bin
  • Health probe failed: ตรวจสอบการเข้าถึง SSH, PATH และว่า Baileys เข้าสู่ระบบแล้ว (openclaw status --json)
  • เว็บแชทค้าง: ยืนยันว่า Gateway กำลังทำงานบนโฮสต์ระยะไกล และพอร์ตที่ส่งต่อตรงกับพอร์ต WS ของ Gateway; UI ต้องใช้การเชื่อมต่อ WS ที่สมบูรณ์
  • IP ของ Node แสดงเป็น 127.0.0.1: เป็นพฤติกรรมที่คาดไว้กับอุโมงค์ SSH เปลี่ยน ทรานสปอร์ต เป็น โดยตรง (ws/wss) หากคุณต้องการให้ Gateway เห็น IP ไคลเอนต์จริง
  • Dashboard ทำงานแต่ความสามารถของ Mac ออฟไลน์: หมายความว่าการเชื่อมต่อ operator/control ของแอปสมบูรณ์ แต่การเชื่อมต่อ Node คู่กันไม่ได้เชื่อมต่อหรือไม่มีพื้นผิวคำสั่ง เปิดส่วนอุปกรณ์ในแถบเมนูและตรวจสอบว่า Mac เป็น paired · disconnected หรือไม่ สำหรับ endpoint ของ Tailscale Serve แบบ wss://*.ts.net แอปจะตรวจพบ TLS leaf pins แบบ legacy ที่ค้างหลังการหมุนเวียนใบรับรอง ล้าง pin ที่ค้างเมื่อ macOS เชื่อถือใบรับรองใหม่ และลองใหม่โดยอัตโนมัติ หากใบรับรองไม่ได้รับความเชื่อถือจากระบบหรือโฮสต์ไม่ใช่ชื่อ Tailscale Serve ให้ตั้งค่า gateway.remote.tlsFingerprint เป็นลายนิ้วมือใบรับรองที่คาดไว้ ตรวจสอบใบรับรอง หรือเปลี่ยนเป็น ระยะไกลผ่าน SSH
  • Voice Wake: trigger phrases จะถูกส่งต่อโดยอัตโนมัติในโหมดระยะไกล ไม่จำเป็นต้องมี forwarder แยกต่างหาก

เสียงแจ้งเตือน

เลือกเสียงต่อการแจ้งเตือนจากสคริปต์ด้วย openclaw และ node.invoke เช่น:

bash
openclaw nodes notify --node <id> --title "Ping" --body "Remote gateway ready" --sound Glass

ไม่มี toggle "เสียงเริ่มต้น" แบบ global ในแอปอีกต่อไป ผู้เรียกเลือกเสียง (หรือไม่เลือก) ต่อคำขอ

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page