عن المشروع

SUNGLASSES هو مشروع فحص مدخلات محلي المصدر ومفتوح لوكلاء الذكاء الاصطناعي، يُوصف في ملف README الخاص به كجدار ناري للمدخلات. مُبرمج بلغة Python وهو مرخص بموجب رخصة MIT. يفحص المشروع المحتوى قبل أن يتصرف الوكيل بناءً عليه ويُبلغ عن النتائج بدلاً من إعادة الكتابة أواستبعاد المحتوى بصمت. يغطي ست أنواع وسائط: النصوص والصور والصوت والفيديو وملفات PDF ورموز QR والباركود. يمكن لفحص الصور استخدام تحليل النص الضوئي (OCR) وبيانات EXIF واكتشاف النصوص المخفية؛ بينما يقرأ فحص PDF نص الصفحات والمعرّفات والتعليقات التوضيحية؛ وتستخدم عمليات الفحص العميق للصوت والفيديو تحويل الكلام إلى نص واستخراج الترجمات النصية. يستهدف الفاحص حقن الأوامر النصية (prompt injection)، وتسريب بيانات الاعتماد، حقن الأوامر، تسميم الذاكرة، الهندسة الاجتماعية وتقنيات التهرب مثل الحيل الخطية Unicode والإخفاء RTL والـ leetspeak والتشفير Base64 والاستبدال بالحروف المتشابهة (homoglyph substitution). يعمل SUNGLASSES بالأولوية على اللغة الإنجليزية. يذكر ملف README أن مجموعة القواعد الكاملة بالإنجليزية، ولست عشرة لغة نمطين مخصصين بالضبط، وسبع لغات مستوى الكلمات فقط، بينما تُذكر الفارسية والبنغالية كأسماء فقط دون نمط مخصص أو كلمات رئيسية. المعالجة المسبقة مستقلة عن اللغة. يحذر المشروع من توقع مساواة غير الإنجليزية مع الإنجليزية ويحدّد تغطية اللغات الأعمق كخط أفقي للإصدارات v0.6 وما فوق. التثبيت عبر pip: pip install sunglasses للفحص النصي بدون تبعيات، مع EXTRAS الإعلامية أو الكل للصور وملفات PDF ورموز QR والصوت والفيديو. يوفر واجهة سطر الأوامر الأوامر: scan وcheck وdemo وinfo وreport. وكما يكشف Python API عن SunglassesEngine للنصوص وSunglassesScanner للوسائط. تشمل أسطح التكامل الأخرى خادماً لبروتوكول MCP وتكاملات LangChain وCrewAI وإخراج SARIF 2.1.0 لبيئة CI وجهاً دموياً للمتصفح للنصوص ومستودعات GitHub والصور. يستخدم واجهة سطر الأوامر عقد أرقام الخروج الصريح. 0 يعني أنه تم قراءة المدخل بالكامل ولم يُعثر على تهديد. 1 يعني العثور على تهديد. 2 خطأ استخدام أو تشغيل حيث لم يتم فحص شيء ضمن النطاق المطلوب. 3 يعني الفحص غير المكتمل: لم يتم العثور على شيء في الجزء الذي يمكن قراءته ولكن بعض الأجزاء لم يمكن قراءتها، مثل الأرشيف أو ملف صوتي بدون فحص عميق أو مدخل يتجاوز سعة الحجم. الأولوية: 1 > 3 > 2 > 0. يفصل إخراج JSON بين threat_found وinspection_complete وis_clean، ويُبلّغ عن truncated وextraction_complete. تقرأ المحرك ما لا يزيد عن 1 ميجابايت افتراضياً، والفحص الذي يصل إلى السعة يبلغ عن truncated وbytes_scanned بدلاً من تمرير نظيف صامت. تُثبّت خاصرة v0.4 كتعليق PreToolUse في Claude Code وتُوصف بأنها أفضل جهد: لديها مهلة 10 ثوانٍ ولا يعترض المجلد المهجور المكالمة. يمكنها تثبيت معرِّفات أدوات MCP والتحقق مما إذا كانت قد تغيرت، وحظر الأسرار ذات التنسيق الدقيق على مكالمات الأدوات التي يمكن أن تضع بيانات على السلك، وفرض ملف سياسة المستخدم، وكتابة إيصالات تسجل SHA-256 لمدخلات الأدوات بدلاً من المدخل نفسه. يفصل المشروع بين الحقائق الحتمية التي يمكن حظرها بشكل صلب والكشفات التي تتصاعد إلى المستخدم بدلاً من الحجب التلقائي. يفشل بفتح ويُسجّل عند عدم فحص المكالمة. يذكر ملف README حدوداً صادقة: تثبيت المعرّف ليس مباشراً؛ يرى المجلد نص مكالمة الأداة وليس الملفات خلفها; يمكن للواحدات الأحادية interpreter أو socket إخفاء التسرب; و Lane WARN معطّل افتراضياً. تشمل أرقام الأداء والنشرات المنشورة 1540 نمط و6931 كلمة فريدة و118 فئة هجوم و17 تقنية تطبيع، مع recall داخلي 64/64 على مجموعة الاختبار المرفقة. يستخدم README معايير تقييم بـ38 هجوماً حقيقياً لمدخلات الوكيل و76 وثائق README مفتوحة المصدر كسلبية، مسجّلاً precision 86.1% وrecall 97.4% وF1 0.914 و30/30 هجوماً معروفا الشكل تم التقاطه و7/8 نسخ معنوية جديدة تم الالتقاط. يذكر أن الفوحتة المعروفة هي سطر تثبيت pipe-to-shell يظهر أيضاً في READMEs نظيفة، وأن الاختبار يؤكد أن الفاحص لا ينبّهه. أرقام الزمنية: حوالي 0.7 مللي ثانية لمدخل قصير، حوالي 4.2 مللي ثانية لسلسلة هجوم نموذجية، حوالي 311 مللي ثانية لملف README حقيقي، ومعدل استمرارية حول 26 كيلوبايت في الثانية على خيط واحد. يشير ملف README إلى أن هذه الأرقام مُعاد توليدها من مستودع داخلي وأن العتاد سيختلف. يتطلب الفحص العميق للصوت والفيديو Whisper وFFmpeg، ويحدّد المشروع تلك الفحوصات الإعلامية كتجريبية. يعمل الفحص محلياً: يذكر ملف README عدم وجود سحابة أو مفاتيح API أو telemetry للفحص. ويلاحظ أيضاً أن الفاحص الثابت لا ينفذ المحتوى المفحوص، بينما يبدأ أمر pin خوادم MCP المُعدّة بعد طلب الموافقة ويرفض بدون موافقة في السياقات غير المصحوبة. يوضع المشروع نفسه كأساس محلي يمكن استخدامه بمفرده أو جنباً إلى جنب مع أدوات حماية السحابة.