موافقات exec المتقدمة في OpenClaw
المسار السريع لأدوات safe bins المقتصرة على stdin وخياراتها المحظورة، ومجلدات الملفات التنفيذية الموثوقة، وقواعد تسلسل أوامر shell والمغلفات، وربط المفسرات، ونطاق approvals، وتحويل طلبات الموافقة إلى قنوات الدردشة وعملاء الموافقة الأصليين
صفحة موافقات exec الأساسية تشرح السياسة وطلب الموافقة. أما الصفحة المتقدمة فهي موطن الحواف الحادة: أي الملفات التنفيذية يسمح لها بتخطي قائمة السماح لأنها لا تستطيع إلا قراءة stdin، وكيف يربط gateway أمر المفسر بالملفات المحددة التي سيشغلها، وأي نطاق تحتاجه لوحة التحكم للموافقة على أي شيء، وكيف يصل طلب الموافقة إلى قناة دردشة ويعود في صورة قرار. إليك تلك الصفحة مكثفة.
أدوات safe bins
- يسمي إعداد safe bins ملفات تنفيذية مقتصرة على stdin تعمل في الوضع allowlist دون إدخالات صريحة، وهي افتراضيًا cut وuniq وhead وtail وtr وwc؛ وترفض وسائط الملفات الموضعية والمقاطع الشبيهة بالمسارات، وتعامل الوسائط كنص حرفي دون توسيع أنماط الملفات (globbing) أو توسيع المتغيرات، والتحقق حتمي يعتمد على شكل الوسائط وحده، فترفض الخيارات الطويلة غير المعروفة والاختصارات الملتبسة بمبدأ الإغلاق عند الفشل، بينما تحال الخيارات القصيرة غير المعروفة إلى سياسة الموافقة.
- ليس grep وsort من safe bins الافتراضية، ويحتفظان بإدخالات صريحة في قائمة السماح لاستخداماتهما التي لا تقتصر على stdin، وgrep في وضع safe bin لا يأخذ نمطه إلا عبر خيار النمط الصريح؛ ومحظور دائمًا اعتبار awk وsed وjq من safe bins لأن دلالاتها لا يمكن التحقق من اقتصارها على stdin؛ ويجب ألا تضاف المفسرات وبيئات التشغيل أبدًا، وتحتاج safe bins المخصصة إلى ملف تعريف صريح، ويحذر التدقيق من الملفات التنفيذية للمفسرات التي لا تملك ملف تعريف، ويستطيع إصلاح doctor إنشاء ملفات تعريف مخصصة فارغة لتشديدها لاحقًا.
- يجب أن يؤدي تحليل مسار safe bins إلى مجلدات موثوقة، هي مسارا النظام الافتراضيان، ولا توثق إدخالات مسار البحث تلقائيًا أبدًا، لذا تضاف مسارات مديري الحزم صراحة إلى قائمة المجلدات الموثوقة؛ وتحظر قائمة الخيارات المحظورة لكل ملف تعريف خيارات قراءة الملفات، مثل خياري البحث التكراري والملف في grep، وخياري الإخراج وقائمة الملفات في sort، وخيار المتابعة في tail، وخيار قائمة الملفات في wc.
- تسلسل أوامر shell مسموح عندما يستوفي كل مقطع من المستوى الأعلى شروط قائمة السماح، وتبقى عمليات إعادة التوجيه غير مدعومة، ويرفض استبدال الأوامر حتى داخل علامات الاقتباس المزدوجة، وتقلص مغلفات shell تجاوزات البيئة في الطلب إلى قائمة قصيرة، وتحفظ قرارات allow-always الملف التنفيذي الداخلي خلف المغلفات الشفافة وتفك تغليف applets في متعددات shell، ويبقي التقييم المضمن الصارم أوامر eval المضمنة خاضعة للمراجعة عندما تكون المفسرات في قائمة السماح.
التسليم إلى الجلسة يتحكم فقط في مكان ظهور طلب الموافقة. ولا يخول بذاته كل مشارك في تلك الدردشة بالموافقة.
ربط المفسرات ونطاق approvals
عمليات تشغيل المفسرات المستندة إلى الموافقة متحفظة عمدًا. تربط الوسائط ومجلد العمل والبيئة بدقة؛ وعلى gateway تربط سلسلة الاستدعاء الخارجية بكاملها، أي كل ملف تنفيذي مغلف والملف الأخير، قبل المراجعة ويعاد فحصها قبل الإطلاق، فتربط الملفات التنفيذية المحمية بمسارها الحقيقي والقابلة للكتابة أيضًا ببصمة محتواها، بحيث يؤدي ظهور ملف تنفيذي جديد في موضع أسبق من مسار البحث إلى رفض التشغيل. وتربط السكربتات المباشرة وملفات بيئة التشغيل بلقطة ملف واحدة، وتفك مغلفات مديري الحزم الشائعة أولًا، وعندما لا يستطيع gateway تحديد ملف محلي واحد بالضبط، كما في سكربتات الحزم أو صيغ eval أو سلاسل المحملات، يرفض التنفيذ المستند إلى الموافقة بدل التظاهر بأنه يغطيه. وفي الوضع التلقائي لا يتولى المراجع إلا السلاسل المربوطة بالكامل: فمغلفات أوامر shell، وتعيينات البيئة، وapplets، والاستدعاء عبر الأوامر المدمجة تتخطى المراجعة التلقائية وتسلك المسار البشري لمرة واحدة، ومغلفات shell تسجيل الدخول وshell التفاعلي تحتاج إلى إنسان لأن ملفات بدء تشغيلها تقع خارج نطاق الربط، وتبقى خيارات تحميل الشيفرة التفاعلية مرفوضة. وعندما تكون الموافقة مطلوبة تعيد الأداة معرف موافقة فورًا، والقرار الذي لا يصل أبدًا يعد انتهاء مهلة يظهر كرفض لأمر المضيف مع استئناف الجلسة الأصلية ليرى الوكيل أن الأمر لم يعمل، وتنتهي صلاحية الموافقات المعلقة بعد 30 دقيقة. والبت في الموافقة يتطلب النطاق المخصص approvals، الذي لا يندرج تحت write، وتصفه الوثائق بأنه سلطة بمستوى التنفيذ عن بعد ينبغي منحها عن قصد حتى لواجهة موافقة صغيرة.
التحويل إلى الدردشة
- يرسل قسم تحويل موافقات exec طلبات الموافقة إلى أي قناة دردشة عبر خط الإرسال الصادر المعتاد، في الوضع session أو targets أو both، مع مرشحات للوكيل والجلسة وأهداف تجمع القناة والمستلم؛ ولا ينقل الوكيل أمر موافقة إلا من موافقة معلقة فعلية بمعرفها الدقيق، فالمعرف المجرد أو المختلق لا يوافق على شيء، ومنح allow-once يغطي أمرًا واحدًا، والأمر نفسه يبت في موافقات المكونات الإضافية عندما لا يكون المعرف لموافقة exec معلقة، مع تهيئة فئة plugin بشكل مستقل.
- تستطيع دردشة المصدر الموافقة افتراضيًا على Slack وMatrix وTeams والواجهات المماثلة القابلة للتسليم، بينما تستخدم Discord وTelegram وبوت QQ قوائم الموافقين المحددة لديها حتى في الدردشة نفسها؛ ويضيف عملاء الموافقة الأصليون رسائل مباشرة إلى الموافقين، والنشر في دردشة المصدر، وبطاقات تفاعلية، وتفعل لكل قناة على حدة مع موافقين يمكن تحديد هويتهم، ويكون Telegram افتراضيًا على الوضع التلقائي ورسائل الموافقين، وأي بطاقة لا تصل إلى أي هدف تتحول إلى إشعار في الدردشة نفسها يتضمن الأمر الدقيق.
- يمكن أن يحمل الهدف معرف حساب للإرسال عبر حساب بوت محدد، ومعرف سلسلة رسائل للبقاء داخل موضوع منتدى؛ وتراجع تطبيقات الهاتف الرسمية الموافقات المعلقة عبر اتصال إداري أو عندما يكون جهاز الموافقات الخاص بها هو المستهدف، وتعيد قراءة السجل عند ضياع الإقرار؛ ويعمل مسار macOS عبر مقبس (socket) للمستخدم نفسه مع رمز مميز وتحد ومدة صلاحية قصيرة.
تمثل موافقات exec في OpenClaw السياسة الأساسية التي توسعها هذه الصفحة، ويبين شرح العزل في OpenClaw الحدود التي تفضلها الوثائق لسير العمل الذي لا يستطيع الربط تغطيته.
لماذا المسار السريع ضيق
يقوم تصميم safe bins بأكمله على خاصية واحدة: الملف التنفيذي الذي لا يستطيع إلا قراءة stdin لا يمكنه تسريب ملف لم تقصد السياسة كشفه. وكل قاعدة تنبع منها: رفض المسارات الموضعية، والوسائط الحرفية، وخيارات الملفات المحظورة، ومنع المفسرات وjq، والمجلدات الموثوقة التي توقف ملفًا تنفيذيًا منتحلًا في موضع أسبق من مسار البحث. وفي اللحظة التي تستطيع فيها أداة فتح الملفات أو تقييم الشيفرة، ترسلها الوثائق إلى قائمة السماح مع طلب موافقة بدلًا من ذلك. وتعد Telegram على Diali وSlack على Diali قناتين في Diali يمكن أن تصل إليهما طلبات الموافقة المحولة.
على Diali
على Diali، يولد إعداد التشغيل من لوحة التحكم ويستبدل عند كل إصدار، وبيئة تشغيل كل عميل حدود قائمة بذاتها. تصف صفحة OpenClaw المستضاف على Diali المساعد المستضاف، وتصف صفحة الأمان في Diali الضوابط المحيطة بكل أمر يشغله.
- لا تقرأ safe bins إلا stdin؛ والمفسرات لا تتأهل أبدًا.
- عمليات تشغيل المفسرات تربط السلسلة بكاملها أو ترفض.
- الموافقة تتطلب النطاق approvals، لا write.
كفاك قراءة، ابنِ وكيلك الخاص
جهز وكيلًا، واختر قناة، واجعله يعمل داخل التطبيق المفتوح لديك دائمًا.
