Gateway
راهنمای عملیاتی Gateway
از این صفحه برای راهاندازی روز اول و عملیات روز دوم سرویس Gateway استفاده کنید.
عیبیابی مبتنی بر نشانهها با نردبانهای دقیق فرمان و امضاهای لاگ.
راهنمای راهاندازی وظیفهمحور + مرجع کامل پیکربندی.
قرارداد SecretRef، رفتار snapshot زمان اجرا، و عملیات مهاجرت/بارگذاری مجدد.
قواعد دقیق هدف/مسیر secrets apply و رفتار نمایه احراز هویت فقط-ارجاع.
راهاندازی محلی ۵ دقیقهای
Gateway را شروع کنید
openclaw gateway --port 18789# debug/trace mirrored to stdioopenclaw gateway --port 18789 --verbose# force-kill listener on selected port, then startopenclaw 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 قابل دسترس، این فرمان probeهای زنده کانال را برای هر حساب و auditهای اختیاری اجرا میکند. اگر Gateway قابل دسترس نباشد، CLI بهجای خروجی probe زنده، به خلاصههای کانال فقط مبتنی بر پیکربندی برمیگردد.
مدل زمان اجرا
- یک فرایند همیشه روشن برای مسیریابی، control plane، و اتصالهای کانال.
- یک پورت multiplexed واحد برای:
- کنترل/RPC WebSocket
- APIهای HTTP (
/v1/models,/v1/embeddings,/v1/chat/completions,/v1/responses,/tools/invoke) - مسیرهای HTTP مربوط به Plugin، مانند
/api/v1/admin/rpcاختیاری - Control UI و hookها
- حالت bind پیشفرض:
loopback. - احراز هویت بهطور پیشفرض الزامی است. راهاندازیهای shared-secret از
gateway.auth.token/gateway.auth.password(یاOPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD) استفاده میکنند، و راهاندازیهای reverse-proxy غیر loopback میتوانند ازgateway.auth.mode: "trusted-proxy"استفاده کنند.
endpointهای سازگار با OpenAI
سطح سازگاری پربازده OpenClaw اکنون اینهاست:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/chat/completionsPOST /v1/responses
چرایی اهمیت این مجموعه:
- بیشتر یکپارچهسازیهای Open WebUI، LobeChat، و LibreChat ابتدا
/v1/modelsرا probe میکنند. - بسیاری از pipelineهای RAG و حافظه انتظار
/v1/embeddingsرا دارند. - کلاینتهای agent-native بهطور فزایندهای
/v1/responsesرا ترجیح میدهند.
نکته برنامهریزی:
/v1/modelsاولویت را به agent میدهد:openclaw،openclaw/default، وopenclaw/<agentId>را برمیگرداند.openclaw/defaultalias پایداری است که همیشه به agent پیشفرض پیکربندیشده نگاشت میشود.- وقتی override مربوط به ارائهدهنده/مدل backend میخواهید از
x-openclaw-modelاستفاده کنید؛ در غیر این صورت، تنظیم عادی مدل و embedding مربوط به agent انتخابشده کنترل را در دست نگه میدارد.
همه اینها روی پورت اصلی Gateway اجرا میشوند و همان مرز احراز هویت اپراتور قابل اعتماد را مثل بقیه APIهای HTTP Gateway استفاده میکنند.
RPC مدیریتی HTTP (POST /api/v1/admin/rpc) یک مسیر Plugin جداگانه و بهطور پیشفرض خاموش برای ابزارهای میزبان است که نمیتوانند از RPC WebSocket استفاده کنند. RPC مدیریتی HTTP را ببینید.
تقدم پورت و bind
| تنظیمات | ترتیب resolve |
|---|---|
| پورت Gateway | --port → OPENCLAW_GATEWAY_PORT → gateway.port → 18789 |
| حالت bind | CLI/override → gateway.bind → loopback |
سرویسهای Gateway نصبشده مقدار resolveشده --port را در metadata supervisor ثبت میکنند. پس از تغییر gateway.port، openclaw doctor --fix یا openclaw gateway install --force را اجرا کنید تا launchd/systemd/schtasks فرایند را روی پورت جدید شروع کند.
راهاندازی Gateway هنگام seed کردن originهای محلی Control UI برای bindهای غیر loopback از همان پورت و bind مؤثر استفاده میکند. برای مثال، --bind lan --port 3000
پیش از اجرای اعتبارسنجی زمان اجرا، http://localhost:3000 و http://127.0.0.1:3000 را seed میکند. هر origin مرورگر راه دور، مانند URLهای proxy مبتنی بر HTTPS، را بهصراحت به
gateway.controlUi.allowedOrigins اضافه کنید.
حالتهای hot reload
gateway.reload.mode |
رفتار |
|---|---|
off |
بدون بارگذاری مجدد پیکربندی |
hot |
فقط تغییرات hot-safe را اعمال میکند |
restart |
هنگام تغییراتی که نیازمند reload هستند restart میکند |
hybrid (پیشفرض) |
وقتی امن باشد hot-apply میکند، و وقتی لازم باشد restart میکند |
مجموعه فرمانهای اپراتور
openclaw gateway statusopenclaw gateway status --deep # adds a system-level service scanopenclaw gateway status --jsonopenclaw gateway installopenclaw gateway restartopenclaw gateway stopopenclaw secrets reloadopenclaw logs --followopenclaw doctorgateway status --deep برای کشف سرویس اضافی است (LaunchDaemons/واحدهای systemd system/schtasks)، نه probe سلامت RPC عمیقتر.
چند Gateway (همان میزبان)
بیشتر نصبها باید برای هر ماشین یک Gateway اجرا کنند. یک Gateway واحد میتواند چند agent و کانال را میزبانی کند.
فقط زمانی به چند Gateway نیاز دارید که عمداً isolation یا bot نجات میخواهید.
بررسیهای مفید:
openclaw gateway status --deepopenclaw gateway probeانتظار چه چیزی را داشته باشید:
gateway status --deepمیتواندOther gateway-like services detected (best effort)را گزارش کند و وقتی نصبهای قدیمی launchd/systemd/schtasks هنوز وجود دارند، راهنمای cleanup چاپ کند.gateway probeوقتی Gatewayهای متمایز پاسخ میدهند، یا وقتی OpenClaw نمیتواند ثابت کند هدفهای قابل دسترس همان Gateway هستند، میتواند دربارهmultiple reachable gateway identitiesهشدار دهد. یک تونل SSH، URL proxy، یا URL راه دور پیکربندیشده به همان Gateway، یک Gateway با چند transport است، حتی وقتی پورتهای transport متفاوت باشند.- اگر این عمدی است، پورتها، پیکربندی/وضعیت، و ریشههای workspace را برای هر 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. fallback: تونل SSH.
ssh -N -L 18789:127.0.0.1:18789 user@hostسپس کلاینتها را بهصورت محلی به ws://127.0.0.1:18789 وصل کنید.
ببینید: Gateway راه دور، احراز هویت، Tailscale.
نظارت و چرخه عمر سرویس
برای قابلیت اطمینان شبیه production از اجراهای تحت نظارت استفاده کنید.
macOS (launchd)
openclaw gateway installopenclaw gateway statusopenclaw gateway restartopenclaw gateway stopبرای restartها از openclaw gateway restart استفاده کنید. openclaw gateway stop و openclaw gateway start را بهعنوان جایگزین restart زنجیره نکنید.
در macOS، gateway stop بهطور پیشفرض از launchctl bootout استفاده میکند — این LaunchAgent را از session بوت فعلی حذف میکند بدون آنکه disable را پایدار کند، بنابراین بازیابی خودکار KeepAlive پس از crashهای غیرمنتظره همچنان کار میکند و gateway start دوباره بهشکلی تمیز فعال میکند. برای سرکوب پایدار auto-respawn در rebootها، --disable را پاس بدهید: openclaw gateway stop --disable.
labelهای LaunchAgent عبارتاند از ai.openclaw.gateway (پیشفرض) یا ai.openclaw.<profile> (نمایه نامگذاریشده). openclaw doctor drift پیکربندی سرویس را audit و repair میکند.
Linux (کاربر systemd)
openclaw gateway installsystemctl --user enable --now openclaw-gateway[-<profile>].serviceopenclaw gateway statusبرای ماندگاری پس از logout، lingering را فعال کنید:
sudo loginctl enable-linger <user>مثال واحد کاربری دستی وقتی به مسیر نصب سفارشی نیاز دارید:
[Unit]Description=OpenClaw GatewayAfter=network-online.targetWants=network-online.target [Service]ExecStart=/usr/local/bin/openclaw gateway --port 18789Restart=alwaysRestartSec=5TimeoutStopSec=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 به launcher پوشه Startup هر کاربر fallback میکند
که به gateway.cmd داخل دایرکتوری وضعیت اشاره میکند.
Linux (سرویس system)
برای میزبانهای چندکاربره/همیشه روشن از واحد system استفاده کنید.
sudo systemctl daemon-reloadsudo systemctl enable --now openclaw-gateway[-<profile>].serviceاز همان بدنه سرویس واحد کاربری استفاده کنید، اما آن را زیر
/etc/systemd/system/openclaw-gateway[-<profile>].service نصب کنید و اگر binary openclaw شما جای دیگری قرار دارد،
ExecStart= را تنظیم کنید.
اجازه ندهید openclaw doctor --fix هم برای همان نمایه/پورت یک سرویس Gateway سطح کاربر نصب کند. وقتی Doctor یک سرویس OpenClaw Gateway سطح system پیدا میکند، آن نصب خودکار را رد میکند؛ وقتی واحد system مالک چرخه عمر است، از OPENCLAW_SERVICE_REPAIR_POLICY=external استفاده کنید.
مسیر سریع نمایه توسعه
openclaw --dev setupopenclaw --dev gateway --allow-unconfiguredopenclaw --dev statusپیشفرضها شامل وضعیت/پیکربندی جداشده و پورت پایه Gateway یعنی 19001 هستند.
مرجع سریع پروتکل (نمای اپراتور)
- نخستین frame کلاینت باید
connectباشد. - Gateway یک snapshot با
hello-okبرمیگرداند (presence،health،stateVersion،uptimeMs، limits/policy). hello-ok.features.methods/eventsفهرست کشف محافظهکارانه هستند، نه dump تولیدشده از همه مسیرهای helper قابل فراخوانی.- درخواستها:
req(method, params)→res(ok/payload|error). - رویدادهای رایج شامل
connect.challenge،agent،chat،session.message،session.operation،session.tool،sessions.changed،presence،tick،health،heartbeat، رویدادهای چرخه عمر pairing/approval، وshutdownهستند.
اجرای agent دو مرحلهای است:
- ack پذیرفتهشده فوری (
status:"accepted") - پاسخ تکمیل نهایی (
status:"ok"|"error")، همراه با رویدادهای streamedagentدر میان آنها.
مستندات کامل پروتکل را ببینید: پروتکل Gateway.
بررسیهای عملیاتی
زنده بودن
- WS را باز کنید و
connectارسال کنید. - انتظار پاسخ
hello-okهمراه با snapshot را داشته باشید.
آمادگی
openclaw gateway statusopenclaw channels status --probeopenclaw healthبازیابی شکاف
رویدادها replay نمیشوند. هنگام شکافهای sequence، پیش از ادامه وضعیت را refresh کنید (health، system-presence).
امضاهای رایج خرابی
| امضا | مشکل محتمل |
|---|---|
refusing to bind gateway ... without auth |
bind غیر local loopback بدون مسیر معتبر احراز هویت gateway |
another gateway instance is already listening / EADDRINUSE |
تداخل پورت |
Gateway start blocked: set gateway.mode=local |
پیکربندی روی حالت راه دور تنظیم شده است، یا مهر حالت محلی از پیکربندی آسیبدیده حذف شده است |
unauthorized during connect |
ناهماهنگی احراز هویت بین کلاینت و gateway |
برای نردبانهای تشخیص کامل، از عیبیابی Gateway استفاده کنید.
تضمینهای ایمنی
- کلاینتهای پروتکل Gateway وقتی Gateway در دسترس نباشد سریع شکست میخورند (بدون بازگشت ضمنی به کانال مستقیم).
- فریمهای اول نامعتبر/غیراتصالی رد و بسته میشوند.
- خاموشسازی نرم پیش از بستن سوکت رویداد
shutdownرا منتشر میکند.
مرتبط: