🤖HermesBlog
منصات المراسلة في Hermes · جزء 408/14/2026

تجربة A2A على جهازين: جعل هيرميس على جهازين يفوّضان المهام لبعضهما

مقالة الأربعون في سلسلة الانضمام إلى منصة هيرميس للمراسلة: خطوات النشر عبر الأجهزة لبروتوكول A2A والدروس المستفادة من الأخطاء الواقعية.

هيرميس على جهاز واحد لم يعد يكفي، وتريد أن يمدّك هيرميس على جهاز آخر يد العون — هذا بالضبط ما صُمم من أجله بروتوكول A2A. لكن ما العقبات التي قد تواجهها أثناء النشر؟ مستخدمون حقيقيون جرّبوا الأمر نيابةً عنك.

A2A -twonode

متى تحتاج فعلاً إلى جهازين

لنفكّر أولاً في سؤال مهم: هل تحتاج حقاً إلى جهازين، أم أنك تريد فقط أن يتعاون وكيلان ذكيان؟

إذا كان الوكيلان يعيشان على نفس الجهاز، فالتفويض أو لوحة المهام يكفيان — تماماً كأنك في نفس المكتب، تنادي زميلك على المكتب المجاور، فلا داعي للاتصال الهاتفي. A2A مُصمم لـ“عبور الأجهزة/العمليات/الأطر”: جهازك المكتبي وخادمك يعمل كلٌّ منهما بنسخة Hermes، ولكلٍّ منهما ذاكرته وأدواته وبيانات تسجيل دخوله الخاصة، وهنا فقط تحتاج إلى جسر A2A.

خطوات البدء

الخطوة 1: تفعيل منصة A2A على الجهازين. عند تثبيت Hermes اختر خيار A2A، أو عدّل ملف الإعدادات لتعيين gateway.platforms.a2a.enabled إلى true، والمنفذ الافتراضي هو 9900. هذه الخطوة تعادل تركيب باب خارجي بنظام دخول على كل جهاز.

الخطوة 2: إعداد التوكن (مفتاح الدخول). على الخادم، عيّن A2A_PEER_TOKENS أو A2A_BEARER_TOKEN. إذا كنت تختبر محلياً فقط، يمكنك ترك التوكن فارغاً، لكن الباب سيكون مفتوحاً فقط لعنوان 127.0.0.1 — وكأن بطاقة الدخول تُمنح فقط لسكان المبنى.

الخطوة 3: كشف العنوان. للتواصل عبر الأجهزة، يجب تعيين A2A_HOST، مثل 0.0.0.0 أو عنوان IP للشبكة المحلية. هذه الخطوة تنقل الباب من “ممر داخلي” إلى “موقع على الشارع الرئيسي”، ليتمكن الجهاز الآخر من العثور عليك.

الخطوة 4: مزاوجة النظراء. في جهة العميل، عيّن a2a_agents، أو استخدم مباشرةً a2a_discover("http://عنوان_الخادم:9900") لعرض بطاقة الوكيل (Agent Card) الخاصة بالطرف الآخر — الأمر أشبه بتقديم بطاقة عمل، للتأكد من هوية الطرف الآخر ومهاراته.

الخطوة 5: التحقق. فعّل مجموعة أدوات a2a، واستخدم a2a_call لإرسال مهمة بسيطة للتجربة. انتبه إلى المهلة الزمنية: المهلة الافتراضية للعميل 330 ثانية، ونافذة استجابة الخادم 300 ثانية، فالمهام الطويلة تحتاج إلى زيادة هذه القيم، وإلا ستُحكم على المهمة بالفشل بسبب انتهاء المهلة في منتصف العمل. بعد الانتهاء، اطّلع على سجل التدقيق في ~/.hermes/a2a_audit.jsonl.

حالة حقيقية 1: نشر ناجح كما ينبغي

تصف الوثائق الرسمية سيناريو مثالياً: Hermes على جهازك المكتبي يسلّم مهمة إلى Hermes على الخادم — فالخادم يملك قوة حوسبة أكبر، وشبكة أكثر استقراراً، وقاعدة بيانات أشمل. وبالعكس، يمكن لـ Hermes على الخادم أن يفوّض مهام مثل “افحص الملفات المحلية” إلى الجهاز المكتبي. لكلٍّ منهما ذاكرته وأدواته، يؤدي كلٌّ عمله، ويكتشفان مهارات بعضهما عبر بطاقة الوكيل (Agent Card)، وتُدار المحادثات عبر contextId، مع دعم لجولات متعددة.

هذا أشبه بقسمين في شركة: قسم التسويق (الجهاز المكتبي) يحتاج تقرير تحليل بيانات، فيرسل بريداً إلكترونياً إلى قسم البيانات (الخادم)، فيُعدّ القسم التقرير ويعيده، ويحتفظ كلٌّ منهما بملفاته الخاصة دون تداخل.

حالة حقيقية 2: نشر فاشل

هناك حالة حقيقية في المجتمع (#82910): قام مستخدم بنشر عقدتين على جهازي macOS — بوابة موجهة للمستخدم + عامل (worker). يبدو الأمر مشابهاً للحالة الناجحة أعلاه، لكن النتيجة كانت كارثية، وفي النهاية أوقف الفريق هذا النشر.

المشكلة كانت في عدم وضوح دوري “المنسّق” و“العامل”. الوكيل الأب (المنسّق) حشر الكثير في جلسته الخاصة: كل خطوة من خطوات العامل، وكل نتيجة وسيطة، وكل عملية تفكير كانت تتدفق عائداً إلى جلسة الأب، مما أدى إلى تضخم السياق — غرق الوكيل الأب في بحر من المعلومات، وأصبح أبطأ فأبطأ. النسخ عبر الوكلاء أثقل الأداء العام، والمهام المعقدة كانت تطلق حلقات استرداد، فيغرق أعمق فأعمق.

الدرس واضح: التعاون عبر الأجهزة باستخدام A2A يتطلب أولاً تصميم حدود المسؤوليات — من ينسّق، ومن ينفذ، ولمن تعود ذاكرة كل طرف. لا تحشر كل شيء في جلسة الأب، فالعامل يجب أن يكون له “دفتر ملاحظاته” الخاص.

قائمة تجنّب الأخطاء في النشر

انهيار الهوية خلف الوكيل العكسي (#80534/#80779): إذا كنت تستخدم nginx أو K8s Ingress أو CDN كوسيط عكسي، فسيشترك جميع النظراء في نفس رمز الحامل (bearer token)، وستنهار جميع الهويات إلى عنوان الوكيل. الحل هو جعل الوكيل يمرر X-Forwarded-For، واستنتاج الهوية الحقيقية من بعد الوكيل الموثوق. هذا مثل استلام مكتب الاستقبال للطرود نيابةً عنك، يجب أن يُكتب على الطرد اسم المستلم الحقيقي، وإلا ستتراكم كل الطرود عند الاستقبال.

رفض توجيه ملفات الإعدادات المتعددة (#80884/#80956): إذا كنت تستخدم multiplex_profiles لتشغيل عدة إعدادات، فقد تُرفض رسائل A2A الواردة عند توجيهها إلى ملف تعريف ثانوي من طبقة تفويض البوابة. الحل هو التقاط سياق أمان المحول غير القابل للتغيير عند بدء التشغيل، والاحتفاظ بسياسات المصادقة والثقة والربط وبطاقة الوكيل الخاصة بكل ملف تعريف. لكل باب قواعد دخوله الخاصة، ولا يصح أن تتشارك الأبواب في نظام واحد.

إعدادات المهلة: المهلة الافتراضية 330 ثانية للعميل مقابل 300 ثانية للخادم، فالمهام الطويلة تحتاج إلى تعديل. وإلا فالأمر كأنك تتحدث في مكالمة دولية طويلة، فيُقطع الخط قبل أن تُكمل كلامك.

نمط العامل المقيّد (#82503): هذا هو الدواء الرسمي لتضخم السياق. يمكن لمسارات A2A المُقدَّمة غير الجذرية تشغيل عمليات فرعية مُهيأة أو عمال RPC بنسخ محددة، مع مخرجات محدودة، وحصاد شجرة العمليات، وإلغاء، وإنهاء لمرة واحدة بالضبط — العامل ينهي عمله وينصرف، دون أن يسكب كل التفاصيل في جلسة الأب.

ماذا يعني هذا للمستخدم

نشر A2A على جهازين ليس مجرد “توصيل جهازين بكابل”. إنه أشبه بافتتاح فرع جديد: الواجهة (Agent Card)، ونظام الدخول (token)، وتقسيم العمل (من ينسّق ومن ينفذ)، والمستودع (ذاكرة كل طرف) — كل ذلك يجب أن يكون واضحاً. النشر الناجح يجعل الجهازين يستفيد كلٌّ منهما من نقاط قوته، والنشر الفاشل يجعل المنسّق يغرق في المعلومات.

تذكّر ثلاث قواعد: حدّد حدود المسؤوليات أولاً، ثم فكّر في التفاصيل التقنية؛ الوكيل العكسي يحتاج إلى معالجة مشكلة الهوية؛ المهام الطويلة تحتاج إلى تعديل المهلة، والمهام المعقدة تحتاج إلى عامل مقيّد. إذا حققت هذه النقاط، سيصبح هيرميس على الجهازين زميلين صالحين حقاً، لا رفيقين يعيق أحدهما الآخر.

📖 التوثيق الرسمي

この記事は Hermes Agent のالتوثيق الرسميに基づいています:التوثيق الرسمي › user-guide/messaging/a2a