T2 · Intermediate · 9 دقيقةبيتحدّث · آخر مراجعة: 2026-08-19مسودة أولى — بنراجعها

حلقة الـ Agent

في سطر واحد · قلب أي Agent حلقة واحدة: خطّط → نفّذ → لاحظ → كرّر — ومن غير حدود واضحة، الحلقة دي بتحرق فلوسك.

القاموس:AgentTool CallingTrace
الخلاصة

الـ Agent بيشتغل في دورة: الموديل يخطّط خطوة، الكود ينفّذها بأداة، النتيجة ترجع للموديل يلاحظها، ويقرّر يكمّل ولا يقف. الجزء اللي الناس بتستهين بيه هو «يقف إمتى؟» — شروط التوقّف وسقف اللفّات وميزانية التكلفة هم الفرق بين Agent إنتاجي وفاتورة مفاجئة.

ليه ده مهم؟

كل لفّة في الحلقة = استدعاء موديل جديد بكل السياق المتراكم — يعني التكلفة بتكبر مع كل لفّة مش بتثبت. أشهر حادثة في حياة أي مبني agents هي «الـ Agent اللي فضل يلفّ بالليل». فهم الحلقة وحدودها هو أول مهارة إنتاجية حقيقية في الـ agents.

الحلقة أربع خطوات بتتكرّر: (1) خطّط — الموديل يقرّر الخطوة الجاية، (2) نفّذ — كودك يشغّل الأداة المطلوبة، (3) لاحظ — نتيجة الأداة ترجع للموديل، (4) كرّر — يا إمّا يكمّل يا إمّا يقول «خلصت». إنت اللي بتكتب الحلقة دي، والموديل بيملاها قرارات.

خلينا نفهمها بمثال

زي سوّاق تاكسي بالعدّاد في مدينة متعرفهاش: كل مرة بيبصّ على الخريطة (يخطّط)، يلفّ في شارع (ينفّذ)، يشوف وصل فين (يلاحظ)، ويقرّر يكمّل ولا وصل. لو مقلتلوش «لو معدّى ساعة أو 200 جنيه وقّف» — ممكن يفضل لافف والعدّاد شغّال.

Agent بحث سألته عن أفضل مكتبة charts. اللفّة 1: يبحث ويلاقي 5 مكتبات. اللفّة 2: يفتح توثيق أول اتنين. اللفّة 3: يقارن ويكتشف إن واحدة archived، يشيلها. اللفّة 4: يقرّر إن المعلومات كفاية ويجاوب. أربع لفّات، وكل واحدة قرار بنى على اللي قبله.

طيب بتحصل إزاي؟

الكود عبارة عن while loop: ابعت الرسائل للموديل → لو رجّع نص نهائي، اخرج → لو رجّع طلب أداة، نفّذها وضيف النتيجة للرسائل → ارجع أول الحلقة. كل نتيجة أداة بتتضاف للسياق، فالسياق بيتضخّم لفّة ورا لفّة — وده سبب إن اللفّات المتأخّرة أغلى من الأولانية.

لو أنت Developer

الحدود الإنتاجية أربعة، وكلها في كودك مش في الموديل: (1) max iterations — سقف صارم للّفات (ابدأ بـ 10–15)، (2) ميزانية tokens/فلوس بتتحسب أثناء التشغيل وتقطع لمّا تخلص، (3) timeout زمني كلي، (4) مخرج «استسلام» صريح — لو الموديل مش بيتقدّم، يوقف ويقول وصل لفين بدل ما يفضل يحاول. وسجّل trace لكل لفّة عشان تعرف بعدين الفلوس راحت فين.

خلينا نبنيها

🧪 جرّب بنفسك: اكتب حلقة agent بسيطة بأداة واحدة (مثلًا calculator أو بحث)، وحطّ فيها من أول سطر: max 5 لفّات + عدّاد tokens بيتطبع كل لفّة. بعدين اعمل حاجة شريرة: خلّي الأداة ترجّع error دايمًا، وشوف الموديل هيعمل إيه — هتشوف بعينك ليه السقف مش رفاهية.

أشهر الأخطاء

الغلطة القاتلة: while(true) من غير سقف، بالثقة إن «الموديل هيعرف يقف لوحده». مش هيعرف دايمًا — أداة بترجّع error غامض، والموديل يعيد نفس المحاولة بنفس الطريقة عشرين مرة. الغلطة التانية: سقف لفّات من غير ميزانية تكلفة — 10 لفّات بسياق ضخم ممكن تكلّف أكتر من 50 لفّة صغيّرة.

إمتى تستخدمها؟

الحلقة الكاملة بحدودها مطلوبة في أي agent حقيقي هيشتغل من غير مراقبة لحظية: مهام بحث، إصلاح كود، معالجة تلقائية. الحدود مش «تحسين متأخّر» — دي أول سطور بتتكتب.

وإمتى لأ؟

لو مهمّتك بتخلص في استدعاء أداة واحد أو اتنين معروفين، متبنيش حلقة مفتوحة — sequence ثابت أبسط وأرخص. والحلقة اللامحدودة (من غير caps) متتكتبش أبدًا، ولا حتى «مؤقتًا للتجربة».

خلينا نبنيهاالقراءة خلصت — دلوقتي ابنيها بإيدك.تحدّي: الـ Agent اللي مش بيقف