نُشر في
·21 دقيقة للقراءة

استقلالية الـ Agent — الجزء الأول: كيف تحلّ المسائل الخوارزمية

ترجمة آلية·شوف الأصل
Authors
  • Avatar of هاني الشاطر
    Name
    هاني الشاطر
    Twitter

مقدّمة: كيف تطوّرت طريقة شغلنا مع الـ AI

أول ما تكتشف الـ AI coding، ما في رجعة. أسرع منك. بيعرف libraries أكتر منك. بيعمل debug لأنماط إنت ما رح تشوفها. بس في مشكلة: مش مستقل، بيعمل غلطات سخيفة وبيبني عليها، وبتلاقي حالك عم تربّي المشروع، يعني لازم تصرف جهد هائل عشان تتأكد إنه بيطابق اللي بدك ياه، وبيغطّي كل الحالات، وبيحطّ الـ architecture الصح. الـ vibe coding واعد كتير، بس بالواقع معظم المطوّرين لقوه بيدخّل مشاكل كبيرة ما كانت عندهم قبل.

بس في شريحة متخصّصة من الشغل بيصير فيها الـ AI قوي فعلاً: المسائل المحدودة (bounded problems). هاي مسائل صغيرة لمتوسطة الحجم، بدها تفكير متقدّم وخبرة عميقة، بس ما بدها بنية تحتية كاملة للـ production. فكّر فيها: خوارزميات بدها تصميم، مقالات بدها كتابة، مواد تسويقية، demos، محتوى تعليمي. مسائل صعبة جداً، بس محدودة بالنطاق.

الناس عم تكتشف الإمكانيات هون. الأنظمة المركّبة (Compound systems) — اللي كمان بنسمّيها agents — وريت تقدّم لافت. AlphaCode وصل لأعلى 54% من مبرمجي المسابقات. AlphaCode 2 تحسّن لأعلى 15%. agents زي Claude Code بتحلّ GitHub issues حقيقية بمعدّلات عالية (80% ع SWE-Bench).

بس هدول لسا تعاونيين. بتشارك الـ AI. إنت بتوجّه. هو بينفّذ.

وبعدين صار تحوّل. طلع صنف جديد من الـ agents — اللي فعلاً بتقدر توظّفهم. ما بيستأذنوا. بيبحثوا باستراتيجيات مختلفة، بيجرّبوها، بيرفعوا النتائج. AlphaEvolve كان الرائد بهاد لما دمج تفكير الـ LLM مع الاستراتيجيات التطوّرية. بدل ما يطفّر الحلول عشوائياً، بيفهم الخوارزميات دلالياً وبيقترح تحسينات ذكية. حقّق نتائج هي الأحدث ع كتير مسائل بتتعلّق بتصميم الخوارزميات. بما فيها kernels لاستدلال الـ deep learning، وضرب المصفوفات، وأكتر.

والأكتر إثارة، تيرينس تاو ومتعاونينه بـ Google DeepMind نشروا ورقة بتبيّن AlphaEvolve عم يساعد بحلّ مسائل رياضيات صعبة. خبرة تاو ضلّت أساسية — هاد مش استقلال كامل — بس بيمثّل أكتر تجربة تعاون "إيد عن إيد" وصلنالها. النظام بحث، جرّب، كرّر مسائل معقّدة كتير بأقلّ توجيه.


كيف وصلنا من الـ agent الكلاسيكي للمستقلّ؟

هالمقال بيمشي بتلات فلسفات مختلفة لمعالجة المسائل المحدودة، وحدة بتبني ع التانية. رح أستخدم circle packing (رصّ الدوائر) كمثالنا الجاري: بكل بساطة، عندك مربّع وبدك تحطّ k دائرة جوّاه، بدون تداخل بس بتعظيم مجموع الأنصاف (تفاصيل أكتر عن المسألة تحت).

Mind Map of AI Philosophies

إحنا هلق بدوّامة منهجيات حلّ المسائل، عنا خيارات أكتر من أي وقت لحلّ المسائل المحدودة. بتبلّش بالـ الطرق الرمزية (Symbolic Methods) (من الخمسينات لهلق)، الأساس الصارم وين بنبني المنطق باستخدام خوارزميات محدّدة أو ميتا-هيوريستيكس عامة لاستكشاف فضاء الحلول. هاد تطوّر للـ الطرق العصبية (Neural Methods) (من 2010 لهلق)، حدس صرف وين بنطلب من موديل "يتخيّل" حلّ، فبنحصل ع إبداع بدون صلاحية مضمونة. اليوم، بنشوف الطرق العصبية-الرمزية والوكيلية (Neuro-Symbolic & Agentic) (من 2023 لهلق)، الهجين وين بنستخدم القوة الدلالية للـ LLMs (الدماغ) عشان نخترع ونحسّن كود رمزي (الجسم). هاد بيوصّلنا لـ استقلالية الـ Agent — وين بنبطّل نكتب الحلّال وبنبلّش نوظّف الـ agent عشان يبحثه إلنا.

المقاربة 1: الطرق الرمزية الكلاسيكية (البحث والتحسين)

هاد حلّ المسائل الكلاسيكي اللي شهّره منهج پوليا المنهجي من تحفته سنة 1945 How to Solve It. رسالته بسيطة وقوية: حلّ المسائل مش سحر. هي مهارة بتتعلّم. افهم المسألة. ضع خطة. نفّذها. تأمّل باللي زبط. لعقود، هاد زبط بشكل جميل. بتقعد مع circle packing وبتفكّر: شو القيود؟ شو الأنماط اللي بتظهر؟ بقدر أصمّم استراتيجية؟ وبعدين بتبرمجها. خلص. للمسائل البسيطة (ترتيب لستة، إيجاد أقصر طريق)، هالمقاربة أنيقة وكفؤة.

وبعدين بتصطدم بالحيط.

هون الحقيقة الصعبة: معظم المسائل المحدودة بتنتمي لما يُسمّى NP-hard. بكلام فضفاض، حتى لو كنت أذكى واحد عايش، ما في طريقة تصمّم خوارزمية تلاقي الحلّ الأمثل بدون ما تفحص كل التوليفات الممكنة. circle packing وحدة من هالمسائل الصعبة. فكّر فيها هيك: لو عندك 26 دائرة ومربّع، في ترتيبات ممكنة أكتر من عدد الذرّات بالكون. ما بتقدر تفحصهم كلهم. منهج پوليا بيفترض إنك بتقدر تفكّر لتوصل للجواب. للمسائل الـ NP-hard، ما بتقدر. ما في حيلة ذكية. ولا نمط مخبّى. بس تعقيد أسّي. بس هون المصيدة: هالمسائل صعبة بشكل مستحيل، ومع هيك البشر بيقدروا يلاقوا حلول منيحة معقولة. شو القصة؟

Circle Packing Example

اهدا — العِلم مش مكسور. بيطلع إنه لمعظم المسائل، بتقدر تلاقي حلول تقريبية بجهد معقول. بكلام فضفاض، حلّ المسائل تطوّر لطريقتين:

خوارزميات التقريب. هاي بتعطيك حلول منيحة بشكل مُثبَت — يمكن ما توصل للأفضل المطلق، بس بتعرف إنك ضمن، لنقول، 90% من الأمثل. المشكلة إنه circle packing مش وحدة منهم. ما إلها خوارزمية تقريب نظيفة بضمانات.

التحسين والميتا-هيوريستيكس. الباحثين بطّلوا يسألوا "بنقدر نصمّم الخوارزمية المثالية؟" وبلّشوا يسألوا "شو لو بس نستكشف بذكاء؟" اخترعوا تقنيات زي hill climbing، الخوارزميات الجينية، وsimulated annealing، أو أحياناً بيستخدموا تقنيات تحسين زي gradient descent أو Linear Programming. هالطرق ما بتحاول تلاقي الحلّ الأفضل المطلق. بدل هيك، بتحاول تلاقي حلّ منيح فعلاً، بسرعة. ممكن تنحبس بـ local optima — يمكن ما تعرف قدّيش إنت بعيد عن الأمثل العامّ أو ليش الحلّ بيزبط. بس عملية: بتزبط.

كل هدول — الخوارزميات الكلاسيكية، خوارزميات التقريب، الحلّالات، والميتا-هيوريستيكس — هي طرق رمزية: طرق بتنمثّل برموز، بتنكتب ككود، وبتنفّذ بشكل حتمي. إنت بتسيطر عليها. بتصمّمها وبتشغّلها بثقة.

الطرق الرمزية سيطرت لوقت طويل جداً وبتضل مفيدة. بس بتطلب خبرة عميقة: تصميم خوارزميات، برمجة، رياضيات، ونظرية تحسين. وحتى بعدين، صعب تطلّع حلول منيحة فعلاً.

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

المشكلة: بتطلب منك تكون الخبير. لازم تعرف أو تكتشف المقاربة الصح.

المقاربة 2: تعلّم الآلة الصرف (الحدس المتعلَّم)

الفكرة مغرية: البشر بيحلّوا مسائل صعبة بالحدس بس. فقلّدها — بطّل تصمّم خوارزميات. بس طعمي شبكة عصبية آلاف المسائل الخوارزمية. خلّيها تتعلّم الأنماط زي ما البشر بيعملوا.

وعشان أعطيك فكرة قدّيش هاد قوي، طلبت من Gemini 3 يولّد صورة لحلّ circle packing. بشكّ إنه توليد صور Gemini 3 اتدرّب ع مسائل زي هيك، فهاد اختبار شدّ، بس مع هيك قدر يولّد حلّ منيح بشكل مفاجئ:

AI-Generated Circle Packing Solution الصورة: محاولة Gemini لرصّ الدوائر. توضيع حدسي — بس غير صالح. دوائر زيادة، وانتهاكات للقيود.

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

بس هون المشكلة: هالمقاربة بتعامل الـ ML كـ الخوارزمية الأمّ (master algorithm) — الحلّ الواحد لكل اشي. ومع إنها قوية، بس أغلى، جوعانة للداتا، ومش مأصّلة بالعلم. هاد بيقود لأسئلة جوهرية عن الصلاحية، والصرامة، والاستقرار، وليش بتزبط. عكس الطرق الرمزية، الـ ML الصرف مش سهل تفكّر فيه، ما بتقدر تثبت خصائص، تعمل debug للأعطال، أو تحلّل التعقيد.

المقاربة 3: العصبية-الرمزية (حدس + صرامة)

هون الأمور بتصير مثيرة. شو لو ما طلبت من الشبكة تحلّ المسألة مباشرة؟ شو لو طلبت منها تقترح اتجاه؟

الفكرة: الشبكات العصبية بتولّد كود، بنعامل كل قطعة كود كحلّ بفضاء بحث، وبنستكشف الحلول باستخدام الميتا-هيوريستيكس. هاي العصبية-الرمزية — الهجين. عندها حدس قوي بيتعامل مع المواقف الجديدة، وقادرة تولّد كود بالصرامة الرمزية.

المقاربة الساذجة إنك تطلب من AI agent يحلّ المسألة 50 مرة وتاخد أحسن كود بيولّده. مش رائع، بس Google عملت اشي مشابه مع AlphaCode عشان تربح مسابقات البرمجة (مع إنهم ولّدوا ملايين الحلول). بس هاد خبر قديم. هلق عم يعملوا اشي أذكى بكتير مع طريقتهم الأحدث AlphaEvolve، اللي رح نستكشفها بالتفصيل بعدين.

بعرف إنك هون عشان استقلالية الـ agent مش عشان تتعلّم عن circle packing، بس بدّي أغطّي كم فكرة جوهرية بتخلّيك تصمّم agent تطوّر الكود تبعك أحسن، فخلّينا نشتغل شوي ع circle packing ونشوف كيف نستخدم الميتا-هيوريستيكس لحلها. هاد رح يكشف الأفكار القوية اللي بتأسّس لـ agents تطوّر الكود المتقدّمة زي AlphaEvolve.


المثال الجاري: Circle Packing

المسألة بسيطة بصياغتها: رُصّ 26 دائرة بمربّع وحدة [0,1]×[0,1] بحيث ما تتداخل ولا وحدة تطلع برّا الحدود. عظّم مجموع كل أنصاف الدوائر.

Circle Packing Solution الشكل 1: حلّ لرصّ الدوائر لـ n=26 بيبيّن المعيار شبه-الأمثل 2.635. هالنتيجة أسّسها AlphaEvolve وكرّرها OpenEvolve. الهدف تعظيم مجموع كل الأنصاف مع احترام قيود الحدود والتداخل.

بسيطة بصياغتها. صعبة بشكل خادع بحلّها.

ليش هاي صعبة؟ لأنه فضاء الحلول كابوس من الـ local optima. حطّ دوائر عشوائياً واستخدم gradient descent؟ بتوصل لـ local maximum بسرعة — يمكن 80% من السكور الأمثل. استخدم خوارزمية جشعة بتعبّي الفراغ من اليسار لليمين؟ بتوصل لحوالي 85%. حتى الهيوريستيكس الذكية بتثبّت بدري.

الرياضياتيين درسوا circle packing لعقود. لأعداد صغيرة من الدوائر (n < 30)، الحلول الأمثل أو شبه-الأمثل معروفة. بس إيجادها حسابياً صعب. بدك استراتيجية بتستكشف فضاء الحلول بذكاء، مش عشوائياً.

الفكرة الأولى: Hill Climbing

لما تحلّ circle packing يدوياً، يمكن تجرّب هيك: ابدأ بتهيئة شبكية، حسّن محلياً بـ gradient descent، افحص النتيجة. بتتسلّق تلّة الأداء.

خوارزمية الـ Hill Climbing:

  1. خد حلّ.
  2. شوّش بسيط ع موقع (x, y) أو نصف قطر (r) دائرة.
  3. افحص إذا الحلّ الجديد صالح (ما في تداخل، جوّا الحدود).
  4. إذا صالح وأحسن (مجموع أنصاف أعلى)، اقبله. وإلا، ارفضه.

هاد بيبيّن معقول، بس زي ما بتشوف بالشكل تحت، بسرعة بيصير محبط. بالبداية، سهل تعمل تحسينات — معدّل القبول حوالي 40%. بس لما الأمور تضيق، إيجاد حركة صالحة بيصير شبه مستحيل. معدّل الرفض بيطير لفوق 90%، وبتنحبس وخلص. الدوائر بتنحبس بـ local optima ومهما حرّكتهم بتلاقي حالك بحلّ غير صالح.

Hill Climbing Progression الشكل 2: الـ Hill climbing بينحبس. بالبداية من دوائر صغيرة (1.330)، الخوارزمية بتطفّر المواقع والأنصاف، وبتقبل التحسينات. بالأول، 40% من الطفرات بتنقبل. بعد 2000 تكرار (السكور: 2.260)، بس 8% بتنقبل — الخوارزمية تقاربت لـ local optimum، بعيد عن المعيار (2.635).

الفكرة الثانية: الخوارزميات التطوّرية

الـ Hill climbing بيفشل لأنه بيحطّ كل البيض بسلّة وحدة. عندك حلّ واحد، وإذا انحبس، خلصت.

الاستراتيجيات التطوّرية بتغيّر اللعبة باستخدام مجتمع (Population). بدل متسلّق واحد، تخيّل إنك بترمي 100 متسلّق ع كل سلسلة الجبال.

  • بعضهم رح ينزل بوديان (حلول بطّالة).
  • بعضهم رح يهبط ع تلال صغيرة (local optima).
  • بس كم واحد يمكن يهبطوا حدّ أعلى قمة (قريب من الأمثل العامّ).

هالـ "استكشاف المتوازي" قوي. معظم المتسلّقين رح يعملوا إشيين: رح يحاولوا يتسلّقوا، ورح يتبادلوا الأفكار مع المتسلّقين التانيين عشان يتحسّنوا كمان. هالصنف من الخوارزميات بنسمّيه خوارزميات تطوّرية، والناس عادة بتنسبه لنظرية داروين بالانتقاء الطبيعي، بس مش الطريقة الوحيدة للتفكير فيه؛ هي استراتيجية تحسين عامة بتنطبق ع كتير مسائل.

هون كم مفهوم بتستخدمهم الخوارزميات التطوّرية:

1. المجتمع (التنوّع): بنحافظ ع مجموعة من، مثلاً، 100 حلّ متنافس. هاد بيمنع "رؤية النفق" تبع الـ hill climbing.

2. الطفرة (Mutation): تشويش عشوائي لمواقع وأنصاف الدوائر لنشوف إذا بيساعد الحلّ يتحسّن.

3. التزاوج (Crossover): مشاركة الأفكار بين الحلول.

4. الانتقاء (Selection): اختيار أحسن الحلول لتكمّل للجيل الجاي.

فخلّينا نطبّق هاد ع مسألة circle packing تبعتنا.

  1. المجتمع: بنبدأ بمجتمع من 100 حلّ.
  2. الطفرة: بنطفّر كل حلّ بسيط ونشوف إذا بيساعد الحلّ يتحسّن. غالباً بيطلّع حلول غير صالحة (تداخلات). بنستخدم قوى افتراضية (Virtual Forces) لنصلّح هالمشاكل. بعد الطفرة أو التزاوج، إذا الدوائر تداخلت، بتمارس قوى تنافر ع بعضها. بنطبّق هالقوى تكرارياً لنصلّح الحلّ، ودافعين الدوائر لمواقع صالحة.
  3. التزاوج: بنشارك الأفكار بين الحلول. مشاركة فكرة بين حلّين لـ circle packing مش مهمة بسيطة؛ لو بس بدّلت الدوائر بين الحلول رح تدمّر البنية الهندسية للحلّ. بدل هيك، بنستخدم تزاوج المطابقة الثنائية (Bipartite Matching Crossover). فكّر فيه كإيجاد الشريك "الصح" لكل دائرة. بدل ما تأشّر ع index 0 بكل اللستتين، بنسأل: "أي دائرة بالأب B هي المكافئ الهندسي لهالدائرة بالأب A؟"
  4. الانتقاء: بنختار أحسن الحلول لتكمّل للجيل الجاي.
Bipartite Crossover Comparison الشكل 2c: التزاوج الساذج مقابل الهندسي. ع الشمال: المطابقة الساذجة بتعتمد ع ترتيب الـ index. إذا الأهل عندهم ترتيبات داخلية مختلفة (حتى مع هندسة متشابهة)، المطابقة الساذجة بتخلط دوائر غير مترابطة، وبتدمّر البنية. ع اليمين: مطابقة ثنائية بتلاقي الشركاء الهندسيين الأمثل بكفاءة باستخدام الخوارزمية المجريّة (Hungarian)، وبتطلّع ذرّية نظيفة وصالحة.

لما بنجمع هالمكوّنات، بنطلّع استراتيجية استكشاف متوازي قوية.

Evolutionary Strategy + Hill Climbing الشكل 2b: الاستراتيجيات التطوّرية + hill climbing. بدل متسلّق واحد بينحبس، كم متسلّق مستقلّ بيبدأوا من قمم مختلفة، كل واحد بيستكشف تلّته. مع الوقت، أحسن الحلول بترجع تتغذّى لتهيئات جديدة، وبتوجّه البحث نحو أمثليات أحسن وأحسن.

هاي الفكرة الجوهرية للخوارزميات التطوّرية.

الفكرة الثالثة: MAP-Elites — أرشيفات الجودة-التنوّع

الخوارزميات التطوّرية القياسية بتتابع اشي واحد: أحسن حلّ. لو عندك مجتمع من 100 حلّ، بتحتفظ بأعلى 5 وبترمي الباقي. هاد طبعاً أحسن من الـ hill climbing، بس لسا طريقة مقيّدة لاستكشاف فضاء الحلول. في فكرة تانية قوية: شو لو ما نتابع بس أحسن حلّ، كمان نتابع أحسن حلّ بصنفه لأبعاد ميزات مختلفة؟ مثلاً، لو بدك أحسن رصّ بدوائر متساوية الحجم، دوائر بأنصاف مختلفة، دوائر كبيرة بالنصّ، إلخ. هاد بيكون مثير للاستكشاف، بس مش بس حلّ "أفضل" واحد.

MAP-Elites (أرشيف متعدّد الأبعاد للنُخَب الظاهرية) هي بالظبط هالفكرة. بتحافظ ع أرشيف مفهرس بأبعاد الميزات. بدل ما تسأل "شو أحسن حلّ؟"، بتسأل "شو أحسن حلّ بيُظهر سلوك X؟ شو أحسن واحد بيُظهر سلوك Y؟ شو أحسن واحد بيوازن X وY؟"

تخيّل شبكة 2D وين كل خلية بتمثّل بصمة سلوكية فريدة. لـ circle packing، MAP-Elites يمكن تتابع الحلول حسب كثافة الرصّ ونمط التوزيع المكاني. كل خلية بتمسك أحسن حلّ تمّ إيجاده لهالتوليفة من الخصائص.

VIEW: Global Best
Global Best
0.0000
Archive
0/100
Steps
0
Phase
-
Archive Grid (Click cells to inspect)
Interactive MAP-Elites simulation. The grid represents the behavioral space (Symmetry vs. Radius Variance). The algorithm illuminates the map by finding the best circle packing for each cell. Click on any filled grid cell to view that specific solution.

هاد بنسمّيه "خوارزمية إضاءة" لأنه بيضوّي مشهد الـ fitness — مبيّن أي مناطق من فضاء السلوك قابلة للتحقيق وشو الحلّ الأمثل بكل منطقة. بدل ما تتقارب لقمة وحدة، بترسم خريطة التضاريس كلها.

ليش هاد بيهمّ؟ لأنه بيحافظ ع التنوّع. مجتمع من 100 حلّ بيصير أرشيف 10×10 من 100 نوع مختلف من الحلول. بعضهم منيح بالكثافة العالية، بعضهم بالتوزيع المتوازن، بعضهم بأنماط رصّ جديدة. هالتنوّع بيساعد بالهروب من الـ local optima واستكشاف مناطق حلول غير متوقّعة. وبعدين — تنبيه حرق — هالتنوّع رح يصير حلول بتاخد إلهام من التحسين، والهندسة الحسابية، وحقول تانية. بيعطيك أحسن الحلول الهندسية، أحسن حلول التحسين، وزي ما بتتخيّل، أحسن الهجائن من التنتين.


الطرق العصبية-الرمزية — ليش بنحتاج "أدمغة"

شفنا إنه الطرق الرمزية (Hill climbing، الخوارزميات التطوّرية، MAP-Elites) بتزبط بشكل جميل. بس عندها عيب قاتل: الاختراع.

إحنا اللي اضطرّينا نخترع القوى الافتراضية. إحنا اللي اضطرّينا ندرك إنه circle packing بدّه تزاوج هندسي زي المطابقة الثنائية. الخوارزمية ما اخترعت هالمفاهيم؛ بس عملت بحث بالمعاملات باستخدام الأدوات اللي بنيناها إلها. ومش بس هيك، عنا قدرة محدودة لهاد. ما بنقدر نصرف الليل والنهار نجرّب أفكار ذكية جديدة لـ circle packing — مين بيعمل هيك أصلاً؟

إذا صادفت مسألة جديدة — لنقول، "طيّ البروتين" أو "توجيه قطارات فائقة السرعة" — لازم تبدأ من جديد. لازم تكون الخبير اللي بيخترع المشغّلات الخاصة بالمجال.

هون فكّ القيد العصبي-الرمزي.

شو لو نقدر نوظّف AI يعمل جزء الاختراع؟ شو لو نقدر نقول "هاي المسألة"، والـ AI بيقرّر "لازم أجرّب الهندسة الحسابية"، أو "لازم أطبّق نوع معيّن من التحسين اللاخطّي"؟

هاد مش بس عن تعبئة الفراغات بشبكة معاملات. هاد عن اكتشاف مقاربات جديدة — خوارزميات جديدة كلياً أو تأطير رياضي يمكن ما كنّا فكّرنا فيه.

بدل ما إحنا نكتب الكود والـ AI يظبّط المعاملات (رمزي)، بنطلب من الـ AI يكتب الكود نفسه. بنستخدم "الدماغ" (LLM) لنصمّم "الجسم" (الكود الرمزي).

AlphaEvolve: المعمارية

عشان نفهم كيف بنحقّق هاد اليوم، لازم نطّلع ع النظام اللي كان رائد فيه: AlphaEvolve.

تخيّل نظام بتعدّ فيه مسألة، وبعدين بترجع لورا وبتتفرّج ع التطوّر بيصير ع مستوى كبير. بتقدّم تلت إشيا: قالب prompt بيوصف شو عم تحاول تحلّ، دالة تقييم بتعطي سكور للحلول، وبرنامج ابتدائي تبدأ منه.

هون شو بيصير:

AlphaEvolve Architecture *الشكل 3: معمارية AlphaEvolve الكاملة.

عالِم/مهندس بيقدّم إعداد المسألة: قوالب prompt، اختيار الـ LLM، كود التقييم، وبرنامج ابتدائي للتطوير. حلقة التحكّم الموزّعة بتعيد أخذ عيّنات من برامج الأهل والإلهامات من قاعدة بيانات الحلول، بتولّد prompts للطفرة، بتستخدم الـ LLMs لتطلّع diffs للكود، بتطبّق الـ diffs لتطلّع متغيّرات، بتقيّم كل متغيّر، وبتخزّن النتائج رجوع بقاعدة بيانات الحلول.*

النظام بيفوت بحلقة بتتكرّر مئات المرّات:

  1. اختار برنامج أب من قاعدة بيانات الحلول مع إلهامات.
  2. ولّد prompt طفرة. مُعاين الـ prompt بيصيغ اشي زي: "هاد حلّ سكوره 2.55. هون حلول أحسن. اقترح تحسينات."
  3. طفرة مبنية ع الـ Diff: الـ LLM ما بيعيد كتابة الملف كله. بيولّد diff (رقعة). هاد جوهري للكفاءة — بيسمح للـ agent يعمل تغييرات جراحية ع خوارزمية بدون ما يكسر باقي المنطق.
  4. التزاوج: ما بيطفّر بس أب واحد. بياخد برنامجين عالي الأداء وبيطلب من الـ LLM يمزج منطقهم، وبهيك بيعمل "تزاوج دلالي".
  5. نفّذ وخزّن: طبّق الـ diff، شغّل المقيّم، وخزّن النتيجة.

هاي قوة AlphaEvolve: ما بتبرمج التطوّر — بتعدّ الماكينة وبتخلّي الـ LLMs تكتشف شو بيزبط.

وبيزبط بشكل مذهل. هالمعمارية بالذات (وأنظمة قريبة زي FunSearch وAlphaDev) قادت لاختراقات بـ:

  • الرياضيات: اكتشاف Cap Sets أكبر (FunSearch)، مسألة أزعجت الرياضياتيين لعقود.
  • علوم الحاسوب: إيجاد خوارزميات ترتيب أسرع (AlphaDev) وkernels لضرب المصفوفات (AlphaEvolve).
  • تأثير بالعالم الحقيقي: تحسين جدولة مراكز بيانات Google (AlphaEvolve) وهيوريستيكس bin packing (FunSearch).

رحلتي: من الحلقات المكتوبة بالإيد للاستقلال العميق

بدّي أكرّر هاد. أول حدس عندي كان أبني الماكينة.

استخدمت Aider، agent برمجة رائع بسطر الأوامر، عشان أنقل منطق AlphaEvolve. بنيت قاعدة البيانات، مُعاين الـ prompt، حلقة التقييم. زبط. كرّرت AlphaEvolve ونتائج مشروع OpenEvolve ع circle packing بنجاح وحتى طلّعت حلول أسرع شوي.

بس بعدين شفت اشي غيّر منظوري.

باحثين من Princeton أول شي بنوا SWE-agent، وحدة من أوائل agents البرمجة المصمّمة لحلّ GitHub issues. كان عندها "واجهة agent-كمبيوتر" (ACI) متقنة بأدوات مبنية خصيصاً لتحرير الملفات، وAPIs بحث متخصّصة، وأغلفة git — بالأساس عم تحاول تمسك إيد الموديل خلال حلقة مطوّر صارمة.

بس بعدين أصدروا SWE-agent-mini، نسخة خفيفة شالت كل اشي. بدل مجموعة معقّدة من الأدوات المخصّصة، عطوا الـ agent اشي واحد: Bash.

البصيرة: إذا عند الـ agent shell، عنده كل اشي. بيقدر يعمل grep ليبحث. sed ليحرّر. python ليشغّل. إذا بدّه أداة متخصّصة، بيقدر يكتب الأداة نفسه بالـ Bash.

هاد خلّاني أوقف. "الإطار" اللي كنت عم أبنيه — مُعاينات الـ prompt، ومتحكّمات الحلقة — كان بالأساس عم يكتب سلوك بالإيد يمكن الـ LLMs الحديثة استبطنته أصلاً.

عم نشوف تحوّل نحو Deep Agents — موديلات ما بس بتتبع تعليمات بل بتفكّر لفترات ممتدّة. بتحافظ ع حالتها الخاصة، بتدير قوائم todo دائمة، وبتعيد التخطيط ذاتياً لما تصطدم بعوائق.

فجرّبت تجربة جذرية.

حذفت نسختي من AlphaEvolve. حذفت كود قاعدة البيانات. حذفت حلقة التحكّم.

فتحت terminal مع Claude Code (CLI مباشر للموديل) وعطيته توجيه واحد عالي المستوى:

"هاد سكربت پايثون مقيّم لـ circle packing. هدفك تكتب سكربت پايثون بيعظّم السكور اللي بيرجّعه هالمقيّم. عندك استقلال كامل تبحث خوارزميات، تجرّبها، وتكرّر. أنا رايح أجيب قهوة."

نتيجة الاستقلال العميق

الكود الكامل لهالتجربة متوفّر بمستودع code-evo-agent-simple.

النتائج كانت مذهلة.

بدون حلقة تطوّرية مكتوبة بالإيد، Claude:

  1. بحث بالخوارزميات الموجودة (عمل "غوغلة" بالبحث بداتا تدريبه ومحاكاة تجارب).
  2. اخترع استراتيجية "التطبيق القطري (Diagonal Layering)" ما كنت شفتها بالأدبيات.
  3. التصحيح الذاتي: لاحظ إنه scipy.optimize غالباً بينحبس، فكتب تهيئة جشعة خاصة فيه ليبدّي المحسّن بداية دافية.

تصرّف كـ المنسّق، والباحث، والمهندس بنفس الوقت.

اكتشاف الـ Agent: التطبيق القطري

عطيت الـ agents استقلال كامل يكتبوا كود پايثون خاص فيهم، مقيّدين بس بـ "Harness غير قابل للتغيير" (المقيّم). بعد كم جيل بس، الـ agents تركوا التخمين العشوائي واكتشفوا استراتيجية التطبيق القطري.

Evolutionary Strategy العملية التطوّرية مرئية.

الـ agents اكتشفوا ذاتياً إنه ترتيب الدوائر بأشرطة قطرية (زي ما بتشوف بالحلّ الأقصى يمين) بيسمح برصّ أمتن من الأنماط الشبكية أو الشعاعية، محقّقين سكور 2.636. أوبس! هاد رقم قياسي عالمي جديد؟! مين بيهتمّ، هي الـ AI مش أنا عالكلّ هاها. أوكي، بس مزح، خلّيني أحتفل بالنتيجة شوي. ما بس طابقنا المعيار. تجاوزناه.

المعيار (DeepMind / OpenEvolve):

  • 2.635
  • أسّسه AlphaEvolve وكرّره مجتمع المصدر المفتوح.

نتيجتنا:

  • 2.636 (الأحدث ع الإطلاق)
2.636
سكور جديد هو الأحدث ع الإطلاق

+0.001 تحسّن عن AlphaEvolve

⚡️ تحقّق بـ استقلالية الـ Agent + التزاوج الهندسي

هالفرق 0.001 يمكن يبيّن صغير، بس بعالم circle packing، هي قفزة هائلة. بتمثّل إيجاد تشكيل أمتن هندسياً من اللي كان يُعتقد إنه الحدّ العملي لهالصنف من الخوارزميات.

حقّقنا هاد مش بكتابة خوارزمية أحسن بالإيد، بل بإعطاء الـ agents الاستقلال ليكتشفوا، ويجرّبوا، ويصقلوا استراتيجيات هندسية زي المطابقة الثنائية لحالهم.

هاد مستقبل تطوير البرمجيات. مش بس كتابة كود أسرع، بل اكتشاف كود أحسن عن طريق agents تطوّر الكود المستقلة. هلق إذا عجبك، كمّل للقسم الجاي لتتعلّم كيف تبنيه لحالك.


مهارات تطوّر الكود

بمراقبة شو اللي زبط، قطّرنا المعمارية لكم مبدأ جوهري بتقدر تستخدمهم بمشاريعك الخاصة كمان. عرّفناهم صراحةً كـ "توجيهات نظام" لـ agent المنسّق:

1. قَسَم المنسّق

Directive: NEVER write solution code yourself.
Role: Manager (Spawn, Evaluate, Prune).
Constraint: If you write code, you limit diversity. Delegate everything.

ليش هالخيار؟ إذا الـ agent الرئيسي كتب الحلّ، بيميل ينحبس بـ "حفرة السياق" تبعته. بيحاول يصلّح باغاته بدل ما يعيد التفكير بالمقاربة. بإجباره يكون مدير، بنعامل توليد الكود كمورد قابل للتوازي.

2. الـ Harness غير القابل للتغيير

# The Contract
HARNESS_PATH = "problems/circle_packing/evaluator.py"
permissions = "READ_ONLY"

if agent_modifies(HARNESS_PATH):
    raise DisqualificationError("Agent attempted to cheat.")

ليش هالخيار؟ الاستقلال بدّه حدود. إذا الـ agent بيقدر يعدّل الاختبار، رح "يحلّ" المسألة بتنزيل العتبة (مثلاً، تغيير حجم الصندوق). هالملف غير القابل للتغيير هو المرساة الوحيدة للحقيقة بنظام كل اشي تاني فيه سايل.

3. الإلهام المتبادل

## Transmission to Generation N+1
"Agent A failed with 'grid packing'."
"Agent B succeeded with 'diagonal layering' (Score: 2.62)."
> INSTRUCTION: Use Agent B's strategy as a starting point.

ليش هالخيار؟ الطفرة العشوائية (التطوّر التقليدي) بطيئة كتير لاستدعاءات الـ LLM المكلفة. بنحتاج تطوّر "لاماركي": تمرير الصفات المتعلَّمة مباشرة. إخبار الجيل التاني ليش الجيل الأول زبط بيوفّر آلاف التوكنات من التجربة والخطأ.

4. التشذيب القاسي

if agent.score < benchmark * 0.8:
    system.kill_lineage(agent.id)
    print("Strategy failed to converge. Pruning resource.")

ليش هالخيار؟ التنوّع منيح، بس التنوّع البطّال مكلف. إذا مقاربة (زي "الرصّ الحلزوني") واضح إنها مش ماشية بعد جيل واحد، ما لازم "نعطيها وقت". بنقتلها فوراً لنفرّغ نافذة سياق وميزانية للمقاربات الرابحة.

5. الصقل متعدّد البدايات

Phase: Exploitation
Task: "Take this EXACT winning code. Do not change the logic.
       Only tune the hyperparameters (k, iterations, tolerance)."

ليش هالخيار؟ الاكتشاف والتحسين أوضاع مختلفة. أول ما تمّ إيجاد "التطبيق القطري"، الـ agent بطّل يحاول يخترع هندسات جديدة وحوّل لضبط تساهلات حلّال SLSQP. هالصقل النهائي عصر آخر 0.1% المطلوبة عشان نتجاوز الـ SOTA.

جمال هاد إنه ما في إطار. بس بتحطّ تعليماتك وبتتفرّج كيف بتنفرد. بالأخصّ، لقيت Claude Code أداة منيحة لهالنوع من الشغل؛ عندهم skills (حقن prompts لحظي) وsub-agents مع كم غنيمة تانية. أكيد بنصحك تجرّبه.

فضاء التصميم: دوّامة خوارزمية

بالكاد خربشنا السطح. AlphaEvolve نفسه بيستخدم تقنيات أكتر تقدّماً زي MAP-Elites (للجودة-التنوّع) ونماذج الجزر (Island Models) (مجتمعات معزولة بتتبادل المهاجرين) عشان تحافظ ع ديناميكيات تطوّرية صحّية.

هاد موضوع عميق لبوست تاني، بس الخلاصة إنه عندك فضاء تصميم هائل لتعريف agents تطوّر الكود الخاصة فيك:

  • الجودة-التنوّع: استخدم MAP-Elites لتحتفظ بأرشيف متنوّع من الحلول (مثلاً، "أسرع كود"، "أكتر كود مقروء"، "أكفأ كود بالذاكرة") بدل بس سكور "أفضل" واحد.
  • التدرّج الطبيعي: استكشف تباين مجتمعك لتوجّه اتجاه البحث، بدل بس الطفرات العشوائية.
  • استراتيجيات Hyperband: درّب ع مسائل صغيرة (مثلاً، 5 دوائر) لتفشل بسرعة، وبعدين كبّر الرابحين للمسألة الكاملة (26 دائرة).
  • دمج التحكّم بالإصدارات: للمسائل الكبيرة، اطلب من الـ agent يستخدم git branches ليدير التجارب ويتابع بس الـ diffs. للمسائل الصغيرة، بس ولّد حلول جديدة.

فضاء التصميم دوّامة خوارزمية. بيمزج كل اشي من علوم الحاسوب الأساسية (الترتيب، الـ hashing) للتحسين المتقدّم (gradient descent، البحث التوافقي) لتعلّم الآلة الحديث. وهلق، مع استقلالية الـ Agent، بنقدر نستكشف هالدوّامة أسرع من أي وقت.

الخلاصة: الملخّص التنفيذي

لوقت طويل، حسبنا إنا بدنا نبني أطر ضخمة ومعقّدة زي AlphaEvolve عشان نطلّع هالنتائج. حسبنا إنا بدنا حلقات تحكّم موزّعة، ومدراء قواعد بيانات، ومُعاينات prompt.

ما بدك.

المشهد تغيّر. مع أدوات زي Claude Code، الـ "Agent" أصلاً قاعد بالـ terminal تبعك. ما بدك تبني البنية التحتية؛ بس بدك تصمّم الـ Harness.

هون الـ workflow الجديد تبعك للمسائل المحدودة الصعبة:

  1. بطّل توجيه: ما تحاول تكتب الـ prompt اللي بيحلّ المسألة.
  2. بلّش توظيف: اكتب الـ مقيّم. عرّف بالظبط شو شكل "النجاح" (مثلاً، "هل الكود صالح؟ شو سكوره؟").
  3. نسّق، ما تبرمج: اعطِ الـ agent المسألة والمقيّم. خلّيه يبحث. خلّيه يفشل. خلّيه يجرّب scipy.optimize، بعدين الخوارزميات الجشعة، بعدين simulated annealing.
  4. احصد الاستراتيجية الرابحة: شغلتك تنتقي الرابح.

إنت بتعرّف الـ شو. خلّي الـ Agent يكتشف الـ كيف. هاي جوهر توظيف AI agent.

مراجع وقراءات إضافية

  1. AlphaEvolve: AlphaEvolve: A Learning Framework to Discover Novel Algorithms. The foundational paper on using LLMs for algorithm discovery.
  2. MAP-Elites: Illuminating Search Spaces by Mapping Elites (Mouret & Clune). The original paper on Quality-Diversity algorithms.
  3. SWE-agent: SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering (Princeton NLP). The inspiration for the "Bash-only" insight.
  4. LangChain Deep Agents: Open Deep Research. The shift towards agents that think for extended periods, manage persistent memory, and autonomously replan.
  5. Aider: Aider.chat. The command-line tool used for the initial replication.
  6. OpenEvolve: OpenEvolve Project. The open-source replication of AlphaEvolve.
  7. Circle Packing Benchmark: Packomania. The standard benchmarks for circle packing in squares.
  8. Compound AI Systems: The Shift from Models to Compound AI Systems (Berkeley AIR). The blog post defining the shift to agentic architectures.
  9. AlphaCode: Competitive Programming with AlphaCode. DeepMind's system for solving competitive programming problems.
  10. Claude Code & MCP: Model Context Protocol. The standard for connecting AI models to data and tools, essential for the "Orchestrator" pattern.
  11. How to Solve It: How to Solve It (George Pólya). The classic text on problem-solving heuristics.
  12. Evolutionary Strategies: Evolution Strategy. Background on the optimization techniques used by AlphaEvolve.
  13. Code Evolution Agent: Code Evolution Agent (Simple). Technical implementation of the skills discussed in this article.