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 doctor --fixرا میدهد و پس از تأیید، راهاندازی را یکبار دیگر امتحان میکند. اجراهای غیرتعاملی هرگز بهطور خودکار ترمیم نمیکنند؛ در عوض فرمان را نمایش میدهند. اگر پیکربندی ترمیمشده همچنان نامعتبر باشد، راهاندازی متوقف میماند. openclaw onboard --mode localوopenclaw setupمقدارgateway.mode=localرا مینویسند. اگر فایل پیکربندی وجود داشته باشد اماgateway.modeموجود نباشد، این وضعیت بهعنوان پیکربندی آسیبدیده/بازنویسیشده تلقی میشود و Gateway از حدسزدنlocalبرای شما خودداری میکند — فرایند آغازین را دوباره اجرا کنید، کلید را دستی تنظیم کنید، یا--allow-unconfiguredرا ارسال کنید.- اتصال به فراتر از loopback بدون احراز هویت مسدود است.
- مقادیر
--bindشاملlan،tailnetوcustomدر حال حاضر تنها از مسیرهای IPv4 تفکیک میشوند؛ راهاندازیهای میزبان شخصیِ فقط IPv6 به یک sidecar یا پراکسی IPv4 در جلوی Gateway نیاز دارند. SIGUSR1در صورت مجازبودن، راهاندازی مجدد درونپردازهای را فعال میکند.commands.restart(پیشفرض: فعال) اجرایSIGUSR1های ارسالشده از بیرون را کنترل میکند؛ برای مسدودکردن راهاندازیهای مجدد دستی با سیگنال سیستمعامل، آن را رویfalseتنظیم کنید. ابزار روبهعاملِgatewayفقطخواندنی است؛ عاملها از طریق ابزار واگذاریopenclawکه نیازمند تأیید انسان است، درخواست راهاندازی مجدد میدهند.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 را نادیده میگیرد).
--dev-ambient-channelsbooleanبه Gateway توسعه اجازه میدهد کانالها را بهطور خودکار از متغیرهای محیطی موجود پیکربندی کند. به --dev نیاز دارد.
--resetbooleanپیکربندی توسعه، اطلاعات اعتبارسنجی، نشستها و فضای کاری را بازنشانی میکند. به --dev نیاز دارد.
--forcebooleanپیش از شروع، هر شنوندهٔ موجود روی پورت مقصد را خاتمه میدهد. در پوستهٔ غیرتعاملی، این گزینه از خاتمهدادن شنوندهٔ تأییدشدهٔ Gateway خودداری میکند؛ بهجای آن از --dev یا یک --profile ایزوله با پورتی آزاد استفاده کنید.
--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 روی همان پورت نیز نیاز دارد؛ اگر هرکدام از شنوندهها نتواند متصل شود، راهاندازی شکست میخورد. مقدار wildcard یعنی 0.0.0.0 یک نام مستعار الزامی جداگانه اضافه نمیکند. راهاندازیهای میزبان شخصیِ فقط IPv6 به یک sidecar یا پراکسی IPv4 در جلوی Gateway نیاز دارند.
راهاندازی مجدد Gateway
openclaw gateway restartopenclaw gateway restart --safeopenclaw gateway restart --safe --skip-deferralopenclaw gateway restart --forceopenclaw gateway restart --wait 30s--safe از Gateway در حال اجرا میخواهد کارهای فعال را پیشبررسی کند و پس از تخلیهٔ آن کارها، یک راهاندازی مجدد تجمیعشده را زمانبندی کند. انتظار به 5 دقیقه محدود است؛ با پایان بودجهٔ زمانی، راهاندازی مجدد بهاجبار انجام میشود. --safe را نمیتوان با --force یا --wait ترکیب کرد.
--skip-deferral در یک راهاندازی مجدد امن، مانع تعویق بهدلیل کار فعال را دور میزند؛ بنابراین Gateway حتی با وجود مسدودکنندههای گزارششده، بلافاصله راهاندازی مجدد میشود. این گزینه به --safe نیاز دارد — وقتی تعویق روی وظیفهای مهارنشده گیر کرده است از آن استفاده کنید.
--wait <duration> بودجهٔ تخلیه را برای یک راهاندازی مجدد ساده (غیرامن) بازنویسی میکند. میلیثانیهٔ بدون پسوند یا پسوندهای واحد ms، s، m، h، d را میپذیرد (برای نمونه 30s، 5m، 1h30m)؛ --wait 0 بهطور نامحدود منتظر میماند. با --force یا --safe سازگار نیست.
--force تخلیهٔ کار فعال را نادیده میگیرد و بلافاصله راهاندازی مجدد میکند. restart ساده (بدون پرچم) رفتار فعلی راهاندازی مجدد مدیر سرویس را حفظ میکند.
ناظران خارجی
تنها زمانی OPENCLAW_SUPERVISOR_MODE=external را تنظیم کنید که مدیر پردازهٔ دیگری مالک چرخهٔ عمر Gateway باشد. در این حالت:
openclaw gateway restartرفتارهای موجودِ امن، اجباری و انتظار محدود را حفظ میکند، اما بهجای launchd، systemd یا Task Scheduler، Gateway تأییدشدهٔ در حال اجرا را هدف میگیرد.- عملیات بومی نصب، شروع، توقف و حذف سرویس رد میشوند و راهنمای استفاده از ناظر خارجی ارائه میشود.
- بهروزرسانی خودکار OpenClaw رد میشود تا ناظر بتواند Gateway را متوقف کند، محیط اجرا را جایگزین و نهایی کند و سپس آن را بهصورت امن دوباره راهاندازی کند.
- راهاندازی مجدد با پردازهای تازه، پیش از خروج پاک یک تحویل محدودشده را در SQLite مینویسد. اگر ماندگارکردن شکست بخورد، Gateway بهجای خروج بدون تحویل قابلمصرف، به راهاندازی مجدد درونپردازهای بازمیگردد.
OPENCLAW_SERVICE_REPAIR_POLICY=external همچنان یک سیاست ترمیم جداگانهٔ Doctor است. این متغیر مالکیت محیط اجرا را اعلام نمیکند؛ ناظرانی که به هر دو رفتار نیاز دارند باید هر دو متغیر را تنظیم کنند.
ناظران خارجی میتوانند از طریق قرارداد ماشینی پنهان، دربارهٔ تحویلهای راهاندازی مجدد مذاکره کنند و آنها را مصرف کنند:
openclaw gateway restart-handoff capabilities --jsonopenclaw gateway restart-handoff consume --expected-pid <pid> --jsonنسخهٔ پروتکل 1 از عملیات consume پشتیبانی میکند. مصرف، PID مورد انتظار و فیلدهای محدودشدهٔ تحویل را درون یک تراکنش فوری SQLite اعتبارسنجی میکند. تحویل پذیرفتهشده پیش از بازگرداندن موفقیت حذف میشود؛ بنابراین مصرفکنندگان همزمان یا تکراری نمیتوانند هر دو آن را بپذیرند. عدم تطابق PID برای مالک منطبق نگه داشته میشود؛ ردیفهای مفقود، منقضی و نامعتبر اجازهٔ راهاندازی مجدد نمیدهند.
درخواستهای ماشینی معتبر، JSON را با کد خروج 0 بازمیگردانند؛ نتایج بدون راهاندازی مجدد نیز شامل آن هستند. آرگومانهای نامعتبر reason: "invalid-expected-pid" را با کد خروج 2 بازمیگردانند؛ خرابیهای ذخیرهگاه وضعیت reason: "store-unavailable" را با کد خروج 1 بازمیگردانند. ناظران باید capabilities را دقیقاً روی همان محیط اجرا یا راهانداز مورد استفاده بررسی کنند، نه اینکه پشتیبانی را از رشتهٔ نسخهٔ OpenClaw استنباط کنند یا طرحوارهٔ خصوصی SQLite را مستقیماً بخوانند.
پروفایلگیری Gateway
OPENCLAW_GATEWAY_STARTUP_TRACE=1زمانبندی مرحلهها را هنگام راهاندازی ثبت میکند؛ از جمله تأخیرeventLoopMaxبرای هر مرحله و زمانبندی جدول جستوجوی Plugin (فهرست نصبشده، رجیستری manifest، برنامهریزی راهاندازی، کارهای نگاشت مالک).OPENCLAW_GATEWAY_RESTART_TRACE=1خطوطrestart trace:مختص راهاندازی مجدد را ثبت میکند: مدیریت سیگنال، تخلیهٔ کار فعال، مراحل خاموششدن، شروع بعدی، زمان آمادهشدن و معیارهای حافظه.OPENCLAW_DIAGNOSTICS=timelineهمراه باOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>یک خط زمانی تشخیصی JSONL را بهصورت best-effort برای هارنسهای 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 محلی روی رابط 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بهجای چاپ جزئیات پایداری، یک فایل فشردهٔ تشخیصی قابلاشتراک برای پشتیبانی مینویسد.
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
یک فایل فشردهٔ تشخیصی محلی برای گزارشهای اشکال مینویسد. برای مدل حریم خصوصی و محتوای بسته، به برونبری اطلاعات تشخیصی مراجعه کنید.
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را صریحاً ارائه کنید یا منبع راز را اصلاح کنید. پس از موفقیت کاوش، هشدارهای احراز هویت برطرفنشده نمایش داده نمیشوند. - خروجی JSON هنگامی که Gateway در حال اجرا آن را گزارش کند، شامل
gateway.versionاست؛ اگر کاوش دستدادن نتواند فرادادهٔ نسخه را فراهم کند،--require-rpcمیتواند به بار دادهٔ RPC مربوط بهstatus.runtimeVersionبازگردد. - هنگامی که وجود یک سرویس در حال گوشدادن کافی نیست و سالمبودن RPC با دامنهٔ خواندن نیز لازم است، در اسکریپتها/اتوماسیون از
--require-rpcاستفاده کنید. --deepنصبهای اضافی launchd/systemd/schtasks را اسکن میکند؛ هنگامی که چند سرویس شبیه Gateway پیدا شود، خروجی قابلخواندن برای انسان نکات پاکسازی را چاپ میکند (معمولاً در هر دستگاه یک Gateway اجرا کنید) و در صورت مرتبطبودن، واگذاری اخیر راهاندازی مجدد ناظر را گزارش میدهد.--deepهمچنین اعتبارسنجی پیکربندی را در حالت آگاه از Plugin (pluginValidation: "full") اجرا میکند و هشدارهای مانیفست Plugin را نمایش میدهد (برای مثال نبود فرادادهٔ پیکربندی کانال).gateway statusپیشفرض، مسیر سریع فقطخواندنی را حفظ میکند که اعتبارسنجی Plugin را نادیده میگیرد.- خروجی قابلخواندن برای انسان، مسیر فایل گزارش برطرفشده را بههمراه مسیرها/اعتبار پیکربندی CLI در مقایسه با سرویس دربر میگیرد تا به تشخیص انحراف پروفایل یا پوشهٔ وضعیت کمک کند.
- خروجی قابلخواندن برای انسان شامل
Gateway heap:با محدودیت اعمالشده و نحوهٔ استخراج تطبیقی آن است. خروجی JSON همان گزارش را بهشکلservice.gatewayHeapارائه میکند.
بررسیهای انحراف احراز هویت systemd در Linux
- بررسیهای انحراف احراز هویت سرویس، هر دو
Environment=وEnvironmentFile=را از واحد میخوانند (از جمله%h، مسیرهای نقلقولشده، چند فایل و فایلهای اختیاری-). - SecretRefهای
gateway.auth.tokenرا با استفاده از محیط ادغامشدهٔ زمان اجرا برطرف میکند (ابتدا محیط فرمان سرویس، سپس محیط فرایند بهعنوان مسیر جایگزین). - هنگامی که احراز هویت با توکن عملاً فعال نباشد (تنظیم صریح
gateway.auth.modeبهpassword/none/trusted-proxy، یا تنظیمنبودن حالت در شرایطی که گذرواژه میتواند اولویت پیدا کند و هیچ توکن نامزدی نمیتواند اولویت پیدا کند)، بررسیهای انحراف توکن از برطرفسازی توکن پیکربندی صرفنظر میکنند.
gateway probe
فرمان «اشکالزدایی همهچیز». این فرمان همیشه موارد زیر را کاوش میکند:
- Gateway راه دور پیکربندیشدهٔ شما (در صورت تنظیم)، و
- localhost (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">
از این پورت برای هدف کاوش loopback محلی و پورت راه دور تونل SSH استفاده میکند. بدون --url، این گزینه فقط هدف loopback محلی را بهجای نشانی محیطی Gateway پیکربندیشده، پورت محیطی یا هدفهای راه دور انتخاب میکند.
تفسیر
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: بهترین مقصد برای در نظر گرفتن بهعنوان برندهٔ فعال، بهترتیب: URL صریح، تونل SSH، مقصد راهدور پیکربندیشده، حلقهٔ بازگشتی محلی.warnings[]: رکوردهای هشدار با تلاش حداکثری، شاملcode،messageوtargetIdsاختیاری.network: راهنمای URL حلقهٔ بازگشتی محلی/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، URL پروکسی یا URL راهدور پیکربندیشده به همان 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 راهدوری که فقط روی حلقهٔ بازگشتی در دسترس است، در 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>(پیشفرض:node)،--token،--wrapper <path>،--force،--jsongateway restart:--safe،--skip-deferral،--force،--wait <duration>،--jsongateway uninstall|start:--jsongateway stop:--disable،--force،--json
رفتار چرخهٔ عمر
gateway startایدمپوتنت است: وقتی سرویس مدیریتشده از قبل در حال اجرا باشد، فرایند در حال اجرا را گزارش میکند و آن را دستنخورده باقی میگذارد. سرویس بارگیریشده اما متوقف، مانند قبل آغاز میشود.- برای راهاندازی مجدد سرویس مدیریتشده از
gateway restartاستفاده کنید.gateway stopوgateway startرا بهعنوان جایگزین راهاندازی مجدد زنجیره نکنید. - در پوستهٔ غیرتعاملی،
gateway stopبه--forceنیاز دارد. پایانههای تعاملی رفتار فعلی بدون اعلان را حفظ میکنند. برای خودکارسازی و آزمونها،gateway run --devیا یک--profileایزوله با پورتی آزاد را ترجیح دهید. - در macOS،
gateway stopبهطور پیشفرض ازlaunchctl bootoutاستفاده میکند که LaunchAgent را بدون پایدارسازی غیرفعالسازی از نشست راهاندازی فعلی حذف میکند — بازیابی خودکار KeepAlive برای خرابیهای آینده فعال میماند وgateway startبدون نیاز بهlaunchctl enableدستی، دوباره بهدرستی فعال میشود. برای سرکوب پایدار KeepAlive و RunAtLoad، --disableرا ارسال کنید تا Gateway تاgateway startصریح بعدی دوباره ایجاد نشود؛ وقتی توقف دستی باید پس از راهاندازی مجدد سیستم نیز باقی بماند، از این گزینه استفاده کنید. - تغییرات چرخهٔ عمر Gateway رکوردهای ممیزی کلید-مقدار را با تلاش حداکثری به
<state-dir>/logs/gateway-restart.logمیافزایند، از جمله عملیات آغاز، توقف و راهاندازی مجدد CLI، درخواستهای راهاندازی مجدد ایمن، راهاندازیهای مجدد ناظر و واگذاریهای جداشده. - فرمانهای چرخهٔ عمر برای اسکریپتنویسی
--jsonرا میپذیرند.
اندازهگذاری heap برای Gateway مدیریتشده
gateway installیک مقدارNODE_OPTIONSمختص heap برای سرویس Gateway مدیریتشده مینویسد. وقتی Node محدودیت کانتینر یا سرویس را گزارش کند، 50% حافظهٔ محدودشده و در غیر این صورت 50% حافظهٔ فیزیکی را هدف قرار میدهد.- بازهٔ هدف اسمی 2048–8192 MiB است، با سقف اضافی 75% برای فضای آزاد حافظهٔ بومی. در میزبانهای کوچک، این سقف فضای آزاد میتواند حد اعمالشده را به کمتر از کف اسمی 2048 MiB برساند.
- یک
--max-old-space-sizeصریح و معتبر که از قبل در سرویس نصبشده ذخیره شده باشد، در نصبهای مجدد اجباری و تعمیرات doctor حفظ میشود. دیگر پرچمهایNODE_OPTIONSبه سرویس مدیریتشده منتقل نمیشوند. NODE_OPTIONSمحیطی پوسته این خطمشی را بازنویسی نمیکند. برای بررسی مقدار نصبشده ازgateway statusیاdoctorاستفاده کنید؛ برای بازتولید فرادادهٔ سرویسهای قدیمی که تنظیم heap مدیریتشده ندارند،openclaw gateway install --forceرا اجرا کنید.- این خطمشی فقط برای سرویس Gateway مدیریتشده اعمال میشود.
gateway runپیشزمینه، سرویسهای Node و واحدهای ناظر دستنویس، پیکربندی زمان اجرای خود را حفظ میکنند.
احراز هویت و SecretRefها هنگام نصب
- وقتی احراز هویت توکنی به توکن نیاز دارد و
gateway.auth.tokenتوسط SecretRef مدیریت میشود،gateway installقابل حل بودن SecretRef را اعتبارسنجی میکند، اما توکن حلشده را در فرادادهٔ محیط سرویس پایدار نمیکند. - اگر احراز هویت توکنی به توکن نیاز داشته باشد و SecretRef توکن پیکربندیشده حلنشده باشد، نصب بهصورت بسته شکست میخورد و متن سادهٔ جایگزین را پایدار نمیکند.
- برای احراز هویت با گذرواژه روی
gateway run، OPENCLAW_GATEWAY_PASSWORD، --password-fileیاgateway.auth.passwordمبتنی بر SecretRef را به--passwordدرونخطی ترجیح دهید. - در حالت احراز هویت استنباطشده،
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" است که آنها را حذف میکند — در این صورت، کلاینتها مقصدهای SSH را بهطور پیشفرض روی پورت 22 قرار میدهند).
gateway discover
openclaw gateway discover"--timeout--jsonbooleanخروجی قابل خواندن توسط ماشین (همچنین سبکدهی/نشانگر چرخان را غیرفعال میکند).
مثالها:
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'