بروتوكول Agent2Agent: الهندسة المعمارية والأمان ومقارنة MCP
Agent2Agent أو A2A هو بروتوكول مفتوح أطلقه Google Cloud في أبريل 2025 وتبرّع به لمؤسسة Linux Foundation، يمكّن عوامل الذكاء الاصطناعي المبنية على أطر ومزوّدين مختلفين من التواصل وتفويض المهام وتبادل النتائج عبر واجهة HTTP/JSON موحّدة. حيث يحلّ MCP مشكلة الوصول إلى الأدوات (استدعاء LLM لواجهات برمجة خارجية)، يحلّ A2A مشكلة التنسيق: عامل يفوّض مهمة فرعية كاملة إلى عامل نظير متخصص لديه حلقة استنتاج وذاكرة وأدوات خاصة. يضمّ مستودع GitHub الخاص بـ a2aproject/A2A مساهمات من أكثر من 50 منظمة، منها Salesforce وAtlassian وSAP.
Agent2Agent أو A2A هو بروتوكول HTTP/JSON مفتوح لقابلية التشغيل البيني بين عوامل الذكاء الاصطناعي، تديره مؤسسة Linux Foundation، ويعمل على توحيد كيفية إعلان العوامل المستقلة عن قدراتها وتفويض المهام وتبادل النتائج عبر أطر ومزوّدين مختلفين.
ما هو بروتوكول Agent2Agent؟
نشأ A2A لسدّ فجوة محددة في نظام عوامل الذكاء الاصطناعي: كانت الاتصالات من النموذج إلى الأداة تمتلك معيارًا (MCP، أُطلق في نوفمبر 2024)، لكن اتصالات العامل بالعامل لم تمتلك شيئًا مماثلًا. عندما يحتاج عامل تنسيقي إلى إسناد مهمة فرعية لنظير متخصص، لم يكن هناك تنسيق سلكي موحّد لهذا التفويض.
أعلن Google Cloud عن A2A في التاسع من أبريل 2025 برفقة مجموعة أولية تضمّ أكثر من 50 شريكًا تقنيًا مساهمًا في المواصفة. وخلافًا لكثير من المعايير التي تقودها الشركات، تبرّع بـ A2A لمؤسسة Linux Foundation للحصول على حوكمة محايدة.
جوهر البروتوكول HTTP/JSON، إذ يكشف العامل المتوافق مع A2A عن عدد محدود من نقاط النهاية: بطاقة العامل (بيان القدرات) ونقطة إرسال المهام ونقطة استطلاع الحالة ونقطة بث SSE للمهام طويلة الأمد.
للاطلاع على سياق مشكلة التنسيق متعدد العوامل التي يعالجها A2A، راجع بنية أنظمة متعددة العوامل وأنماط تنسيق عوامل الذكاء الاصطناعي.
بنية بروتوكول A2A
يحدّد A2A ثلاثة مفاهيم أساسية: بطاقات العامل (اكتشاف القدرات) ودورة حياة المهام (تتبّع التفويض مع الحالة) وأوضاع التسليم (بث SSE ودفع webhook).
بطاقات العامل: الإعلان عن القدرات وخطر الحصر
بطاقة العامل وثيقة JSON تُقدَّم على URL معروف (/.well-known/agent.json) تصف ما يستطيعه العامل. تتضمّن بطاقة العامل الأساسية:
{
"name": "web-research-agent",
"description": "يبحث في المواضيع عبر الويب ويعيد ملخصات منظّمة",
"version": "1.0.0",
"url": "https://agents.example.com/web-research",
"skills": [
{
"id": "research_topic",
"name": "بحث في موضوع",
"description": "البحث عن موضوع على الويب وإعادة ملخص منظّم",
"inputModes": ["text"],
"outputModes": ["text", "data"]
}
],
"authentication": {
"schemes": ["bearer"]
}
}
تتيح بطاقات العامل الاكتشاف الديناميكي للقدرات، لكنها تنطوي على مخاطر أمنية: في ملف تعريف A2A الأساسي، تُقدَّم بطاقات العامل افتراضيًا دون مصادقة، ما يعرّض سطح المهارة الكامل للحصر دون أي مصادقة.
ينبغي أن تُقدَّم بطاقات العامل في بيئات الإنتاج بعد المصادقة فحسب، أو تقتصر على شرائح الشبكة الداخلية. يتناول نموذج التهديد لأمان عوامل الذكاء الاصطناعي حصر القدرات باعتباره ناقل هجوم استطلاعي.
دورة حياة المهمة: خمس حالات من الإرسال إلى الاكتمال
يحدّد A2A دورة حياة من خمس حالات:
- submitted - استلم العامل البعيد المهمة؛ لم يبدأ معالجتها بعد
- working - العامل البعيد يعالج المهمة فعليًا (يمكنه بث التقدم عبر SSE)
- input-required - يحتاج العامل البعيد إلى توضيح قبل المتابعة (نقطة تدخل بشري)
- completed - اكتملت المهمة؛ القطعة الأثرية للنتيجة متاحة للاسترجاع
- failed - فشلت المهمة؛ تفاصيل الخطأ في كائن حالة المهمة
حالة input-required هي آلية A2A لنقاط التفتيش البشرية في مسارات العمل الذاتية الطويلة.
تسليم المهام: SSE مقابل webhook
يدعم A2A وضعَين لتسليم نتائج المهام:
SSE (أحداث الخادم المُرسَلة): يفتح العامل المُفوَّض اتصالًا ثابتًا بنقطة البث لدى العامل المُستلِم. SSE هو الآلية الأساسية للمهام طويلة الأمد التي تستلزم تقدمًا تدريجيًا.
دفع webhook: يوفّر العامل المُفوَّض عنوان URL للاستدعاء عند الإرسال. يُفضَّل في البيئات عديمة الخادم حيث يتعذّر الحفاظ على اتصال SSE ثابت.
A2A مقابل MCP: طبقات مختلفة، مشكلات مختلفة
A2A وMCP متكاملان لا متنافسان. يعملان على طبقات مختلفة من مكدّس العامل ويحلّان مشكلات تنسيق مختلفة.
| البُعد | MCP | A2A |
|---|---|---|
| الغرض | الوصول إلى الأدوات - LLM يستدعي واجهات برمجة خارجية | تنسيق العوامل - عامل يفوّض لعامل آخر |
| التواصل | استدعاء أداة متزامن ضمن جولة استنتاج واحدة | تفويض مهمة غير متزامن؛ العامل المُستلِم لديه حلقته الخاصة |
| المصادقة (افتراضي) | مطلوبة - خوادم MCP تصادق العملاء | اختيارية في الملف الأساسي - مسموح بالمجهولية |
| الاكتشاف | بيان خادم MCP (قائمة الأدوات) | بطاقة العامل (JSON: المهارات + متطلبات المصادقة) |
| الحالة | عديمة الحالة لكل استدعاء أداة | ذات حالة، دورة حياة من 5 حالات |
| البث | غير موجود في المواصفة الأساسية | SSE في الوقت الفعلي؛ webhook push للغير متزامن |
| التهديد الرئيسي | تسميم الأدوات (OWASP LLM07:2025) | حقن حمولة المهمة، حصر بطاقة العامل |
عندما يحتاج العامل إلى أداة (MCP)
MCP هو الخيار الصحيح عندما يحتاج عامل واحد إلى استدعاء قدرة خارجية ضمن جولة استنتاج واحدة. الأداة ليس لها حلقة استنتاج خاصة؛ تُنفّذ دالة وتعيد قيمة.
عندما يحتاج العامل إلى عامل آخر (A2A)
A2A هو الخيار الصحيح عندما تستلزم مهمة ما قدرة الاستنتاج الكاملة لعامل نظير. للعامل المُستلِم نموذجه وذاكرته وصلاحية وصوله للأدوات وحلقة استنتاجه متعددة الخطوات.
استخدام MCP وA2A معًا في نظام واحد
يستخدم نظام متعدد العوامل في بيئة الإنتاج كليهما عادةً. يستخدم العامل التنسيقي A2A للتفويض إلى العوامل المتخصصة. يستخدم كل متخصص MCP لاستدعاءات أدواته.
مصادقة A2A ونموذج الأمان
يمتلك نموذج أمان A2A فجوة حرجة: الملف الأساسي يجعل المصادقة اختيارية. حقن الأوامر عبر حمولة مهام A2A نوع هجوم موثّق ضد أي نشر لـ A2A يقبل مهام من مُتصلين غير موثوقين.
سطح الهجوم في أنظمة A2A:
1. حقن حمولة المهمة: وصف المهمة وبيانات الإدخال في إرسال مهمة A2A يخضعان لتحكّم المستخدم.
2. حصر بطاقة العامل: تكشف بطاقات العامل غير المصادَق عليها سطح المهارة الكامل.
3. افتراضات الثقة بين العوامل: عامل مُفوَّض يثق في نتائج عامل نظير دون التحقق من المخرجات معرَّض لحقن التتابع.
4. التفويض المجهول: بدون مصادقة إلزامية، يمكن لأي مُتصل على الشبكة إرسال مهام إلى عامل A2A.
رأي OpenLegion: A2A تنسيق سلكي، ليس نموذج أمان
A2A مصمَّم جيدًا بوصفه تنسيقًا سلكيًا. نموذج الأمان لا يلبّي متطلبات الإنتاج.
نهج OpenLegion في التواصل بين العوامل يُنفّذ ما يتركه الملف الأساسي لـ A2A اختياريًا:
-
كل استدعاء بين العوامل يمرّ عبر خزنة بيانات الاعتماد. لا يوجد وضع تفويض مجهول.
-
تطهير حمولة المهمة عند 56 نقطة اختناق شبكية. يُطهَّر المحتوى الخاضع لتحكّم المستخدم من هجمات Unicode قبل الوصول إلى سياق LLM.
-
عقود تسليم مكتوبة يتحقق منها المنسّق. تُحجب حمولات حقن التتابع عند حدود التسليم.
-
بيانات قدرات العوامل تستلزم مصادقة للوصول إليها. سطح المهارة لا يُكشف للمُتصلين المجهولين.
تنفيذ A2A: دليل تقني
مخطط بطاقة العامل
ينبغي أن تتضمّن بطاقة العامل في بيئة الإنتاج متطلبات المصادقة صراحةً:
{
"name": "data-analysis-agent",
"description": "يحلل مجموعات البيانات المنظّمة ويعيد ملخصات إحصائية",
"version": "1.2.0",
"url": "https://agents.internal.example.com/data-analysis",
"skills": [
{
"id": "analyze_dataset",
"name": "تحليل مجموعة البيانات",
"description": "إجراء تحليل إحصائي على مجموعة بيانات مقدَّمة",
"inputModes": ["data"],
"outputModes": ["text", "data", "file"]
}
],
"authentication": {
"schemes": ["bearer"],
"required": true
}
}
إرسال المهام واستطلاع الحالة
إرسال المهمة هو POST إلى /tasks/send. استطلاع الحالة يستخدم GET /tasks/{task_id}. الاستطلاع مع تراجع أسّي (1s، 2s، 4s، 8s، حد أقصى 30s). المهام طويلة الأمد (أكثر من 60s) ينبغي التحوّل إلى SSE.
بث المهام طويلة الأمد بـ SSE
للمهام المتوقع أن تتجاوز 30 ثانية، استخدم SSE عبر POST /tasks/sendSubscribe. علامة "final": true تشير إلى اكتمال المهمة. طبّق إعادة الاتصال SSE باستخدام ترويسة Last-Event-ID.
الأسئلة الشائعة
ما هو بروتوكول Agent2Agent؟
Agent2Agent أو A2A هو بروتوكول HTTP/JSON مفتوح لقابلية التشغيل البيني بين عوامل الذكاء الاصطناعي، أطلقه Google Cloud في أبريل 2025 وتبرّع به لمؤسسة Linux Foundation. يوحّد طريقة إعلان العوامل المستقلة المبنية على أطر مختلفة عن قدراتها وتفويض المهام وتبادل النتائج. ساهم في البروتوكول أكثر من 50 منظمة منذ إطلاقه في أبريل 2025، منها Salesforce وAtlassian وSAP.
ما الفرق بين A2A وMCP؟
يحلّ MCP مشكلة الوصول إلى الأدوات: عامل واحد يستدعي واجهة برمجة خارجية ضمن جولة استنتاج واحدة. يحلّ A2A تنسيق العوامل: عامل يفوّض مهمة فرعية كاملة لعامل نظير لديه حلقة استنتاج وذاكرة وأدوات خاصة. يشترط MCP المصادقة افتراضيًا؛ الملف الأساسي لـ A2A يجعلها اختيارية. البروتوكولان متكاملان.
ما هي بطاقات عوامل A2A؟
بطاقات العامل وثائق JSON تُقدَّم على /.well-known/agent.json تصف قدرات العامل وأوضاع الإدخال/الإخراج المقبولة ومتطلبات المصادقة. افتراضيًا في الملف الأساسي لـ A2A، تُقدَّم دون مصادقة. ينبغي أن تشترط عمليات نشر الإنتاج المصادقة للوصول إلى بطاقات العامل.
هل بروتوكول A2A آمن؟
يمتلك الملف الأساسي لـ A2A ثغرات أمنية جوهرية. المصادقة اختيارية افتراضيًا. حقن الأوامر عبر حمولة مهام A2A مخاطرة إنتاجية حقيقية. يجب على عمليات نشر A2A في الإنتاج تنفيذ ملف المصادقة الموسَّع صراحةً وتطهير جميع محتوى حمولة المهام قبل LLM والتحقق من المخرجات عند كل حد تسليم.
ما هي دورة حياة مهام A2A؟
يحدّد A2A خمس حالات للمهام: submitted (مُستلَمة، لم تُعالَج بعد)، working (معالجة فعلية، يمكن بث تقدم SSE)، input-required (العامل البعيد يحتاج توضيحًا - نقطة تدخل بشري)، completed (النتيجة متاحة)، وfailed (فشلت المهمة مع تفاصيل). حالة input-required هي آلية A2A لإظهار نقاط التفتيش البشرية في المسارات الذاتية.
أي الشركات تدعم A2A؟
أُطلق A2A في أبريل 2025 مع أكثر من 50 منظمة مساهمة منها Salesforce وAtlassian وSAP. قاد Google Cloud المواصفة الأولية ونقل الحوكمة إلى مؤسسة Linux Foundation. يستهدف البروتوكول منصات الذكاء الاصطناعي المؤسسية.
كيف تنفّذ OpenLegion التواصل بين العوامل؟
تنفّذ بنية شبكة OpenLegion تنسيقًا بين العوامل مع مصادقة إلزامية على كل استدعاء. كل تسليم بين العوامل يمرّ عبر خزنة بيانات الاعتماد ويتحقق من هوية المُتصل. محتوى حمولة المهمة يُطهَّر عند 56 نقطة اختناق شبكية. عقود التسليم المكتوبة يتحقق منها المنسّق. تعمل هذه الضوابط على طبقة البنية التحتية خارج كود العامل.
بناء أنظمة متعددة العوامل مع مصادقة على كل استدعاء
يوفّر A2A التنسيق السلكي لقابلية التشغيل البيني بين العوامل. يجب بناء نموذج الأمان فوقه أو تطبيقه بواسطة طبقة البنية التحتية.
راجع أمان عوامل الذكاء الاصطناعي ونموذج التهديد أو بنية أنظمة متعددة العوامل.