
raptor v3.1.0
إطار عمل بحث أمني مستقل يدمج التحليل الثابت، وتحليل الثنائيات، والاختبار العشوائي، والتحقق من الثغرات المدعوم بنماذج اللغة الكبيرة، وتوليد الاستغلال، وكتابة التصحيحات للعمليات الهجومية والدفاعية.
╔═══════════════════════════════════════════════════════════════════════════╗
║ ║
║ ██████╗ █████╗ ██████╗ ████████╗ ██████╗ ██████╗ ║
║ ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗ ║
║ ██████╔╝███████║██████╔╝ ██║ ██║ ██║██████╔╝ ║
║ ██╔══██╗██╔══██║██╔═══╝ ██║ ██║ ██║██╔══██╗ ║
║ ██║ ██║██║ ██║██║ ██║ ╚██████╔╝██║ ██║ ║
║ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ║
║ ║
║ Autonomous Offensive/Defensive Research Framework ║
║ Based on Claude Code (v3.1.0) ║
║ ║
║ Gadi Evron, Daniel Cuthbert, Thomas Dullien (Halvar Flake) ║
║ Michael Bargury, John Cartwright ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════╝
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣀⣀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⠿⠿⠟
⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣤⣴⣶⣶⣶⣤⣿⡿⠁⠀⠀⠀
⣀⠤⠴⠒⠒⠛⠛⠛⠛⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⣿⣿⣿⡟⠻⢿⡀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⢿⣿⠟⠀⠸⣊⡽⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⣿⡁⠀⠀⠀⠉⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⠿⣿⣧⠀ Get them bugs.....⠀⠀⠀⠀⠀
المؤلفون: Gadi Evron، Daniel Cuthbert، Thomas Dullien (Halvar Flake)، Michael Bargury، John Cartwright (@gadievron، @danielcuthbert، @thomasdullien، @mbrg، @grokjc)
الترخيص: MIT، انظر LICENSE. لاحظ أن CodeQL له ترخيصه الخاص ولا يسمح بالاستخدام التجاري.
المستودع: https://github.com/gadievron/raptor
ما هو RAPTOR؟
RAPTOR هو إطار عمل مستقل لأبحاث الأمن مبني على Claude Code (لكنه غير مرتبط به -- يمكنك إضافة طبقة التحليل الخاصة بك أيضاً). يربط معاً التحليل الساكن، وتحليل الملفات الثنائية، والتحقق من الثغرات المدعوم بالذكاء الاصطناعي، وتوليد الاستغلال، وكتابة التصحيحات في سير عمل واحد يمكنك تشغيله على قاعدة شيفرة أو ملف ثنائي.
إنه ليس برنامجاً مصقولاً. تم بناؤه في وقت الفراغ، متماسكاً بالحماس والشريط اللاصق، ويعمل بشكل جيد بما يكفي لدرجة أننا لا نستطيع التوقف عن استخدامه. إذا أردت تحسينه، افتح PR.
RAPTOR اختصار لـ Recursive Autonomous Penetration Testing and Observation Robot. أردنا حقاً تسميته RAPTOR.
كيف تم بناؤه
RAPTOR في معظمه شيفرة مولّدة بالذكاء الاصطناعي. يحدد البشر الاتجاه، ويراجعون المخرجات، ويتخذون قرارات التصميم؛ ويكتب الذكاء الاصطناعي التنفيذ. التحقق الميكانيكي (الاختبارات، التحليل الساكن، معايرة المجموعة المرجعية) يحافظ على مستوى الجودة حيث يجب أن يكون بغض النظر عمن — أو ما — كتب الشيفرة.
المتطلبات الأساسية
- Claude Code مع اشتراك نشط (Max، Pro، Team، أو Enterprise) أو مفتاح Anthropic API. هذه هي طبقة التنسيق لصدفة
raptorالتفاعلية -- اختيارية إذا كنت تحتاج فقط إلى واجهات CLI المستقلة، انظر التشغيل المستقل تماماً أدناه. - Python 3.10+ و Node.js 18+.
- Semgrep (
pip install semgrep) للتحليل الساكن. CodeQL اختياري لكنه موصى به.
بالنسبة لطبقة إرسال التحليل (الذكاء الاصطناعي الذي يحلل النتائج الفردية)، يتولى Claude Code نفسه كل شيء افتراضياً -- لا حاجة لمفاتيح API إضافية. إذا أردت تحليلاً متعدد النماذج (مثل Claude + GPT + Gemini) أو إعداداً محلياً بالكامل، فستحتاج إلى تكوين المزود (المزودين) الآخرين. انظر استخدام LLM مختلف أدناه.
البدء السريع
الخيار 1: التثبيت يدوياً```bash
Clone the repo
git clone https://github.com/gadievron/raptor.git cd raptor
Install Python dependencies
uv sync --locked
Compatibility path during the uv migration
pip install -r requirements.txt
Install Claude Code (if you don't already have it)
npm install -g @anthropic-ai/claude-code
Install Semgrep (required for scanning)
pip install semgrep
Add the launcher to your PATH -- put this in your shell profile to make it
permanent. Append rather than prepend, so system directories stay ahead of
the repo. (Alternatively, symlink bin/raptor into a directory already on PATH.)
export PATH="$PATH:$PWD/bin"
Launch RAPTOR
raptor
مُشغِّل `raptor` هو الطريقة الموصى بها لبدء جلسة، وهو يعمل من أي دليل -- فهو يحدد مسار تثبيت RAPTOR، ويتذكر الدليل الذي شغّلت منه الأمر (بحيث تعود الأوامر مثل `/scan` إليه افتراضيًا)، ويجري فحوصات الثقة والمشروع الأولية، ويحمّل إضافة تتبع التغطية، ويُنقّي البيئة قبل تسليم الأمر إلى Claude Code. كما يقبل مسار هدف اختياريًا وأعلامًا مثل `--project` و`--continue` و`--model` -- راجع `raptor --help`.
تشغيل `claude` المجرّد من داخل دليل المستودع يعمل أيضًا -- إذ يلتقط Claude Code إعدادات RAPTOR من نسخة المستودع -- لكنك تتخطى كل ما يفعله المُشغِّل المذكور أعلاه: لا فحوصات أولية، ولا تتبع للتغطية، والأوامر التي تعود افتراضيًا إلى "الدليل الذي شغّلت منه الأمر" لا يمكنها رؤيته.
**مهم:** يحمّل RAPTOR إعداداته من دليل المستودع. إذا شغّلت `claude` من أي دليل آخر، فستحصل على Claude Code المجرّد، وليس RAPTOR. يتجنب مُشغِّل `raptor` هذا النمط من الفشل تمامًا.
### الخيار 2: التشغيل داخل حاوية (موصى به)
يُعد استخدام الحاويات ممارسة أمنية شائعة لتقييد وصول الوكلاء إلى مناطق من نظام الملفات لا تريدهم أن يصلوا إليها، وكذلك للحد من نطاق تأثير أي تعليمات برمجية خبيثة قد تُنفَّذ (مثلًا عبر هجوم سلسلة التوريد). حجم الصورة كبير (حوالي 6 جيجابايت). وهي تبدأ من حاوية التطوير Microsoft Python 3.12 devcontainer وتضيف أدوات التحليل الساكن والاختبار العشوائي وأتمتة المتصفح.
يمكنك سحب صورة جاهزة مسبقًا:```bash
docker pull danielcuthbert/raptor:latest
أو قم ببنائه محليًا باستخدام Dockerfile المضمّن:```bash
docker build -f .devcontainer/Dockerfile -t raptor:latest .
تتوقع الصورة أن يتم تركيب إطار عمل RAPTOR (هذا المستودع) في `/workspaces/raptor` عند بدء التشغيل. يمكنك اختياريًا تركيب مجلد هدف للتحليل المحلي.
لبدء الحاوية:```bash
docker run -it \
-v "$(pwd):/workspaces/raptor" \
raptor:latest
لتحميل مجلد هدف أيضًا:```bash
docker run -it
-v "$(pwd):/workspaces/raptor"
-v "/path/to/target-folder:/workspaces/target"
raptor:latest
أضف `--privileged` إذا كنت بحاجة إلى مصحح الأخطاء الحتمي `rr`.
تُدعم أيضًا حاويات التطوير VS Code devcontainers. لتركيب مجلد هدف، أضفه إلى قسم `mounts` في `.devcontainer/devcontainer.json`:```jsonc
"mounts": [
// ...existing entries...
"source=/path/to/target-folder,target=/workspaces/target,type=bind,consistency=cached"
]
ثم افتح المستودع في VS Code — سيطلب منك إعادة الفتح داخل الحاوية:```bash cd /path/to/raptor code .
في كلتا الحالتين، بمجرد دخولك إلى الحاوية، شغّل `raptor` للبدء.
---
## ما يمكن توقعه في التشغيل الأول
أبسط شيء يمكنك فعله:```
/scan /path/to/code
يقوم هذا بتشغيل Semgrep (بالإضافة إلى Coccinelle عند تثبيت spatch؛ أضف --codeql لـ CodeQL) مقابل الهدف، ويزيل التكرار من النتائج، ويكتب تقرير SARIF. لا يوجد تحليل LLM، ولا مفاتيح API بخلاف Claude Code. يستغرق بضع دقائق على مستودع نموذجي.
لإضافة التحقق المدعوم بـ LLM:``` /agentic /path/to/code
يُشغّل هذا خط الأنابيب الكامل: الفحص، وإزالة التكرار، ثم تمرير كل نتيجة عبر مراحل التحقق (A-F). على قاعدة شيفرة متوسطة الحجم تضم نحو 50 نتيجة، توقّع استغراق 10-30 دقيقة وتكلفة تتراوح بين 2 و8 دولارات من تكاليف نماذج LLM في طبقة التحليل (حسب النموذج). الحد الأقصى الافتراضي للتكلفة هو 10 دولارات لكل تشغيل؛ عدّله باستخدام `--max-cost-usd`.
**ملاحظة حول التكلفة:** تستخدم طبقة تنسيق Claude Code اشتراكك في Claude. أما طبقة إرسال التحليل فتُجري استدعاءات API منفصلة لنماذج LLM تُحتسب لكل رمز (token). إذا كنت تستخدم Claude Code فقط كنموذج تحليل (الافتراضي)، فلا توجد تكلفة إضافية تتجاوز اشتراكك. أما إذا قمت بتهيئة نماذج خارجية (OpenAI، Gemini، إلخ)، فتُحتسب تلك الاستدعاءات على مزوّديها.
---
## نموذج الأمان
يشغّل RAPTOR شيفرة مولّدة بواسطة LLM ويحلّل مستودعات غير موثوقة. تُعزل العمليات الفرعية التي تتعامل مع محتوى غير موثوق باستخدام Linux namespaces وLandlock وseccomp. يحجب صندوق العزل الوصول إلى الشبكة، ويقيّد رؤية نظام الملفات، ويحدّ من استهلاك الموارد. راجع `docs/sandbox.md` للاطلاع على نموذج التهديد الكامل والتهيئة.
تُجرَّد متغيرات البيئة التي قد تحقن شيفرة في سلسلة التشغيل عند بدء التشغيل (`core/security/_dangerous_env_strip.sh`). لا تُدرَج مسارات الملفات من المستودعات المفحوصة أبدًا في سلاسل shell — فجميع استدعاءات العمليات الفرعية تستخدم وسائط قائمة على القوائم.
---
## ما يمكن لـ RAPTOR فعله
| الأمر | ما يفعله | الحالة |
|---------|-------------|--------|
| `/agentic` | سير عمل مستقل كامل: الفحص، والتحقق، والاستغلال، والترقيع | مستقر |
| `/scan` | تحليل ساكن باستخدام Semgrep وCodeQL | مستقر |
| `/understand` | رسم سطح الهجوم، وتتبّع تدفقات البيانات، واصطياد متغيّرات الثغرات | مستقر |
| `/binary` | تحقيق في الملفات الثنائية بالصندوق الأسود، وأدلة وقت التشغيل، واستعلامات الرسم البياني والتسليم | تجريبي |
| `/ghidra` | جسر Ghidra للهندسة العكسية: إرفاق/استيراد مشاريع `.gpr`، ومقارنة الفروق بين الإصدارات، وتصدير النتائج | تجريبي |
| `/audit` | مراجعة شيفرة منهجية قائمة على الفرضيات ومدعومة بالأدوات | تجريبي |
| `/review` | الاستعلام عن حالة التدقيق: النتائج، والفجوات، والتغطية، وملاحظات المشغّل | مستقر |
| `/annotate` | إرفاق تعليقات نصية حرة لكل دالة (ملاحظات مراجعة المشغّل) | مستقر |
| `/validate` | خط أنابيب متعدد المراحل للتحقق من قابلية الاستغلال (المراحل 0-F) | مستقر |
| `/diagram` | خرائط مرئية بـ Mermaid من مخرجات JSON الخاصة بـ `/understand` و`/validate` | تجريبي |
| `/codeql` | تحليل عميق بـ CodeQL فقط مع فرز مسبق لتدفق البيانات بـ SMT | مستقر |
| `/analyze` | تحليل نتائج SARIF الموجودة باستخدام LLM، دون إعادة الفحص | مستقر |
| `/openant` | فحص شيفرة المصدر بـ OpenAnt LLM: تحليل AST مع استدلال LLM لكل دالة | تجريبي |
| `/sca` | تحليل تركيب البرمجيات: التبعيات، والتنبيهات، ومؤشرات سلسلة التوريد، وقوائم SBOM، والإصلاحات | تجريبي |
| `/cve-diff` | اكتشاف ومقارنة إصلاح commit الخاص بـ CVE عبر OSV وNVD وGitHub وGitLab | تجريبي |
| `/cve-env` | بناء والتحقق من بيئة Docker تشغّل التطبيق المتأثر بـ CVE عند إصداره السابق للترقيع | تجريبي |
| `/exploit` | توليد شيفرة استغلال إثبات المفهوم | تجريبي |
| `/patch` | توليد ترقيعات آمنة للثغرات المؤكدة | تجريبي |
| `/fuzz` | اختبار تشويش الملفات الثنائية باستخدام AFL++ وتحليل الأعطال | مستقر |
| `/crash-analysis` | تحليل مستقل للسبب الجذري لأعطال C/C++ | مستقر |
| `/oss-forensics` | تحقيق جنائي مدعوم بالأدلة لمستودعات GitHub | مستقر |
| `/project` | مساحات عمل مسمّاة لتنظيم التشغيلات وتتبّع النتائج بمرور الوقت | مستقر |
| `/describe` | وصف هدف: مزيج اللغات، ونظام البناء، وفجوات الأدوات، وتقدير التكلفة (للقراءة فقط) | مستقر |
| `/threat-model` | إنشاء وفحص وصيانة نماذج التهديد لكل مشروع | مستقر |
| `/sage` | طبقة ذاكرة دائمة (تخزين، واستدعاء، وربط، وتأكيد) | مستقر |
| `/ask` | إرسال مطالبة حرة إلى أي نموذج LLM مُهيّأ | مستقر |
| `/scorecard` | فحص موثوقية كل نموذج عبر فئات القرارات | مستقر |
| `/frida` | أجهزة القياس الديناميكي عبر Frida | ألفا |
| `/web` | فحص تطبيقات الويب: الزحف، وتكامل ffuf/nuclei، والحقن المُتحقَّق منه بـ oracle، واستدعاءات SSRF العمياء | تجريبي |
---
## كيف يعمل خط الأنابيب
ابدأ بإنشاء مشروع حتى تصل جميع تشغيلاتك إلى مكان واحد:```
/project create myapp --target /path/to/code # create a project first
/project use myapp # set it as active
/understand --map # map the attack surface
/agentic --threat-model --validate # map, model, scan, validate
/project findings # review everything in one place
بالنسبة إلى مُخرَج مُترجم، فإن نقطة البداية المكافئة هي:```text /binary investigate /path/to/binary # build the evidence-backed binary map /binary graph --edges --json # query the persisted graph /binary trace-parser # collect runtime parser evidence /binary harness # draft a harness only when the boundary is explicit
`/understand` يبني خريطة سياقية لنقاط الدخول وحدود الثقة ونقاط الوصول (sinks) قبل حدوث أي سطر من الفحص. ثم يشغّل `/agentic` كلاً من Semgrep وCodeQL، ويزيل التكرار من النتائج، ويوزّع كل نتيجة للتحقق باستخدام منهجية exploitation-validator:
مع `--threat-model`، يشغّل RAPTOR الخريطة أولاً، وينشئ `threat-model.json` و`THREAT_MODEL.md` إذا لم يكن المشروع يمتلكهما بالفعل، ثم يغذّي نسخة مختصرة إلى `/understand` والتحليل الذاتي و`/validate`. تُحفظ نماذج التهديد الموجودة للمشروع ما لم تمرّر `--threat-model-refresh`؛ وتُرفض الخرائط الاحتياطية القديمة ما لم تمرّر صراحةً `--threat-model-use-stale`. كما يحوّل التدفقات غير المفحوصة المُخطَّطة إلى SARIF مرشّح حتى لا تقتل حالات تفويت الماسحات سير العمل. إنه سياق مملوك للمشغّل، وليس دليلاً سحرياً: لا تزال النتائج بحاجة إلى أدلة برمجية أو تأكيد مدعوم بمصدر مرجعي (oracle). راجع `docs/threat-model.md`.
- المرحلة A: هل النمط ثغرة فعلية أم أنه ضجيج مطابقة أنماط من الأداة؟
- المرحلة B: ما الذي يحتاجه المهاجم للوصول إليه، وما الذي يعترض طريقه؟
- المرحلة C: هل مسار الكود موجود فعلاً؟ هل يمكن الوصول إليه من الخارج؟
- المرحلة D: القرار النهائي -- هل هذا كود اختبار، هل يحتاج شروطاً مسبقة غير واقعية، هل النموذج يتحوّط؟
- المرحلة E: جدوى الاستغلال الثنائي (عند توفر مخرَج مُصرَّف)
- المرحلة F: المراجعة الذاتية -- هل تحوّطت أي مرحلة سابقة أو ناقضت نفسها؟
النتائج التي تجتاز التحقق تحصل على PoCs للاستغلال وتُولَّد لها تصحيحات. يُشغَّل تحليل عابر للنتائج في النهاية لإيجاد الأسباب الجذرية المشتركة وسلاسل الهجوم.
يشغّل `/validate` هذه المنظومة نفسها كخطوة مستقلة إذا كانت لديك بالفعل نتائج من فحص سابق.
بالنسبة لمخرَج مُصرَّف، يشغّل `/binary <path>` الآن تحقيقاً قائماً على الأدلة أولاً
بدلاً من إغراق المشغّل بكومة من مخرجات الهندسة العكسية الخام.
تحت السطح لا يزال يبني البيان المرتبط بـ SHA-256،
وسجل الأدلة، وخريطة السياق، وقائمة التحقق، ومخطط SQLite من بيانات وصفية للملف،
والاستيرادات، وإحالات radare2. كما تحصل تطبيقات Mach-O على جرد الشرائح، وبيانات
الحزمة الوصفية، ومحدِّدات أصناف Objective-C / Swift؛ ويُحفظ الكود الزائف عالي القيمة
بدلاً من أن يتلاشى داخل التشغيل. كما تُعالَج صادرات PE DLL، وموزّعات برامج تشغيل Windows،
ومعالِجات ioctl لوحدات نواة Linux كمرشّحات دخول خاصة بها،
مع قراءة معمارية PE من ترويسة COFF بدلاً من تخمينها. ثم تستعلم طبقة التحقيق
عن ذلك المخطط، وترتّب الدخول الخارجي قبل مسارات الوصول العامة،
وتكتشف الثنائيات المساعدة/الشقيقة المُعلَنة، وتكتب تقريراً مختصراً مقسّماً إلى حقائق،
واستنتاجات بنيوية، وفرضيات غير مُثبَتة. يمكن لملاحظات Frida، وشواهد انهيار Fuzzing،
وفحوص Z3 الصريحة، وفروقات الثنائيات أن تضيف أدلة أقوى لاحقاً. كما يحتفظ RAPTOR
بمخطط الاستدعاء الداخلي اللازم لاستعادة مرشّحات الدخول المحدودة إلى المحلّل،
حتى يمكن تضييق استدعاء تطبيق ما إلى الدالة الداخلية التي تستدعي فعلاً `XML_Parse`،
أو `d2i_X509`، أو `jpeg_read_header` أو أي سطح محلّل حقيقي آخر دون التظاهر بأن ذلك
إثبات تلوّث (taint proof). `/binary trace-parser <run-dir>` هو المتابعة الديناميكية الصريحة:
يشغّل تتبّع المحلّل الضيق عبر Frida، ثم يحدّث خريطة السياق نفسها،
والتسليم، والمخطط، وتقرير التحقيق في مكانه. يرسم `/binary investigate --active` الخريطة أولاً
ولا يطلق حملة fuzzing حقيقية إلا عند وجود حدّ harness ملموس؛ أما أهداف التطبيقات
وDLL وبرامج التشغيل فتحصل على خطوة harness أو لقطة بدلاً من ذلك. يكتب `/binary harness`
مواصفة harness مدعومة بالأدلة للدخول المختار ولا يُصدر كوداً مصدرياً مرشّحاً إلا عندما
يكون عقد ABI أو IOCTL صريحاً. إنه لا يتسلّل من "`memcpy` موجود" إلى "هذا
قابل للاستغلال": تبقى الاستيرادات والمحدِّدات وحواف الاستدعاء مرشّحات حتى
يثبت شيء ميكانيكي أكثر. راجع `docs/binary-analysis.md`.
---
## تحليل تكوين البرمجيات
يحلّل `/sca` جانب التبعيات وسلسلة التوريد في المشروع. إنه ليس مجرد بحث عن CVEs في ملف المتطلبات: يكتشف RAPTOR ملفات البيان (manifests)، وملفات القفل (lockfiles)، وأوامر التثبيت المضمّنة، وتبعيات سير العمل، ومصادر حزم الحاويات/الصور الأساسية، ثم يوحّدها في عرض واحد للتبعيات.
يُثري الفحص التبعيات بتن advisories من OSV، وCISA KEV، وEPSS، وCISA Vulnrichment/SSVC، وقابلية الوصول، وإشارات أدلة الاستغلال، وفحوص النظافة، واستدلالات سلسلة التوريد، ونتائج سياسة التراخيص، ومراجعة/فرز اختياري عبر LLM. يُصدر نتائج أصلية لـ RAPTOR بالإضافة إلى SBOM ومخرجات صديقة لـ CI:
- `findings.json` - نتائج RAPTOR الأساسية
- `report.md` - ملخص قابل للقراءة البشرية
- `sbom.cdx.json` - SBOM بصيغة CycloneDX مع بيانات VEX
- `findings.sarif` - مخرجات فحص الكود لـ GitHub/GitLab
الأوامر الشائعة:```bash
python3 raptor.py sca --repo /path/to/project
python3 raptor.py sca --repo /path/to/project --no-llm
python3 raptor.py sca --repo /path/to/project --fail-on-severity high --fail-on-kev
python3 raptor.py sca --repo /path/to/project fix
python3 raptor.py sca check PyPI django 4.2.10
تتضمن الأوامر الفرعية المفيدة fix وcheck وupgrade وdiff وverify وhealth وrender وsuppress وclean-cache. راجع docs/sca.md للحصول على المرجع الكامل.
تكامل Z3 SMT
يمتلك RAPTOR تكاملاً مع Z3 على طبقتين (pip install z3-solver). وهو اختياري. كل شيء يعمل بدونه، لكن النتائج تكون أفضل معه.
الفحص المسبق لتدفق البيانات (CodeQL)
عندما ينتج CodeQL نتيجة مسار، يتم التحقق من قابلية استيفاء قيود المسار قبل إجراء أي استدعاء لنموذج لغوي كبير (LLM). يتم إسقاط المسارات التي ثبت أنها غير قابلة للوصول فوراً. أما المسارات القابلة للوصول، فينتج Z3 مدخلات مرشحة ملموسة تُدرج في مطالبة التحليل، بحيث يكون لدى النموذج اللغوي شيء محدد يستند إليه في استدلاله بدلاً من أنماط مجردة.
تحليل قيود one-gadget (الجدوى الثنائية)
أثناء تقييم جدوى استغلال الملفات الثنائية، يتحقق Z3 مما إذا كانت قيود السجلات والذاكرة الخاصة بـ one-gadget قابلة للاستيفاء مقابل حالة الانهيار الملموسة. يتم ترتيب الـ gadgets حسب قابلية الوصول الفعلية بدلاً من الاستدلالات الإرشادية، بحيث تقضي وقتك على gadgets التي يمكنها العمل فعلاً.
Z3 مثبّت مسبقاً في devcontainer. للتثبيت اليدوي: pip install z3-solver.
التشغيل دون اتصال وفي خطوط أنابيب معزولة شبكياً
القواعد المخصصة لـ RAPTOR تحت engine/semgrep/rules/ محلية بالكامل وتعمل دون الوصول إلى الشبكة.
بالنسبة لحزم السجل (p/security-audit وp/owasp-top-ten وغيرها)، يُشحن دليل التخزين المؤقت فارغاً. وتتولى أداة تخزين مؤقت (engine/semgrep/tools/cache-packs.py) عملية التعبئة:```bash
On a connected machine — update the local cache directly:
python3 engine/semgrep/tools/cache-packs.py update
Or fetch into a zip bundle for airgap transfer:
python3 engine/semgrep/tools/cache-packs.py fetch
→ produces semgrep-cache-YYYY-MM-DD.zip
On the airgapped machine — import the bundle:
python3 engine/semgrep/tools/cache-packs.py import semgrep-cache-2026-07-16.zip
Check what's cached:
python3 engine/semgrep/tools/cache-packs.py list
بمجرد أن تُملأ، يحل الماسح معرّفات الحزم إلى ملفات محلية ولا يحدث أي استدعاء شبكي. بدون ذاكرة التخزين المؤقت، سيحاول RAPTOR جلب حزم السجل من semgrep.dev وقت الفحص؛ وإذا كان غير متصل، فإنه يُسقط الحزم غير المخزّنة مؤقتًا بسلاسة ويعمل بالقواعد المخصصة فقط.
يحتاج CodeQL إلى وصول شبكي فقط أثناء الإعداد الأولي لتنزيل CLI وحزم الاستعلامات. بمجرد تثبيته يعمل دون اتصال.
---
## القواعد المخصصة
يوفّر RAPTOR أكثر من 200 قاعدة تحليل ثابت مخصصة، مُختبرة بشكل عدائي لإزالة الإيجابيات الكاذبة:
- **Semgrep (~150 قاعدة)** — قواعد تتبع التلوث والأنماط لـ Python وGo وJava وJS/TS. تغطي SQLi وXSS وSSRF وSSTI وحقن الأوامر وإلغاء التسلسل وXXE وحقن LDAP/NoSQL واجتياز المسار وإعادة التوجيه المفتوح وحقن السجل/الترويسة وحقن eval وReDoS وتلوث النموذج الأولي وسوء إعداد JWT والتشفير الضعيف وTLS غير الآمن والأسرار المضمّنة.
- **Coccinelle (68 قاعدة)** — مطابقة بنيوية لـ C/C++. سلامة الذاكرة (double free، use-after-free، تحرير مؤشر غير أساسي، تحرير مصفوفة على المكدس، ذاكرة mmap'd، use-after-close)، أخطاء الأعداد الصحيحة (الطفح، امتداد الإشارة، sizeof المزدوج)، تسريبات الموارد (عدم تطابق popen/fclose، إغلاق fdopendir المزدوج)، التعامل مع المخازن المؤقتة (strncpy بدون NUL، عدم تطابق حجم copy_user، خطأ بمقدار واحد في malloc/strlen)، سلامة معالج الإشارات، سوء استخدام API (نطاق علم fcntl، SIGKILL/SIGSTOP، تبديل البايت المزدوج، المخزن الثابت inet_ntoa)، إزالة المخزن الميت من المترجم، الخلط بين IS_ERR/PTR_ERR في النواة، حقن سلسلة التنسيق، سباقات TOCTOU، والمزيد.
- **CodeQL (8 استعلامات)** — تتبع التلوث بين الإجراءات لـ C++ (حقن سلسلة التنسيق، اقتطاع الأعداد الصحيحة، use-after-move، إبطال المكرر) وJava (XXE، إلغاء التسلسل غير الآمن، حقن السجل، Spring SSRF).
تصفّح القواعد مباشرة: `engine/semgrep/rules/`، `engine/coccinelle/rules/`، `engine/codeql/queries/`. هذه تكمّل حزم سجل Semgrep التي يجلبها RAPTOR (`p/security-audit`، `p/owasp-top-ten`، `p/secrets` دائمًا؛ وحزم لكل مجموعة سياسات مثل `p/command-injection`، `p/jwt`، `p/xss` إضافةً إلى ذلك) — التداخل ضئيل.
---
## كيف يفحص RAPTOR نفسه
يستخدم RAPTOR قدرًا لا بأس به من أدوات الأمان الخاصة به على نفسه، لكن يجدر أن نكون صادقين بشأن ما يحجب طلب السحب فعليًا وما يعمل فقط في الخلفية ليبقينا صادقين. بعض هذا بوابة صارمة، وبعضه فحص مجدول، وبعضه مجرد معيار نحتفظ به لنعرف متى جعلنا الأمور أسوأ. التفصيل الأكمل، بما في ذلك المعاملات الفعلية وكيفية إعادة إنتاج الفحوصات، موجود في `docs/ci-controls.md`.
| الضابط | ما يفحصه | المشغّل | الإعداد / الدليل |
|---|---|---|---|
| Ruff | تدقيق صحة Python (`F401`، `F811`، `F821`، `F841`) | بوابة فرق طلب السحب، بالإضافة إلى تدقيق أسبوعي كامل للشجرة | `pyproject.toml`، `.github/workflows/lint.yml` |
| Pytest | حدود الوحدات/التكامل السريعة، طبقات خاصة بكل نظام فرعي (عبر إرسال رسم الاستيراد)، تدقيق غلاف المطالبات | طلبات السحب، الدفع إلى `main`، قائمة الدمج، المجموعة الكاملة المجدولة | `pytest.ini`، `.github/workflows/tests.yml`، `.github/workflows/nightly.yml` |
| CodeQL Advanced | فحص كود Python وC/C++ وGitHub Actions مع تضييق نطاق رسم الاستيراد | طلبات السحب، الدفع إلى `main`، قائمة الدمج، جدولة أسبوعية | `.github/workflows/codeql.yml`، `.github/codeql/codeql-config.yml` |
| تقوية سير العمل | إجراءات الطرف الثالث المثبّتة بـ SHA، أذونات الحد الأدنى، تدقيق بيانات الأوامر الوصفية | كل تغيير في سير العمل وكل تشغيل تدقيق | `.github/workflows/`، `.github/scripts/check_command_metadata.py` |
| تدقيق تسميات المجموعة | التحقق من مخطط تسميات مجموعة التدقيق والتحقق من تثبيت المصدر الأعلى | طلبات السحب (التسميات المتغيرة)، مسح كامل أسبوعي | `.github/workflows/corpus-labels.yml` |
| بوابة RAPTOR SCA لطلبات السحب | انحدارات التبعيات وسلسلة التوريد التي يُدخلها طلب سحب | تغييرات المانيفست / ملف القفل / سير العمل | `.github/workflows/sca-pr-gate.yml` |
| الترقية الذاتية لـ RAPTOR SCA | تقوية التبعيات الميكانيكية ومقترحات الترقية الآمنة | جدولة أسبوعية، تشغيل يدوي | `.github/workflows/sca-self-bump.yml` |
| مجموعة اختراق SCA | ما إذا كانت اختراقات التبعيات المعروفة لا تزال تُطلق الإشارة المتوقعة | جدولة أسبوعية، تغييرات طلبات السحب ذات الصلة | `test/data/sca-e2e/compromise-corpus/`، `.github/workflows/sca-compromise-check.yml` |
| كاشفات ثوابت المستودع | كشف الكود الميت / الاستدعاء الخاطئ، انحراف توثيق متغيرات البيئة، حواجز قائمة المفردات، صيغ JSON الأساسية بالبايت، تدقيق استيراد التبعيات الاختيارية | بوابة طلبات السحب (مهمة `repo-invariants` في `lint.yml`)، بالإضافة إلى مسح يومي | `.github/workflows/lint.yml`، `.github/workflows/miswiring-scan.yml`، `.github/scripts/*_baseline.json` |
| معايرة SCA + مجموعة الإجهاد | ما إذا كان تقييم المخاطر وتغطية المحلل تنحرف بمرور الوقت | مهام مجدولة أسبوعيًا / شهريًا | `packages/sca/data/calibration/`، `.github/workflows/refresh-sca-calibration.yml`، `.github/workflows/sca-stress-sweep.yml` |
| مجموعة تدفق البيانات | تتبع الدقة / الاستدعاء / فئة الإيجابيات الكاذبة لسلوك المدقق | معيار يُشغّله المطوّر واختبارات المجموعة | `core/dataflow/corpus/`، `core/dataflow/scripts/corpus-metrics` |
| حارس مستند ضوابط CI | المسارات الموثّقة موجودة، إعداد ruff متطابق، README يرتبط بالمستند | طلبات السحب | `.github/tests/test_ci_controls_docs.py` |
غير مفروض حاليًا: `mypy` مثبّت في `pyproject.toml` لكنه لا يحجب أي شيء؛ تنسيق Ruff غير مفروض؛ Semgrep جزء من سطح الماسح في RAPTOR، لكن ليس لدينا بعد سير عمل Semgrep مخصص لـ "فحص RAPTOR بـ RAPTOR".
---
## استخدام LLM مختلف
لدى RAPTOR طبقتان منفصلتان للنماذج، ويجدر معرفة كيفية عمل كلتيهما قبل تغيير أي شيء.
**طبقة التنسيق** هي Claude Code -- لكن فقط للصدفة التفاعلية `raptor` (هذه الطبقة الحوارية بأوامر الشرطة المائلة). يعمل CLAUDE.md والمهارات والأوامر كتعليمات Claude Code هناك. لتغيير نموذج Claude الذي ينسّق تلك الطبقة، استخدم علم `--model` في Claude Code أو أمر `/model` داخل الجلسة. إذا كنت لا تريد هذه الطبقة على الإطلاق، راجع [التشغيل المستقل تمامًا](#running-fully-standalone-no-claude-code) أدناه.
**طبقة إرسال التحليل** هي LLM الذي يحلل نتائج الثغرات الفردية. هذه منفصلة عن طبقة التنسيق ويمكن أن تكون أي مزوّد مدعوم. اضبطها في `~/.config/raptor/models.json`:```json
{
"models": [
{
"provider": "anthropic",
"model": "claude-opus-4-6",
"api_key": "sk-ant-...",
"role": "analysis"
},
{
"provider": "openai",
"model": "gpt-5.4",
"api_key": "sk-...",
"role": "analysis"
},
{
"provider": "anthropic",
"model": "claude-sonnet-4-6",
"api_key": "sk-ant-...",
"role": "aggregate"
}
]
}
أو تخطَّ ملف الإعدادات واضبط متغيرات البيئة. سيكتشفها RAPTOR تلقائيًا:```bash export ANTHROPIC_API_KEY=sk-ant-... # Anthropic Claude export OPENAI_API_KEY=sk-... # OpenAI export GEMINI_API_KEY=... # Google Gemini export MISTRAL_API_KEY=... # Mistral export OLLAMA_HOST=http://localhost:11434 # Local Ollama
أدوار النماذج تتيح لك تعيين نماذج مختلفة لمهام مختلفة:
| الدور | ما الذي يفعله |
|------|-------------|
| `analysis` | يتحقق من كل اكتشاف ويحلله (المراحل A-F) |
| `code` | يكتب إثباتات مفهوم الاستغلال (PoCs) وكود التصحيح |
| `consensus` | تصويت رأي ثانٍ على الإيجابيات الحقيقية |
| `aggregate` | اختياري. توليف سردي مكتوب بواسطة LLM فوق الارتباط الحتمي متعدد النماذج، يُكتب إلى `aggregation.json` و`agentic-report.md` النهائي |
| `fallback` | يُستخدم إذا فشل النموذج الأساسي أو وصل إلى حدود المعدل |
إذا لم يتم تعيين أي أدوار، يتولى النموذج الأول في القائمة كل شيء. لتحليل شفرة المصدر
متعدد النماذج، قم بتكوين نموذجي `analysis` أو أكثر — ستحصل على
الارتباط الحتمي افتراضيًا. دور `aggregate` اختياري ويضيف
ملخصًا مكتوبًا بواسطة LLM فوق ذلك:```bash
python3 raptor.py agentic --repo /code \
--model claude-opus-4-6 \
--model gpt-5.4 \
--aggregate claude-sonnet-4-6
التحكم في الميزانية:```bash
Cap analysis-layer LLM spend at $5 for this run (default: $10)
python3 raptor.py agentic --repo /code --max-cost-usd 5.00
يعمل Ollama بشكل جيد للتحليل؛ إذ يتتبع مستوى الموثوقية في توليد أكواد الاستغلال/التصحيح حجم النموذج والتكميم بدلاً من كونه خاصية ثابتة للنماذج المحلية — راجع [مقايضات الجودة](https://github.com/gadievron/raptor/blob/main/llm.md#quality-tradeoffs) في دليل LLM، وتحقق من `/scorecard` لمعرفة ما يقيسه نموذجك تحديداً.
### التشغيل بشكل مستقل تماماً (بدون Claude Code)
`bin/raptor` -- الصدفة التفاعلية مع اللافتة والأوامر المائلة، أي هذه الطبقة الحوارية -- تنفّذ مباشرة إلى Claude Code CLI وتحتاج دائماً إلى تسجيل دخول خاص بها. أما الآليات الفعلية تحتها فلا تحتاج ذلك: `python3 raptor.py <mode>` هو واجهة سطر أوامر Python عادية بدون أي اعتماد على Claude Code على الإطلاق.```bash
# No `claude` process involved at any point
python3 raptor.py doctor # status check -- explicitly "no claude needed"
python3 raptor.py agentic --repo /path/to/code # scan -> dedup -> analysis
python3 raptor.py scan --repo /path/to/code
libexec/raptor-* scripts (بما في ذلك raptor-project-manager -- لا يمتلك raptor.py وضع project، فإدارة المشاريع موجودة هناك حصريًا) هي أيضًا Python عادية، لكنها ترفض العمل ما لم يتم تعيين CLAUDECODE (يُعيَّن تلقائيًا داخل جلسة Claude Code) أو تعيين _RAPTOR_TRUSTED=1 صراحةً -- كحماية من استدعائها خارج بيئة تعقيم المشغّل. عيّنه مرة واحدة للاستخدام المستقل:```bash
export _RAPTOR_TRUSTED=1
libexec/raptor-project-manager create myapp --target /path/to/code libexec/raptor-project-manager use myapp python3 raptor.py agentic --repo /path/to/code # picks up the active project automatically libexec/raptor-project-manager status libexec/raptor-project-manager findings
وجّه `models.json` / `OLLAMA_HOST` إلى نسخة Ollama محلية (انظر أعلاه) وهذا المسار بأكمله لا يتحدث أبدًا إلى Anthropic -- مفيد للأجهزة المعزولة أو العتاد المحلي فقط. ستفقد طبقة أوامر الشرطة المائلة الحوارية (هذه الدردشة)؛ خط أنابيب الفحص/التحليل/الاستغلال نفسه غير متأثر.
### الدائرة القصيرة للطبقة السريعة + بطاقة تقييم النموذج
عندما يكون لنموذج طبقة التحليل نظير أرخص من نفس المزوّد (Anthropic Opus → Haiku، OpenAI 5.x → 4o-mini، Gemini Pro → Flash-Lite، Mistral Large → Small)، سيستخدمه RAPTOR كمرشّح مسبق على المستهلكين الذين يتصلون بالركيزة (codeql اليوم؛ SCA وغيره مع وصول المتابعات). النموذج الرخيص لا يقوم أبدًا بالدائرة القصيرة إلا على **الإيجابيات الكاذبة الواثقة**؛ الحالات الملتبسة والإيجابيات الحقيقية الواثقة تُشغّل دائمًا التحليل الكامل. تتراكم الثقة لكل خلية `(model, decision_class)` — يسجّل RAPTOR التوافق بين الرخيص والكامل ولا يقوم بالدائرة القصيرة إلا بعد أن ينخفض الحد الأعلى لـ Wilson 95% لمعدل الخطأ في الخلية إلى 5% أو أقل.
لفحص ما تجيده نماذجك، استخدم `/scorecard` (أو مباشرة: `libexec/raptor-llm-scorecard list`). بطاقة التقييم عالمية (الدروس تنتقل عبر المشاريع) وتُحفظ في `out/llm_scorecard.json`.
---
## المشاريع
بدون مشروع، تحصل كل عملية تشغيل على دليل خاص بها بطابع زمني تحت `out/`. مع مشروع، يذهب كل شيء إلى مكان واحد وتحصل على نتائج مدمجة، وتتبع التغطية، والفروقات بين عمليات التشغيل.```bash
/project create myapp --target /path/to/code -d "Short description"
/project use myapp
/scan
/understand --map
/validate
/project status # all runs, pass/fail, timestamps
/project findings # merged findings across all runs
/project findings --detailed # per-finding detail
/project coverage --detailed # which files were reviewed
/project diff myapp run1 run2 # compare two runs
/project report # full merged report
/project clean --keep 3 # remove old runs, keep the last 3
/project export myapp /tmp/myapp.zip
/project none # clear active project
البنية المعمارية
RAPTOR مكوَّن من طبقتين.
طبقة تنفيذ Python (raptor.py، packages/، core/، engine/) تتولى المهام الثقيلة: تشغيل Semgrep وCodeQL، وإدارة العمليات الفرعية، وتحليل SARIF، وإزالة تكرار النتائج، وإرسال استدعاءات LLM API، وتتبع التكاليف، وكتابة ملفات الإخراج. لا تتخذ قرارات. بل تنفّذ.
طبقة قرار Claude Code (.claude/، tiers/، CLAUDE.md) تتخذ القرارات: أي النتائج يجب إعطاؤها الأولوية، وكيفية تفسير النتائج، وما هو سيناريو الهجوم، وما إذا كان الاستغلال واقعيًا. مُنفَّذة كـ Claude Code skills وأوامر ووكلاء يتم تحميلها تدريجيًا.```
CLAUDE.md always loaded -- bootstrap, routing, security rules
.claude/commands/ slash commands (/agentic, /scan, /validate, etc.)
.claude/skills/ methodology detail, loaded on demand
tiers/ adversarial thinking, recovery, expert personas
.claude/agents/ specialist sub-agents (offsec, crash analysis, forensics)
يعني التقسيم أنه يمكنك تشغيل طبقة Python من خط أنابيب CI (`python3 raptor.py scan --repo ...`) والحصول على مخرجات SARIF منظمة دون Claude Code، أو تشغيلها تفاعليًا مع سير العمل الوكيلي الكامل.
---
## التحقيق الجنائي في OSS
يحقق `/oss-forensics` في مستودعات GitHub العامة باستخدام أدلة من مصادر متعددة: واجهة GitHub API، وGH Archive (سجل أحداث غير قابل للتغيير عبر BigQuery)، وWayback Machine، وسجل git المحلي. يشغّل خط أنابيب منظمًا بدءًا من جمع الأدلة مرورًا بتكوين الفرضيات وصولًا إلى تقرير جنائي نهائي.
يتطلب `GOOGLE_APPLICATION_CREDENTIALS` للوصول إلى BigQuery. راجع `.claude/commands/oss-forensics.md` للتفاصيل.
---
## الشخصيات الخبيرة
تتوفر ثماني شخصيات خبيرة عند الطلب. حمّل إحداها عندما تريد منظورًا مختلفًا حول اكتشاف ما أو تقنية محددة:```
Exploit Developer (Mark Dowd) Exploit PoC generation
Crash Analyst (Charlie Miller / Halvar Flake) Crash analysis and exploitability assessment
Security Researcher General adversarial code review
Patch Engineer Secure fix generation
Penetration Tester Realistic attack scenario assessment
Web Researcher (James Kettle) Web endpoint research (smuggling, cache poisoning, SSRF)
Fuzzing Strategist Corpus design and triage
Binary Exploitation Specialist ROP, heap, and memory corruption
أخبر Claude أيّها يستخدم، مثلاً "Use the Binary Exploitation Specialist".
Documentation
راجع docs/README.md للفهرس الكامل. الأدلة الرئيسية:
| File | Contents |
|---|---|
docs/commands.md | مرجع كامل لأوامر الشرطة المائلة مع كل خيار |
docs/architecture.md | بنية قاعدة الكود وشجرة المجلدات |
docs/llm.md | إعداد مزوّد LLM، Bedrock، سير عمل متعدد النماذج |
docs/sandbox.md | عزل العمليات: الملفات الشخصية، Landlock، مساحات الأسماء |
docs/troubleshooting.md | الاختبار الذاتي، أخطاء إعداد البيئة المعزولة (mount-ns/uidmap على Ubuntu 24.04+)، التفاعل مع EDR |
docs/agent-security.md | قدرات الوكيل، حدود الأدوات، ضوابط الشبكة، الموافقة البشرية |
docs/audit.md | مراجعة منهجية للكود: الفرضيات، الأدوات، الاستراتيجيات، البوابات |
docs/validation.md | خط أنابيب التحقق من قابلية الاستغلال (المراحل 0--1) |
docs/static-analysis.md | قواعد Semgrep وCoccinelle |
docs/codeql.md | تكامل CodeQL والتحليل الذاتي |
docs/binary-analysis.md | أوراكل الملفات الثنائية، /binary، جدوى الاستغلال |
docs/fuzzing.md | AFL++ وlibFuzzer |
docs/crash-analysis.md | تحليل السبب الجذري للانهيار بشكل ذاتي |
docs/sca.md | تحليل تكوين البرمجيات |
docs/frida.md | الأدوات الديناميكية |
docs/security.md | نموذج الأمان الخاص بـ RAPTOR |
docs/ci-controls.md | ضوابط CI، سير العمل، وأدلة المعايير |
docs/threat-model.md | ميزة نموذج التهديد لكل مشروع |
docs/python-cli.md | مرجع Python CLI للبرمجة النصية وCI |
docs/concepts.md | المفاهيم الأساسية: النموذج ثنائي الطبقات، دورة حياة الاكتشاف، اختيار أمر |
docs/agentic.md | سير العمل الذاتي: خط أنابيب /agentic، خيارات الإثراء، متعدد النماذج |
docs/sage.md | ذاكرة SAGE الدائمة: الإعداد، مفتاح HMAC، CPU/GPU، حالات الاستخدام |
docs/dependencies.md | الأدوات الخارجية، الإصدارات، والتراخيص |
tiers/personas/README.md | مرجع الشخصيات الخبيرة |
Contributing
RAPTOR مفتوح المصدر. أماكن جيدة للبدء إذا أردت المساهمة:
- زحف محرك المتصفح وتغطية DOM XSS لماسح الويب (Playwright مثبّت لكن غير مستخدم)
- تغطية قواعد SSRF للأطر المدفوعة بالتعليقات التوضيحية (Spring
@RequestParam، معاملات FastAPI المكتوبة) — لا يستطيع semgrep مطابقة هذه المصادر، لذا تُرحّب الأساليب البديلة - توليد توقيعات YARA
- نقل إلى أدوات برمجة AI أخرى (Cursor، Windsurf، Copilot، Cline)
- تغطية أفضل لتحليل البرامج الثابتة
- أي شيء تعتقد أنه مفقود
تُوسم الإصدارات بـ vX.Y.Z وتُبنى تلقائياً بواسطة CI. تحدد بادئات الالتزامات ما يدخل في سجل التغييرات: feat: للميزات الجديدة، fix: لإصلاحات الأخطاء، security: للتغييرات الأمنية، docs: للتوثيق. أي شيء بدون بادئة يقع في "Other changes". لا يُشترط اصطلاح صارم، لكنه يساعد.
أرسل طلبات السحب. تحدث معنا على قناة #raptor في Prompt||GTFO Slack: https://join.slack.com/t/promptgtfo/shared_invite/zt-3v2b4sll3-SfyzFRw2lykx_XQX7F3uNQ
Licence
MIT -- Copyright (c) 2025-2026 Gadi Evron, Daniel Cuthbert, Thomas Dullien (Halvar Flake), Michael Bargury, John Cartwright.
راجع LICENSE للنص الكامل. راجع تراخيص جميع التبعيات قبل الاستخدام التجاري -- CodeQL على وجه الخصوص لا يسمح بذلك.
Issues: https://github.com/gadievron/raptor/issues
Python Dependencies
يستخدم RAPTOR ملفي pyproject.toml وuv.lock كمصدر موثوق لتبعيات
Python. يبقى requirements.txt المُدرج في المستودع كتصدير
للتوافق مع المستخدمين الذين يفضلون pip install.
عمليات تثبيت مفيدة:```bash uv sync --locked # core runtime uv sync --locked --group dev # tests + linting uv sync --locked --extra web # /web scanner support uv sync --locked --extra "web smt llm sage" # optional stacks
الحفاظ على `/web` وZ3 وSAGE ومجموعات تطوير برامج مزوّدي الخدمات السحابية كإضافات اختيارية يتجنّب جعل تثبيت RAPTOR الافتراضي أثقل وأكثر هشاشة مما ينبغي.