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 طريقان للربط: تعديل التكوين يدويًا مقابل أدوات الوكيل
إذا قررت المضي قدمًا وتجربة هذا الربط بعد قراءة المحاذير السابقة، فتجنب البدء العشوائي بكتابة الإعدادات — حيث تتوفر طريقتان للربط، وتحديد الطريقة المناسبة ينجز العمل بسرعة.

توضح الصورة الخيارات المتاحة للربط: يؤدي الطريقان لنفس النتيجة في النهاية، ولكن يجب على كلا الطريقين عبور عقبة توافق البروتوكول — وهي التحدي الأساسي للربط الخارجي في 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، افتح الواجهة الرئيسية وانقر على زر «Add Provider» للوصول لصفحة إعداد مزودي الخدمة.

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

توضح الصورة قائمة المنصات الجاهزة للاختيار — مثل 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
- افتح منصة مطوري DeepSeek وقم بتسجيل الدخول.
- أنشئ مفتاح API Key جديدًا وقم بنسخه وحفظه في مكان آمن (يأتي بالصيغة العامة
sk-xxxxxxxx).
🔑 يمثل مفتاح API Key صلاحية الدخول لحسابك ومحفظتك المالية — وتجنب إضافته لمستودع Git أو مشاركته في المجموعات أو كتابته كنص صريح في ملف التكوين. وسنقوم بحفظه في متغير بيئة لتفادي تدوينه في الملفات.
الخطوة الثانية: حفظ المفتاح في متغيرات البيئة
سنقوم بحفظ المفتاح في متغير بيئة مخصص (تحدد الاسم بنفسك، وسنستخدم DEEPSEEK_API_KEY هنا)، ونشير لاسمه فقط في ملف التكوين دون كتابة النص الصريح للمفتاح.
أنظمة Mac / Linux:
export DEEPSEEK_API_KEY=<你的 DeepSeek API Key>(Note: we preserve the <...> placeholder in code blocks).
أنظمة Windows (في PowerShell):
$env:DEEPSEEK_API_KEY="<你的 DeepSeek API Key>"تذكر أن أوامر export و $env: السابقة مؤقتة وتفقد قيمها بمجرد إغلاق نافذة الطرفية الحالية. ولتثبيت القيم بشكل دائم، اكتبها في ملف ~/.zshrc لنظام Mac، أو ملف ~/.bashrc لنظام Linux ثم شغل أمر source؛ وفي نظام Windows قم بإضافتها في خيارات «متغيرات البيئة (Environment Variables)» للمستخدم من خصائص النظام.
الخطوة الثالثة: إضافة خيارات المزود في ملف config.toml
افتح ملف ~/.codex/config.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 الافتراضي.
codexواكتب في الداخل:
/model(Note: commands in shell block are kept as is).
ويمكنك تشغيل الأداة وتحديد النموذج مؤقتًا عبر علامة
-mعند البدء، مثل تشغيلcodex -m <模型名>(وفقًا للمستندات الرسمية لـ Models).
الخطوة الثانية: إرسال طلب مصغر للتحقق
بعد التأكد من قراءة الإعدادات، قم بإرسال طلب بسيط للتحقق من سلامة معالجة الاتصال والرد. اكتب المهمة التالية:
你好,用一句话回复确认你能正常工作。(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 كالتالي:
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 تشغيل أول مهمة