macOS companion app

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

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

โหมด

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

การรับส่งข้อมูลระยะไกล

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

แอปจะปิดการใช้การเชื่อมต่อ SSH ร่วมกันและการย้ายไปทำงานเบื้องหลังหลังการยืนยันตัวตนสำหรับโพรเซส SSH ของแอปเอง เพื่อให้สามารถตรวจสอบและเริ่มโพรเซสที่เจาะจงนั้นใหม่ได้ แม้นามแฝงที่เลือกจะเปิดใช้ ControlMaster หรือ ForkAfterAuthentication

โดยค่าเริ่มต้น การตรวจสอบคีย์โฮสต์ SSH จะเข้มงวด เนื่องจากข้อมูลประจำตัวของ Gateway เดินทางผ่านอุโมงค์นี้ หากต้องการเลือกใช้ลักษณะการเชื่อถือของนามแฝง SSH ที่มีการจัดการเอง ให้ตั้งค่า --ssh-host-key-policy openssh ผ่าน openclaw-mac configure-remote หรือตั้งค่า gateway.remote.sshHostKeyPolicy เป็น "openssh" โดยตรง ตรวจสอบนามแฝง รวมถึงการกำหนดค่า Host * ที่ตรงกันหรือการกำหนดค่าระบบก่อนเลือกใช้ การเปลี่ยนเป้าหมาย SSH (ในแอปหรือผ่าน configure-remote) จะรีเซ็ตนโยบายกลับเป็น strict เว้นแต่คุณจะเลือกใช้อีกครั้งอย่างชัดเจนสำหรับเป้าหมายใหม่

ในโหมดอุโมงค์ SSH ชื่อโฮสต์ LAN/Tailnet ที่ค้นพบจะถูกบันทึกเป็น gateway.remote.sshTarget แอปจะคง gateway.remote.url ไว้ที่ปลายทางอุโมงค์ภายในเครื่อง (ตัวอย่างเช่น ws://127.0.0.1:18789) เพื่อให้ CLI, Web Chat และบริการโฮสต์ Node ภายในเครื่องใช้การรับส่งข้อมูลผ่าน local 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 ... ในเบื้องหน้า) จากนั้นกำหนดเป้าหมายไปยัง Node ที่รองรับเบราว์เซอร์นั้น

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

  1. ติดตั้ง Node + pnpm และสร้าง/ติดตั้ง 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

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

bash
openclaw-mac configure-remote \  --ssh-target user@gateway-host \  --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"

ทั้งสองรูปแบบจะเขียน ~/.openclaw/openclaw.json ทำเครื่องหมายว่าการเริ่มต้นใช้งานเสร็จสมบูรณ์ และให้แอปจัดการการรับส่งข้อมูลที่เลือกเมื่อเริ่มทำงานครั้งถัดไป --local-port/--remote-port มีค่าเริ่มต้นเป็น 18789 แฟล็กอื่นๆ ได้แก่ --password, --identity <path>, --ssh-host-key-policy <strict|openssh>, --project-root <path>, --cli-path <path>, --json เรียกใช้ openclaw-mac configure-remote --help เพื่อดูข้อมูลอ้างอิงทั้งหมด

หากต้องการกำหนดค่าจาก UI แทน:

  1. เปิด Settings -> General
  2. ในส่วน OpenClaw runs ให้เลือก Remote และตั้งค่าดังนี้:
    • Transport: SSH tunnel หรือ Direct (ws/wss)
    • SSH target: user@host (เพิ่ม :port ได้) หาก Gateway อยู่บน LAN เดียวกันและประกาศผ่าน Bonjour ให้เลือกจากรายการที่ค้นพบเพื่อกรอกข้อมูลในช่องนี้โดยอัตโนมัติ
    • Gateway URL (สำหรับ Direct เท่านั้น): wss://gateway.example.ts.net (หรือ ws://... สำหรับภายในเครื่อง/LAN)
    • Identity file (ขั้นสูง): พาธไปยังคีย์ของคุณ
    • Project root (ขั้นสูง): พาธของสำเนาโค้ดระยะไกลที่ใช้สำหรับคำสั่ง
    • CLI path (ขั้นสูง): พาธเพิ่มเติมไปยังจุดเริ่มต้น/ไบนารี openclaw ที่เรียกใช้งานได้ (กรอกโดยอัตโนมัติเมื่อมีการประกาศ)
  3. กด Test remote หากสำเร็จ หมายความว่า openclaw status --json ระยะไกลทำงานอย่างถูกต้อง ความล้มเหลวมักเกิดจากปัญหา PATH/CLI โดยรหัสออก 127 หมายความว่าไม่พบ CLI บนโฮสต์ระยะไกล
  4. การตรวจสอบสถานะและ Web Chat จะทำงานผ่านการรับส่งข้อมูลที่เลือกโดยอัตโนมัติ

Web Chat

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

สิทธิ์

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

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

  • ควรเลือกใช้การผูกกับ local loopback บนโฮสต์ระยะไกล และเชื่อมต่อผ่าน SSH, Tailscale Serve หรือ URL โดยตรงบน Tailnet/LAN ที่เชื่อถือได้
  • โดยค่าเริ่มต้น การสร้างอุโมงค์ SSH ต้องใช้คีย์โฮสต์ที่เชื่อถือแล้ว ให้เชื่อถือคีย์โฮสต์ก่อน (เพิ่มคีย์ลงในไฟล์ known-hosts ที่กำหนดค่าไว้) หรือตั้งค่า gateway.remote.sshHostKeyPolicy: "openssh" อย่างชัดเจนสำหรับนามแฝงที่มีการจัดการซึ่งคุณยอมรับนโยบายการเชื่อถือของ OpenSSH
  • หากคุณผูก Gateway เข้ากับอินเทอร์เฟซที่ไม่ใช่ local loopback ให้กำหนดให้ใช้การยืนยันตัวตนของ Gateway ที่ถูกต้อง ได้แก่ โทเค็น รหัสผ่าน หรือพร็อกซีย้อนกลับที่รับรู้อัตลักษณ์พร้อม gateway.auth.mode: "trusted-proxy"
  • ดูความปลอดภัยและTailscale

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

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

การแก้ไขปัญหา

อาการ สาเหตุ / วิธีแก้ไข
exit 127 / ไม่พบคำสั่ง openclaw ไม่ได้อยู่ใน PATH สำหรับเชลล์แบบ non-login ให้เพิ่มลงใน /etc/paths, ไฟล์ rc ของเชลล์ หรือสร้าง symlink ไว้ใน /usr/local/bin//opt/homebrew/bin
การตรวจสอบสถานะล้มเหลว ตรวจสอบว่าติดต่อผ่าน SSH ได้, PATH ถูกต้อง และ Baileys (WhatsApp) เข้าสู่ระบบแล้ว (openclaw status --json)
Web Chat ค้าง ยืนยันว่า Gateway กำลังทำงานบนโฮสต์ระยะไกล และพอร์ตที่ส่งต่อตรงกับพอร์ต WS ของ Gateway โดย UI ต้องใช้การเชื่อมต่อ WS ที่ทำงานเป็นปกติ
IP ของ Node แสดงเป็น 127.0.0.1 เป็นพฤติกรรมที่คาดไว้เมื่อใช้อุโมงค์ SSH หากต้องการให้ Gateway เห็น IP จริงของไคลเอ็นต์ ให้เปลี่ยน การรับส่งข้อมูล เป็น โดยตรง (ws/wss)
แดชบอร์ดทำงานได้ แต่ความสามารถของ Mac ออฟไลน์ การเชื่อมต่อของผู้ดำเนินการ/ส่วนควบคุมทำงานเป็นปกติ แต่การเชื่อมต่อ Node คู่หูยังไม่ได้เชื่อมต่อหรือไม่มีชุดคำสั่งที่จำเป็น เปิดส่วนอุปกรณ์ในแถบเมนูและตรวจสอบว่า Mac แสดงสถานะ จับคู่แล้ว · ไม่ได้เชื่อมต่อ หรือไม่ สำหรับปลายทาง Tailscale Serve แบบ wss://*.ts.net แอปจะตรวจพบพินใบรับรอง TLS รุ่นเก่าที่หมดอายุหลังการหมุนเวียนใบรับรอง ล้างพินที่หมดอายุเมื่อ macOS เชื่อถือใบรับรองใหม่แล้ว และลองใหม่โดยอัตโนมัติ หากระบบไม่เชื่อถือใบรับรองหรือโฮสต์ไม่ใช่ชื่อ Tailscale Serve ให้ตั้งค่า gateway.remote.tlsFingerprint เป็นลายนิ้วมือของใบรับรองที่คาดไว้ ตรวจสอบใบรับรอง หรือเปลี่ยนเป็น ระยะไกลผ่าน SSH
การปลุกด้วยเสียง วลีเรียกใช้งานจะถูกส่งต่อโดยอัตโนมัติในโหมดระยะไกล โดยไม่จำเป็นต้องมีตัวส่งต่อแยกต่างหาก

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

เลือกเสียงสำหรับการแจ้งเตือนแต่ละรายการจากสคริปต์ด้วย openclaw nodes notify ตัวอย่างเช่น:

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

แอปไม่มีตัวเลือกเปิด/ปิดเสียงเริ่มต้นส่วนกลาง ผู้เรียกใช้จะเลือกเสียง (หรือไม่ใช้เสียง) สำหรับแต่ละคำขอ

เนื้อหาที่เกี่ยวข้อง

Was this useful?
On this page

On this page