ماذا يحدث عندما تخطط لمشروع كبير دون وجود شخص مسؤول؟ تفترض معظم حزم البرمجيات وجود منسق واحد؛ حيث تقوم عملية واحدة بالاحتفاظ بالحالة، ووضع الوظائف في طوابير، وتوزيع المهام. وإذا أعيد تشغيل هذا المنسق، سيتعثر سير العمل بالكامل. لكن المشروع الجديد يقلب هذا الافتراض تمامًا، حيث يوضح كيف يمكن لسرب من وكلاء الذكاء الاصطناعي (AI agents) تفكيك هدف مثل "تخطيط رحلة لمدة أسبوعين إلى اليابان" إلى شجرة مهام كاملة دون أن تحتفظ أي عقدة واحدة بالخطة الكاملة في أي لحظة.
لماذا نبني نظامًا بلا قائد؟
المخططون المركزيون يسهل فهم منطق عملهم؛ ترسل طلبًا إلى خادم، فيقوم بتقسيم العمل، ثم يوافي العمال بالنتائج. المشكلة هي أن الخادم يصبح عنق زجاجة معرفيًا وماديًا، فهو من يمتلك "الحقيقة".
في الإعداد الموزع، تتحول الحقيقة إلى صورة مشتركة تتقارب الشبكة حولها من خلال بروتوكول النميمة (gossip). يربط هذا التنفيذ الخاص بلغة Python بين مفهومين متميزين: الأول هو حلقة تحسين تكرارية، حيث يكتب وكيل مقترحًا، ويقوم آخر بتقييمه، ويقوم ثالث بصقله. والثاني هو طبقة شبكات الند للند (peer-to-peer) مبنية على libp2p، والتي تتيح للوكلاء اكتشاف بعضهم البعض تلقائيًا دون الحاجة إلى سجل أو موازن أحمال (load balancer). والنتيجة هي عنقود (cluster) يظهر فيه الأقران، ويقترحون، ويصوتون، وينفذون دون أن يلعب أي شخص دور قائد الأوركسترا.
الأدوار الأربعة
يخصص النظام لكل مشارك شخصية من أربع شخصيات. لا تحتاج إلى أربع أجهزة مادية، إذ يمكنها التعايش على جهاز كمبيوتر محمول واحد أو الانتشار عبر شبكة منزلية. الأدوار هي:
المفكك (Decomposer). يستلم هذا الوكيل الهدف الأعلى ويقترح تقسيمه إلى أهداف فرعية. ولأن النظام يشغل عدة مفككين بالتوازي، فقد تحصل على ثلاث وصفات مختلفة لنفس الرحلة إلى اليابان. قد يجزئ أحدهم الرحلة جغرافيًا: طوكيو، كيوتو، أوساكا. وقد يقسمها آخر حسب النشاط: التنقل، الإقامة، الطعام، والمعالم السياحية. وقد يرتبها الثالث حسب الأيام. وتنظر الشبكة في جميع هذه المقترحات.
المقيم (Scorer). يعمل هؤلاء الوكلاء كهيئة تحرير؛ حيث يفحصون التقسيم المقترح ويقيمونه. تعكس الدرجة ما إذا كانت الأهداف الفرعية ملموسة بما يكفي، وغير متداخلة، وشاملة في مجموعها. والأهم من ذلك، يقرر المقيم ما إذا كان المقترح جيدًا بما يكفي للقبول. وبدون موافقته، يظل التقسيم معلقًا.
المنفذ (Executor). بمجرد أن تصل الشجرة إلى العقد الطرفية (leaf nodes) الصغيرة بما يكفي للتنفيذ، يتسابق المنفذون للاستحواذ عليها. هم لا ينتظرون إذنًا من طابور مركزي، بل يستخدمون بروتوكول الطابع الزمني (timestamp protocol) لتحديد من له الأولوية في المهمة. يقوم الفائز بتشغيل المهمة عبر استدعاء محلي لـ LLM ويبث النتيجة.
المراقب (Observer). هذا هو "المراقب الصامت" الذي تحتاجه كل شبكة. يستمع بهدوء إلى "النميمة" (gossip)، ويعيد بناء شجرة الخطة من خلال الدردشة، ويطبع لقطة مقروءة. ولأنه لا يتحدث أبدًا، فإنه يثبت نقطة مهمة: يمكن لأي شخص ينضم متأخرًا فهم الخطة بأكملها بمجرد الاستماع إليها.
"النميمة" (Gossip) كمصدر للحقيقة
تتولى طبقة libp2p عمليات الاكتشاف والمراسلة. يجد الوكلاء بعضهم البعض من خلال ميزة اكتشاف الأقران المدمجة في البروتوكول، ثم يبثون الرسائل عبر موضوع مشترك. لا توجد قاعدة بيانات مرجعية، ولا ذاكرة تخزين مؤقت Redis تحتفظ بالخطة الرسمية.
يحتفظ كل نظير بنسخته الخاصة من شجرة الخطة ويحدثها بناءً على "النميمة" التي يسمعها. عندما يبث المفكك مقترحًا، تستقبله كل عقدة أخرى، وتتحقق من التنسيق، وتضيف الفرع إلى شجرتها المحلية. وعندما يدلي المقيمون بأصواتهم، ينتشر الإحصاء بنفس الطريقة. وإذا نشر منفذان ادعاءات متضاربة لنفس المهمة، فإن بروتوكول الطابع الزمني يحل هذا التعارض؛ حيث تستقر الشبكة على الادعاء الأسبق وتتجاهل المتأخر.
بمرور الوقت، تنمو الشجرة لأسفل من الهدف الأصلي عبر طبقات من الأهداف الفرعية المقبولة حتى تصل إلى مهام صغيرة الحجم. تشبه هذه العملية وصول الـ blockchain إلى الإجماع، باستثناء أن الحمولة (payload) هي مسار رحلة أو مواصفات برمجية بدلاً من سجل للعملات.
التصويت والسباق نحو التنفيذ
الديمقراطية مكلفة، وهذا النظام يدفع الثمن في شكل زمن انتقال (latency). لا ينجح التقسيم إلا إذا وافق عدد كافٍ من المقيمين. قد يكون هذا الحد عبارة عن أغلبية بسيطة أو نصاب قانوني (quorum) أكثر صرامة، اعتمادًا على كيفية تكوين العنقود. لا يتوقف المفككون عن تقديم المقترحات، لذا غالبًا ما تقوم الشبكة بتقييم عدة أشجار متنافسة في وقت واحد. وفي النهاية، تصل إحداها إلى الأصوات المطلوبة وتتخرج أهدافها الفرعية من مرحلة المسودة إلى مرحلة القبول.
Executors add another layer of coordination. Because tasks are public on the gossip channel, multiple executors might try to grab the same attractive leaf node. The timestamp protocol acts as a tiebreaker. Each claim carries a monotonic timestamp, and the network honors the earliest one. The loser simply moves on to the next available task. This is crude, but it avoids the need for a centralized scheduler locking rows in a database.
Resilience by Design
The architecture earns its keep when things break. If a decomposer crashes after proposing half the subgoals, the surviving decomposers continue offering splits. The plan does not stall waiting for a respawn. If a scorer drops off the network, the remaining voters can still reach quorum as long as you sized the cluster appropriately.
The real payoff is late joins. A new agent that boots up halfway through does not need a snapshot or a
