
خط أنابيب استخبارات تهديدات محلي بمساعدة الذكاء الاصطناعي يستقبل مصادر الويب وRSS والمستندات، ويستخرج ادعاءات موثّقة بالاقتباسات، ويربط ملفات تعريف الخصوم بـ MITRE ATT&CK مع تصدير STIX وSigma.
استخبارات الخصوم المدعومة بالذكاء الاصطناعي للفرق البنفسجية.
يحقق Argus في تهديد ما عبر الويب، وخلاصات RSS الخاصة بك، والمستندات التي تقدمها، ويستخرج ادعاءات مدعومة بالاقتباسات باستخدام نموذج لغوي كبير (LLM)، ويوحّدها في تقييمات مُقيَّمة بدرجة ثقة مربوطة بـ MITRE ATT&CK، ويتيح لإنسان مراجعة كل خطوة. يعمل بالكامل على جهازك الخاص.
يعمل خط المعالجة مرة واحدة لكل مستند، فيكتب ادعاءات ذرّية مع الاقتباس الحرفي وراء كل واحد منها وصف تدقيق لكل مرحلة. يتحقق المدقّق (Validator) من كل اقتباس مقابل النص، ويحلّ الكيانات مقابل المخزن المحلي وكتالوج ATT&CK، ويوحّد الادعاءات عبر المصادر في التقييمات التي تعرضها واجهة المستخدم. فقط الفرز (Triage) والمحلل (Analyst) وكاتب الملخص هم من يلمسون نموذجًا؛ أما المدقّق فهو كود برمجي عادي.
يشحن Argus واجهة الويب الخاصة به مبنية مسبقًا، لذا لا يتطلب التثبيت سوى Python 3.12+ (لا Node، ولا خطوة بناء). يعمل على Windows وLinux وليس على PyPI بعد، لذا ثبّته من المستودع أو من حزمة إصدار (release wheel).
# from a clone of the repository
git clone https://github.com/Cyllex-Framework/Cyllex-Argus.git
cd Cyllex-Argus
python3 -m venv .venv
. .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1
pip install .
# ...or straight from GitHub, without cloning
pip install "git+https://github.com/Cyllex-Framework/Cyllex-Argus.git"
إما أن يضع هذا الأمر argus على PATH الخاص بك. يمكن للمطورين الذين يعملون على Argus نفسه استخدام
uv بدلاً من ذلك (uv sync)؛ راجع صفحة
Development.
argus init # creates ~/.cyllex-argus/
argus attack update # downloads the MITRE ATT&CK Enterprise bundle
export ANTHROPIC_API_KEY='sk-ant-...' # or the Claude Code CLI / Ollama; see Choosing a model below
argus investigate "Scattered Spider" --max-docs 10
argus serve # web UI at the printed URL
عند التشغيل الأول، يقوم argus serve بتنزيل كتالوج ATT&CK بنفسه (حوالي دقيقة) إذا تجاوزت
argus attack update؛ ينتظر التحقيق الأول انتهاءه، لذا لا تُجري تحقيقًا قبل
تحميل ATT&CK.
تُفتح الواجهة على http://127.0.0.1:8765 وتُسجّل الدخول باستخدام admin / Argus123 جاهزًا.
غيّرها قبل كشف Argus على شبكة (argus set-admin-password '...'، أو متغير البيئة
ARGUS_ADMIN_PASSWORD، الذي لا يلمس القرص أبدًا). مرّر argus serve --host 0.0.0.0 لقبول العملاء من شبكتك المحلية.
تعمل خطوة معالجة المحتوى في Argus (Triage وAnalyst وValidator والملخصات) على أحد أربعة مزوّدين.
اختر من Settings → LLM provider أو عدّل [llm] في ~/.cyllex-argus/argus.toml:
| المزوّد | المتطلبات | النموذج (الافتراضي) | البحث على الويب |
|---|---|---|---|
claude-code-cli | Claude Pro/Max + تسجيل الدخول إلى claude CLI | يتحكم به الاشتراك | نعم (مدمج) |
anthropic-api | ANTHROPIC_API_KEY (أحضر مفتاحك الخاص) | claude-sonnet-5-5 | لا، اقترنه بـ claude-code-cli كمزوّد البحث |
openai-api | OPENAI_API_KEY | gpt-4o | لا |
ollama | Ollama قيد التشغيل + نموذج مسحوب | qwen2.5:32b-instruct | لا |
ما تم اختباره. جرى التطوير والاختبار اليومي في الغالب على Claude (
claude-code-cliوanthropic-api) وOllama المحلي. الضوابط (prompts) مضبوطة على Claude؛ مسار OpenAI يعمل ومخرجاته مفروضة بالمخطط (schema)، لكنه أقل استخدامًا وقد يستخرج ادعاءات أقل حتى تُعاد ضبط الضوابط.
# Preferred: env wins over anything stored in argus.toml, and never touches disk
export ANTHROPIC_API_KEY='sk-ant-...'
# or:
export OPENAI_API_KEY='sk-...'
argus serve
بدلاً من ذلك، الصق المفتاح في Settings → LLM provider → API key. يخزّنه واجهة المستخدم تحت
[llm.anthropic] api_key / [llm.openai] api_key ويعرضه مقنّعًا (••••••••) عند إعادة التحميل بحيث
لا يُعاد عرضه أبدًا بنص صريح. متغيّر البيئة يفوز دائمًا، لذا يعمل التدوير عبر export دون
تعديل الملف.
تتيح لك صفحة المزوّد تجاوز model الافتراضي (مثل gpt-4o-mini لـ Triage أرخص،
وclaude-opus-5-5 لتشغيلات Analyst العميقة) وbase_url (مفيد للوكلاء المتوافقين مع OpenAI
مثل OpenRouter وLocalAI وLiteLLM؛ يتحدث محوّل OpenAI عقد Chat Completions / Structured
Outputs ويعمل مع أي خادم يطبّقه). يتجاوز model المحدد هنا الافتراضي لكل
مزوّد لـ كل وكيل، لذا تعرض الصفحة شريطًا مع زر Clear بنقرة واحدة عند
تفعيله.
لكل مزوّد بمفتاح API زر Test connection يستدعي GET /v1/models باستخدام
بيانات الاعتماد المهيّأة ويبلّغ بما يسرده الخادم: يتحقق من المفتاح وعنوان URL الأساسي و(إذا
أُدخل معرّف نموذج) ما إذا كان ذلك النموذج يظهر في الحساب.
Anthropic: مفتاح محدّد النطاق لمؤسسة أو مستخدم (
sk-ant-usr-...) يعيد HTTP 400 على/v1/modelsما لم يكن محدّد النطاق لمساحة عمل. إذا أعاد Test connection رمز 400 مع مفتاح تعرف أنه صالح، فأعد إصداره كمفتاح مساحة عمل، فهذا (وليس مفتاحًا خاطئًا) هو السبب المعتاد.
يشغّل خط الأنابيب ثلاثة وكلاء مدعومين بـ LLM: اختر نموذجًا رخيصًا لوكيل نعم/لا والنموذج الجيد للاستخراج، من المزوّد نفسه أو من مزوّدين مختلفين (Settings → LLM provider → Per-agent model overrides):
| الوكيل | ما يفعله | الحجم | المقترح |
|---|---|---|---|
triage | هل هذا المستند عن التهديد؟ (نعم/لا) | استدعاء واحد لكل مستند | gpt-4o-mini، claude-haiku-4-5، النماذج الرخيصة تجيب على سؤال ثنائي جيدًا |
analyst | استخراج الادعاءات مع اقتباسات حرفية | 1-12 استدعاءً لكل مستند (أجزاء) | النموذج القوي: claude-sonnet-5-5، gpt-4o، claude-opus-5-5 |
summary | ملخص تنفيذي لملف تعريف | استدعاء واحد لكل تصدير | متوسط |
أي خانة تُترك على Use base provider ترث كتلة [llm] الرئيسية، لذا لا يكلّف التجاوز
شيئًا عندما لا تريده. تقسيم نموذجي لتوفير التكلفة:
# ~/.cyllex-argus/argus.toml
[llm]
provider = "anthropic-api" # base: Analyst runs here on claude-sonnet-5-5