مصنع الوكلاء (Agent Factory)
يُعد AuroraAgentFactory الموجود في aurorasoc/agents/factory.py أداة البناء المركزية لجميع وكلاء الذكاء الاصطناعي الـ 16. وهو يُغلف نمط الإنشاء المتسق مع السماح لكل نوع وكيل بامتلاك أدوات وتلقينات (prompts) وتكوينات ذاكرة متخصصة.
نمط المصنع (Factory Pattern)
الطريقة الداخلية _create_agent (Internal Method)
تُفوض وتسند كل طريقة مصنع (factory method) مهامها إلى طريقة خاصة ومشتركة:
def _create_agent(
self,
agent_type: AgentType,
tools: List[Tool],
memory_preset: str = "default"
) -> RequirementAgent:
# 1. الحصول على التلقين (prompt) المخصص للنظام
system_prompt = AGENT_PROMPTS[agent_type]
# 2. إنشاء أداة التفكير ThinkTool (مفروضة وإجبارية في الخطوة 1)
think_tool = ThinkTool()
# 3. إنشاء ذاكرة متدرجة مع إعداد مسبق
memory = TieredAgentMemory.from_preset(memory_preset)
# 4. بناء وإنشاء الوكيل مع البرامج الوسيطة (middleware)
agent = RequirementAgent(
llm=self._get_llm(),
system_prompt=system_prompt,
tools=[think_tool] + tools,
memory=memory,
middleware=[GlobalTrajectoryMiddleware()]
)
return agent
لماذا أداة ThinkTool في الخطوة 1؟
تُجبر أداة ThinkTool الوكيل على التفكير قبل التصرف. بدونها، تميل الوكلاء إلى القفز مباشرة إلى استدعاءات الأدوات دون تخطيط. من خلال جعل ThinkTool الأداة الأولى وفرضها في الخطوة 1، نضمن ما يلي:
- أن يحلل الوكيل المُدخل قبل اتخاذ أي إجراء.
- أن يكون التفكير والتسويغ مرئياً ومكشوفاً في سجل التتبع (trajectory log) من أجل قابليته للتدقيق والمراجعة.
- أن يكون اختيار الأداة متعمداً، وليس رد فعل انعكاسي.
تعيين الوكيل للأداة (Agent-Tool Mapping)
يتلقى كل نوع من الوكلاء أدوات محددة ومخصصة تتطابق وتتوافق مع مجاله:
| الوكيل (Agent) | الأدوات (Tools) | إعداد الذاكرة المسبق (Memory Preset) |
|---|---|---|
| محلل أمني (Security Analyst) | SearchLogs, CorrelateEvents, ExtractIOC, MitreMap | analyst |
| صائد التهديدات (Threat Hunter) | HuntLOLBins, BaselineDeviation, UserRiskScore, SearchLogs | hunter |
| مستجيب للحوادث (Incident Responder) | ExecutePlaybook, RequestHumanApproval, CreateCase, UpdateCase | responder |
| استخبارات التهديدات (Threat Intel) | LookupIOC, EnrichIOC, ShareIOC | intel |
| أمن الشبكات (Network Security) | AnalyzeFlows, DetectDNSTunneling, BlockIP | default |
| أمن النقاط الطرفية (Endpoint Security) | IsolateEndpoint, ScanEndpoint | default |
| محلل البرامج الضارة (Malware Analyst) | RunYARAScan, SandboxAnalysis | analyst |
| محلل جنائي (Forensic Analyst) | CollectEvidence, TimelineReconstruction | analyst |
| محلل الامتثال (Compliance Analyst) | (أدوات تفكير وتسويغ عامة) | default |
| مدير الثغرات (Vulnerability Manager) | (أدوات تفكير وتسويغ عامة) | default |
| أمن السحابة (Cloud Security) | (أدوات تفكير وتسويغ عامة) | default |
| محلل سلوك المستخدم والكيان (UEBA Analyst) | HuntLOLBins, BaselineDeviation, UserRiskScore | hunter |
| أمن الويب (Web Security) | (أدوات تفكير وتسويغ عامة) | default |
| أمن الأنظمة السيبرانية الفيزيائية (CPS Security) | QueryCPSSensor, VerifyAttestation, RevokeCertificate, CorrelatePhysicalCyber, QueryOTProtocol, IsolateNetworkSegment | cps |
| مُنشئ ومنسق التقارير (Report Generator) | GenerateReport | default |
| المنسق (Orchestrator) | 15 HandoffTools | orchestrator |
إنشاء وبناء نوع وكيل جديد (Creating a New Agent Type)
لإضافة تخصص أو نوع وكيل جديد:
1. إضافة نوع الوكيل إلى التعداد AgentType (Add to AgentType Enum)
# aurorasoc/models/domain.py
class AgentType(str, Enum):
# ... الأنواع والوكلاء الحالية ...
MY_NEW_AGENT = "my_new_agent"
2. كتابة تلقين النظام (Write System Prompt)
# aurorasoc/agents/prompts.py
AGENT_PROMPTS[AgentType.MY_NEW_AGENT] = """
أنت الوكيل الجديد الخاص بي (My New Agent) لمنصة AuroraSOC.
## المسؤوليات (Responsibilities)
- صف ما يفعله ويقوم به هذا الوكيل
- قم بإدراج وتسجيل خبراته واختصاصاته المحددة
## المنهجية (Methodology)
1. النهج تسلسلي (مرحلة بمرحلة) الذي يتبعه الوكيل
2. الأدوات التي يجب أن يستخدمها، ومتى
3. توقعات تنسيق وشكل المخرجات (Output format expectations)
"""
3. إضافة طريقة في المصنع (Add Factory Method)
# aurorasoc/agents/factory.py
class AuroraAgentFactory:
def create_my_new_agent(self) -> RequirementAgent:
tools = [
MyCustomTool(),
SearchLogs(), # يمكن إعادة استخدام الأدوات الحالية
]
return self._create_agent(
agent_type=AgentType.MY_NEW_AGENT,
tools=tools,
memory_preset="default"
)
4. إنشاء مُدخل ومعرف للخادم (Create Server Entry)
# aurorasoc/agents/my_new_agent/server.py
from aurorasoc.agents.server_builder import serve_agent
from aurorasoc.agents.factory import AuroraAgentFactory
factory = AuroraAgentFactory()
serve_agent(
factory_method=factory.create_my_new_agent,
port=9016, # المنفذ التالي المتاح (Next available port)
tags=["security", "my-domain"]
)
5. تحديث وإضافة إعدادات A2A (A2ASettings)
# aurorasoc/config/settings.py
class A2ASettings(BaseSettings):
# ... المنافذ الحالية والقائمة ...
my_new_agent_port: int = 9016
6. إضافته إلى المنسق (Add to Orchestrator)
يكتشف المنسق (Orchestrator) ويدرك الوكلاء تلقائياً من تعداد الإشارة AgentType، لذلك سيتلقى وكيلك الجديد تلقائياً أداة التسليم والإحالة (HandoffTool).