CLI commands
کیوآر
openclaw qr
از پیکربندی فعلی Gateway خود، یک کد QR برای جفتسازی موبایل و یک کد راهاندازی ایجاد کنید.
openclaw qropenclaw qr --setup-code-onlyopenclaw qr --jsonopenclaw qr --remoteopenclaw qr --url wss://gateway.example/wsبرنامههای رسمی OpenClaw برای iOS و Android، هنگامی که فرادادهٔ کد راهاندازی آنها مطابقت داشته باشد، بهطور خودکار متصل میشوند. اگر درخواستی در انتظار باقی بماند (برای مثال، برای یک کلاینت غیررسمی یا فرادادهٔ نامطابق)، آن را بررسی و تأیید کنید:
openclaw devices listopenclaw devices approve <requestId>گزینهها
--remote: gateway.remote.urlرا ترجیح میدهد؛ اگر آن URL تنظیم نشده باشد، بهgateway.tailscale.mode=serve|funnelبازمیگردد.publicUrlدر Plugin device-pairرا نادیده میگیرد.--url <url>: نشانی Gateway استفادهشده در بار داده را بازنویسی میکند--public-url <url>: نشانی عمومی استفادهشده در بار داده را بازنویسی میکند--token <token>: توکن Gateway را که جریان راهاندازی با آن احراز هویت میکند، بازنویسی میکند--password <password>: گذرواژهٔ Gateway را که جریان راهاندازی با آن احراز هویت میکند، بازنویسی میکند--setup-code-only: فقط کد راهاندازی را چاپ میکند--no-ascii: رندر کد QR بهصورت ASCII را انجام نمیدهد--json: خروجی JSON تولید میکند (setupCode،gatewayUrl، gatewayUrlsاختیاری،auth،urlSource)
--token و --password را نمیتوان همزمان استفاده کرد.
محتوای کد راهاندازی
کد راهاندازی بهجای توکن/گذرواژهٔ مشترک Gateway، یک bootstrapToken مبهم و کوتاهعمر را حمل میکند. جریان راهاندازی داخلی موارد زیر را صادر میکند:
- یک توکن اصلی
nodeباscopes: [] - یک توکن انتقال محدود
operatorکه فقط بهoperator.approvals، operator.read، operator.talk.secretsوoperator.writeمحدود است
دامنههای تغییر جفتسازی و operator.admin همچنان به یک جریان جداگانهٔ جفتسازی تأییدشدهٔ عملگر یا توکن نیاز دارند.
تفکیک نشانی Gateway
جفتسازی موبایل برای نشانیهای ws:// عمومی یا Tailscale مربوط به Gateway بهصورت بسته و امن شکست میخورد: برای آنها از Tailscale Serve/Funnel یا نشانی wss:// برای Gateway استفاده کنید. نشانیهای LAN خصوصی و میزبانهای Bonjour با پسوند .local همچنان از طریق ws:// ساده پشتیبانی میشوند.
هنگامی که نشانی انتخابشدهٔ Gateway از gateway.bind=lan بهدست میآید، OpenClaw مسیرهای پایدار tailscale serve status --json را نیز بررسی میکند. هر ریشهٔ HTTPS Serve که درگاه local loopback مربوط به Gateway فعال را پروکسی کند، بهعنوان مسیر جایگزین گنجانده میشود. فرمان QR این مسیر جایگزین را فقط برای lan اضافه میکند؛ custom و tailnet مسیرهایی را که صراحتاً اعلام کردهاند حفظ میکنند. کلاینتهای فعلی iOS مسیرهای اعلامشده را بهترتیب بررسی میکنند و نخستین مسیر قابلدسترسی را ذخیره میکنند؛ فیلد قدیمی url برای کلاینتهای قدیمیتر بدون تغییر باقی میماند.
با --remote، وجود یکی از gateway.remote.url یا gateway.tailscale.mode=serve|funnel الزامی است.
تفکیک احراز هویت (بدون --remote)
وقتی هیچ بازنویسی احراز هویت CLI ارائه نشده باشد، SecretRefهای احراز هویت Gateway محلی بهشکل زیر تفکیک میشوند:
| شرط | به این مقدار تفکیک میشود |
|---|---|
gateway.auth.mode="token"، یا حالت استنباطشده بدون منبع گذرواژهٔ غالب |
gateway.auth.token |
gateway.auth.mode="password"، یا حالت استنباطشده بدون توکن غالب از احراز هویت/متغیر محیطی |
gateway.auth.password |
هر دو gateway.auth.token و gateway.auth.password پیکربندی شدهاند (از جمله SecretRefها) و gateway.auth.mode تنظیم نشده است |
شکست میخورد؛ gateway.auth.mode را صریحاً تنظیم کنید |
تفکیک احراز هویت (--remote)
اگر اعتبارنامههای راه دورِ عملاً فعال بهصورت SecretRef پیکربندی شده باشند و نه --token و نه --password ارائه نشده باشد، فرمان آنها را از عکس فوری فعال Gateway تفکیک میکند. اگر Gateway در دسترس نباشد، فرمان فوراً شکست میخورد.