CLI commands
Gateway
Gateway سرور WebSocket در OpenClaw است (کانالها، Nodeها، نشستها، هوکها). همهٔ زیرفرمانهای زیر در openclaw gateway ... قرار دارند.
راهاندازی mDNS محلی + DNS-SD گسترده.
نحوهٔ معرفی و یافتن Gatewayها توسط OpenClaw.
کلیدهای سطحبالای پیکربندی Gateway.
اجرای Gateway
openclaw gatewayopenclaw gateway run # شکل صریح و معادلرفتار هنگام راهاندازی
- تا زمانی که
gateway.mode=localدر~/.openclaw/openclaw.jsonتنظیم نشده باشد، از شروع خودداری میکند. برای اجراهای موقت/توسعه از--allow-unconfiguredاستفاده کنید؛ این گزینه بدون نوشتن یا ترمیم پیکربندی، بررسی محافظ را دور میزند. openclaw onboard --mode localوopenclaw setupمقدارgateway.mode=localرا مینویسند. اگر فایل پیکربندی وجود داشته باشد اماgateway.modeدر آن نباشد، پیکربندی آسیبدیده/بازنویسیشده تلقی میشود و Gateway از حدسزدن مقدارlocalبرای شما خودداری میکند — فرایند راهاندازی اولیه را دوباره اجرا کنید، کلید را دستی تنظیم کنید، یا--allow-unconfiguredرا بدهید.- اتصال به محدودهای فراتر از loopback بدون احراز هویت مسدود میشود.
- مقادیر
lan،tailnetوcustomبرای--bindدر حال حاضر فقط از مسیرهای IPv4 تفکیک میشوند؛ راهاندازیهای میزبان سفارشیِ صرفاً IPv6 به یک سرویس جانبی IPv4 یا پراکسی در جلوی Gateway نیاز دارند. - در صورت مجاز بودن،
SIGUSR1راهاندازی مجدد درونفرایندی را فعال میکند.commands.restart(پیشفرض: فعال) دریافتSIGUSR1از بیرون را کنترل میکند؛ برای مسدودکردن راهاندازی مجدد دستی از طریق سیگنال سیستمعامل، در حالی که راهاندازی مجدد از طریق فرمانgateway restart، ابزار Gateway و اعمال/بهروزرسانی پیکربندی همچنان مجاز است، آن را رویfalseتنظیم کنید. SIGINT/SIGTERMفرایند را متوقف میکنند، اما وضعیت سفارشی ترمینال را بازیابی نمیکنند — اگر CLI را در یک TUI یا ورودی حالت خام بستهبندی میکنید، پیش از خروج خودتان ترمینال را بازیابی کنید.
گزینهها
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
درگاه WebSocket (مقدار پیشفرض از پیکربندی/متغیر محیطی؛ معمولاً 18789).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tYmluZCA8bW9kZQ
" type="string">
حالت اتصال: loopback (پیشفرض)، lan، tailnet، auto، custom.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu
" type="string">
توکن مشترک برای connect.params.auth.token. در صورت تنظیم، مقدار پیشفرض از OPENCLAW_GATEWAY_TOKEN گرفته میشود.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tYXV0aCA8bW9kZQ
" type="string">
حالت احراز هویت: none، token، password، trusted-proxy.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcGFzc3dvcmQgPHBhc3N3b3Jk
" type="string">
گذرواژه برای --auth password.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdGFpbHNjYWxlIDxtb2Rl
" type="string">
نحوهٔ در معرض قرار دادن Tailscale: off، serve، funnel.
--tailscale-reset-on-exitbooleanبازنشانی پیکربندی serve/funnel در Tailscale هنگام خاموششدن.
--allow-unconfiguredbooleanشروع بدون الزام gateway.mode=local. فقط برای راهاندازی موقت/توسعه؛ پیکربندی را ذخیره یا ترمیم نمیکند.
--devbooleanدر صورت نبود، پیکربندی توسعه + فضای کاری ایجاد میکند (BOOTSTRAP.md را نادیده میگیرد).
--resetbooleanبازنشانی پیکربندی توسعه، اطلاعات اعتبارسنجی، نشستها و فضای کاری. به --dev نیاز دارد.
--forcebooleanپیش از شروع، هر شنوندهٔ موجود روی درگاه مقصد را متوقف میکند.
--verbosebooleanثبت گزارش تفصیلی در stdout/stderr.
--cli-backend-logsbooleanفقط گزارشهای بخش پشتی CLI را در کنسول نمایش میدهد (stdout/stderr را نیز فعال میکند).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0td3MtbG9nIDxzdHlsZQ
" type="string" default="auto">
سبک گزارش WebSocket: auto، full، compact.
--compactbooleanنام مستعار --ws-log compact.
--raw-streambooleanثبت رویدادهای خام جریان مدل در JSONL.
--claude-cli-logs نام مستعار منسوخشدهٔ --cli-backend-logs است.
برای --bind custom، مقدار gateway.customBindHost را روی یک نشانی IPv4 تنظیم کنید. هر نشانی بهجز 127.0.0.1 یا 0.0.0.0 برای کلاینتهای همان میزبان، به 127.0.0.1 روی همان درگاه نیز نیاز دارد؛ اگر هرکدام از شنوندهها نتواند متصل شود، راهاندازی ناموفق خواهد بود. نویسهٔ عام 0.0.0.0 نام مستعار الزامی جداگانهای اضافه نمیکند. راهاندازیهای میزبان سفارشیِ صرفاً IPv6 به یک سرویس جانبی IPv4 یا پراکسی در جلوی Gateway نیاز دارند.
راهاندازی مجدد Gateway
openclaw gateway restartopenclaw gateway restart --safeopenclaw gateway restart --safe --skip-deferralopenclaw gateway restart --forceopenclaw gateway restart --wait 30s--safe از Gateway در حال اجرا میخواهد کارهای فعال را پیشبررسی کند و پس از تخلیهٔ آن کارها، یک راهاندازی مجدد تجمیعشده را زمانبندی کند. انتظار با gateway.reload.deferralTimeoutMs محدود میشود (پیشفرض: ۵ دقیقه / 300000)؛ پس از پایان مهلت، راهاندازی مجدد بهاجبار انجام میشود. برای انتظار نامحدود (همراه با هشدارهای دورهای دربارهٔ ادامهٔ انتظار) بهجای اجبار، مقدار deferralTimeoutMs: 0 را تنظیم کنید. --safe را نمیتوان با --force یا --wait ترکیب کرد.
--skip-deferral در یک راهاندازی مجدد امن، دروازهٔ تعویق کارهای فعال را دور میزند؛ بنابراین Gateway حتی در صورت گزارش موانع، فوراً راهاندازی مجدد میشود. این گزینه به --safe نیاز دارد — زمانی از آن استفاده کنید که تعویق روی یک وظیفهٔ مهارنشده گیر کرده باشد.
--wait <duration> مهلت تخلیه را برای یک راهاندازی مجدد عادی (غیرامن) بازنویسی میکند. میلیثانیهٔ بدون پسوند یا پسوندهای واحد ms، s، m، h، d را میپذیرد (برای نمونه 30s، 5m، 1h30m)؛ --wait 0 بهطور نامحدود منتظر میماند. با --force یا --safe سازگار نیست.
--force تخلیهٔ کارهای فعال را نادیده میگیرد و فوراً راهاندازی مجدد میکند. restart عادی (بدون پرچم) رفتار موجود راهاندازی مجددِ مدیر سرویس را حفظ میکند.
پروفایلگیری Gateway
OPENCLAW_GATEWAY_STARTUP_TRACE=1زمانبندی مرحلهها را هنگام راهاندازی ثبت میکند، از جمله تأخیرeventLoopMaxهر مرحله و زمانبندی جدول جستوجوی Pluginها (نمایهٔ نصبشده، رجیستری مانیفست، برنامهریزی راهاندازی، کارهای نگاشت مالک).OPENCLAW_GATEWAY_RESTART_TRACE=1خطوطrestart trace:محدود به راهاندازی مجدد را ثبت میکند: مدیریت سیگنال، تخلیهٔ کارهای فعال، مرحلههای خاموشسازی، شروع بعدی، زمان آمادهشدن و معیارهای حافظه.OPENCLAW_DIAGNOSTICS=timelineهمراه باOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>یک خط زمانی تشخیصی راهاندازی با قالب JSONL و بر مبنای بیشترین تلاش ممکن برای چارچوبهای QA خارجی مینویسد (معادل پیکربندیdiagnostics.flags: ["timeline"]؛ مسیر همچنان فقط از طریق متغیر محیطی تعیین میشود). برای افزودن نمونههای حلقهٔ رویداد،OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1را اضافه کنید.- اجرای
pnpm buildو سپسpnpm test:startup:gateway -- --runs 5 --warmup 1راهاندازی Gateway را با نقطهٔ ورود CLI ساختهشده محک میزند: نخستین خروجی فرایند،/healthz،/readyz، زمانبندی ردگیری راهاندازی، تأخیر حلقهٔ رویداد و زمانبندی جدول جستوجوی Plugin. - اجرای
pnpm buildو سپسpnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5راهاندازی مجدد درونفرایندی را روی macOS یا Linux محک میزند (در Windows پشتیبانی نمیشود؛ راهاندازی مجدد بهSIGUSR1نیاز دارد). ازSIGUSR1استفاده میکند، هر دو ردگیری را در فرایند فرزند فعال میکند و/healthzبعدی،/readyzبعدی، مدت ازکارافتادگی، زمان آمادهشدن، CPU، RSS و معیارهای ردگیری راهاندازی مجدد را ثبت میکند. /healthzنشاندهندهٔ زندهبودن است؛/readyzنشاندهندهٔ آمادگی قابلاستفاده است. خطوط ردگیری و خروجی محک را نشانهای برای انتساب به مالک در نظر بگیرید، نه نتیجهگیری کامل دربارهٔ کارایی بر اساس یک بازه یا نمونه.
پرسوجو از یک Gateway در حال اجرا
همهٔ فرمانهای پرسوجو از RPC مبتنی بر WebSocket استفاده میکنند.
حالتهای خروجی
- پیشفرض: خوانا برای انسان (رنگی در TTY).
--json: JSON قابلخواندن برای ماشین (بدون سبکدهی/نشانگر چرخان).--no-color(یاNO_COLOR=1): غیرفعالکردن ANSI با حفظ چیدمان خوانا برای انسان.
گزینههای مشترک
--url <url>: نشانی WebSocket مربوط به Gateway.--token <token>: توکن Gateway.--password <password>: گذرواژهٔ Gateway.--timeout <ms>: مهلت/بودجهٔ زمانی (پیشفرض برای هر فرمان متفاوت است؛ توضیحات هر فرمان را در ادامه ببینید).--expect-final: انتظار برای پاسخ «نهایی» (فراخوانیهای عامل).
gateway health
openclaw gateway health --url ws://127.0.0.1:18789openclaw gateway health --port 18789/healthz یک کاوشگر زندهبودن است: بهمحض اینکه سرور بتواند به HTTP پاسخ دهد، برمیگردد. /readyz سختگیرانهتر است و تا زمانی که سرویسهای جانبی Plugin، کانالها یا هوکهای پیکربندیشدهٔ راهاندازی هنوز در حال پایدارشدن باشند، قرمز باقی میماند. پاسخهای تفصیلی محلی یا احرازهویتشدهٔ /readyz شامل یک بلوک تشخیصی eventLoop هستند (تأخیر، میزان استفاده، نسبت هستهٔ CPU، پرچم degraded).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
یک Gateway روی local loopback را در این درگاه هدف قرار میدهد. برای این فراخوانی، OPENCLAW_GATEWAY_URL و OPENCLAW_GATEWAY_PORT را بازنویسی میکند.
gateway usage-cost
خلاصههای هزینهٔ مصرف را از گزارشهای نشست دریافت میکند.
openclaw gateway usage-costopenclaw gateway usage-cost --days 7openclaw gateway usage-cost --agent work --jsonopenclaw gateway usage-cost --all-agentsopenclaw gateway usage-cost --json"--days"--agent--all-agentsbooleanتجمیع در میان همهٔ عاملهای پیکربندیشده. با --agent قابلترکیب نیست.
gateway stability
ثبتکنندهٔ اخیر پایداری تشخیصی را از یک Gateway در حال اجرا دریافت میکند.
openclaw gateway stabilityopenclaw gateway stability --type payload.largeopenclaw gateway stability --bundle latestopenclaw gateway stability --bundle latest --exportopenclaw gateway stability --jsonOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tbGltaXQgPGxpbWl0
" type="number" default="25">
حداکثر رویدادهای اخیر برای لحاظکردن (حداکثر 1000).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdHlwZSA8dHlwZQ
" type="string">
پالایش بر اساس نوع رویداد تشخیصی، برای نمونه payload.large یا diagnostic.memory.pressure.
"--since-seq--bundle [path]stringبهجای فراخوانی Gateway در حال اجرا، یک بستهٔ پایداری ذخیرهشده را میخواند. --bundle latest (یا --bundle بدون مقدار) جدیدترین بسته را در پوشهٔ وضعیت انتخاب میکند؛ همچنین میتوانید مسیر JSON یک بسته را مستقیماً وارد کنید.
--exportbooleanبهجای چاپ جزئیات پایداری، یک فایل zip تشخیصی قابلاشتراک برای پشتیبانی مینویسد.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo
" type="string">
مسیر خروجی برای --export.
حریم خصوصی و رفتار بسته
- رکوردها فرادادهٔ عملیاتی را نگه میدارند: نام رویدادها، تعدادها، اندازههای بایتی، خوانشهای حافظه، وضعیت صف/نشست، شناسههای تأیید، نام کانال/Plugin و خلاصههای ویرایششدهٔ نشست. متن گفتوگو، بدنههای Webhook، خروجی ابزارها، بدنهٔ خام درخواست/پاسخ، توکنها، کوکیها، مقادیر محرمانه، نام میزبانها و شناسههای خام نشست در آنها قرار نمیگیرد. برای غیرفعالکردن کامل ثبتکننده،
diagnostics.enabled: falseرا تنظیم کنید. - خروجهای مرگبار Gateway، پایان مهلت خاموشسازی و شکستهای راهاندازی پس از راهاندازی مجدد، هنگامی که ثبتکننده رویدادی داشته باشد، همان تصویر لحظهای تشخیصی را در
~/.openclaw/logs/stability/openclaw-stability-*.jsonمینویسند. جدیدترین بسته را باopenclaw gateway stability --bundle latestبررسی کنید؛--limit،--typeو--since-seqبر خروجی بسته نیز اعمال میشوند.
gateway diagnostics export
یک فایل zip تشخیصی محلی مینویسد که برای گزارش خطا طراحی شده است. برای مدل حریم خصوصی و محتوای بسته، برونبری اطلاعات تشخیصی را ببینید.
openclaw gateway diagnostics exportopenclaw gateway diagnostics export --output openclaw-diagnostics.zipopenclaw gateway diagnostics export --json"--log-lines"--log-bytes"--url"--token"--password"--timeout--no-stability-bundlebooleanاز جستوجوی بستهٔ پایداری ذخیرهشده صرفنظر میکند.
--jsonbooleanمسیر نوشتهشده، اندازه و مانیفست را بهصورت JSON چاپ میکند.
خروجی شامل این موارد است: manifest.json (فهرست فایلها)، summary.md (خلاصهٔ Markdown)، diagnostics.json (خلاصهٔ سطحبالای پیکربندی/گزارشها/کشف/پایداری/وضعیت/سلامت)، config/sanitized.json، status/gateway-status.json، health/gateway-health.json، logs/openclaw-sanitized.jsonl و در صورت وجود بسته، stability/latest.json.
این خروجی برای اشتراکگذاری طراحی شده است. جزئیات عملیاتی مفید برای اشکالزدایی را نگه میدارد — فیلدهای امن گزارش، نام زیرسامانهها، کدهای وضعیت، مدتزمانها، حالتهای پیکربندیشده، درگاهها، شناسههای Plugin/ارائهدهنده، تنظیمات غیرمحرمانهٔ قابلیتها و پیامهای عملیاتی گزارش با بخشهای پوشاندهشده — و متن گفتوگو، بدنههای Webhook، خروجی ابزارها، اطلاعات احراز هویت، کوکیها، شناسههای حساب/پیام، متن اعلان/دستورالعمل، نامهای میزبان و مقادیر محرمانه را حذف یا پوشانده میکند. وقتی یک پیام گزارش شبیه متن بارِ کاربر/گفتوگو/ابزار باشد (برای مثال «کاربر گفت»، «متن گفتوگو»، «خروجی ابزار»، «بدنهٔ Webhook»)، خروجی فقط این واقعیت را نگه میدارد که پیامی حذف شده است، بههمراه تعداد بایتهای آن.
gateway status
سرویس Gateway (launchd/systemd/schtasks) را بههمراه یک وارسی اختیاری اتصال/احراز هویت نمایش میدهد.
openclaw gateway statusopenclaw gateway status --jsonopenclaw gateway status --require-rpc"--url"--token"--password"--timeout--no-probebooleanاز وارسی اتصال صرفنظر میکند (نمای فقط سرویس).
--deepbooleanسرویسهای سطح سیستم را نیز اسکن میکند.
--require-rpcbooleanوارسی اتصال را به وارسی خواندن ارتقا میدهد و در صورت شکست با کد غیرصفر خارج میشود. نمیتوان آن را با --no-probe ترکیب کرد.
معنای وضعیت
- حتی در صورت نبودن یا نامعتبر بودن پیکربندی محلی CLI، برای عیبیابی در دسترس میماند.
- خروجی پیشفرض وضعیت سرویس، اتصال WebSocket و قابلیت احراز هویت قابل مشاهده هنگام دستدهی را اثبات میکند — نه عملیات خواندن/نوشتن/مدیریتی را.
- وارسیها برای احراز هویت نخستینبار دستگاه تغییری ایجاد نمیکنند: در صورت وجود توکن ذخیرهشدهٔ دستگاه، دوباره از آن استفاده میکنند، اما صرفاً برای بررسی وضعیت هرگز هویت جدید دستگاه CLI یا سابقهٔ جفتسازی فقطخواندنی ایجاد نمیکنند.
- در صورت امکان، SecretRefهای احراز هویت پیکربندیشده را برای احراز هویت وارسی برطرف میکند. اگر SecretRef الزامی حلنشده باشد، هنگام شکست اتصال/احراز هویت وارسی،
--jsonمقدارrpc.authWarningرا گزارش میکند؛--token/--passwordرا صریحاً ارائه کنید یا منبع راز را اصلاح کنید. پس از موفقیت وارسی، هشدارهای احراز هویت حلنشده سرکوب میشوند. - وقتی Gateway در حال اجرا نسخهٔ خود را گزارش کند، خروجی JSON شامل
gateway.versionاست؛ اگر وارسی دستدهی نتواند فرادادهٔ نسخه را ارائه کند،--require-rpcمیتواند از بار RPC مربوط بهstatus.runtimeVersionاستفاده کند. - در اسکریپتها/خودکارسازی، زمانی از
--require-rpcاستفاده کنید که صرفاً گوشدادن سرویس کافی نیست و لازم است RPC با دامنهٔ خواندن نیز سالم باشد. --deepنصبهای اضافی launchd/systemd/schtasks را اسکن میکند؛ وقتی چند سرویس شبیه Gateway پیدا شود، خروجی خوانا برای انسان راهنمای پاکسازی را چاپ میکند (معمولاً در هر دستگاه یک Gateway اجرا کنید) و در صورت مرتبط بودن، تحویل اخیرِ راهاندازی مجدد ناظر را گزارش میدهد.--deepهمچنین اعتبارسنجی پیکربندی را در حالت آگاه از Plugin (pluginValidation: "full") اجرا میکند و هشدارهای مانیفست Plugin را آشکار میسازد (برای مثال نبود فرادادهٔ پیکربندی کانال). حالت پیشفرضgateway statusمسیر سریع فقطخواندنی را حفظ میکند که از اعتبارسنجی Plugin صرفنظر میکند.- خروجی خوانا برای انسان شامل مسیر حلشدهٔ فایل گزارش و نیز مسیرها/اعتبار پیکربندی CLI در مقایسه با سرویس است تا به تشخیص اختلاف پروفایل یا پوشهٔ وضعیت کمک کند.
بررسیهای اختلاف احراز هویت systemd در Linux
- بررسی اختلاف احراز هویت سرویس، هم
Environment=و همEnvironmentFile=را از واحد میخواند (از جمله%h، مسیرهای نقلقولشده، چند فایل و فایلهای اختیاری دارای-). - SecretRef مربوط به
gateway.auth.tokenرا با استفاده از محیط زمان اجرا ادغامشده برطرف میکند (ابتدا محیط فرمان سرویس، سپس محیط فرایند بهعنوان گزینهٔ جایگزین). - وقتی احراز هویت توکنی عملاً فعال نیست، بررسیهای اختلاف توکن از حل توکن پیکربندی صرفنظر میکنند (
gateway.auth.modeصریحاً برابرpassword/none/trusted-proxyاست، یا حالت تنظیم نشده و گذرواژه میتواند اولویت یابد و هیچ توکن نامزدی نمیتواند برنده شود).
gateway probe
فرمان «اشکالزدایی همهچیز». این فرمان همیشه موارد زیر را وارسی میکند:
- Gateway راهدور پیکربندیشدهٔ شما (در صورت تنظیم)، و
- localhost (local loopback)، حتی اگر مقصد راهدور پیکربندی شده باشد.
ارائهٔ --url آن مقصد صریح را پیش از هر دو اضافه میکند. خروجی خوانا برای انسان، مقصدها را با URL (explicit)، Remote (configured) / Remote (configured, inactive) و Local loopback برچسبگذاری میکند.
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --port 18789OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
از این درگاه برای مقصد وارسی local loopback و درگاه راهدور تونل SSH استفاده میکند. بدون --url، بهجای نشانی محیطی Gateway پیکربندیشده، درگاه محیطی یا مقصدهای راهدور، فقط مقصد local loopback را انتخاب میکند.
تفسیر
Reachable: yesیعنی دستکم یک مقصد، اتصال WebSocket را پذیرفته است.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlyآنچه وارسی توانسته دربارهٔ احراز هویت اثبات کند گزارش میدهد، مستقل از دسترسپذیری.Read probe: okیعنی فراخوانیهای RPC جزئیات با دامنهٔ خواندن (health/status/system-presence/config.get) نیز موفق بودهاند.Read probe: limited - missing scope: operator.readیعنی اتصال موفق بوده، اما RPC با دامنهٔ خواندن محدود است. این وضعیت بهصورت دسترسپذیری تنزلیافته گزارش میشود، نه شکست کامل.Read probe: failedپس ازConnect: okیعنی WebSocket متصل شده، اما عیبیابی خواندنِ پس از آن منقضی شده یا شکست خورده است — این نیز تنزلیافته است، نه غیرقابل دسترسی.- مانند
gateway status، وارسی از احراز هویت ذخیرهشدهٔ موجود دستگاه دوباره استفاده میکند، اما هویت نخستینبار دستگاه یا وضعیت جفتسازی ایجاد نمیکند. - کد خروج فقط زمانی غیرصفر است که هیچیک از مقصدهای وارسیشده قابل دسترسی نباشند.
خروجی JSON
سطح بالا:
ok: دستکم یک مقصد قابل دسترسی است.degraded: دستکم یک مقصد اتصال را پذیرفته، اما عیبیابی کامل RPC جزئیات را به پایان نرسانده است.capability: بهترین قابلیت مشاهدهشده میان مقصدهای قابل دسترسی (read_only،write_capable،admin_capable،pairing_pending،connected_no_operator_scopeیاunknown).primaryTargetId: بهترین مقصدی که باید بهعنوان برندهٔ فعال در نظر گرفته شود، به این ترتیب: نشانی صریح، تونل SSH، مقصد راهدور پیکربندیشده، local loopback.warnings[]: رکوردهای هشدار بر پایهٔ بهترین تلاش، شاملcode،messageوtargetIdsاختیاری.network: راهنمای نشانی local loopback/tailnet که از پیکربندی فعلی و شبکهٔ میزبان استخراج شده است.discovery.timeoutMs/discovery.count: بودجهٔ واقعی کشف/تعداد نتایج استفادهشده برای این نوبت وارسی.
برای هر مقصد (targets[].connect): ok (دسترسپذیری + دستهبندی تنزلیافته)، rpcOk (موفقیت کامل RPC جزئیات)، scopeLimited (شکست RPC جزئیات بهدلیل نبود دامنهٔ عملگر).
برای هر مقصد (targets[].auth): role و scopes گزارششده در hello-ok در صورت موجود بودن، بههمراه دستهبندی آشکارشدهٔ capability.
کدهای هشدار متداول
ssh_tunnel_failed: راهاندازی تونل SSH شکست خورد؛ فرمان به وارسیهای مستقیم بازگشت.multiple_gateways: هویتهای متمایز Gateway قابل دسترسی بودند، یا OpenClaw نتوانست اثبات کند مقصدهای قابل دسترسی همان Gateway هستند. تونل SSH، نشانی پروکسی یا نشانی راهدور پیکربندیشده به همان Gateway این هشدار را فعال نمیکند.auth_secretref_unresolved: یک SecretRef احراز هویت پیکربندیشده برای مقصدی ناموفق قابل حل نبود.probe_scope_limited: اتصال WebSocket موفق بود، اما وارسی خواندن بهدلیل نبودoperator.readمحدود شد.local_tls_runtime_unavailable: TLS محلی Gateway فعال است، اما OpenClaw نتوانست اثر انگشت گواهی محلی را بارگذاری کند.
راهدور از طریق SSH (همترازی با برنامهٔ Mac)
حالت "Remote over SSH" در برنامهٔ macOS از یک انتقال درگاه محلی استفاده میکند تا Gateway راهدوری که فقط روی loopback در دسترس است، در ws://127.0.0.1:<port> قابل دسترسی شود.
معادل CLI:
openclaw gateway probe --ssh user@gateway-hostOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ
" type="string">
user@host یا user@host:port (درگاه پیشفرض 22 است).
--ssh-autobooleanنخستین میزبان Gateway کشفشده را از نقطهٔ پایانی کشف حلشده (local. بهعلاوهٔ دامنهٔ گستردهٔ پیکربندیشده، در صورت وجود) بهعنوان مقصد SSH انتخاب میکند. راهنماهای فقط TXT نادیده گرفته میشوند.
پیشفرضهای پیکربندی (اختیاری): gateway.remote.sshTarget، gateway.remote.sshIdentity.
gateway call <method>
ابزار کمکی سطحپایین RPC.
openclaw gateway call statusopenclaw gateway call logs.tail --params '{"limit": 200}'"--params"--url"--token"--password"--timeout--expect-finalbooleanعمدتاً برای RPCهای سبک عامل که پیش از بار نهایی، رویدادهای میانی را بهصورت جریانی ارسال میکنند.
--jsonbooleanخروجی JSON قابل خواندن توسط ماشین.
مدیریت سرویس Gateway
openclaw gateway installopenclaw gateway startopenclaw gateway stopopenclaw gateway restartopenclaw gateway uninstallنصب با یک پوشاننده
وقتی سرویس مدیریتشده باید از طریق یک فایل اجرایی دیگر آغاز شود، از --wrapper استفاده کنید؛ برای مثال یک واسط مدیر رازها یا ابزار کمکی اجرای برنامه با هویت کاربر دیگر. پوشاننده آرگومانهای معمول Gateway را دریافت میکند و مسئول است در نهایت openclaw یا Node را با آن آرگومانها اجرا کند.
cat > ~/.local/bin/openclaw-doppler <<'EOF'#!/usr/bin/env bashset -euo pipefailexec doppler run --project my-project --config production -- openclaw "$@"EOFchmod +x ~/.local/bin/openclaw-doppler openclaw gateway install --wrapper ~/.local/bin/openclaw-doppler --forceopenclaw gateway restartهمچنین میتوانید پوشاننده را از طریق محیط تنظیم کنید. gateway install اعتبارسنجی میکند که مسیر یک فایل اجرایی است، پوشاننده را در ProgramArguments سرویس مینویسد و OPENCLAW_WRAPPER را در محیط سرویس برای نصبهای مجدد اجباری، بهروزرسانیها و ترمیمهای بعدی doctor ماندگار میکند.
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --forceopenclaw doctorبرای حذف پوشاننده ماندگارشده، هنگام نصب مجدد OPENCLAW_WRAPPER را پاک کنید:
OPENCLAW_WRAPPER= openclaw gateway install --forceopenclaw gateway restartگزینههای فرمان
gateway status:--url،--token،--password،--timeout،--no-probe،--require-rpc،--deep،--jsongateway install:--port،--runtime <node|bun>(پیشفرض:node)،--token،--wrapper <path>،--force،--jsongateway restart:--safe،--skip-deferral،--force،--wait <duration>،--jsongateway uninstall|start:--jsongateway stop:--disable،--json
رفتار چرخهٔ حیات
- برای راهاندازی مجدد یک سرویس مدیریتشده از
gateway restartاستفاده کنید.gateway stopوgateway startرا بهعنوان جایگزین راهاندازی مجدد بهصورت زنجیرهای اجرا نکنید. - در macOS،
gateway stopبهطور پیشفرض ازlaunchctl bootoutاستفاده میکند که LaunchAgent را بدون ماندگارکردن حالت غیرفعال از نشست راهاندازی فعلی حذف میکند؛ بازیابی خودکار KeepAlive برای خرابیهای آینده فعال میماند وgateway startبدون نیاز به اجرای دستیlaunchctl enableآن را بهدرستی دوباره فعال میکند. برای سرکوب ماندگار KeepAlive و RunAtLoad، گزینهٔ--disableرا ارسال کنید تا Gateway تا اجرای صریح بعدیgateway startدوباره ایجاد نشود؛ زمانی از این گزینه استفاده کنید که توقف دستی باید پس از راهاندازی مجدد سیستم نیز حفظ شود. - فرمانهای چرخهٔ حیات برای اسکریپتنویسی گزینهٔ
--jsonرا میپذیرند.
احراز هویت و SecretRefها هنگام نصب
- وقتی احراز هویت توکنی به توکن نیاز دارد و
gateway.auth.tokenبا SecretRef مدیریت میشود،gateway installاعتبارسنجی میکند که SecretRef قابل حل است، اما توکن حلشده را در فرادادهٔ محیط سرویس ماندگار نمیکند. - اگر احراز هویت توکنی به توکن نیاز داشته باشد و SecretRef توکن پیکربندیشده حلنشده باشد، نصب بهجای ماندگارکردن متن سادهٔ جایگزین، بهصورت بسته شکست میخورد.
- برای احراز هویت با گذرواژه در
gateway run، بهجای--passwordدرونخطی،OPENCLAW_GATEWAY_PASSWORD،--password-fileیاgateway.auth.passwordمبتنی بر SecretRef را ترجیح دهید. - در حالت احراز هویت استنباطشده،
OPENCLAW_GATEWAY_PASSWORDکه فقط در پوسته تنظیم شده است، الزامات توکن نصب را آسانتر نمیکند؛ هنگام نصب یک سرویس مدیریتشده از پیکربندی ماندگار (gateway.auth.passwordیاenvدر پیکربندی) استفاده کنید. - اگر هر دو
gateway.auth.tokenوgateway.auth.passwordپیکربندی شده باشند وgateway.auth.modeتنظیم نشده باشد، نصب تا زمانی که حالت بهصراحت تنظیم شود مسدود میماند.
کشف Gatewayها (Bonjour)
gateway discover اعلانهای Gateway (_openclaw-gw._tcp) را جستوجو میکند.
- DNS-SD چندپخشی:
local. - DNS-SD تکپخشی (Bonjour گسترده): یک دامنه انتخاب کنید (برای نمونه:
openclaw.internal.) و DNS تفکیکشده بههمراه یک سرور DNS راهاندازی کنید؛ به Bonjour مراجعه کنید.
فقط Gatewayهایی که کشف Bonjour در آنها فعال است (پیشفرض)، اعلان را منتشر میکنند.
راهنماییهای TXT در هر اعلان: role (راهنمای نقش Gateway)، transport (راهنمای انتقال، برای نمونه gateway)، gatewayPort (درگاه WebSocket، معمولاً 18789)، tailnetDns (نام میزبان MagicDNS، در صورت موجود بودن)، gatewayTls / gatewayTlsSha256 (فعالبودن TLS و اثر انگشت گواهی). sshPort و cliPath فقط در حالت کشف کامل منتشر میشوند (discovery.mdns.mode: "full"؛ پیشفرض "minimal" است که آنها را حذف میکند؛ در نتیجه کلاینتها بهطور پیشفرض از درگاه 22 برای مقصدهای SSH استفاده میکنند).
gateway discover
openclaw gateway discover"--timeout--jsonbooleanخروجی قابلخواندن برای ماشین (همچنین سبکدهی/نشانگر چرخان را غیرفعال میکند).
نمونهها:
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'