CLI الخاص بـ Gateway
Gateway هو خادم WebSocket الخاص بـ OpenClaw (القنوات، والعقد، والجلسات، وhooks). توجد الأوامر الفرعية في هذه الصفحة تحتopenclaw gateway ….
المستندات ذات الصلة:
تشغيل Gateway
شغّل عملية Gateway محلية:- يرفض Gateway افتراضيًا بدء التشغيل ما لم يتم ضبط
gateway.mode=localفي~/.openclaw/openclaw.json. استخدم--allow-unconfiguredللتشغيلات المخصصة/التطويرية. - من المتوقع أن يكتب
openclaw onboard --mode localوopenclaw setupالقيمةgateway.mode=local. وإذا كان الملف موجودًا لكنgateway.modeمفقودًا، فاعتبر ذلك تهيئة معطوبة أو تم العبث بها وأصلحها بدلًا من افتراض الوضع المحلي ضمنيًا. - إذا كان الملف موجودًا وكانت
gateway.modeمفقودة، فإن Gateway يتعامل مع ذلك على أنه تلف مريب في التهيئة ويرفض “افتراض local” نيابةً عنك. - يتم حظر الربط خارج loopback بدون مصادقة (حاجز أمان).
- يؤدي
SIGUSR1إلى إعادة تشغيل داخل العملية عند السماح بذلك (commands.restartمفعّل افتراضيًا؛ اضبطcommands.restart: falseلحظر إعادة التشغيل اليدوية، مع بقاء أداة gateway وتطبيق/تحديث التهيئة مسموحين). - تؤدي معالجات
SIGINT/SIGTERMإلى إيقاف عملية gateway، لكنها لا تستعيد أي حالة طرفية مخصصة. إذا كنت تغلف CLI بواجهة TUI أو إدخال raw-mode، فاستعد حالة الطرفية قبل الخروج.
الخيارات
--port <port>: منفذ WebSocket (تأتي القيمة الافتراضية من config/env؛ وعادةً18789).--bind <loopback|lan|tailnet|auto|custom>: وضع ربط المستمع.--auth <token|password>: تجاوز وضع المصادقة.--token <token>: تجاوز token (ويضبط أيضًاOPENCLAW_GATEWAY_TOKENللعملية).--password <password>: تجاوز كلمة المرور. تحذير: قد تظهر كلمات المرور المضمنة في قوائم العمليات المحلية.--password-file <path>: قراءة كلمة مرور gateway من ملف.--tailscale <off|serve|funnel>: كشف Gateway عبر Tailscale.--tailscale-reset-on-exit: إعادة تعيين تهيئة Tailscale serve/funnel عند الإغلاق.--allow-unconfigured: السماح ببدء gateway دونgateway.mode=localفي الإعداد. يتجاوز هذا حاجز بدء التشغيل للتمهيد المخصص/التطويري فقط؛ ولا يكتب ملف التهيئة أو يصلحه.--dev: إنشاء تهيئة + workspace للتطوير إذا كانت مفقودة (يتخطىBOOTSTRAP.md).--reset: إعادة تعيين تهيئة التطوير + بيانات الاعتماد + الجلسات + workspace (يتطلب--dev).--force: إنهاء أي مستمع موجود على المنفذ المحدد قبل البدء.--verbose: سجلات مفصلة.--cli-backend-logs: عرض سجلات الواجهة الخلفية لـ CLI فقط في الطرفية (مع تمكين stdout/stderr).--claude-cli-logs: اسم مستعار مهمل لـ--cli-backend-logs.--ws-log <auto|full|compact>: نمط سجل websocket (الافتراضيauto).--compact: اسم مستعار لـ--ws-log compact.--raw-stream: تسجيل أحداث تدفق النموذج الخام إلى jsonl.--raw-stream-path <path>: مسار jsonl للتدفق الخام.
الاستعلام عن Gateway يعمل
تستخدم جميع أوامر الاستعلام WebSocket RPC. أوضاع الإخراج:- الافتراضي: قابل للقراءة البشرية (ملون في TTY).
--json: JSON قابل للقراءة آليًا (من دون تنسيق/مؤشر دوران).--no-color(أوNO_COLOR=1): تعطيل ANSI مع إبقاء التخطيط البشري.
--url <url>: عنوان URL لـ Gateway WebSocket.--token <token>: token الخاص بـ Gateway.--password <password>: كلمة مرور Gateway.--timeout <ms>: المهلة/الميزانية (تختلف حسب الأمر).--expect-final: انتظار استجابة “نهائية” (استدعاءات الوكيل).
--url، لا يعود CLI إلى بيانات الاعتماد الموجودة في config أو environment.
مرّر --token أو --password صراحة. وغياب بيانات اعتماد صريحة يُعد خطأً.
gateway health
gateway usage-cost
اجلب ملخصات تكلفة الاستخدام من سجلات الجلسات.
--days <days>: عدد الأيام المطلوب تضمينها (الافتراضي30).
gateway status
يعرض gateway status خدمة Gateway (launchd/systemd/schtasks) بالإضافة إلى فحص RPC اختياري.
--url <url>: إضافة هدف فحص صريح. لا يزال يتم فحص configured remote + localhost.--token <token>: مصادقة token للفحص.--password <password>: مصادقة كلمة المرور للفحص.--timeout <ms>: مهلة الفحص (الافتراضي10000).--no-probe: تخطي فحص RPC (عرض الخدمة فقط).--deep: فحص خدمات على مستوى النظام أيضًا.--require-rpc: الخروج بقيمة غير صفرية عندما يفشل فحص RPC. لا يمكن دمجه مع--no-probe.
- يظل
gateway statusمتاحًا للتشخيص حتى عندما تكون تهيئة CLI المحلية مفقودة أو غير صالحة. - يقوم
gateway statusبحل SecretRefs الخاصة بالمصادقة المهيأة لمصادقة الفحص عند الإمكان. - إذا كان SecretRef مطلوبًا للمصادقة وغير محلول في مسار هذا الأمر، فإن
gateway status --jsonيبلّغ عنrpc.authWarningعندما يفشل اتصال/مصادقة probe؛ مرّر--token/--passwordصراحة أو أصلح مصدر السر أولًا. - إذا نجح الفحص، يتم كتم تحذيرات auth-ref غير المحلولة لتجنب الإيجابيات الكاذبة.
- استخدم
--require-rpcفي البرامج النصية والأتمتة عندما لا يكفي وجود خدمة تستمع وتحتاج إلى أن تكون Gateway RPC نفسها سليمة. - يضيف
--deepفحصًا بأفضل جهد لعمليات تثبيت إضافية في launchd/systemd/schtasks. وعند اكتشاف عدة خدمات شبيهة بـ gateway، يطبع الإخراج البشري تلميحات للتنظيف ويحذر من أن معظم الإعدادات يجب أن تشغّل gateway واحدًا لكل جهاز. - يتضمن الإخراج البشري مسار سجل الملف المحلول بالإضافة إلى لقطة من مسارات/صلاحية التهيئة بين CLI والخدمة للمساعدة في تشخيص انجراف profile أو state-dir.
- في عمليات تثبيت Linux systemd، تقرأ فحوصات انجراف مصادقة الخدمة قيم
Environment=وEnvironmentFile=من الوحدة (بما في ذلك%hوالمسارات المقتبسة والملفات المتعددة وملفات-الاختيارية). - تحل فحوصات الانجراف
gateway.auth.tokenSecretRefs باستخدام merged runtime env (بيئة أمر الخدمة أولًا، ثم process env كاحتياطي). - إذا لم تكن مصادقة token مفعّلة فعليًا (وضع
gateway.auth.modeصريح بقيمةpassword/none/trusted-proxy، أو وضع غير مضبوط حيث يمكن أن تفوز كلمة المرور ولا يوجد مرشح token يمكنه الفوز)، فإن فحوصات انجراف token تتخطى حل token من التهيئة.
gateway probe
الأمر gateway probe هو أمر “تصحيح كل شيء”. وهو يفحص دائمًا:
- الـ remote gateway المهيأ لديك (إن وُجد)، و
- localhost (loopback) حتى إذا كان remote مهيأ.
--url، يُضاف هذا الهدف الصريح قبلهما معًا. ويُسمّي الإخراج البشري
الأهداف كما يلي:
URL (explicit)Remote (configured)أوRemote (configured, inactive)Local loopback
Reachable: yesتعني أن هدفًا واحدًا على الأقل قبل اتصال WebSocket.RPC: okتعني أن استدعاءات RPC التفصيلية (health/status/system-presence/config.get) نجحت أيضًا.RPC: limited - missing scope: operator.readتعني أن الاتصال نجح لكن RPC التفصيلي كان محدود النطاق. ويتم الإبلاغ عن هذا على أنه وصول متدهور، وليس فشلًا كاملًا.- تكون قيمة الخروج غير صفرية فقط عندما لا يكون أي هدف تم فحصه قابلًا للوصول.
--json):
- المستوى الأعلى:
ok: يمكن الوصول إلى هدف واحد على الأقل.degraded: كان لدى هدف واحد على الأقل RPC تفصيلي محدود النطاق.primaryTargetId: أفضل هدف يُعامل على أنه الفائز النشط بهذا الترتيب: URL صريح، نفق SSH، configured remote، ثم Local loopback.warnings[]: سجلات تحذير بأفضل جهد تحتوي علىcodeوmessageوtargetIdsالاختيارية.network: تلميحات URL لـ Local loopback/tailnet مشتقة من التهيئة الحالية وشبكات المضيف.discovery.timeoutMsوdiscovery.count: ميزانية/عدد نتائج الاكتشاف الفعليان المستخدمان في تمريرة الفحص هذه.
- لكل هدف (
targets[].connect):ok: إمكانية الوصول بعد الاتصال + تصنيف التدهور.rpcOk: نجاح RPC التفصيلي الكامل.scopeLimited: فشل RPC التفصيلي بسبب غياب نطاق operator.
ssh_tunnel_failed: فشل إعداد نفق SSH؛ وعاد الأمر إلى الفحوصات المباشرة.multiple_gateways: أمكن الوصول إلى أكثر من هدف واحد؛ وهذا غير معتاد إلا إذا كنت تشغّل عمدًا profiles معزولة، مثل rescue bot.auth_secretref_unresolved: تعذر حل SecretRef مصادقة مهيأ لهدف فاشل.probe_scope_limited: نجح اتصال WebSocket، لكن RPC التفصيلي كان محدودًا بسبب غيابoperator.read.
Remote عبر SSH (مماثل لتطبيق Mac)
يستخدم وضع “Remote over SSH” في تطبيق macOS إعادة توجيه منفذ محلية بحيث يصبح الـ remote gateway (الذي قد يكون مرتبطًا بـ loopback فقط) قابلاً للوصول علىws://127.0.0.1:<port>.
المكافئ في CLI:
--ssh <target>: user@hostأوuser@host:port(يكون المنفذ افتراضيًا22).--ssh-identity <path>: ملف الهوية.--ssh-auto: اختيار أول مضيف gateway مكتشف كهدف SSH من نقطة نهاية الاكتشاف المحلولة (local.بالإضافة إلى wide-area domain المهيأ، إن وجد). ويتم تجاهل التلميحات المعتمدة على TXT فقط.
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
مساعد RPC منخفض المستوى.
--params <json>: سلسلة كائن JSON للمعلمات (الافتراضي{})--url <url>--token <token>--password <password>--timeout <ms>--expect-final--json
- يجب أن تكون
--paramsقيمة JSON صالحة. - يُستخدم
--expect-finalبشكل أساسي مع RPCs على نمط الوكيل التي تبث أحداثًا وسيطة قبل payload نهائي.
إدارة خدمة Gateway
gateway status: --url، --token، --password، --timeout، --no-probe، --require-rpc، --deep، --jsongateway install: --port، --runtime <node|bun>، --token، --force، --jsongateway uninstall|start|stop|restart: --json
- يدعم
gateway installالخيارات--portو--runtimeو--tokenو--forceو--json. - عندما تتطلب مصادقة token وجود token وكان
gateway.auth.tokenمُدارًا عبر SecretRef، فإنgateway installيتحقق من أن SecretRef قابل للحل لكنه لا يخزن token المحلول في بيانات تعريف بيئة الخدمة. - إذا كانت مصادقة token تتطلب token وكان SecretRef الخاص بالـ token المهيأ غير محلول، فإن التثبيت يفشل بشكل مغلق بدلًا من حفظ نص صريح احتياطي.
- بالنسبة إلى مصادقة كلمة المرور في
gateway run، ففضّلOPENCLAW_GATEWAY_PASSWORDأو--password-fileأوgateway.auth.passwordالمدعوم بـ SecretRef بدلًا من--passwordالمضمن. - في وضع المصادقة المستنتج، لا يخفف
OPENCLAW_GATEWAY_PASSWORDالموجود في shell فقط متطلبات token الخاصة بالتثبيت؛ استخدم تهيئة دائمة (gateway.auth.passwordأو configenv) عند تثبيت خدمة مُدارة. - إذا كان كل من
gateway.auth.tokenوgateway.auth.passwordمهيأين وكانتgateway.auth.modeغير مضبوطة، فسيتم حظر التثبيت حتى يُضبط الوضع صراحة. - تقبل أوامر دورة الحياة
--jsonللاستخدام في البرامج النصية.
اكتشاف Gateways (Bonjour)
يقومgateway discover بفحص beacons الخاصة بـ Gateway (_openclaw-gw._tcp).
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour): اختر domain (مثال:
openclaw.internal.) وأعد إعداد split DNS + خادم DNS؛ راجع /gateway/bonjour
role(تلميح دور gateway)transport(تلميح النقل، مثلgateway)gatewayPort(منفذ WebSocket، وعادةً18789)sshPort(اختياري؛ تستخدم العملاء افتراضيًا أهداف SSH على22عند غيابه)tailnetDns(اسم مضيف MagicDNS، عند توفره)gatewayTls/gatewayTlsSha256(تمكين TLS + بصمة الشهادة)cliPath(تلميح تثبيت remote مكتوب إلى wide-area zone)
gateway discover
--timeout <ms>: المهلة لكل أمر (browse/resolve)؛ الافتراضي2000.--json: إخراج قابل للقراءة آليًا (ويعطل أيضًا التنسيق/مؤشر الدوران).
- يفحص CLI كلاً من
local.وwide-area domain المهيأ عندما يكون أحدها مفعّلًا. - يتم اشتقاق
wsUrlفي إخراج JSON من نقطة نهاية الخدمة المحلولة، وليس من التلميحات المعتمدة على TXT فقط مثلlanHostأوtailnetDns. - في mDNS الخاص بـ
local.، لا يتم بثsshPortوcliPathإلا عندما تكونdiscovery.mdns.modeهيfull. أما Wide-area DNS-SD فلا يزال يكتبcliPath؛ ويبقىsshPortاختياريًا هناك أيضًا.