الانتقال إلى المحتوى الرئيسي

تطبيق Android (عُقدة)

لمحة عن الدعم

التحكم بالنظام

التحكم بالنظام (launchd/systemd) موجود على مضيف Gateway. راجع Gateway.

دليل تشغيل الاتصال

تطبيق عُقدة Android ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway يتصل Android مباشرةً بـ WebSocket الخاص بـ Gateway (الافتراضي ws://<host>:18789) ويستخدم إقرانًا مملوكًا لـ Gateway.

المتطلبات المسبقة

  • يمكنك تشغيل Gateway على الجهاز «الرئيسي».
  • يمكن لجهاز/محاكي Android الوصول إلى WebSocket الخاص بـ Gateway:
    • نفس الشبكة المحلية مع mDNS/NSD، أو
    • نفس شبكة Tailscale باستخدام Wide-Area Bonjour / unicast DNS-SD (انظر أدناه)، أو
    • مضيف/منفذ Gateway يدويًا (حل احتياطي)
  • يمكنك تشغيل CLI (openclaw) على جهاز Gateway (أو عبر SSH).

1. تشغيل Gateway

openclaw gateway --port 18789 --verbose
تأكد في السجلات من ظهور شيء مثل:
  • listening on ws://0.0.0.0:18789
لإعدادات شبكة tailnet فقط (موصى بها لفيينا ⇄ لندن)، اربط Gateway بعنوان IP الخاص بالـ tailnet:
  • عيّن gateway.bind: "tailnet" في ~/.openclaw/openclaw.json على مضيف Gateway.
  • أعد تشغيل Gateway / تطبيق شريط القوائم على macOS.

2. التحقق من الاكتشاف (اختياري)

من جهاز Gateway:
dns-sd -B _openclaw-gw._tcp local.
ملاحظات إضافية للتصحيح: Bonjour.

اكتشاف Tailnet (فيينا ⇄ لندن) عبر unicast DNS-SD

لن يعبر اكتشاف NSD/mDNS على Android الشبكات. إذا كانت عُقدة Android وGateway على شبكتين مختلفتين لكنهما متصلتان عبر Tailscale، فاستخدم Wide-Area Bonjour / unicast DNS-SD بدلًا من ذلك:
  1. أنشئ نطاق DNS-SD (مثال openclaw.internal.) على مضيف Gateway وانشر سجلات _openclaw-gw._tcp.
  2. اضبط split DNS في Tailscale لنطاقك المختار ليشير إلى خادم DNS هذا.
التفاصيل ومثال تهيئة CoreDNS: Bonjour.

3. الاتصال من Android

في تطبيق Android:
  • يحافظ التطبيق على اتصال Gateway عبر خدمة في المقدمة (إشعار دائم).
  • افتح الإعدادات.
  • ضمن Gateways المكتشفة، اختر Gateway واضغط اتصال.
  • إذا كان mDNS محظورًا، استخدم متقدم → Gateway يدوي (المضيف + المنفذ) ثم اتصال (يدوي).
بعد أول إقران ناجح، يعاود Android الاتصال تلقائيًا عند التشغيل:
  • نقطة نهاية يدوية (إن كانت مفعّلة)، وإلا
  • آخر Gateway تم اكتشافه (بأفضل جهد).

4. اعتماد الإقران (CLI)

على جهاز Gateway:
openclaw nodes pending
openclaw nodes approve <requestId>
تفاصيل الإقران: إقران Gateway.

5. التحقق من اتصال العُقدة

  • عبر حالة العُقد:
    openclaw nodes status
    
  • عبر Gateway:
    openclaw gateway call node.list --params "{}"
    

6. الدردشة + السجل

تستخدم ورقة الدردشة في عُقدة Android مفتاح الجلسة الأساسية الخاص بـ Gateway (main)، لذلك تتم مشاركة السجل والردود مع WebChat والعملاء الآخرين:
  • السجل: chat.history
  • الإرسال: chat.send
  • تحديثات الدفع (بأفضل جهد): chat.subscribeevent:"chat"

7. Canvas + الكاميرا

مضيف Canvas في Gateway (موصى به لمحتوى الويب)

إذا أردت أن تعرض العُقدة HTML/CSS/JS حقيقيًا يمكن للوكيل تعديله على القرص، فوجّه العُقدة إلى مضيف Canvas في Gateway. ملاحظة: تقوم العقد بتحميل اللوحة من خادم Gateway عبر HTTP (نفس المنفذ gateway.port، الافتراضي 18789).
  1. أنشئ ~/.openclaw/workspace/canvas/index.html على مضيف Gateway.
  2. انتقل بالعُقدة إليه (LAN):
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18793/__openclaw__/canvas/"}'
Tailnet (اختياري): إذا كان الجهازان على Tailscale، استخدم اسم MagicDNS أو عنوان IP للـ tailnet بدلًا من .local، مثل http://<gateway-magicdns>:18793/__openclaw__/canvas/. يقوم هذا الخادم بحقن عميل إعادة تحميل مباشر في HTML ويعيد التحميل عند تغيّر الملفات. يقع مضيف A2UI على http://<gateway-host>:18793/__openclaw__/a2ui/. أوامر Canvas (في المقدمة فقط):
  • canvas.eval، canvas.snapshot، canvas.navigate (استخدم {"url":""} أو {"url":"/"} للعودة إلى الهيكل الافتراضي). يُعيد canvas.snapshot { format, base64 } (الافتراضي format="jpeg").
  • A2UI: canvas.a2ui.push، canvas.a2ui.reset (canvas.a2ui.pushJSONL اسم مستعار قديم)
أوامر الكاميرا (في المقدمة فقط؛ تتطلب إذنًا):
  • camera.snap (jpg)
  • camera.clip (mp4)
راجع عُقدة الكاميرا للاطلاع على المعلمات ومساعدات CLI.