CLI commands
QR
openclaw qr
أنشئ رمز QR للاقتران على الهاتف المحمول ورمز إعداد من تكوين Gateway الحالي.
openclaw qropenclaw qr --setup-code-onlyopenclaw qr --jsonopenclaw qr --remoteopenclaw qr --limitedopenclaw qr --url wss://gateway.example/wsتتصل تطبيقات OpenClaw الرسمية لنظامي iOS وAndroid تلقائيًا عندما تتطابق بيانات تعريف رمز الإعداد الخاصة بها. إذا ظل طلب معلقًا (على سبيل المثال، لعميل غير رسمي أو بسبب عدم تطابق بيانات التعريف)، فراجعه ووافق عليه:
openclaw devices listopenclaw devices approve <requestId>الخيارات
--remote: تفضيلgateway.remote.url؛ والرجوع إلىgateway.tailscale.mode=serve|funnelإذا لم يكن عنوان URL هذا معيّنًا. يتجاهلdevice-pairالخاص بـ pluginpublicUrl.--url <url>: تجاوز عنوان URL الخاص بـ Gateway والمستخدم في الحمولة--public-url <url>: تجاوز عنوان URL العام المستخدم في الحمولة--token <token>: تجاوز رمز Gateway الذي تتم المصادقة عليه في تدفق التمهيد--password <password>: تجاوز كلمة مرور Gateway التي تتم المصادقة عليها في تدفق التمهيد--limited: حذف صلاحية الوصول الإداري إلى Gateway من رمز المشغّل المُسلَّم--setup-code-only: طباعة رمز الإعداد فقط--no-ascii: تخطي عرض رمز QR بأحرف ASCII--json: إخراج JSON (setupCode،gatewayUrl،gatewayUrlsاختياري،auth،access،accessDowngradedاختياري،urlSource)
الخياران --token و--password متنافيان.
محتويات رمز الإعداد
يحمل رمز الإعداد bootstrapToken مبهمًا وقصير الأجل، وليس رمز Gateway المشترك أو كلمة مروره. بالنسبة إلى نقطة نهاية wss:// (أو الاسترجاع الحلقي على المضيف نفسه)، يُصدر تدفق التمهيد الافتراضي:
- رمز
nodeأساسيًا معscopes: [] - رمز تسليم
operatorكاملاً وأصليًا للهاتف المحمول معoperator.adminوoperator.approvalsوoperator.readوoperator.talk.secretsوoperator.write
استخدم --limited للاحتفاظ برمز Node نفسه مع حذف operator.admin من تسليم المشغّل. لا يُسلَّم نطاق تعديل الاقتران مطلقًا بواسطة رمز إعداد.
يظل إعداد ws:// عبر شبكة LAN بنص صريح متاحًا، لكن OpenClaw يستخدم ملف التعريف المحدود تلقائيًا لأن مراقبًا للشبكة قد يلتقط رمز التمهيد من نوع bearer ويسابق استخدامه. هيّئ wss:// أو Tailscale Serve، ثم أنشئ رمزًا جديدًا للحصول على وصول كامل.
تحليل عنوان URL الخاص بـ Gateway
يفشل اقتران الهاتف المحمول بصورة مغلقة مع عناوين URL الخاصة بـ Gateway من النوع Tailscale/العام ws://: استخدم Tailscale Serve/Funnel أو عنوان URL wss:// لـ Gateway في هذه الحالات. تظل عناوين شبكة LAN الخاصة ومضيفات Bonjour من النوع .local مدعومة عبر ws:// الصريح، مع وصول محدود للمشغّل كما هو موضح أعلاه.
عندما يأتي عنوان URL المحدد لـ Gateway من gateway.bind=lan، يتحقق OpenClaw أيضًا من مسارات tailscale serve status --json الدائمة. يُضمَّن كمسار احتياطي أي جذر HTTPS Serve يمرر طلبات منفذ الاسترجاع الحلقي لـ Gateway النشط. يضيف أمر QR هذا المسار الاحتياطي إلى lan فقط؛ ويحتفظ custom وtailnet بالمسارات المعلنة صراحةً. تختبر عملاء iOS الحالية المسارات المعلنة بالترتيب وتحفظ أول مسار يمكن الوصول إليه؛ ويظل الحقل القديم url دون تغيير للعملاء الأقدم.
عند استخدام --remote، يلزم أحد الخيارين gateway.remote.url أو gateway.tailscale.mode=serve|funnel.
تحليل المصادقة (من دون --remote)
عند عدم تمرير تجاوز للمصادقة عبر CLI، تُحل مراجع الأسرار SecretRefs الخاصة بمصادقة Gateway المحلي كما يلي:
| الشرط | القيمة المحلولة |
|---|---|
gateway.auth.mode="token"، أو الوضع المستنتج من دون مصدر كلمة مرور فائز |
gateway.auth.token |
gateway.auth.mode="password"، أو الوضع المستنتج من دون رمز فائز من المصادقة/البيئة |
gateway.auth.password |
تهيئة كل من gateway.auth.token وgateway.auth.password (بما في ذلك SecretRefs) وعدم تعيين gateway.auth.mode |
يفشل؛ عيّن gateway.auth.mode صراحةً |
تحليل المصادقة (--remote)
إذا كانت بيانات الاعتماد البعيدة النشطة فعليًا مهيأة بوصفها SecretRefs ولم يُمرَّر أي من --token أو --password، فسيحلها الأمر من لقطة Gateway النشطة. إذا لم يكن Gateway متاحًا، يفشل الأمر فورًا.