/v1/* المتوافق مع OpenAI، تُعامل مصادقة Bearer بالسر المشترك بوصفها وصول مشغّل موثوقًا إلى Gateway بالكامل.
POST /tools/invoke- المنفذ نفسه مثل Gateway (تعدد إرسال WS + HTTP):
http://<gateway-host>:<port>/tools/invoke
المصادقة
تستخدم إعدادات مصادقة Gateway. مسارات مصادقة HTTP الشائعة:- مصادقة السر المشترك (
gateway.auth.mode="token"أو"password"):Authorization: Bearer <token-or-password> - مصادقة HTTP موثوقة تحمل هوية (
gateway.auth.mode="trusted-proxy"): وجّه الطلب عبر الوكيل المهيأ والواعي بالهوية ودعه يحقن ترويسات الهوية المطلوبة - مصادقة مفتوحة عبر مدخل خاص (
gateway.auth.mode="none"): لا يلزم ترويسة مصادقة
- عند استخدام
gateway.auth.mode="token"، استخدمgateway.auth.token(أوOPENCLAW_GATEWAY_TOKEN). - عند استخدام
gateway.auth.mode="password"، استخدمgateway.auth.password(أوOPENCLAW_GATEWAY_PASSWORD). - عند استخدام
gateway.auth.mode="trusted-proxy"، يجب أن يأتي طلب HTTP من مصدر وكيل موثوق مهيأ؛ وتتطلب وكلاء loopback على المضيف نفسه ضبطgateway.auth.trustedProxy.allowLoopback = trueصراحة. - يمكن للمتصلين الداخليين من المضيف نفسه الذين يتجاوزون الوكيل استخدام
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDكبديل محلي مباشر. أي دليل من ترويساتForwardedأوX-Forwarded-*أوX-Real-IPيُبقي الطلب بدلًا من ذلك على مسار الوكيل الموثوق. - إذا كان
gateway.auth.rateLimitمهيأ وحدث عدد كبير جدًا من إخفاقات المصادقة، فستُرجع نقطة النهاية429معRetry-After.
حد الأمان (مهم)
تعامل مع نقطة النهاية هذه كسطح وصول مشغّل كامل لمثيل Gateway.- مصادقة HTTP Bearer هنا ليست نموذج نطاق ضيقًا لكل مستخدم.
- يجب التعامل مع رمز/كلمة مرور Gateway صالحة لنقطة النهاية هذه كما لو كانت بيانات اعتماد مالك/مشغّل.
- في أوضاع مصادقة السر المشترك (
tokenوpassword)، تستعيد نقطة النهاية افتراضيات المشغّل الكاملة المعتادة حتى إذا أرسل المتصل ترويسةx-openclaw-scopesأضيق. - تتعامل مصادقة السر المشترك أيضًا مع استدعاءات الأدوات المباشرة على نقطة النهاية هذه كدورات مرسِل مالك.
- تحترم أوضاع HTTP التي تحمل هوية موثوقة (مثل مصادقة الوكيل الموثوق أو
gateway.auth.mode="none"على مدخل خاص) الترويسةx-openclaw-scopesعند وجودها، وإلا فترجع إلى مجموعة النطاقات الافتراضية المعتادة للمشغّل. - أبقِ نقطة النهاية هذه على loopback/tailnet/مدخل خاص فقط؛ لا تعرضها مباشرة للإنترنت العام.
gateway.auth.mode="token"أو"password"+Authorization: Bearer ...- يثبت امتلاك سر مشغّل Gateway المشترك
- يتجاهل
x-openclaw-scopesالأضيق - يستعيد مجموعة نطاقات المشغّل الافتراضية الكاملة:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - يتعامل مع استدعاءات الأدوات المباشرة على نقطة النهاية هذه كدورات مرسِل مالك
- أوضاع HTTP التي تحمل هوية موثوقة (مثل مصادقة الوكيل الموثوق، أو
gateway.auth.mode="none"على مدخل خاص)- تصادق هوية خارجية موثوقة أو حد نشر موثوق
- تحترم
x-openclaw-scopesعندما تكون الترويسة موجودة - ترجع إلى مجموعة نطاقات المشغّل الافتراضية المعتادة عندما تكون الترويسة غائبة
- تفقد دلالات المالك فقط عندما يضيّق المتصل النطاقات صراحة ويحذف
operator.admin
جسم الطلب
tool(سلسلة نصية، مطلوب): اسم الأداة المطلوب استدعاؤها.action(سلسلة نصية، اختياري): يُعيَّن ضمن args إذا كان مخطط الأداة يدعمactionوكانت حمولة args قد حذفته.args(كائن، اختياري): وسائط خاصة بالأداة.sessionKey(سلسلة نصية، اختياري): مفتاح الجلسة الهدف. إذا حُذف أو كان"main"، تستخدم Gateway مفتاح الجلسة الرئيسي المهيأ (مع احترامsession.mainKeyوالوكيل الافتراضي، أوglobalفي النطاق العام).dryRun(منطقي، اختياري): محجوز للاستخدام المستقبلي؛ يتم تجاهله حاليًا.
سلوك السياسة والتوجيه
تُرشَّح إتاحة الأدوات عبر سلسلة السياسة نفسها المستخدمة بواسطة وكلاء Gateway:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- سياسات المجموعة (إذا كان مفتاح الجلسة يرتبط بمجموعة أو قناة)
- سياسة الوكيل الفرعي (عند الاستدعاء بمفتاح جلسة وكيل فرعي)
- موافقات exec هي حواجز أمان للمشغّل، وليست حد تفويض منفصلًا لنقطة نهاية HTTP هذه. إذا كانت أداة قابلة للوصول هنا عبر مصادقة Gateway + سياسة الأدوات، فإن
/tools/invokeلا يضيف مطالبة موافقة إضافية لكل استدعاء. - إذا كان
execقابلًا للوصول هنا، فتعامل معه كسطح صدفة قادر على التغيير. إن رفضwriteأوeditأوapply_patchأو أدوات HTTP التي تكتب إلى نظام الملفات لا يجعل تنفيذ الصدفة للقراءة فقط. - لا تشارك بيانات اعتماد Gateway Bearer مع متصلين غير موثوقين. إذا كنت تحتاج إلى فصل عبر حدود الثقة، فشغّل Gateways منفصلة (ويُفضّل أيضًا مستخدمين/مضيفين منفصلين على نظام التشغيل).
exec- تنفيذ أوامر مباشر (سطح RCE)spawn- إنشاء عمليات فرعية عشوائية (سطح RCE)shell- تنفيذ أوامر الصدفة (سطح RCE)fs_write- تعديل عشوائي للملفات على المضيفfs_delete- حذف عشوائي للملفات على المضيفfs_move- نقل/إعادة تسمية عشوائية للملفات على المضيفapply_patch- يمكن لتطبيق الرقع إعادة كتابة ملفات عشوائيةsessions_spawn- تنسيق الجلسات؛ إنشاء وكلاء عن بُعد هو RCEsessions_send- حقن رسائل عبر الجلساتcron- مستوى تحكم للأتمتة المستمرةgateway- مستوى تحكم Gateway؛ يمنع إعادة التهيئة عبر HTTPnodes- يمكن لترحيل أوامر العقد الوصول إلى system.run على المضيفين المقترنينwhatsapp_login- إعداد تفاعلي يتطلب مسح QR من الطرفية؛ يتوقف على HTTP
gateway.tools:
gateway.tools.allow هو تجاوز للتعرّض، وليس ترقية للنطاق. في
أوضاع HTTP التي تحمل هوية، تظل cron وgateway وnodes غير متاحة
للمتصلين الذين لا يملكون هوية مالك/مسؤول (operator.admin) حتى عندما
تكون مدرجة في gateway.tools.allow. لا تزال مصادقة Bearer بالسر المشترك
تتبع قاعدة المشغّل الموثوق الكاملة أعلاه.
لمساعدة سياسات المجموعة على حل السياق، يمكنك اختياريًا ضبط:
x-openclaw-message-channel: <channel>(مثال:slack,telegram)x-openclaw-account-id: <accountId>(عند وجود حسابات متعددة)
الاستجابات
200→{ ok: true, result }400→{ ok: false, error: { type, message } }(طلب غير صالح أو خطأ في إدخال الأداة)401→ غير مخوّل429→ محدد المعدل بسبب المصادقة (Retry-Afterمضبوط)404→ الأداة غير متاحة (غير موجودة أو غير مدرجة في قائمة السماح)405→ الطريقة غير مسموح بها500→{ ok: false, error: { type, message } }(خطأ غير متوقع في تنفيذ الأداة؛ رسالة منقحة)