Skip to content

Codex - المقالة 5

ربط النماذج المحلية مثل DeepSeek

3 دقائق قراءة

📚 التنقل في السلسلة: وضحت المقالة السابقة 04 الاشتراك والفوترة تفاصيل حسابات التكلفة في Codex — والموازنة بين توفير باقات الاشتراك أو الدفع حسب الاستهلاك. وتأتي هذه المقالة لتكمل مسار «توفير التكلفة»، وتناقش طريقة بديلة: تبديل النموذج الذكي المشغل لـ Codex إلى النماذج المحلية مثل DeepSeek. ⚠️ توضيح أولي هام (ميزة تجريبية وتخضع للتغيير، وتعتمد على الفحص الفعلي): يعتبر Codex منتجًا خاصًا بـ OpenAI، ولم تكن مستنداته الرسمية تهدف للسماح لك بربط DeepSeek. وتعتمد عملية ربط النماذج الخارجية بـ Codex على فكرة وفرتها الأداة تتيح للمطورين تخصيص مزودي النماذج (model_providers). وتعتمد نسبة نجاح هذه العملية وسلاستها على نوع بروتوكول واجهات الاستدعاء الذي يدعمه النموذج الخارجي، وهو الموضع الأكثر احتمالاً لحدوث مشاكل (سنفصله في القسم 03). ويتم استعراض خيارات التكوين والسلوك الافتراضي الموثق رسميًا في هذه المقالة؛ وتعتمد حلول ربط DeepSeek على الشروحات الفعالة لمجتمعات المطورين، وتخضع عناوين الواجهات وأسماء الموديلات للتعديل المستمر من طرف DeepSeek و Codex.

أيها الأصدقاء، دعنا نستعيد محادثة حقيقية جرت بيني وبين أحد الزملاء مؤخرًا:

زميلي: «ألم تقم بربط DeepSeek مع Claude Code ووفرت الكثير؟ انقل التجربة إلى Codex كما هي.» أنا: «ظننت أيضًا أن النقل المباشر يكفي... ولكن استغرقت ساعتين مع تكوين صحيح تمامًا، وبمجرد إرسال الطلب يظهر خطأ 400 مباشرة.» زميلي: «أوه؟ أليست المسألة مجرد تغيير عنوان base_url فقط؟» أنا: «لا يتبع Codex نفس أسلوب Claude Code. يتشابهان في المظهر ويختلفان تمامًا في الجوهر.»

وبصراحة، فإن هذه المقالة هي الأكثر أهمية للتنبيه والحذر في سلسلة Codex بالكامل. توجد شروحات كثيرة على الإنترنت تدور حول «ربط DeepSeek بـ Codex»، ولكن 90% منها لا توضح تفصيلاً جوهريًا هامًا: يختلف ربط النماذج الخارجية بـ Codex عن ربطها بـ Claude Code في المنطق الأساسي تمامًا، ومحاولة نقل تجربة Claude Code ستتسبب في توقف الاتصال بسبب عدم توافق البروتوكولات. وسنكشف تفاصيل هذه المشكلة بالكامل في هذا الشرح.

بعد قراءة هذه المقالة، ستحصل على:

  • جملة واحدة توضح الفارق الجوهري في ربط النماذج الخارجية بين Codex و Claude Code (توفر عليك ساعات من التشخيص)
  • جدول مقارنة للمفاضلة حول «جدوى ربط نماذج خارجية بـ Codex» لمساعدتك في اتخاذ القرار مسبقًا
  • مقارنة الميزات والعيوب لطريقتي الربط (تعديل ملف config.toml يدويًا مقابل استخدام أدوات الوكيل الخارجية)
  • قالب تكوين model_providers كامل وصالح للاستخدام، مع طرق التحقق وأشهر الأخطاء البرمجية وكيفية معالجتها

01 استوعب أولاً: تغيير الموديل في Codex يختلف تمامًا عن Claude Code

الخلاصة أولاً، وهي الفكرة الأكثر أهمية: تعتمد عملية تبديل النموذج في Claude Code على تعديل متغيرات البيئة، بينما تعتمد في Codex على تعديل «مزود النموذج» في ملف التكوين؛ والأهم من ذلك، يتطلب Codex توافق بروتوكولات واجهات الاستدعاء الخارجية بشكل صارم، ولا يمكن ربطه بأي واجهة متوافقة عشوائيًا.

دعنا نوضح التفاصيل خطوة بخطوة:

يعتبر Codex واجهة سطر أوامر (CLI) تعمل داخل طرفية جهازك — يقوم بقراءة الكود، واستدعاء الأدوات، وإدارة السياق، ولكنه لا يفكر بمفرده، بل يرسل الطلبات في كل خطوة لنموذج ذكاء اصطناعي لمعالجتها. والنموذج الافتراضي للعمل هو GPT المطور من OpenAI (النموذج الرائد الموصى به حاليًا هو gpt-5.5، وفقًا لمستندات Models الرسمية لـ Codex).

ويعني «ربط النماذج الخارجية» توجيه مسار إرسال الطلبات لشركات أخرى بدلاً من OpenAI. ويوفر Codex إمكانية تخصيص ذلك بالفعل — حيث تنص المستندات الرسمية على:

يمكنك توجيه Codex للاتصال بأي نموذج أو مزود يدعم بروتوكولات Chat Completions أو Responses API، لتلبية متطلبات مشروعك. (وفقًا لمستندات Models الرسمية لـ Codex)

تشبيه: صيغ مقابس الكهرباء. يشبه Claude Code مقبس شحن عام متعدد الاستخدامات، بمجرد تقديم واجهة استدعاء متوافقة مع بروتوكول Anthropic سيعمل مباشرة. بينما يشبه Codex جهازًا كهربائيًا يلتزم بصيغة المقبس الصارمة — فهو لا يقبل سوى صيغتي مقابس OpenAI المحددة (Chat Completions أو Responses API). وتقدم النماذج المحلية مثل DeepSeek واجهات استدعاء متوافقة مع OpenAI افتراضيًا، مما يعني إمكانية ربطها من الناحية النظرية. ولكن توجد عقبة خفية:

تنص المستندات الرسمية لـ Codex صراحة على — أن دعم بروتوكول Chat Completions API مصنف كـ «خيار ملغى وسيتم حذفه في التحديثات القادمة» (وفقًا لمستندات Models الرسمية). ويعني هذا تركيز Codex على تشغيل بروتوكول Responses API في التحديثات القادمة. ويمثل Responses API بروتوكولاً حديثًا نسبيًا طورته OpenAI للاستخدام الخاص، ولم تقم أغلب منصات النماذج الخارجية بتطبيقه ودعمه بالكامل حتى الآن.

وهذا هو سبب توقف الاتصال لساعتين في تجربتي السابقة: افترضت أن توافق واجهات DeepSeek مع OpenAI كافٍ لإتمام العملية بنجاح، وواجهت مشكلة عدم توافق البروتوكولات في النهاية.

💡 الخلاصة في جملة واحدة: يعتمد تبديل النموذج في Claude Code على تعديل متغيرات البيئة ويتوافق مع بروتوكول Anthropic؛ بينما يعتمد في Codex على تعديل ملف config.toml وتخصيص مزود النموذج ويتوافق مع بروتوكول OpenAI (مع تفضيل Responses API) — وتجنب محاولة تطبيق تجربة Claude Code مع Codex.


02 هل يجب ربط نماذج خارجية بـ Codex؟ راجع هذا الجدول أولاً

دعنا نوضح الجوانب الواقعية أولاً: لا يمثل ربط النماذج الخارجية بـ Codex نفس الفائدة المرجوة مع Claude Code. وهذا هو تقييمي الفعلي من واقع التجربة:

ويرجع ذلك لثلاثة أسباب جوهرية:

أولاً: تعتبر نسبة نجاح ربط النماذج الخارجية بـ Codex منخفضة — بسبب عقبة التوافق مع بروتوكول Responses API الموضحة سابقًا.

ثانياً: تتميز قدرات البرمجة لنموذج GPT-5.5 بقوتها الكبيرة داخل بيئة Codex، خاصة مع المهام المعقدة وإعادة الهيكلة واسعة المدى، وقد يواجه المطورون تراجعًا في جودة المخرجات والحلول البرمجية عند التبديل لموديلات خارجية رغم توفير التكلفة.

ثالثاً: يتم تضمين رصيد استخدام Codex ضمن باقات اشتراك OpenAI (Plus / Pro) (كما وضحنا في المقالة 04). فإذا كنت مشتركًا في الباقة بالفعل، فستتحمل تكلفة استهلاك API إضافية للربط الخارجي مما يعني دفع التكلفة مرتين دون فائدة.

مقارنة شاملة بين النموذج الرسمي والحلول الخارجية لتسهيل المفاضلة:

البعدنموذج GPT الرسمي (الافتراضي في Codex)النماذج الخارجية والمحلية (مثل DeepSeek)
التكلفةمرتفعة، وتتطلب ميزانية عند الاستهلاك المكثف لنظام APIمنخفضة للغاية، وتتميز باقتصارها على جزء بسيط من التكلفة
الوصول للإنترنتيتطلب استخدام خدمات VPN في بعض البيئاتإمكانية الاتصال المباشر دون عوائق لـ DeepSeek وغيرها
سهولة الإعدادتسجيل الدخول والتشغيل المباشر⚠️ تحديات في توافق البروتوكول وصعوبة الربط
قدرات البرمجة / الوكيلنموذج GPT-5.5 قوي للغاية ويدعم المهام المعقدةمناسبة للمهام اليومية العادية، وتواجه صعوبة مع المهام البنيوية المعقدة
الدعم الرسميمدعوم بشكل كامل كخيار أساسيخيار تجريبي غير مدعوم، وتتحمل مسؤولية تتبع أخطائه
استقرار التكوينمتوافق مع تحديثات الأداة تلقائيًا⚠️ يتطلب التحديث اليدوي عند تغيير أسماء الموديلات أو واجهات الاتصال

بناءً على هذه النقاط: على العكس من Claude Code حيث يمثل الربط الخارجي الخيار الأفضل لتوفير التكلفة — يواجه مطورو Codex عقبة استقرار واتصال البروتوكولات كمتغير أساسي يقلل من قيمة الربط الخارجي.

فمن هم الفئات التي يناسبها تجربة هذا الربط؟

  • نعم، جربها: إذا كنت مستهلكًا مكثفًا لنظام API وتتحمل فواتير مرتفعة، وتقتصر جل مهامك اليومية على عمليات الإضافة والتعديل البسيطة (CRUD)؛ أو تواجه عوائق اتصال مستمرة مع خوادم OpenAI وتفضل خيار اتصال محلي مباشر لمواصلة العمل؛ أو كنت هاويًا وتفضل خوض التحديات التقنية لتطوير مهاراتك.
  • لا، تجنبها: إذا كنت مشتركًا بالفعل في باقة Plus/Pro (لتفادي دفع التكلفة مرتين)؛ أو تركز مهامك البرمجية على بناء البنى التحتية الصعبة وتتبع الأخطاء المستعصية (حيث تحتاج لقدرات GPT-5.5 الكاملة)؛ أو كنت مبتدئًا ولا تفضل تعقيدات التعديل وتشخيص الأخطاء البرمجية للإعدادات.

عادتي هي: الاعتماد على DeepSeek في بيئة Claude Code للمهام اليومية الروتينية، والالتزام بالنموذج الرسمي المدمج لـ Codex. لا يرجع هذا لضعف في DeepSeek، بل لعدم استقرار مسارات الربط الخارجي في Codex، ويفضل تركيز الجهد في توظيف الموديل الرسمي بدلاً من تعقيدات التعديل.

💡 الخلاصة في جملة واحدة: يواجه ربط النماذج الخارجية بـ Codex مخاطر عدم توافق البروتوكولات؛ وتجنب تجربة هذا الربط إذا كنت مشتركًا في باقات OpenAI، أو تركز على مهام برمجية معقدة، أو تفضل البساطة؛ ويعتبر خيارًا تجريبيًا يتطلب الحذر.


03 طريقان للربط: تعديل التكوين يدويًا مقابل أدوات الوكيل

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

طريقان لربط النماذج الخارجية مثل DeepSeek بـ Codex: تعديل config.toml يدويًا مقابل أدوات الوكيل لتحويل البروتوكول

توضح الصورة الخيارات المتاحة للربط: يؤدي الطريقان لنفس النتيجة في النهاية، ولكن يجب على كلا الطريقين عبور عقبة توافق البروتوكول — وهي التحدي الأساسي للربط الخارجي في Codex.

الطريق الأول: تعديل ملف config.toml يدويًا (الخيار الرسمي المدمج)

يقوم Codex بحفظ خيارات التكوين في ملف موحد: ~/.codex/config.toml (وهو ملف التكوين الخاص بالمستخدم، وفقًا لـ Configuration Reference الرسمي لـ Codex). ويدعم الملف إمكانية كتابة وتحديد مزود نموذج مخصص.

تشبيه: إضافة جهة اتصال جديدة في هاتفك. يحتوي الهاتف افتراضيًا على رقم OpenAI فقط، وإذا كنت تريد التواصل مع DeepSeek، فيجب أولاً تسجيل جهة اتصال جديدة: كتابة الاسم، ورقم الهاتف (عنوان base_url)، وتحديد كيفية التحقق من الهوية (قراءة مفتاح API Key من متغيرات البيئة). وبعد إتمام التسجيل، توجه Codex بـ «استخدم جهة الاتصال الجديدة للجلسة الحالية».

أهم خيارات التكوين المطلوبة (مستوحاة من Configuration Reference الرسمي؛ وتكتب الخيارات الأربعة الأولى تحت قسم model_providers بينما يكتب خيارا model_provider و model كخيارات رئيسية في الملف):

مفتاح التكوينالمهمة وفقًا للتوجيهات الرسمية
model_providers.<id>.nameالاسم التعريفي لمزود النموذج المخصص
model_providers.<id>.base_urlعنوان واجهة الاستدعاء (API) الخاصة بالمزود
model_providers.<id>.env_keyاسم متغير البيئة المخصص لقراءة مفتاح API Key
model_providers.<id>.wire_apiتحديد نوع البروتوكول المستخدم، ولا يقبل سوى قيمة responses كخيار وحيد مدعوم وافتراضي
model_provider (خيار رئيسي)تحديد مزود النموذج الفعال حاليًا، وتكون قيمته الافتراضية openai
model (خيار رئيسي)تحديد الموديل المراد استدعاؤه

انتبه لخيار wire_apiتنص المستندات الرسمية صراحة على: أن القيمة responses هي الخيار الوحيد المدعوم حاليًا (responses is the only supported value). ويمثل هذا العقبة الكبرى في الطريق الأول: فإذا كانت المنصة الخارجية التي تريد ربطها تكتفي بواجهات متوافقة مع Chat Completions ولا تدعم بروتوكول Responses API، فلن يكتمل الاتصال باستخدام هذا الطريق.

⚠️ تقدم DeepSeek واجهات متوافقة مع OpenAI، ولكنها تتركز حول بروتوكول Chat Completions بشكل أساسي — وتعتمد إمكانية معالجتها وقبولها عبر بروتوكول responses في Codex على شروط تحديثات البرمجيات للطرفين، ولا يمكننا ضمان الاتصال بنجاح — وتأكد من الفحص الفعلي ومراجعة المستندات الرسمية للجهتين. ونجاح الاتصال يمثل توفيقًا، وفشله هو السلوك الطبيعي المتوقع فلا تقلق.

الطريق الثاني: استخدام أدوات الوكيل الخارجية (حلول مجتمعات المطورين)

نظرًا لكون بروتوكول الاتصال هو التحدي الأساسي، طورت مجتمعات المطورين حلولاً بديلة: تشغيل خادم وكيل (proxy) محلي على جهازك يتولى مهمة «ترجمة وتوجيه البروتوكولات» — حيث يرسل Codex الطلبات بصيغة OpenAI المعتادة للخادم الوكيل المحلي، ويتولى الخادم ترجمتها وتوجيهها لـ DeepSeek بالصيغة المتوافقة معها، وعند ورود الرد يقوم بترجمته وإعادته لـ Codex. ويتعامل Codex طوال العملية مع الخادم المحلي ظنًا منه أنه يتحدث مع OpenAI مباشرة.

ويمثل تطبيق CC Switch (أداة مجانية مفتوحة المصدر تعمل على مختلف أنظمة التشغيل، مستودع GitHub الخاص بها github.com/farion1231/cc-switch) أحد أبرز الحلول في هذا الجانب: حيث يقوم بتشغيل الخادم الوكيل محليًا، وتوجيه طلبات Codex للمنصة الخارجية المختارة، مع توفير خيارات جاهزة لـ DeepSeek وغيرها لتفادي التعديل اليدوي للإعدادات.

الواجهة الرئيسية لـ CC Switch

بعد تثبيت CC Switch، افتح الواجهة الرئيسية وانقر على زر «Add Provider» للوصول لصفحة إعداد مزودي الخدمة.

صفحة الإضافة بعد تثبيت CC Switch

توضح الصورة صفحة إضافة مزودي الخدمة. اختر الأداة التي تريد تهيئتها من القائمة اليسرى (Codex في حالتنا)، وستظهر خيارات إعداد «المزود (Provider)» المقابلة في اليمين — حيث يمكنك تحديد المنصة المراد ربطها (DeepSeek وغيرها) وتمرير مفتاح API Key الخاص بها، وانقر على حفظ ليتولى CC Switch توجيه طلبات Codex للمنصة المختارة تلقائيًا.

تهيئة المزودين في CC Switch: قائمة طويلة من الخيارات الجاهزة

توضح الصورة قائمة المنصات الجاهزة للاختيار — مثل DeepSeek و OpenRouter وغيرها، مما يغنيك عن كتابة العناوين وتفاصيل البروتوكولات يدويًا، ويكفي اختيار المنصة وتمرير مفتاح Key للبدء.

تشبيه: الاستعانة بمترجم. يتحدث المطور (Codex) باللغة الإنجليزية فقط (بروتوكول OpenAI)، ويتحدث الطرف الآخر (DeepSeek) باللغة الصينية فقط. ويمثل الطريق الأول مطالبة الطرف الآخر بتعلم الإنجليزية (دعم المنصة لبروتوكول Responses API)؛ ويمثل الطريق الثاني الاستعانة بمترجم (خادم الوكيل) يتوسط الطرفين لتوجيه الحديث وترجمته. وتعتمد جودة التواصل على مهارة المترجم.

مقارنة للمفاضلة بين الطريقين:

وجه المقارنةالطريق الأول: التعديل اليدوي لملف config.tomlالطريق الثاني: الاستعانة بأدوات الوكيل (مثل CC Switch)
الموثوقية✅ خيار رسمي مدمج تدعمه إعدادات الأداة❌ أداة خارجية طورتها مجتمعات المطورين
توافق البروتوكول⚠️ يعتمد على دعم المنصة لبروتوكول responses✅ يتولى الوكيل مهمة تحويل وتوجيه البروتوكولات، بنسبة نجاح عالية
سهولة الإعداديتطلب كتابة كود TOML يدوياً ويحتمل الخطأواجهة رسومية بسيطة تناسب المبتدئين
الشفافيةالتكوين بالكامل تحت إشرافك ومراجعتكمعالجة برمجية مغلقة تزيد من صعوبة تشخيص الأخطاء
المرونةيتطلب تعديل الإعدادات يدويًا مع كل تغييرتبديل وتغيير المنصات بنقرة واحدة
الفئة المناسبةمن يفضل فهم آليات العمل ولا يمانع التعديل اليدويمن يفضل تفعيل الخدمة سريعًا وتفادي تعقيدات التكوين

خيارات المفاضلة: إذا كنت تريد فهم كيفية إدارة Codex للمنصات الخارجية بالتفصيل، فاتبع الطريق الأول؛ وإذا كنت تريد تفعيل الخدمة سريعًا وتفادي تعقيدات التكوين، فاتبع الطريق الثاني ودع الأداة الخارجية تتولى معالجة تفاصيل البروتوكولات.

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


04 الجزء العملي: الهيكل الأساسي لتعديل config.toml يدويًا

نستعرض في هذا القسم قالب التكوين الأساسي لتطبيق الطريق الأول. ونوضح أنه «هيكل أساسي» وليس إعدادًا جاهزًا للتطبيق دون فحص — نظرًا لأن نجاح تشغيله الفعلي مع DeepSeek مرتبط بتوافق البروتوكولات على جهازك.

توضيح لمسارات الملفات: يحفظ ملف التكوين في المسار ~/.codex/config.toml لأنظمة Mac / Linux، وفي المسار C:\Users\username\.codex\config.toml لأنظمة Windows (يرمز الرمز ~ لمجلد المستخدم الرئيسي). قم بإنشاء المجلد والملف إذا لم يكن موجودًا.

الخطوة الأولى: استخراج مفتاح DeepSeek API Key

  1. افتح منصة مطوري DeepSeek وقم بتسجيل الدخول.
  2. أنشئ مفتاح API Key جديدًا وقم بنسخه وحفظه في مكان آمن (يأتي بالصيغة العامة sk-xxxxxxxx).

🔑 يمثل مفتاح API Key صلاحية الدخول لحسابك ومحفظتك المالية — وتجنب إضافته لمستودع Git أو مشاركته في المجموعات أو كتابته كنص صريح في ملف التكوين. وسنقوم بحفظه في متغير بيئة لتفادي تدوينه في الملفات.

الخطوة الثانية: حفظ المفتاح في متغيرات البيئة

سنقوم بحفظ المفتاح في متغير بيئة مخصص (تحدد الاسم بنفسك، وسنستخدم DEEPSEEK_API_KEY هنا)، ونشير لاسمه فقط في ملف التكوين دون كتابة النص الصريح للمفتاح.

أنظمة Mac / Linux:

bash
export DEEPSEEK_API_KEY=<你的 DeepSeek API Key>

(Note: we preserve the <...> placeholder in code blocks).

أنظمة Windows (في PowerShell):

powershell
$env:DEEPSEEK_API_KEY="<你的 DeepSeek API Key>"

تذكر أن أوامر export و $env: السابقة مؤقتة وتفقد قيمها بمجرد إغلاق نافذة الطرفية الحالية. ولتثبيت القيم بشكل دائم، اكتبها في ملف ~/.zshrc لنظام Mac، أو ملف ~/.bashrc لنظام Linux ثم شغل أمر source؛ وفي نظام Windows قم بإضافتها في خيارات «متغيرات البيئة (Environment Variables)» للمستخدم من خصائص النظام.

الخطوة الثالثة: إضافة خيارات المزود في ملف config.toml

افتح ملف ~/.codex/config.toml للتعديل، وأضف الأسطر التالية (مع الالتزام بالخيارات الرسمية المحددة):

toml
# 顶层:告诉 Codex 这次用我们自定义的提供商和模型
model_provider = "deepseek"
model = "<DeepSeek 的模型名,以官方文档为准>"

# 自定义一个名为 deepseek 的模型提供商
[model_providers.deepseek]
name = "DeepSeek"
base_url = "<DeepSeek 的 API base_url,以官方文档为准>"
env_key = "DEEPSEEK_API_KEY"   # 引用上一步的环境变量名
# wire_api 不写则默认为 responses(官方唯一支持的值)

(Note: we keep the Chinese comments and placeholders because they are inside a code block).

شرح تفاصيل خيارات التكوين المكتوبة:

  • model_provider = "deepseek" — لتوجيه Codex باستخدام مزود الخدمة المخصص deepseek بدلاً من الخيار الافتراضي openai.
  • model = "..." — كتابة اسم الموديل المراد استدعاؤه بالاعتماد على مستندات DeepSeek الرسمية، وتجنب استخدام قيم ثابتة قديمة لتفادي الأخطاء عند ترقية النماذج.
  • [model_providers.deepseek] — قسم تعريف المزود الجديد، ويمثل معرف جهة الاتصال deepseek ويجب أن يتطابق مع القيمة المحددة في خيار model_provider بالأعلى.
  • base_url — عنوان واجهة الاستدعاء لـ DeepSeek وفقًا للمستندات الرسمية للشركة.
  • env_key = "DEEPSEEK_API_KEY" — لتوجيه Codex لقراءة قيمة مفتاح الوصول من متغير البيئة المحدد، ويتطلب إعداده في الخطوة الثانية مسبقًا.

⚠️ تعمدت كتابة قيم model و base_url كعلامات نائبة (placeholders) لأنها تخضع للتحديث المستمر من طرف DeepSeek؛ والأهم من ذلك — أن نجاح تشغيل هذا التكوين يدويًا مرتبط بتوافق بروتوكول responses للجهتين. وتحديد خيارات التكوين الصحيحة لا يضمن قبول وتوافق الطرف الآخر للاتصال بالضرورة. ونشير إلى أن معرفات مزودي الخدمة المدمجة (openai و ollama و lmstudio) هي قيم محجوزة يمنع استخدامها أو تغطيتها (وفقًا للتوجيهات الرسمية لـ Configuration Reference)، لذا تأكد من اختيار معرف مخصص مختلف لـ id.

💡 الخلاصة في جملة واحدة: يتكون التعديل اليدوي من حفظ المفتاح في متغير البيئة + تعريف المزود الجديد تحت قسم model_providers في ملف config.toml + توجيه خياري model_provider و model للمزود الجديد؛ وتظل الصياغة صحيحة بينما يرتبط نجاح الاتصال بتوافق البروتوكول.


05 التحقق: هل تم الاتصال بنجاح؟

بعد اكتمال التكوين، تأكد من التحقق من سلامة الاتصال أولاً قبل البدء في كتابة الكود. لتفادي ضياع الوقت عند فشل التوجيه.

ويتم التحقق بخطوتين بالترتيب:

الخطوة الأولى: التحقق من النموذج الفعال

شغل Codex، واكتب أمر الخط المائل /model لمراجعة وتعديل النماذج المتاحة للجلسة (وفقًا للمستندات الرسمية لـ Models). وتأكد من قراءة Codex للنموذج المخصص الجديد بدلاً من نموذج GPT الافتراضي.

bash
codex

واكتب في الداخل:

bash
/model

(Note: commands in shell block are kept as is).

ويمكنك تشغيل الأداة وتحديد النموذج مؤقتًا عبر علامة -m عند البدء، مثل تشغيل codex -m <模型名> (وفقًا للمستندات الرسمية لـ Models).

الخطوة الثانية: إرسال طلب مصغر للتحقق

بعد التأكد من قراءة الإعدادات، قم بإرسال طلب بسيط للتحقق من سلامة معالجة الاتصال والرد. اكتب المهمة التالية:

undefined
你好,用一句话回复确认你能正常工作。

(Note: we preserve the Chinese prompt because it is in a code block).

وقارن النتائج التي تظهر مع الحالات التالية:

النتيجة التي تظهرالسبب المحتملكيفية المعالجة
الحصول على رد باللغة العربية بشكل طبيعي✅ نجاح الاتصالتم الإعداد بنجاح، ويمكنك بدء العمل
ظهور خطأ 401 / فشل التحقق (Unauthorized)عدم صحة مفتاح API Key، أو عدم تفعيل متغيرات البيئةتحقق من اسم المتغير في env_key وإعدادات متغيرات البيئة، وأعد تشغيل الطرفية
ظهور خطأ 400 / خطأ في الصيغة أو البروتوكول (Bad Request)⚠️ عدم توافق البروتوكولات (مشكلة Responses API)تعذر الاتصال اليدوي المباشر مع المنصة، ويفضل التبديل للطريق الثاني أو اختيار نموذج آخر
ظهور تنبيه يفيد بعدم وجود النموذج (Model not found)كتابة اسم الموديل بشكل خاطئ، أو قيام المنصة بتحديث الأسماءراجع مستندات DeepSeek الرسمية لمعرفة الاسم الصحيح للموديل حاليًا

انتبه لخطأ 400 / خطأ البروتوكول — فظهوره لا يعني بالضرورة وجود خطأ في كتابة إعدادات التكوين الخاصة بك. بل يؤكد المشكلة التي أشرنا إليها في القسم 03: يتطلب Codex تشغيل بروتوكول responses وقد لا تدعمه المنصة الخارجية. وانهار اتصالي لعدة ساعات بسبب هذه المشكلة، وتبين عدم توافق البروتوكولات في النهاية.

وعند مواجهة هذه المشكلة، يفضل: التبديل للطريق الثاني (توجيه العمل لبرنامج الوكيل لمعالجة البروتوكولات) أو اختيار منصة خارجية أخرى تدعم البروتوكول، وتجنب إضاعة الوقت في محاولات تعديل التكوين اليدوي دون فائدة.

💡 الخلاصة في جملة واحدة: تحقق من قراءة النموذج عبر /model أولاً، ثم أرسل طلبًا بسيطًا للتحقق من الرد؛ ويشير خطأ 401 لمشاكل المفتاح، ويشير خطأ 400 لعدم توافق البروتوكولات — وعند حدوث مشكلة بروتوكول تبدل للطريق الثاني وتجنب التعديل العشوائي.


06 بعد الاتصال: اضبط عمق التفكير وتجنب تشغيل الإعدادات القصوى مباشرة

إذا حالفك الحظ واكتمل الاتصال بنجاح، ننصحك باستخدام هذه الميزة الإضافية: يتيح لك Codex ضبط «عمق تفكير النموذج»، للمفاضلة بين توفير التكلفة وجودة المخرجات حسب رغبتك.

يوفر ملف التكوين خيار model_reasoning_effort لتحديد مستويات قوة الاستدلال: minimal / low / medium / high / xhigh (ويرتبط خيار xhigh بدعم النموذج المستخدم؛ وفقًا لـ Configuration Reference الرسمي). ويكتب في ملف config.toml كالتالي:

toml
model_reasoning_effort = "medium"

تشبيه: استراتيجية حل الامتحان. يمثل مستوى low الحل السريع للأسئلة الاختيارية المباشرة لإنهاء العمل بسرعة؛ بينما يمثل مستوى high / xhigh التمهل والتفكير في خطوات حل الأسئلة المعقدة للوصول لحلول دقيقة. أما تشغيل القوة القصوى دائمًا؟ سيعطيك حلولاً جيدة ولكنه يستغرق وقتًا طويلاً ويستهلك الكثير من التكلفة والـ tokens.

وتتمثل عادة العمل الموصى بها في: الاعتماد على خيار medium للمهام اليومية العادية للسرعة والتوفير؛ وتوجيهه لرفع القوة إلى high عند مواجهة مشاكل برمجية معقدة تتطلب قراءة ملفات متعددة وتتبع منطق بنيوي متداخل. والتشغيل الأقصى دائمًا هو هدر للموارد — خاصة وأن هدفك من ربط النماذج الخارجية هو توفير التكلفة، وإهلاك الرصيد في عمليات تفكير معقدة لمهام بسيطة يتناقض مع هذا الهدف.

ونشير لتنبيه أمني هام: عند ربط النماذج الخارجية، قد تتعطل بعض ميزات Codex التي ترتبط ارتباطًا وثيقًا بالمنظومة الرسمية — مثل بعض ميزات البحث على الإنترنت (حيث تشير مواصفات خيار web_search في Configuration Reference لربطه بقواعد بيانات ومستندات OpenAI ومستودعاتها). ويتوافق هذا مع التنبيه الأولي حول كون هذه العمليات «خارج الدعم الرسمي للأداة»، وقد لا تحتاج لمثل هذه الميزات في عملك اليومي ولكن يجب مراعاتها.

💡 الخلاصة في جملة واحدة: اضبط خيار model_reasoning_effort لتوجيه قوة تفكير النموذج — اعتمد على medium يوميًا، وارفع الإعداد إلى high للمهام الصعبة فقط لتفادي حرق الرصيد؛ وتذكر احتمالية تعطل بعض الميزات الرسمية المرتبطة بـ OpenAI عند الربط الخارجي.


07 ملخص

ركزت هذه المقالة على حقيقة هامة وتكرر التنبيه عليها: ربط Codex بالمنصات الخارجية مثل DeepSeek يوفر التكلفة، ولكنه خيار تجريبي غير رسمي وتواجه اتصالاته تحديات وصعوبات تفوق ما يواجهه Claude Code.

ونلخص الأفكار الأساسية في الجدول التالي:

الخطوةالمفهوم الجوهري / الإجراء المطلوب
استيعاب الاختلافيتطلب Codex توافق بروتوكول OpenAI (ويفضل Responses API)، ويختلف عن Claude Code تمامًا وتجنب النقل المباشر
تقييم الجدوىتجنب تجربة هذا الربط إذا كنت مشتركًا في باقات OpenAI، أو تركز على مهام معقدة، أو تفضل البساطة
المفاضلة بين الطرقالطريق الأول: التعديل اليدوي لملف config.toml (فهم الآلية)؛ الطريق الثاني: خادم وكيل محلي مثل CC Switch (نجاح أسرع)
إضافة خيارات المزودتهيئة أقسام model_providers وتحديد خياري model_provider و model وقراءة المفتاح من env_key
التحققمراجعة الموديل عبر أمر /model وإرسال طلب بسيط للتحقق، ويشير خطأ 400 لعدم توافق البروتوكولات
بعد الاتصالضبط خيار model_reasoning_effort لتوجيه قوة تفكير النموذج، وتجنب استخدام الإعدادات القصوى افتراضيًا

تستطيع الآن تقييم مدى جدوى ربط النماذج الخارجية بـ Codex لمشروعك، والمفاضلة بين طريقتي الربط، وصياغة قالب تكوين model_providers بشكل سليم، والتعرف على أسباب أخطاء الاتصال والبروتوكول وكيفية معالجتها.

ونتركك مع النصيحة الأهم: التحدي الأكبر لربط النماذج الخارجية بـ Codex لا يكمن في مهارة كتابتك للتكوين، بل في مدى دعم وتوافق المنصة الخارجية للبروتوكول المطلوب. واستيعاب هذا التفصيل يوفر عليك ساعات من محاولات التشخيص غير المفيدة.


المقالة التالية 06 تشغيل أول مهمة — تنتهي هنا مقالات التهيئة والتكوين، ونبدأ التطبيق العملي الفعلي في المقالات القادمة. وسواء كنت تستخدم نموذج GPT الرسمي أو قمت بربط نموذج خارجي، سنقوم بتوجيه Codex لتعديل الكود وتشغيل أولى مهامه بالكامل، لتشعر بالفارق الفعلي للأداة مقارنة بما تعودت عليه سابقًا. فكر في هذا السؤال: ما هي أول مهمة تريد تكليفه بها، هل هي إصلاح خطأ برمجي، أم إضافة ميزة بسيطة، أم مطالبته بـ «قراءة وفهم» تفاصيل مشروعك أولاً؟

04 الاشتراك والفوترة 06 تشغيل أول مهمة


قراءات موصى بها