Gateway
دليل تشغيل Gateway
استخدم هذه الصفحة لبدء تشغيل خدمة Gateway في اليوم الأول ولعملياتها التشغيلية في اليوم الثاني.
تشخيصات تبدأ بالأعراض، مع تسلسلات أوامر دقيقة وبصمات للسجلات.
دليل إعداد موجّه نحو المهام + مرجع كامل للتهيئة.
عقد SecretRef، وسلوك لقطة وقت التشغيل، وعمليات الترحيل/إعادة التحميل.
قواعد الهدف/المسار الدقيقة لـ secrets apply وسلوك ملف تعريف المصادقة المعتمد على المراجع فقط.
بدء التشغيل المحلي خلال 5 دقائق
بدء Gateway
openclaw gateway --port 18789# عكس مخرجات التصحيح/التتبّع إلى الإدخال والإخراج القياسيينopenclaw gateway --port 18789 --verbose# إنهاء المستمع بالقوة على المنفذ المحدد، ثم بدء التشغيلopenclaw gateway --forceالتحقق من سلامة الخدمة
openclaw gateway statusopenclaw statusopenclaw logs --followخط الأساس السليم: Runtime: running وConnectivity probe: ok وسطر Capability يطابق ما تتوقعه. استخدم openclaw gateway status --require-rpc لإثبات RPC ضمن نطاق القراءة، وليس لمجرد إثبات إمكانية الوصول.
التحقق من جاهزية القنوات
openclaw channels status --probeعندما يكون Gateway قابلًا للوصول، يشغّل هذا فحوصات مباشرة للقنوات لكل حساب وعمليات تدقيق اختيارية. إذا تعذّر الوصول إلى Gateway، تعود CLI إلى ملخصات القنوات المستندة إلى التهيئة فقط.
نموذج وقت التشغيل
- عملية واحدة دائمة التشغيل للتوجيه ومستوى التحكم واتصالات القنوات.
- منفذ واحد متعدد الإرسال من أجل:
- التحكم/RPC عبر WebSocket
- واجهات 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 الرئيسي وتستخدم حد مصادقة المشغّل الموثوق نفسه الذي تستخدمه بقية واجهة 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 doctorيُستخدم gateway status --deep لاكتشاف خدمات إضافية (LaunchDaemons/وحدات نظام 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 أو عنوان URL لوكيل أو عنوان URL بعيد مهيأ إلى 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للاستمرارية بعد تسجيل الخروج، فعّل البقاء:
sudo loginctl enable-linger $(whoami)على خادم بلا واجهة رسومية ومن دون جلسة سطح مكتب، تأكد أيضًا من تعيين XDG_RUNTIME_DIR إلى (export XDG_RUNTIME_DIR=/run/user/$(id -u)) قبل إعادة محاولة أوامر systemctl --user.
مثال يدوي لوحدة مستخدم عندما تحتاج إلى مسار تثبيت مخصص:
[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 مهمة مجدولة باسم OpenClaw Gateway
(أو OpenClaw Gateway (<profile>) لملفات التعريف المسماة). إذا رُفض إنشاء المهمة المجدولة،
يعود OpenClaw إلى مشغّل في مجلد بدء التشغيل لكل مستخدم
يشير إلى gateway.cmd داخل دليل الحالة.
Linux (خدمة النظام)
استخدم وحدة نظام للمضيفين متعددي المستخدمين/دائمي التشغيل.
sudo systemctl daemon-reloadsudo systemctl enable --now openclaw-gateway[-<profile>].serviceاستخدم نص الخدمة نفسه المستخدم لوحدة المستخدم، ولكن ثبّته ضمن
/etc/systemd/system/openclaw-gateway[-<profile>].service وعدّل
ExecStart= إذا كان ملف openclaw التنفيذي موجودًا في مكان آخر.
لا تسمح أيضًا لـ openclaw doctor --fix بتثبيت خدمة Gateway على مستوى المستخدم لملف التعريف/المنفذ نفسه. يرفض Doctor ذلك التثبيت التلقائي عندما يعثر على خدمة Gateway لـ OpenClaw على مستوى النظام؛ استخدم OPENCLAW_SERVICE_REPAIR_POLICY=external عندما تكون وحدة النظام هي المالكة لدورة الحياة.
تنتهي أخطاء التهيئة غير الصالحة بالرمز 78. تستخدم وحدات systemd في Linux القيمة 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 |
الربط بعنوان غير استرجاعي من دون مسار مصادقة صالح لـ Gateway |
another gateway instance is already listening / EADDRINUSE |
تعارض في المنفذ |
Gateway start blocked: set gateway.mode=local |
تم ضبط الإعدادات على الوضع البعيد، أو أن gateway.mode مفقود من إعدادات تالفة |
unauthorized أثناء الاتصال |
عدم تطابق المصادقة بين العميل وGateway |
للاطلاع على مسارات التشخيص الكاملة، استخدم استكشاف أخطاء Gateway وإصلاحها.
ضمانات السلامة
- تفشل عملاء بروتوكول Gateway فورًا عند عدم توفر Gateway (من دون رجوع ضمني إلى قناة مباشرة).
- تُرفض الإطارات الأولى غير الصالحة أو التي لا تمثل اتصالًا، ويُغلق الاتصال.
- يرسل الإيقاف الآمن حدث
shutdownقبل إغلاق المقبس.