macOS companion app

التحكم عن بُعد

تتيح هذه العملية لتطبيق macOS العمل كجهاز تحكم عن بُعد كامل لـ Gateway من OpenClaw يعمل على مضيف آخر (سطح مكتب/خادم). إنها ميزة التشغيل عن بُعد عبر SSH (التشغيل البعيد) في التطبيق. تعيد جميع الميزات - فحوصات السلامة، وتمرير إيقاظ الصوت، ودردشة الويب - استخدام إعداد SSH البعيد نفسه من الإعدادات → عام.

الأوضاع

  • محلي (هذا Mac): يعمل كل شيء على الحاسوب المحمول. لا يوجد SSH.
  • عن بُعد عبر SSH (افتراضي): تُنفَّذ أوامر OpenClaw على المضيف البعيد. يفتح تطبيق Mac اتصال SSH باستخدام -o BatchMode مع الهوية/المفتاح الذي تختاره وتمرير منفذ محلي.
  • اتصال مباشر عن بُعد (ws/wss): لا يوجد نفق SSH. يتصل تطبيق Mac بعنوان URL الخاص بـ Gateway مباشرةً (مثلًا عبر Tailscale Serve أو وكيل عكسي 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.

أتمتة المتصفح في الوضع البعيد يملكها مضيف Node الخاص بـ CLI، وليس Node تطبيق macOS الأصلي. يبدأ التطبيق خدمة مضيف Node المثبتة عندما يكون ذلك ممكنًا؛ إذا كنت بحاجة إلى التحكم بالمتصفح من ذلك Mac، فثبّتها/ابدأها باستخدام openclaw node install ... وopenclaw node start (أو شغّل openclaw node run ... في الواجهة الأمامية)، ثم استهدف Node القادر على تشغيل المتصفح.

المتطلبات المسبقة على المضيف البعيد

  1. ثبّت Node + pnpm وابنِ/ثبّت CLI الخاص بـ OpenClaw (pnpm install && pnpm build && pnpm link --global).
  2. تأكد من أن openclaw موجود على PATH للأصداف غير التفاعلية (أنشئ رابطًا رمزيًا داخل /usr/local/bin أو /opt/homebrew/bin إذا لزم الأمر).
  3. افتح SSH باستخدام مصادقة المفتاح. نوصي بعناوين IP الخاصة بـ Tailscale للوصول المستقر خارج LAN.

إعداد تطبيق macOS

  1. افتح الإعدادات → عام.
  2. ضمن تشغيل OpenClaw، اختر عن بُعد عبر SSH واضبط:
    • النقل: نفق SSH أو مباشر (ws/wss).
    • هدف SSH: user@host (اختياريًا :port).
      • إذا كان Gateway على LAN نفسه ويعلن عبر Bonjour، فاختره من القائمة المكتشفة لملء هذا الحقل تلقائيًا.
    • عنوان URL الخاص بـ Gateway (مباشر فقط): wss://gateway.example.ts.net (أو ws://... للمحلي/LAN).
    • ملف الهوية (متقدم): المسار إلى مفتاحك.
    • جذر المشروع (متقدم): مسار checkout البعيد المستخدم للأوامر.
    • مسار CLI (متقدم): مسار اختياري إلى نقطة دخول/ملف ثنائي openclaw قابل للتشغيل (يُملأ تلقائيًا عند الإعلان عنه).
  3. اضغط اختبار البعيد. يشير النجاح إلى أن openclaw status --json البعيد يعمل بشكل صحيح. تعني الإخفاقات عادةً مشكلات PATH/CLI؛ ويعني رمز الخروج 127 أنه لم يتم العثور على CLI عن بُعد.
  4. ستعمل فحوصات السلامة ودردشة الويب الآن تلقائيًا عبر نفق SSH هذا.

دردشة الويب

  • نفق SSH: تتصل دردشة الويب بـ Gateway عبر منفذ تحكم WebSocket المُمرَّر (الافتراضي 18789).
  • مباشر (ws/wss): تتصل دردشة الويب مباشرةً بعنوان URL الخاص بـ Gateway المُكوَّن.
  • لم يعد هناك خادم HTTP منفصل لدردشة الويب.

الأذونات

  • يحتاج المضيف البعيد إلى موافقات TCC نفسها كما في المحلي (الأتمتة، وإمكانية الوصول، وتسجيل الشاشة، والميكروفون، والتعرف على الكلام، والإشعارات). شغّل الإعداد الأولي على ذلك الجهاز لمنحها مرة واحدة.
  • تعلن Nodes عن حالة أذوناتها عبر node.list / node.describe كي يعرف الوكلاء ما هو متاح.

ملاحظات الأمان

  • فضّل روابط loopback على المضيف البعيد واتصل عبر SSH أو Tailscale.
  • يستخدم نفق SSH تحققًا صارمًا من مفتاح المضيف؛ ثق بمفتاح المضيف أولًا حتى يكون موجودًا في ~/.ssh/known_hosts.
  • إذا ربطت Gateway بواجهة غير loopback، فاطلب مصادقة Gateway صالحة: رمزًا مميزًا، أو كلمة مرور، أو وكيلًا عكسيًا واعيًا بالهوية مع gateway.auth.mode: "trusted-proxy".
  • راجع الأمان وTailscale.

عملية تسجيل دخول WhatsApp (بعيد)

  • شغّل openclaw channels login --verbose على المضيف البعيد. امسح رمز QR باستخدام WhatsApp على هاتفك.
  • أعد تشغيل تسجيل الدخول على ذلك المضيف إذا انتهت صلاحية المصادقة. سيُظهر فحص السلامة مشكلات الربط.

استكشاف الأخطاء وإصلاحها

  • رمز الخروج 127 / غير موجود: openclaw غير موجود على PATH للأصداف غير الخاصة بتسجيل الدخول. أضِفه إلى /etc/paths، أو ملف إعداد الصدفة لديك، أو أنشئ رابطًا رمزيًا داخل /usr/local/bin//opt/homebrew/bin.
  • فشل مسبار السلامة: تحقق من إمكانية الوصول عبر SSH، وPATH، وأن Baileys مسجل الدخول (openclaw status --json).
  • دردشة الويب عالقة: تأكد من أن Gateway يعمل على المضيف البعيد وأن المنفذ المُمرَّر يطابق منفذ WS الخاص بـ Gateway؛ تتطلب الواجهة اتصال WS سليمًا.
  • عنوان IP الخاص بـ Node يظهر 127.0.0.1: هذا متوقع مع نفق SSH. بدّل النقل إلى مباشر (ws/wss) إذا أردت أن يرى Gateway عنوان IP الحقيقي للعميل.
  • لوحة المعلومات تعمل لكن إمكانات Mac غير متصلة: يعني هذا أن اتصال المشغّل/التحكم في التطبيق سليم، لكن اتصال Node المرافق غير متصل أو يفتقد سطح الأوامر الخاص به. افتح قسم الجهاز في شريط القوائم وتحقق مما إذا كان Mac هو paired · disconnected. بالنسبة إلى نقاط نهاية Tailscale Serve من نوع wss://*.ts.net، يكتشف التطبيق دبابيس أوراق TLS القديمة البالية بعد تدوير الشهادة، ويمسح الدبوس البالي عندما يثق macOS بالشهادة الجديدة، ثم يعيد المحاولة تلقائيًا. إذا لم تكن الشهادة موثوقة من النظام أو لم يكن المضيف اسم Tailscale Serve، فراجع الشهادة أو انتقل إلى عن بُعد عبر SSH.
  • إيقاظ الصوت: تُمرَّر عبارات التشغيل تلقائيًا في الوضع البعيد؛ لا حاجة إلى موجّه تمرير منفصل.

أصوات الإشعارات

اختر الأصوات لكل إشعار من السكربتات باستخدام openclaw وnode.invoke، مثلًا:

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

لم يعد هناك مفتاح تبديل عام لـ "الصوت الافتراضي" في التطبيق؛ يختار المستدعون صوتًا (أو لا صوت) لكل طلب.

ذات صلة