Gateway
راهنمای عملیاتی Gateway
از این صفحه برای راهاندازی روز نخست و عملیات روز دوم سرویس Gateway استفاده کنید.
تشخیصهای مبتنی بر نشانهها همراه با زنجیرههای دقیق فرمان و امضاهای گزارش.
راهنمای راهاندازی وظیفهمحور + مرجع کامل پیکربندی.
قرارداد SecretRef، رفتار اسنپشات زمان اجرا و عملیات مهاجرت/بارگذاری مجدد.
قواعد دقیق مقصد/مسیر secrets apply و رفتار پروفایل احراز هویت فقطارجاعی.
راهاندازی محلی ۵دقیقهای
راهاندازی Gateway
openclaw gateway --port 18789# اشکالزدایی/ردیابی در stdio بازتاب داده میشودopenclaw gateway --port 18789 --verbose# شنونده را در درگاه انتخابشده بهاجبار متوقف کنید، سپس راهاندازی کنیدopenclaw gateway --forceبررسی سلامت سرویس
openclaw gateway statusopenclaw statusopenclaw logs --followخط مبنای سالم: Runtime: running، Connectivity probe: ok و یک خط Capability که با انتظار شما مطابقت دارد. برای اثبات RPC با دامنه خواندن، و نه صرفاً دسترسپذیری، از openclaw gateway status --require-rpc استفاده کنید.
اعتبارسنجی آمادگی کانال
openclaw channels status --probeبا یک Gateway دسترسپذیر، این فرمان کاوشهای زنده کانال برای هر حساب و ممیزیهای اختیاری را اجرا میکند. اگر Gateway دسترسپذیر نباشد، CLI به خلاصههای کانال صرفاً مبتنی بر پیکربندی بازمیگردد.
مدل زمان اجرا
- یک فرایند همیشهفعال برای مسیریابی، صفحه کنترل و اتصالهای کانال.
- یک درگاه چندتسهیمی واحد برای:
- کنترل/RPC مبتنی بر WebSocket
- APIهای HTTP (
/v1/models،/v1/embeddings،/v1/chat/completions،/v1/responses،/tools/invoke) - مسیرهای HTTP مربوط به Plugin، مانند
/api/v1/admin/rpcاختیاری - رابط کاربری کنترل و هوکها
- حالت اتصال پیشفرض:
loopback. درون یک محیط کانتینری شناساییشده، پیشفرض مؤثرautoاست (برای هدایت درگاه به0.0.0.0تفکیک میشود)، مگر اینکه سرویسدهی/تونل Tailscale فعال باشد که همیشهloopbackرا تحمیل میکند. - احراز هویت بهطور پیشفرض الزامی است. راهاندازیهای مبتنی بر راز مشترک از
gateway.auth.token/gateway.auth.password(یاOPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD) استفاده میکنند و راهاندازیهای پراکسی معکوس غیر-loopback میتوانند ازgateway.auth.mode: "trusted-proxy"استفاده کنند.
نقاط پایانی سازگار با OpenAI
سطح سازگاری OpenClaw با بیشترین اهرم:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/chat/completionsPOST /v1/responses
دلیل اهمیت این مجموعه:
- بیشتر یکپارچهسازیهای Open WebUI، LobeChat و LibreChat ابتدا
/v1/modelsرا کاوش میکنند. - بسیاری از پایپلاینهای RAG و حافظه انتظار
/v1/embeddingsرا دارند. - کلاینتهای بومی عامل بهطور فزایندهای
/v1/responsesرا ترجیح میدهند.
/v1/models عاملمحور است: برای هر عامل پیکربندیشده، openclaw، openclaw/default و openclaw/<agentId> را بازمیگرداند. openclaw/default نام مستعار پایداری است که همیشه به عامل پیشفرض پیکربندیشده نگاشت میشود. هنگامی که میخواهید ارائهدهنده/مدل پشتیبان را بازنویسی کنید، x-openclaw-model را ارسال کنید؛ در غیر این صورت، تنظیمات عادی مدل و تعبیهسازی عامل انتخابشده کنترل را حفظ میکند.
همه این موارد روی درگاه اصلی Gateway اجرا میشوند و از همان مرز احراز هویت اپراتور مورد اعتماد استفاده میکنند که بقیه API HTTP مربوط به Gateway بهکار میبرند.
RPC مدیریتی HTTP (POST /api/v1/admin/rpc) یک مسیر Plugin جداگانه و بهطور پیشفرض غیرفعال برای ابزارهای میزبان است که نمیتوانند از RPC مبتنی بر WebSocket استفاده کنند. به RPC مدیریتی HTTP مراجعه کنید.
تقدم درگاه و اتصال
| تنظیم | ترتیب تعیین |
|---|---|
| درگاه Gateway | --port ← OPENCLAW_GATEWAY_PORT ← gateway.port ← 18789 |
| حالت اتصال | CLI/بازنویسی ← gateway.bind ← loopback (یا auto در کانتینرها) |
سرویسهای Gateway نصبشده، --port تعیینشده را در فراداده ناظر ثبت میکنند. پس از تغییر gateway.port، فرمان openclaw doctor --fix یا openclaw gateway install --force را اجرا کنید تا launchd/systemd/schtasks فرایند را روی درگاه جدید راهاندازی کند.
راهاندازی Gateway هنگام مقداردهی اولیه مبدأهای محلی رابط کاربری کنترل برای اتصالهای غیر-loopback، از همان درگاه و اتصال مؤثر استفاده میکند. برای نمونه، --bind lan --port 3000 پیش از اجرای اعتبارسنجی زمان اجرا، http://localhost:3000 و http://127.0.0.1:3000 را مقداردهی اولیه میکند. هر مبدأ مرورگر راهدور، مانند URLهای پراکسی HTTPS، را صراحتاً به gateway.controlUi.allowedOrigins اضافه کنید.
حالتهای بارگذاری مجدد گرم
gateway.reload.mode |
رفتار |
|---|---|
off |
بدون بارگذاری مجدد پیکربندی |
hot |
فقط تغییرات ایمن برای اعمال گرم را اعمال میکند |
restart |
هنگام تغییرات نیازمند بارگذاری مجدد، بازراهاندازی میکند |
hybrid (پیشفرض) |
در صورت ایمنبودن بهصورت گرم اعمال میکند و در صورت نیاز بازراهاندازی میکند |
مجموعه فرمانهای اپراتور
openclaw gateway statusopenclaw gateway status --deep # یک پویش سرویس در سطح سیستم اضافه میکندopenclaw gateway status --jsonopenclaw gateway installopenclaw gateway restartopenclaw gateway stopopenclaw secrets reloadopenclaw logs --followopenclaw doctorgateway status --deep برای کشف سرویس بیشتر (LaunchDaemonها/واحدهای سیستمی systemd/schtasks) است، نه یک کاوش عمیقتر سلامت RPC.
چند Gateway (روی یک میزبان)
بیشتر نصبها باید روی هر دستگاه یک Gateway اجرا کنند. یک Gateway میتواند میزبان چند عامل و کانال باشد. تنها زمانی به چند Gateway نیاز دارید که عمداً جداسازی یا یک ربات نجات بخواهید.
بررسیهای مفید:
openclaw gateway status --deepopenclaw gateway probeآنچه باید انتظار داشت:
gateway status --deepمیتواندOther gateway-like services detected (best effort)را گزارش کند و هنگامی که نصبهای قدیمی launchd/systemd/schtasks هنوز باقی ماندهاند، راهنمای پاکسازی را نمایش دهد.gateway probeمیتواند دربارهmultiple reachable gateway identitiesهشدار دهد، هنگامی که Gatewayهای متمایز پاسخ میدهند یا OpenClaw نمیتواند اثبات کند مقصدهای دسترسپذیر همان Gateway هستند. یک تونل SSH، نشانی پراکسی یا نشانی راهدور پیکربندیشده به همان Gateway، حتی اگر درگاههای انتقال متفاوت باشند، یک Gateway با چند انتقال محسوب میشود.- اگر این کار عمدی است، درگاهها، پیکربندی/وضعیت و ریشههای فضای کاری را برای هر Gateway جدا کنید.
چکلیست هر نمونه:
gateway.portیکتاOPENCLAW_CONFIG_PATHیکتاOPENCLAW_STATE_DIRیکتاagents.defaults.workspaceیکتا
نمونه:
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json OPENCLAW_STATE_DIR=~/.openclaw-a openclaw gateway --port 19001OPENCLAW_CONFIG_PATH=~/.openclaw/b.json OPENCLAW_STATE_DIR=~/.openclaw-b openclaw gateway --port 19002راهاندازی تفصیلی: /gateway/multiple-gateways.
دسترسی راهدور
روش ترجیحی: Tailscale/VPN. روش جایگزین: تونل SSH.
ssh -N -L 18789:127.0.0.1:18789 user@gateway-hostسپس کلاینتها را بهصورت محلی به ws://127.0.0.1:18789 متصل کنید.
مراجعه کنید به: Gateway راهدور، احراز هویت، Tailscale.
نظارت و چرخه عمر سرویس
برای قابلیت اطمینان مشابه محیط عملیاتی، از اجرای تحت نظارت استفاده کنید.
macOS (launchd)
openclaw gateway installopenclaw gateway statusopenclaw gateway restartopenclaw gateway stopبرای بازراهاندازی از openclaw gateway restart استفاده کنید. openclaw gateway stop و openclaw gateway start را بهعنوان جایگزین بازراهاندازی به یکدیگر زنجیر نکنید.
در macOS، gateway stop بهطور پیشفرض از launchctl bootout استفاده میکند. این کار LaunchAgent را بدون ماندگارکردن غیرفعالسازی از نشست راهاندازی فعلی حذف میکند؛ بنابراین بازیابی خودکار KeepAlive پس از خرابیهای غیرمنتظره همچنان کار میکند و gateway start دوباره آن را بهدرستی فعال میکند. برای جلوگیری ماندگار از ایجاد مجدد خودکار در طول راهاندازیهای مجدد، --disable را ارسال کنید: openclaw gateway stop --disable.
برچسبهای LaunchAgent عبارتاند از ai.openclaw.gateway (پیشفرض) یا ai.openclaw.<profile> (پروفایل نامگذاریشده). openclaw doctor انحراف پیکربندی سرویس را ممیزی و اصلاح میکند.
Linux (کاربر systemd)
openclaw gateway installsystemctl --user enable --now openclaw-gateway[-<profile>].serviceopenclaw gateway statusبرای ماندگاری پس از خروج، lingering را فعال کنید:
sudo loginctl enable-linger $(whoami)در یک سرور بدون رابط گرافیکی و فاقد نشست دسکتاپ، پیش از تلاش مجدد برای فرمانهای systemctl --user، همچنین مطمئن شوید XDG_RUNTIME_DIR تنظیم شده است (export XDG_RUNTIME_DIR=/run/user/$(id -u)).
نمونه واحد کاربر دستی برای زمانی که به مسیر نصب سفارشی نیاز دارید:
[Unit]Description=OpenClaw GatewayAfter=network-online.targetWants=network-online.targetStartLimitBurst=5StartLimitIntervalSec=60 [Service]ExecStart=/usr/local/bin/openclaw gateway --port 18789Restart=alwaysRestartSec=5RestartPreventExitStatus=78TimeoutStopSec=30TimeoutStartSec=30SuccessExitStatus=0 143OOMPolicy=continueKillMode=control-group [Install]WantedBy=default.targetWindows (بومی)
openclaw gateway installopenclaw gateway status --jsonopenclaw gateway restartopenclaw gateway stopراهاندازی مدیریتشده بومی Windows از یک Scheduled Task با نام OpenClaw Gateway
(یا OpenClaw Gateway (<profile>) برای پروفایلهای نامگذاریشده) استفاده میکند. اگر ایجاد Scheduled Task
رد شود، OpenClaw به یک راهانداز پوشه Startup برای هر کاربر بازمیگردد
که به gateway.cmd درون پوشه وضعیت اشاره میکند.
Linux (سرویس سیستم)
برای میزبانهای چندکاربره/همیشهفعال از یک واحد سیستم استفاده کنید.
sudo systemctl daemon-reloadsudo systemctl enable --now openclaw-gateway[-<profile>].serviceاز همان بدنه سرویس واحد کاربر استفاده کنید، اما آن را زیر
/etc/systemd/system/openclaw-gateway[-<profile>].service نصب کنید و اگر فایل اجرایی openclaw شما در جای دیگری قرار دارد،
ExecStart= را تنظیم کنید.
همزمان اجازه ندهید openclaw doctor --fix یک سرویس Gateway در سطح کاربر برای همان پروفایل/درگاه نصب کند. هنگامی که Doctor یک سرویس Gateway متعلق به OpenClaw را در سطح سیستم پیدا کند، از آن نصب خودکار خودداری میکند؛ زمانی که واحد سیستم مالک چرخه عمر است، از OPENCLAW_SERVICE_REPAIR_POLICY=external استفاده کنید.
خطاهای پیکربندی نامعتبر با کد 78 خارج میشوند. واحدهای systemd لینوکس از RestartPreventExitStatus=78 استفاده میکنند تا تا زمان اصلاح پیکربندی از راهاندازی مجدد جلوگیری شود. launchd و Windows Task Scheduler قاعده توقف معادل برای هر کد خروج ندارند؛ بنابراین Gateway تاریخچه راهاندازیهای سریع و ناپاک را نیز ماندگار میکند و پس از شکستهای مکرر راهاندازی، شروع خودکار حسابهای کانال/ارائهدهنده را متوقف میکند. در آن حالت امن، صفحه کنترل همچنان برای بازرسی و تعمیر راهاندازی میشود، بارگذاریهای مجدد گرم پیکربندی و secrets.reload از بازراهاندازی خودکار کانالها خودداری میکنند و یک درخواست صریح channels.start از سوی اپراتور میتواند این توقف را لغو کند.
مسیر سریع پروفایل توسعه
openclaw --dev setupopenclaw --dev gateway --allow-unconfiguredopenclaw --dev statusپیشفرضها شامل وضعیت/پیکربندی جداشده و درگاه پایه Gateway با مقدار 19001 هستند.
مرجع سریع پروتکل (نمای اپراتور)
- نخستین فریم کلاینت باید
connectباشد. - Gateway یک فریم
hello-okرا همراه با یکsnapshot (presence،health،stateVersion،uptimeMs) بهعلاوهٔ محدودیتهایpolicy (maxPayload،maxBufferedBytes،tickIntervalMs) برمیگرداند. hello-ok.features.methods/eventsیک فهرست اکتشافی محافظهکارانه هستند، نه خروجی تولیدشدهای از تمام مسیرهای کمکی قابل فراخوانی.- درخواستها:
req(method, params)→res(ok/payload|error). - رویدادهای رایج شامل
connect.challenge،agent،chat،session.message،session.operation،session.tool، رویدادهای انتخابیsession.approval،sessions.changed،presence،tick،health،heartbeat، رویدادهای چرخهٔ عمر جفتسازی/تأیید وshutdownهستند.
اجرای عاملها دو مرحله دارد:
- تأیید دریافت فوری پذیرفتهشدن (
status:"accepted") - پاسخ نهایی تکمیل (
status:"ok"|"error")، با رویدادهای جریانیagentدر فاصلهٔ میان آنها.
مستندات کامل پروتکل را ببینید: پروتکل Gateway.
بررسیهای عملیاتی
زندهبودن
- اتصال WS را باز کنید و
connectرا بفرستید. - انتظار پاسخ
hello-okهمراه با تصویر لحظهای وضعیت را داشته باشید.
آمادگی
openclaw gateway statusopenclaw channels status --probeopenclaw healthبازیابی شکاف
رویدادها دوباره پخش نمیشوند. در صورت وجود شکاف در توالی، پیش از ادامه وضعیت را تازهسازی کنید (health، system-presence).
نشانههای رایج خرابی
| نشانه | مشکل احتمالی |
|---|---|
refusing to bind gateway ... without auth |
اتصال به آدرسی غیر از loopback بدون مسیر احراز هویت معتبر Gateway |
another gateway instance is already listening / EADDRINUSE |
تداخل پورت |
Gateway start blocked: set gateway.mode=local |
پیکربندی روی حالت راهدور تنظیم شده است، یا gateway.mode در پیکربندی آسیبدیده وجود ندارد |
unauthorized هنگام اتصال |
عدم تطابق احراز هویت میان کلاینت و Gateway |
برای مراحل کامل تشخیص، از عیبیابی Gateway استفاده کنید.
تضمینهای ایمنی
- کلاینتهای پروتکل Gateway هنگامی که Gateway در دسترس نباشد، سریعاً با خطا متوقف میشوند (هیچ بازگشت ضمنی به کانال مستقیم وجود ندارد).
- فریمهای نخست نامعتبر یا غیراتصالی رد میشوند و اتصال بسته میشود.
- خاموشسازی تدریجی، پیش از بستهشدن سوکت رویداد
shutdownرا منتشر میکند.