
ogi v0.8.0
إطار عمل مفتوح المصدر لتحليل الروابط واستخبارات المصادر المفتوحة (OSINT)
OpenGraph Intel (OGI)
إطار عمل مفتوح المصدر لتحليل الروابط المرئية وجمع المعلومات الاستخباراتية من المصادر المفتوحة (OSINT). مجاني، قابل للاستضافة الذاتية، ومدعوم من المجتمع.
المميزات • لقطات الشاشة • البدء السريع • Docker • محور التحويلات • الهندسة • المساهمة
ملاحظة: هذا المشروع في تطور نشط. يتمتع بقدرات أساسية قوية وتغطية اختبارية، ونواصل تحسين التوثيق والتعزيز وعمق الميزات مع كل إصدار. المساهمات وتقارير الأخطاء والملاحظات مرحب بها جدًا.
المميزات
- الاستقصاء المرئي بالرسوم البيانية — سحب وإفلات الكيانات، استكشاف الروابط بشكل تفاعلي
- أكثر من 20 تحويلاً مدمجًا — DNS، WHOIS، شهادات SSL، تحديد الموقع الجغرافي، إثراء الويب/البريد الإلكتروني/الهاش/الوسائط الاجتماعية، والمزيد
- محور التحويلات — تصفح وتثبيت التحويلات المجتمعية من السجل
- المحقق الذكي (AI Investigator) — تحقيقات وكيلية تعتمد على الأوامر النصية، تخطط لعمليات التحويل، تبث التقدم مباشرة، وتلخص النتائج مع إمكانية التدقيق
- استيراد / تصدير — استيراد بصيغ JSON، CSV، GraphML، و MTGX
- تحليل الرسوم البيانية — المركزية، اكتشاف المجتمعات، أقصر المسارات
- التعاون الفوري — المشاريع، المشاركة، والمزامنة المباشرة عبر Supabase Realtime
- وظائف التحويل غير المتزامنة — قائمة انتظار Redis/RQ مع تحديثات التقدم عبر WebSocket
- نظام الإضافات — اكتشاف الإضافات القائم على الدلائل مع ملفات تعريف بصيغة YAML
- أداة سطر الأوامر — بحث وتثبيت وإدارة التحويلات من الطرفية
- يعمل في أي مكان — وضع SQLite المحلي (بدون إعدادات) أو PostgreSQL + Supabase للإعدادات الجماعية/السحابية
- جاهز لـ Docker — نشر بأمر واحد باستخدام
docker compose up
لقطات الشاشة
| الاستقصاء المرئي | إثراء الكيان |
|---|---|
![]() | ![]() |
| محور التحويلات | التصدير / الاستيراد |
|---|---|
![]() | ![]() |
البدء السريع
المتطلبات الأساسية
| الأداة | الإصدار |
|---|---|
| Python | 3.14+ |
| uv | latest |
| Node.js | 20+ |
| pnpm | latest |
الواجهة الخلفية```bash
cd backend uv sync uv run uvicorn ogi.main:app --reload
ستكون واجهة API متاحة على `http://localhost:8000`.
لتنفيذ التحويل محليًا، يجب أن يكون Redis وعامل التحويل (transform worker) قيد التشغيل أيضًا. Redis وحده لا يكفي.
ابدأ Redis:```bash
docker run -d --name ogi-redis -p 6379:6379 redis:7-alpine
ابدأ تشغيل عامل التحويل في محطة طرفية ثانية:```bash cd backend uv run python -m ogi.worker.run_worker
إذا رأيت `Job queue not available` أو `Redis not available`، تأكد من أن:
- يشير `OGI_REDIS_URL` إلى `redis://localhost:6379/0` للتشغيل المحلي على المضيف
- تم إعادة تشغيل الخلفية بعد أن أصبح Redis قيد التشغيل
- عملية العامل المنفصلة قيد التشغيل
- لا تستخدم اسم المضيف الخاص بـ Docker فقط `redis` خارج Docker Compose
إذا قمت بتشغيل الخلفية باستخدام PostgreSQL (`OGI_USE_SQLITE=false`)، فسيقوم بدء التشغيل بتطبيق ترحيلات Alembic تلقائيًا قبل خدمة الطلبات. تقوم عمليات نشر Docker بذلك أيضًا في نقطة دخول حاوية الخلفية.
يتم معالجة عمليات تشغيل AI Investigator بواسطة عامل منفصل آخر:```bash
cd backend
uv run python -m ogi.agent.run_worker
الواجهة الأمامية```bash
cd frontend pnpm install pnpm dev
افتح http://localhost:5173. هذا كل شيء.
### AI Investigator
AI Investigator هو سير عمل اختياري مدعوم من مزود يمكنه تخطيط تسلسلات التحويل، وطلب الموافقات، وتلخيص تقدم التحقيق داخل مساحة العمل.
- افتح علامة التبويب `AI Investigator` داخل مشروع
- قم بتكوين مزود ونموذج في مربع حوار إعدادات المحقق
- قم بتخزين مفاتيح API الخاصة بالمزود في `API Keys`
- قم بتشغيل عملية `agent-worker` المنفصلة بجانب الخادم الخلفي
التنفيذ الحالي يدعم تكوين مزود لكل مستخدم وعامل مخصص ينفذ خطوات التحقيق بشكل مستقل عن خادم API الرئيسي.
### واجهة سطر الأوامر
طريقتان مدعومتان لتشغيل واجهة سطر الأوامر:
**موصى به** (لا يتطلب تنشيط):```bash
cd backend
uv sync
uv run ogi --help
virtualenv المُفعَّل (الأمر العادي ogi):```bash
cd backend
uv venv
PowerShell:
..venv\Scripts\Activate.ps1 uv pip install -e . ogi --help
## Docker
### التطوير```bash
cp .env.example .env
docker compose up
الإنتاج
استخدم صور GHCR المعدة مسبقًا.
مهم: docker-compose.prod.yml يتطلب قاعدة بيانات PostgreSQL خارجية. لا يتضمن خدمة db.
إذا كنت ترغب في استخدام مجموعة Docker المحلية الكل في واحد مع Postgres وRedis المدمجين، استخدم:```bash docker compose up -d
استخدم ملف compose للإنتاج فقط عندما يكون لديك بالفعل مثيل PostgreSQL يمكن الوصول إليه وقد قمت بتعيين `OGI_DATABASE_URL` وفقًا لذلك:```bash
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
اضبط OGI_IMAGE_TAG في .env لتثبيت علامة صورة إصدار معينة (مثل v0.2.6). الافتراضي هو latest.
Hetzner Cloud
يمكن للمستخدمين الجدد في Hetzner استخدام الرابط الأول للتسجيل مع رصيد Hetzner Cloud. إنه رابط إحالة، لذا قد يحصل مشرف OGI أيضًا على رصيد Hetzner Cloud إذا كان الإحالة مؤهلاً. بعد إنشاء خادم، استخدم أوامر نشر Docker أعلاه لتشغيل OGI.
حدود التحويل القابلة للتكوين
يأتي OGI بقيم قصوى معقولة لكل تحويل مثل max_results, max_links, max_urls, و max_content_chars، ولكن هذه الحدود أصبحت الآن قابلة للتجاوز بشكل مركزي بحيث يمكن للنشرات السحابية فرضها دون ترميز الحدود المحلية بشكل ثابت.



