هل تريد فهم وكيل Codex الذكي؟ لا تفوت هذا التحليل المتعمق!
هل تريد فهم وكيل Codex الذكي؟ لا تفوت هذا التحليل المتعمق!
OpenAI فعلت للتو شيئًا "غير عادي".
عادةً ما تنشر OpenAI نماذج أقوى (مثل o1)، ولكن هذه المرة، نشروا مدونة تقنية متعمقة بعنوان 《Unrolling the Codex agent loop》، ولم يقتصر الأمر على فتح المصدر لمنطق Codex CLI الأساسي، بل قاموا أيضًا بتفكيك كيفية عمل وكيل ترميز ناضج (Coding Agent) خطوة بخطوة.

في الوقت الحالي الذي يحظى فيه Claude Code و Cursor بشعبية كبيرة، فإن مقالة OpenAI هذه ليست مجرد استعراض للعضلات، بل هي أيضًا "دليل لتجنب المخاطر لمهندسي Agent". سواء كنت ترغب في استخدام أدوات البرمجة بالذكاء الاصطناعي بشكل جيد، أو كنت ترغب في تطوير Agent بنفسك، فإن هذه المقالة تستحق الدراسة كلمة كلمة.
يبلغ طول النص الكامل 8300+ كلمة، ويستغرق القراءة حوالي 20 دقيقة.
أولاً، ما هو Codex CLI؟
Codex CLI هي أداة Agent ترميز مفتوحة المصدر من OpenAI، ويمكن تشغيلها على جهاز كمبيوتر محلي، أو تثبيتها في محرر التعليمات البرمجية. تدعم VS Code و Cursor و Windsurf وما إلى ذلك.
عنوان المصدر المفتوح: https://github.com/openai/codex

و Agent Loop (حلقة الوكيل) التي سيتم تقديمها هذه المرة هي المنطق الأساسي لـ Codex CLI: وهي مسؤولة عن تنسيق المستخدمين والنماذج واستدعاءات النماذج لتنفيذ التفاعلات القيمة بين الأدوات.
Agent Loop (حلقة الوكيل الذكي)
النماذج هي مجرد مكونات، و Agent (الوكيل الذكي) هو الذي يشكل المنتج.
جوهر كل AI Agent هو ما يسمى بـ "حلقة الوكيل الذكي (Agent Loop)". الرسم التخطيطي لحلقة الوكيل الذكي هو كما يلي:

عادةً ما نعتقد أن برمجة الذكاء الاصطناعي هي: "أسأل، ويجيب". ولكن داخل Codex CLI، هذه عملية حلقة لا نهائية معقدة...
تحتوي حلقة Agent القياسية على الحلقات التالية:
- تعليمات المستخدم: مجموعة من التعليمات النصية التي يدخلها المستخدم (مثل "إعادة هيكلة هذه الوظيفة").
- الاستدلال النموذجي: يقرر النموذج ما إذا كان سيجيب مباشرة، أو يستدعي أداة (Tool Call).
- استدعاء الأداة: إذا قرر النموذج استدعاء list files أو run shell، فسيقوم CLI بتنفيذ هذه الأوامر محليًا.
- الملاحظة (Observation): يتم التقاط نتائج تنفيذ الأداة (التعليمات البرمجية، والأخطاء، وقائمة الملفات).
- الحلقة: تتم إضافة هذه النتائج إلى سجل المحادثة، وتغذيتها مرة أخرى إلى النموذج. بعد رؤية النتائج، يقرر النموذج الخطوة التالية.
- الإنهاء: حتى يعتقد النموذج أن المهمة قد اكتملت، ويخرج الرد النهائي.
تسمى العملية برمتها من "إدخال المستخدم" إلى "استجابة الوكيل الذكي" دورة واحدة من المحادثة (تسمى سلسلة رسائل في Codex).

مع تقدم المحادثة، يزداد أيضًا طول المطالبة (Prompt) المستخدمة للاستدلال على النموذج. هذا الطول مهم، لأن كل نموذج لديه نافذة سياق، والتي تمثل الحد الأقصى لعدد الرموز (tokens) التي يمكن للنموذج استخدامها في استدعاء استدلال واحد.
الاستدلال النموذجي
يرسل Codex CLI طلب HTTP إلى Responses API لإجراء الاستدلال النموذجي. يستخدم Codex Responses API لتشغيل حلقة الوكيل.
ما هو Responses API؟
Responses API هو جيل جديد من واجهة تطوير الوكلاء الذكيين التي أطلقتها OpenAI في مارس 2025، وتهدف إلى توحيد المحادثة واستدعاء الأدوات وقدرات المعالجة متعددة الوسائط، لتزويد المطورين بتجربة بناء تطبيقات الذكاء الاصطناعي أكثر مرونة وقوة.
نقطة نهاية Responses API التي يستخدمها Codex CLI قابلة للتكوين، ويمكن استخدامها مع أي نقطة نهاية تنفذ Responses API.

يقوم النموذج بأخذ العينات (إنشاء استجابة)
يؤدي طلب HTTP الذي تم إرساله إلى Responses API إلى بدء "دورة" Codex الأولى في المحادثة. يقوم الخادم بإرجاع الاستجابة المتدفقة من خلال Server-Sent Events (SSE).

لاحظ أن مطالبة الجولة السابقة هي بادئة دقيقة للمطالبة الجديدة. يمكن لهذا التصميم تحسين كفاءة الطلبات اللاحقة بشكل كبير - يمكن الاستفادة من آلية تخزين المطالبات مؤقتًا.

تأثير زيادة طول المطالبة باستمرار مع زيادة الدورات
1. من حيث الأداء
- زيادة تكلفة أخذ عينات النموذج: ستؤدي الزيادة المستمرة في طول المطالبة إلى زيادة تكلفة أخذ عينات النموذج، لأن عملية أخذ العينات تحتاج إلى معالجة المزيد من البيانات، مما يؤدي إلى زيادة حجم الحساب.
- انخفاض فوائد التخزين المؤقت: مع الزيادة المستمرة في طول المطالبة مع زيادة الدورات، تزداد صعوبة مطابقة البادئة الدقيقة، وينخفض احتمال الوصول إلى التخزين المؤقت.
2. من حيث إدارة نافذة السياق
- سهولة استنفاد نافذة السياق: ستؤدي الزيادة المستمرة في طول المطالبة إلى زيادة سريعة في عدد العلامات في المحادثة، وبمجرد تجاوز عتبة نافذة السياق، قد يؤدي ذلك إلى استنفاد نافذة السياق.
- زيادة ضرورة عمليات الضغط: لتجنب استنفاد نافذة السياق، من الضروري ضغط المحادثة عندما يتجاوز عدد العلامات العتبة.
3. من حيث مخاطر عدم الوصول إلى التخزين المؤقت
- سهولة إثارة عدم الوصول إلى التخزين المؤقت من خلال عمليات متعددة: إذا كانت التغييرات في الأدوات المتاحة للنموذج أو النموذج المستهدف أو تكوين الحماية مطلوبة بسبب إطالة المطالبة، فسوف يزيد ذلك من خطر عدم الوصول إلى التخزين المؤقت.
- تزيد أدوات MCP من التعقيد: يمكن لخادم MCP تغيير قائمة الأدوات المتوفرة ديناميكيًا، والاستجابة للإشعارات ذات الصلة في المحادثات الطويلة قد يؤدي إلى عدم الوصول إلى التخزين المؤقت.
معلومات مرجعية: 《Unrolling the Codex agent loop》المصدر: OpenAI





