
StealthRL: إطار عمل RL لإعادة صياغة نصوص الذكاء الاصطناعي بشكل عدائي لاختبار متانة أجهزة الكشف.
الورقة (arXiv)
العرض التجريبي
النموذج (Hugging Face)
مجموعة البيانات المعيارية (Hugging Face)

تُستخدم كاشفات النصوص المؤلَّفة بالذكاء الاصطناعي بشكل متزايد في سياقات عالية المخاطر، ومع ذلك تظل متانتها ضد إعادة الصياغة العدائية الحافظة للمعنى غير مؤكدة. نقدّم StealthRL، وهو إطار عمل قائم على التعلم المعزز لاختبار ضغط كاشفات النصوص المؤلَّفة بالذكاء الاصطناعي عبر هجمات إعادة صياغة تكيفية. يدرّب StealthRL سياسة إعادة صياغة ضد مجموعة كواشف مع الحفاظ على المحتوى الدلالي، ثم يقيّم قابلية الانتقال إلى عائلات كواشف غير مضمّنة في التدريب. على مجموعة اختبار MAGE الكاملة المفلترة (15,310 نصًا بشريًا / 14,656 نصًا مؤلَّفًا بالذكاء الاصطناعي)، يخفض StealthRL متوسط AUROC من 0.79 إلى 0.43 ويحقّق متوسط TPR@1%FPR يبلغ 0.024 عبر RoBERTa وFast-DetectGPT وBinoculars وMAGE. ينتقل الهجوم إلى كاشفَين لم يُستخدما أثناء التدريب، مما يكشف نقاط ضعف مشتركة بدلًا من فشل كاشف واحد. كما نحلّل توزيعات نتائج الكواشف ونقيّم الجودة باستخدام E5 وBERTScore وتقييمات ليكرت القائمة على LLM. تُظهر نتائجنا أن كاشفات النصوص المؤلَّفة بالذكاء الاصطناعي الحالية تظل هشّة تحت ضغط إعادة الصياغة الواقعي، وتوفّر بروتوكولًا قابلًا للتكرار لتقييم المتانة العدائية.
هذا المستودع هو قاعدة البحث والهندسة الكودية وراء StealthRL. يحتوي على:
يُقصد من المستودع أن يكون نقطة بداية مفيدة للباحثين الراغبين في:
stealthrl/: كود التدريب، مغلّفات الكواشف، المكافآت، أدوات البيانات، وحزمة StealthBench الأصليةeval/: منصّة تقييم بحثية المستوى مستخدمة لنتائج الورقةscripts/: نقاط دخول قابلة للتشغيل للتدريب والتقييم والتنسيق والرسم والأدوات المساعدةconfigs/: ملفات إعدادات YAML للتدريب والتقييم والدراسات الإقصائيةfigures/: مخططات خط الأنابيب وأصول ثابتةtests/: فحوصات التكامل والفحوصات المنطقيةanalysis/: أدوات تحليل مساعدة لمرة واحدة ووظائف مؤقتةpython -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
اعتمادًا على الأجزاء التي تريد تشغيلها من المشروع، قد تحتاج أيضًا إلى:
pip install tinker
pip install openai
pip install vllm
ملاحظات:
tinker مطلوب لمسار استدعاء نقطة تفتيش StealthRL المدعوم سحابيًا المستخدم في M2.openai مطلوب فقط لخطوة تقييم الجودة GPT/Likert.vllm موصى به للتوليد المحلي السريع في خطوط الأساس الواردة في الورقة.متغيرات البيئة النموذجية المستخدمة في المستودع:
export HF_HOME=$HOME/.cache/huggingface
export TRANSFORMERS_CACHE=$HF_HOME
export OPENAI_API_KEY=...
export TINKER_API_KEY=...
بالنسبة لخط أنابيب تقييم الورقة المرحلي، استخدمنا ملف env بالإضافة إلى ملف JSON لوصف نقطة التفتيش. تتيح لك النصوص البرمجية العامة تجاوز كلا المسارين صراحة:
python scripts/run_full_mage_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json
python scripts/run_eval.py --quick
python scripts/run_stealthbench.py --config configs/stealthbench.yaml
يعمل هذا الآن على تحميل ملفات النصوص المُعدّة، وتشغيل الكواشف المُعدّة، وحفظ مخرجات CSV، وإنشاء مخططات المقارنة. أُزيلت البنية المؤقتة القديمة التي كانت تحتوي TODO فقط.
python scripts/run_full_mage_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json \
--run-root outputs/eval_runs/full_mage_public \
--gpus 0 1 2 3
يتضمن المستودع موقع عرض تجريبي مبنيًا على FastAPI ضمن demo/. يقدّم واجهة مستخدم ثابتة مصقولة ويعرض POST /api/paraphrase مع دعم لمفاتيح API بالإضافة إلى حصة عامة تبلغ 20 طلبًا يوميًا للمستخدمين غير الموثّقين.
pip install -r demo/requirements.txt
uvicorn demo.stealthrl_demo.app:app --reload --port 8080
افتراضيًا، يعمل العرض في وضع mock صفري التكلفة لاختبار واجهة المستخدم. لاستخدام مولّد StealthRL الفعلي، عيّن STEALTHRL_DEMO_INFERENCE_BACKEND=tinker وSTEALTHRL_DEMO_CHECKPOINT_JSON وTINKER_API_KEY. راجع demo/README.md لملاحظات حول مفاتيح API والحصص وDocker والنشر على AWS.
تذكر الورقة نتائج على مجموعة تقييم MAGE الكاملة المفلترة:
خط أنابيب التقييم البحثي مُنفَّذ في وحدة eval/ بالإضافة إلى النصوص المرحلية ضمن scripts/.
جهّز بيانات الاعتماد وبيانات نقطة التفتيش.
أنشئ ملف env يحتوي على OPENAI_API_KEY وTINKER_API_KEY، وملف JSON لنقطة التفتيش يصف مسار مولّد StealthRL عبر Tinker.
شغّل الفحص الأولي.
python scripts/preflight_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json
python scripts/run_full_mage_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json \
--run-root outputs/eval_runs/full_mage_repro \
--gpus 0 1 2 3
افحص مخرجات الأساليب المولَّدة ونتائج الكواشف والقياسات والمخططات ضمن دليل التشغيل المختار.
إذا كنت تحتاج فقط إلى إعادة تشغيل الحكم على الجودة المستند إلى GPT على المخرجات المخزنة مؤقتًا:
python scripts/run_gpt_quality_only.py \
--run-root outputs/eval_runs/full_mage_repro \
--env-file ~/.config/stealthrl/eval.env
python scripts/compute_bertscore_for_run.py \
--run-dir outputs/eval_runs/full_mage_repro/assembled \
--device cuda:0 \
--batch-size 16 \
--chunk-size 512
يحدّث نص BERTScore ملفي quality.parquet وquality.csv في مكانهما بعد كل دفعة، لذا يمكن استئناف التشغيلات المتقطعة دون إعادة حساب الصفوف المكتملة. استخدم --limit-per-method لاختبار صغير و--force فقط عند إعادة حساب أعمدة BERTScore الموجودة عن قصد.
ينتج التشغيل المرحلي:
method_runs/: المخرجات المولَّدة لكل أسلوبdetector_scores/: ملفات نتائج parquet لكل كاشفassembled/metrics.json: قياسات الكواشف المُجمَّعةassembled/thresholds.json: عتبات الكواشف المُعايرةassembled/quality.parquet: مقاييس الجودة التلقائيةassembled/quality_gpt.parquet: تقييمات الجودة GPT/Likertassembled/figures/: مخططات جاهزة للنشرتستخدم نقطة التفتيش الأساسية في الورقة configs/tinker_mage_10k.yaml كإعداد تدريب معتمد: Qwen3-4B-Instruct مع LoRA رتبة 32، وحجم مجموعة GRPO 8، و10,000 عينة تدريب من MAGE، وثلاث دورات، ومعدل تعلم 2.8e-4، ومعامل KL قدره 0.05، ودرجة حرارة 1.0، وtop-p قدره 0.9، ومجموعة مكافآت من كاشفَين بوزن 0.6 لـRoBERTa / 0.4 لـFast-DetectGPT. الإعدادات الأخرى في configs/ أُبقيت كأمثلة قديمة أو إعدادات اختبار سريع أو قوالب دراسة إقصائية، ولا ينبغي التعامل معها كمرجع ورقي ما لم تُوثَّق صراحة.
يدرّب StealthRL سياسة إعادة صياغة وليس كاشفًا. الفكرة الأساسية هي تحسين نموذج يعيد كتابة النص المؤلَّف بالذكاء الاصطناعي بحيث يظل وفيًا دلاليًا مع تقليل ثقة الكاشف.
Qwen/Qwen3-4B-Instruct-2507المكافأة متعددة الأهداف وتوازن بين:
يعيش التنفيذ بشكل أساسي في:
stealthrl/tinker/train.pystealthrl/rewards/configs/هجوم StealthRL في الورقة هو هجوم بطلقة واحدة في زمن الاختبار:
يُستخدم الوصول إلى الكاشف أثناء تدريب التعلم المعزز غير المتصل وأثناء التقييم الخارجي، وليس للبحث التكيفي في زمن الاستعلام في M2.
تنفيذ تقييم الورقة موجود في حزمة eval/ الأحدث وليس في منصّة stealthrl/evaluation/ الأقدم.
M0: بدون هجومM1: خط أساس إعادة صياغة بسيطM2: StealthRLM3: خط أساس إعادة صياغة عدائية موجَّه بالكاشفM4: خط أساس AuthorMistM5: خط أساس تشويش على مستوى المحارفالكود ذو الصلة:
eval/methods/scripts/generate_method_outputs.pyلوحة الكواشف الرئيسية في الورقة تستخدم:
roberta: openai-community/roberta-large-openai-detectorfast_detectgptbinocularsmage: yaful/MAGEيحتفظ المستودع أيضًا بدعم ghostbuster لتجارب التوافق/القديمة، لكن Ghostbuster ليس جزءًا من لوحة الكواشف النهائية الأربعة في الورقة.
الكود ذو الصلة:
eval/detectors.pyscripts/score_detector_outputs.pyeval/runner.pyيحسب كود التقييم العام:
الكود ذو الصلة:
eval/metrics.pyeval/plots.pyeval/quality_judge.pyscripts/finalize_eval_run.pyيدعم كود التقييم الحالي التوليد المحلي المدعوم بـvLLM للتقييم عالي الإنتاجية لخطوط الأساس. هذا مُنفَّذ في:
eval/methods/vllm_backend.pyيدعم أسلوب M2 في StealthRL أخذ العينات عبر Tinker باستخدام ملف JSON لوصف نقطة التفتيش. هذا المسار مُنفَّذ في:
eval/methods/stealthrl.pyخط أنابيب MAGE الكامل مرحلي عمدًا:
هذا يجعل التشغيلات الطويلة متعددة وحدات معالجة الرسوميات أكثر متانة وأسهل في التصحيح.
eval/methods/BaseAttackMethodeval/methods/__init__.pyeval/runner.pyأُصدر هذا المستودع للبحث حول متانة كاشفات النصوص المؤلَّفة بالذكاء الاصطناعي، والتقييم العدائي، والقياس المعياري الدفاعي. ليس الغرض منه دعم الغش أو الانتحال أو تفادي الأنظمة المشروعة للسلامة والنزاهة.
إذا بنيت على هذا العمل، فيُرجى استخدامه لتحسين متانة الكواشف ومعايرتها وتقييم الانتقال والشفافية حول قيود النشر.
إذا استخدمت هذا المستودع، فيُرجى الاستشهاد بالورقة:
@article{ranganath2026stealthrl,
title={StealthRL: Reinforcement Learning Paraphrase Attacks for Multi-Detector Evasion of AI-Text Detectors},
author={Ranganath, Suraj and others},
journal={arXiv preprint arXiv:2602.08934},
year={2026}
}