Claude Code أم Codex: أي وكيل برمجي تختار؟ (2026)

الخلاصة: اختر Claude Code للتحكم العميق عبر الطرفية وHooks ونظام Claude؛ وCodex لـChatGPT والمهام السحابية وتعدد Agent؛ وPandaNpc للتحكم بكليهما عن بُعد عبر Windows وmacOS وLinux والهاتف.

PandaNpcنُشر لأول مرة في تم التحديث في
Claude Code أم Codex: أي وكيل برمجي تختار؟ (2026)

خلاصة الاختيار أولاً: إذا كنت تعمل بالفعل داخل نظام Anthropic البيئي وتعتمد على CLAUDE.md وHooks وSkills ونماذج Claude، فاختر Claude Code؛ وإذا كنت تعمل داخل نظام ChatGPT/OpenAI البيئي وترغب في وضع CLI المحلي وIDE وتطبيق سطح المكتب والمهام السحابية ضمن نفس الحساب، فاختر Codex. كلا الجانبين يستطيع قراءة وكتابة الأكواد وتشغيل الأوامر واستدعاء MCP واستخدام الوكلاء الفرعيين والموافقة على العمليات الخطيرة، ولا يوجد فائز دائم الصواب للمهام البرمجية العادية.

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

إفصاح المصلحة: نقوم بتطوير PandaNpc، وهو نظام عن بُعد يربط Claude Code وCodex ووكلاء محليين آخرين في نفس الوقت. الاختلافات في البروتوكول في الجزء الثاني تأتي من تجربة تكامل حقيقية؛ لم نقم بمعيار مرجعي محكوم لقدرات النماذج، لذلك لن ندعي أن أي طرف "أسرع في البرمجة" أو "نسبة نجاحه أعلى". Codex في هذه المقالة يشير إلى OpenAI Codex، وليس منتجات أخرى بنفس الاسم.

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

جدول واحد لفهم الاختلافات الجوهرية بين Claude Code وCodex

البعد Claude Code OpenAI Codex
نظام الحساب الرئيسي Claude / Anthropic ChatGPT / OpenAI
المدخل المحلي CLI وتطبيق سطح المكتب وامتدادات IDE CLI وCodex في تطبيق ChatGPT لسطح المكتب وامتدادات IDE
المدخل السحابي Claude Code على الويب وSlack وCI وغيرها Codex Web/Cloud وSlack وSDK وسير عمل GitHub وغيرها
الوصف طويل الأمد للمشروع CLAUDE.md وRules وSkills AGENTS.md وSkills وإعدادات المشروع
الأدوات الخارجية MCP والمكونات الإضافية وHooks وChannels MCP والمكونات الإضافية وSkills وSDK
العمل المتوازي وكلاء فرعيون وفرق وكلاء وجلسات worktree وكلاء متعددون وworktree مدمج ومهام سحابية متوازية
حدود الأذونات أوضاع الأذونات وHooks والـsandbox وسياسات المؤسسة سياسات الموافقة وsandbox على مستوى النظام والقواعد وسياسات المؤسسة
التحكم الرسمي عن بُعد عبر الهاتف تطبيق Claude وclaude.ai/code للتحكم في جلسات CLI/VS Code المحلية مدخل Remote في ChatGPT Mobile للتحكم في جلسات Codex المدعومة على سطح المكتب
الأنسب لمن الفرق التي اعتمدت سير عمل Claude وتحتاج أتمتة عميقة لدورة الحياة الفرق التي اعتمدت ChatGPT/OpenAI وتحتاج ربط المهام المحلية والسحابية

هذا الجدول يقارن سير العمل، وليس ترتيب النماذج. إصدارات النماذج ونوافذ السياق والسرعة والحدود كلها تتغير؛ كتابة ميزة نموذجية في وقت محدد على أنها "هذا الوكيل أقوى دائماً" عادة ما تصبح قديمة بعد بضعة أسابيع.

Claude Code مقابل Codex: اختر مباشرة حسب حالتك

اختر Claude Code إذا كنت تقدر هذه الجوانب أكثر

  1. المشروع منظم بالفعل حول Claude. المستودع يحتوي بالفعل على CLAUDE.md وRules وSkills وSubagents أو Hooks، وتكلفة ترحيلها أكبر بكثير من تغيير اسم نموذج.
  2. تحتاج أتمتة دقيقة لدورة الحياة. يمكن لـ Hooks في Claude Code فرض فحوصات عند أحداث مثل استدعاءات الأدوات وطلبات الأذونات وتعديلات الملفات والضغط ونهاية الجلسة؛ كما يسهل وضع بوابات أمان "تُنفذ في كل مرة" خارج الوكيل.
  3. تستخدم بشكل أساسي نماذج Claude وحساب Anthropic. يبقى الحساب والحدود وسياسات الإدارة والجلسات الحالية في نفس النظام.
  4. تريد التحكم في CLI المحلي مباشرة من المتصفح. يدعم التحكم الرسمي عن بُعد صراحةً تطبيق Claude وclaude.ai/code لتولي جلسات CLI أو VS Code المحلية.

اختر Codex إذا كنت تقدر هذه الجوانب أكثر

  1. الفريق يستخدم ChatGPT/OpenAI بالفعل. يمكن لـ Codex CLI وIDE وسطح المكتب والمهام السحابية مشاركة هوية ChatGPT وسياسات مساحة العمل.
  2. غالباً ما تسند المهام إلى الخلفية السحابية. يضع Codex التفاعل المحلي والتفويض السحابي في نفس نظام المنتج، وهو مناسب لطلبات السحب غير المتزامنة ومراجعة الأكواد والترحيل والصيانة الجماعية.
  3. تريد إدارة عدة مهام متوازية في واجهة واحدة. يركز تطبيق Codex على worktree المدمج وسير عمل الوكلاء المتعددين، وهو مناسب للإرسال المتزامن وعرض التقدم ثم دمج النتائج.
  4. تحتاج SDK أو مدخل أتمتة. بالإضافة إلى codex exec في CLI، توفر OpenAI أيضاً Codex SDK وSlack ومداخل سير عمل GitHub، وهي مناسبة لدمج الوكيل في أنظمة الهندسة الحالية.

استخدام كليهما معاً أمر منطقي تماماً

المهام الكبيرة والفرق الحقيقية نادراً ما تحددها قدرات النموذج فقط. يمكنك جعل Claude Code يتعامل مع المستودعات التي لديها بالفعل Claude Hooks/Skills، وجعل Codex يتعامل مع المهام السحابية في مساحة عمل OpenAI؛ أو إجراء مراجعة متقاطعة للتغييرات عالية الخطورة في نفس المستودع. ما يجب تجنبه حقاً: تعديل نفس checkout من كلا الجانبين في نفس الوقت دون worktree أو حدود مهام أو مسؤول دمج نهائي.

الشريط الجانبي لـ PandaNpc يعرض اتصالات Claude Code ووكلاء عن بُعد آخرين في نفس الوقت
المدخل الموحد يقلل تكاليف التبديل، لكن يجب أن يستخدم كل وكيل مساحة عمل أو worktree مستقلة.

جودة البرمجة وقدرات النماذج: لماذا لا تمنح هذه المقالة بطلاً ثابتاً

"أيهما يكتب أكواداً أفضل، Claude Code أم Codex؟" هو السؤال الأكثر شيوعاً، والأكثر عرضة للإجابة الخاطئة. نتائج الوكيل تتأثر في نفس الوقت بإصدار النموذج وشدة الاستدلال والسياق ووصف المستودع وأذونات الأدوات وسرعة الاختبار ونوع المهمة. سؤال عابر لا يمثل الأداء طويل الأمد، وحالات العملاء التي يعرضها البائعون لا يمكن أن تحل محل قبولك في مستودعك الخاص.

نقترح استخدام مجموعة من المهام الحقيقية للمقارنة:

  • تعديل ميزة يمتد عبر 3 إلى 5 ملفات؛
  • خطأ مع اختبار فاشل؛
  • مراجعة كود للقراءة فقط؛
  • مهمة تتطلب البحث في التوثيق وتشغيل الاختبارات وشرح المفاضلات.

سجل معدل النجاح الأولي والتعديلات خارج النطاق وأدلة الاختبار وعدد التصحيحات اليدوية والوقت الإجمالي. لا تقارن فقط من يبدو أكثر ذكاءً في الإجابة النهائية.

الإصدار المجاني والاشتراك: افرز أولاً بين حدود الوكيل وأهلية التحكم عن بُعد

"هل يمكن استخدامه مجاناً؟" يتضمن في الواقع حسابين مختلفين: الأول هو حدود استخدام نماذج Claude/Codex والوكلاء؛ والثاني هو حدود العملاء عن بُعد والأجهزة عبر الإنترنت والجلسات المتزامنة. PandaNpc يحل فقط طبقة الاتصال الثانية، ولا يقدم اشتراكات نماذج Anthropic أو OpenAI.

المنتج النطاق المجاني النطاق المدفوع/الاشتراك أكثر ما يساء فهمه
Claude Code يمكن لـ CLI استخدام مفتاح Anthropic API Key أو مزود سحابي مدعوم للدفع حسب الاستخدام؛ Claude Free العادي لا يعني امتلاك Remote Control الرسمي يمكن لاشتراكات Pro وMax وTeam وEnterprise تشغيل Claude Code بهوية الاشتراك؛ يتطلب Remote Control حالياً أحد هذه الاشتراكات المدفوعة Claude Code نفسه لا يدعم الاشتراكات فقط، لكن Remote Control الرسمي يجب أن يستخدم اشتراك Claude.ai مدفوعاً، ولا يدعم API Key أو Bedrock أو Vertex أو Foundry
Codex تفتح OpenAI من حين لآخر حدود Codex مؤقتة لـ Free/Go، ويعتمد ذلك على النشاط الحالي والحساب؛ لا يمكن اعتباره حقاً دائماً مستقراً خطط Plus وPro وBusiness وEnterprise وEdu وغيرها يمكنها استخدام Codex CLI وIDE وWeb/Cloud وسير عمل التطبيقات المدعومة، وتختلف الحدود والتزامن حسب الخطة يعتمد Codex Remote أيضاً على إصدار تطبيق سطح المكتب ونفس مساحة عمل ChatGPT وتفويض الجهاز وسياسات المسؤول/RBAC
PandaNpc Free: حتى جهازي Agent متصلين و5 جلسات Agent متزامنة؛ يمكن استخدام اتصالات Claude Code والتحكم عن بُعد في Codex والشبكة الخاصة للأجهزة وMCP وغيرها VIP: 10 أجهزة/10 جلسات؛ SVIP: 50 جهازاً/50 جلسة، مع رفع حدود المنتجات الأخرى عضوية PandaNpc توسع الطبقة الاتصالية والتزامن، ولا تدفع عنك استخدام Claude أو ChatGPT أو API أو النماذج المخصصة

اعتباراً من 30 أغسطس 2026، تذكر صفحة متطلبات Remote Control في Anthropic الأهلية كـ Pro وMax وTeam وEnterprise، وتستبعد صراحةً API Key؛ وقد يحتاج Team/Enterprise أيضاً إلى تفعيل من المسؤول. قامت OpenAI بفتح مؤقت لـ Free/Go، لذا يجب أن يعتمد "التوفر المجاني" لـ Codex على ما يظهر حالياً في الحساب، ولا يمكن كتابته كوعد دائم. أحدث مستويات وأسعار PandaNpc حسب صفحة العضوية؛ استهلاك النماذج واشتراك العضوية حسابان مستقلان.

ما الفرق بين التحكم عن بُعد في Claude Code وCodex

القاسم المشترك بينهما: الكود والأدوات ما تزال تعمل على المضيف، والهاتف مجرد واجهة تحكم؛ إذا نام المضيف أو أُغلق أو فقد الشبكة، لا يمكن متابعة تنفيذ المهام المحلية. لكن المدخلين الرسميين حالياً غير متماثلين.

القدرة عن بُعد Claude Code Remote Control Codex Remote PandaNpc
هدف التحكم جلسات Claude Code CLI المحلية أو جلسات VS Code جلسات Codex المدعومة في تطبيق ChatGPT/Codex لسطح المكتب Claude Code وCodex CLI وPandaCode وDeepSeek harness وPi وغيرها على المضيف
نظام المضيف المضيف المحلي الذي يدعمه Claude Code يتمحور حول تطبيق ChatGPT لسطح المكتب على macOS/Windows Windows وmacOS وLinux والخوادم وحاويات التطوير
البدء/الاقتران claude remote-control وclaude --remote-control و/remote-control إعدادات سطح المكتب تسمح بالاكتشاف والتحكم، مع تفويض الجهاز باستخدام نفس مساحة عمل ChatGPT تثبيت PandaPaw على المضيف وتسجيل الدخول، أو الانضمام بدون مراقبة باستخدام مفتاح جهاز لمرة واحدة
مدخل الهاتف صفحة Code في تطبيق Claude تبويب Remote في ChatGPT Mobile تطبيق PandaNpc iOS ومتصفح الجوال
مدخل المتصفح claude.ai/code يمكنه التحكم في الجلسات المحلية يوضح المساعدة الرسمية حالياً أن Codex لا يمكن اختياره مباشرة في Web/Mobile؛ وRemote موجه أساساً لربط الجوال بجلسات سطح المكتب صفحة /agent على الويب يمكنها التحكم في جميع المحركات المتصلة
سطح المكتب إلى سطح المكتب أي متصفح يمكنه الدخول إلى claude.ai/code Remote الرسمي لا يعني الوصول إلى مشروع من سطح مكتب إلى سطح مكتب، فغالباً ما يتم عبر SSH/مشاريع عن بُعد عملاء سطح المكتب Windows/macOS/Linux يتشاركون نفس قائمة الاتصالات
الملفات والأدوات المحلية تبقى على مضيف Claude Code، مع الاحتفاظ بـ MCP والإعدادات المحلية تبقى على مضيف Codex لسطح المكتب تبقى على مضيف كل وكيل، ويرسل الطرف البعيد الرسائل والحالة والـDiff والموافقات فقط
جلسات جديدة يمكن لوضع الخادم إنشاء جلسات على مضيف محدد من الطرف البعيد يتمحور حول الأجهزة المصرح بها وجلسات سطح المكتب المدعومة، وتتغير القدرات مع إصدار التطبيق يمكن اختيار الجهاز والمحرك ودليل العمل لإنشاء أو استئناف الجلسات
قيود الحساب الرسمي اشتراك Claude.ai مدفوع؛ لا يمكن استخدام API Key ومزودي الطرف الثالث مع Remote Control الرسمي نفس حساب/مساحة عمل ChatGPT؛ قد يتأثر بالخطة والمسؤول وRBAC حساب PandaNpc مسؤول عن الاتصال؛ يبقى مصادقة النماذج باستخدام اشتراكات/API/مزودي كل محرك على المضيف
محركات/أجهزة متعددة يدير Claude Code فقط؛ كل مضيف يُسجل بشكل منفصل يدير Codex فقط؛ يتمحور حول أجهزة ChatGPT/Codex حساب واحد يدير محركات وأجهزة متعددة وشبكة خاصة للأجهزة وحالة الاتصال عبر الإنترنت
منفذ وارد للإنترنت غير مطلوب غير مطلوب غير مطلوب؛ يتصل المضيف والعميل بنشاط بمرحل المصادقة، مع تفضيل الاتصال المباشر في الشبكة الخاصة للأجهزة
الاستخدام المجاني Remote Control الرسمي لا يدعم Claude Free قد يكون لدى Free/Go حدود مرحلية، وأهلية Remote حسب ما يظهر في الحساب فعلياً Free يدعم جهازي Agent متصلين و5 جلسات متزامنة؛ ما تزال بحاجة لتوفير أهلية النموذج upstream بنفسك

Claude Code Remote Control يشبه أكثر "فتح جلسة CLI محلية لـ Claude Web/Mobile"؛ بينما التوضيح الرسمي لـ Codex Remote يشبه أكثر "الوصول من ChatGPT Mobile إلى جلسات Codex المدعومة على سطح المكتب". إذا كنت تريد أيضاً الوصول من كمبيوتر سطح مكتب آخر أو مدخل متصفح موحد أو مضيف Linux أو نماذج مخصصة أو إدارة Claude Code وCodex CLI معاً، فستحتاج إلى طبقة اتصال عن بُعد إضافية.

مسارا التحكم عن بُعد في Codex عبر الهاتف: ChatGPT Remote وCLI المحلي لـ PandaNpc
Remote الرسمي يتمحور حول جلسات ChatGPT/Codex على سطح المكتب؛ بينما يربط PandaNpc بـ Claude Code وCodex CLI الفعليين على المضيف.

طريقة PandaNpc هي جعل PandaPaw يعمل بجانب المضيف، وكشف اتصالات Claude Code وCodex وPandaCode وغيرها بشكل موحد للمتصفح وiOS وعميل سطح المكتب. كلا الجانبين يبدأان اتصالات صادرة فقط، ولا حاجة لفتح منافذ وكيل عامة؛ يبقى تنفيذ الأدوات على المضيف.

المضيف المحلي وطرف التحكم عن بُعد يبدأان فقط اتصالات صادرة إلى مرحل المصادقة
طبقة الاتصال عن بُعد الموحدة مسؤولة عن الرسائل والحالة والموافقات، بينما تبقى الأكواد والبيانات الاعتمادية وتنفيذ الأوامر على كل مضيف.

خطوات أكثر اكتمالاً للـ Remote الرسمي/PandaNpc انظر على التوالي دليل Claude Code Remote Control و دليل التحكم عن بُعد في Codex عبر الهاتف.

كيف تقارن الأذونات وMCP وقدرات التخصيص

كلا الجانبين يمكنه الاتصال بـ MCP، ويوفر كلاهما أدوات الملفات والـShell والبحث والتصحيح؛ الفرق الحقيقي في "كيفية تقييد الأدوات" و"أين توجد مواصفات المشروع".

  • Claude Code: يوفر CLAUDE.md سياق مشروع دائماً، وتحمّل Skills سير العمل، وتنفذ Hooks بوابات حتمية عند عقد دورة الحياة، وتتحمل Subagents/Agent teams العزل والعمل المتوازي.
  • Codex: يعبر AGENTS.md وSkills عن مواصفات المشروع، وتتحكم سياسات الموافقة وsandbox النظام في الأذونات المحلية، ويوفر App/Cloud مهام متوازية وworktree، ويربط SDK نفس الوكيل بأنظمة الأتمتة.

إذا كان الفريق يهتم أكثر بـ "يجب أن ينفذ أي وكيل نفس مجموعة الفحوصات"، فلا تكتفِ بكتابة المتطلبات في التلميح (prompt). ضع الاختبارات ومنع الأوامر الخطرة وفحص المفاتيح وتفويض النشر في Git أو CI أو sandbox أو Hooks أو طبقات فرض خارجية أخرى، ولن يعمل كلا الوكيلين إلا داخل هذا الحد.

الجزء العميق: لماذا لا يمكن استخدام نفس طبقة التكيف عند ربط المحركين بنفس النظام

قبل الحديث عن الاختلافات من الضروري التوضيح: النموذجان الذهنيان للأداتين متشابهان للغاية - كلاهما يعمل في الطرفية، وكلاهما بوحدات جلسات، وكلاهما يمكنه استدعاء أدوات لتعديل الملفات وتشغيل الأوامر، وكلاهما يتطلب تأكيد المستخدم للعمليات الخطيرة، وكلاهما يمكنه معالجة مهام متعددة الجولات في جلسة واحدة. ولهذا السبب، يسهل عند التكامل استنتاج "كتابة طبقة تكيف واحدة تكفي"، وهكذا بدأنا.

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

جدول مرجعي سريع لسبعة اختلافات في البروتوكول

# البعد سلوك Claude Code سلوك Codex من يعضّه عدم المعالجة
1 معرف رسالة المساعد يحمل معرفاً ثابتاً قد لا يحمله من يقوم بترسيخ الرسائل / مزامنة متعددة الأطراف
2 فحص بقاء الجلسة بصيغة دفعات، مجموعة في كل مرة يتوقع معرف جلسة واحد من يعرض حالة الاتصال
3 ترتيب إعادة تشغيل التاريخ متوافق مع الترتيب الزمني الحقيقي إطارات نشاط الخيط الفرعي تصل كدفعة كاملة في النهاية من يبني عرض الوكلاء الفرعيين / الخيوط المتعددة
4 بنية أمر استدعاء الأداة كاملة قد تكون مجزأة من يبني واجهة الموافقة على الأدوات
5 اشتراك أحداث القناة يتحمل تنفيذ تبديل الجلسة لا يمكنه تنفيذ التبديل في نفس الوقت من يبني relay متعدد المسارات
6 حصة اتصالات الإنترنت يتشارك نفس تجمع العد مع Codex نفس اليسار من يطبق حدود الحصص
7 أداء التاريخ الطويل خطي إذا عولج بشكل غير صحيح فقد يتدهور إلى غير خطي من يبني لتطبيقات الجوال

دعنا نفصّل كل نقطة أدناه، كل نقطة مكتوبة بصيغة "الأعراض ← كيفية التشخيص ← كيفية الإصلاح".

أولاً: هل تحمل رسائل المساعد معرفاً ثابتاً - يحدد استراتيجية إزالة التكرار لديك

الأعراض: تفتح جلسة Codex، كل شيء طبيعي بعد المحادثة مباشرة؛ عند الخروج والدخول مرة أخرى، تتحول نفس إجابة المساعد إلى 2 أو 3 إجابات، وكلما دخلت أكثر زادت. رسائل المستخدم لا تتأثر، فقط إجابات المساعد تتضاعف. جلسات Claude Code لا تظهر فيها هذه المشكلة.

كيفية التشخيص: من السهل جداً تشخيص هذا العرض بشكل خاطئ كمشكلة عرض في العميل أو تكرار في تحميل التاريخ، ثم الاندفاع إلى الواجهة الأمامية للفحص. الخطوة الأولى الصحيحة هي النظر مباشرة إلى عدد السجلات المخزنة في ذاكرة التخزين المؤقت للخادم - إذا كانت ذاكرة التخزين المؤقت تحتوي فعلاً على N سجلات، فالمشكلة في طبقة البيانات، ولا علاقة لها بالعرض. في ذلك الوقت اعتمدنا على هذه الخطوة لإعادة توجيه الاتجاه من العميل.

السبب الجذري: رسائل المساعد في Claude Code تحمل معرفات ثابتة، وعند وصول إعادة التشغيل والبث المباشر يمكن إزالة التكرار مباشرة حسب المعرف. أما رسائل المساعد في جانب Codex فلا تضمن حمل مثل هذا المعرف، وعند استخدام نفس منطق "إزالة التكرار حسب المعرف"، ستُكتب نفس الإجابة كرسالتين مختلفتين.

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

⚠️ هناك مأزق هنا يستحق ذكره بشكل منفصل: نسختنا الأولى كانت تطوي حسب النص الخالص، وبعد الإطلاق وعند فحص البيانات التاريخية وجدنا أنها حذفت بالخطأ 691 إجابة مكررة عبر الجولات. السبب هو أن معدل تكرار الإجابات القصيرة في Codex مرتفع جداً (مثل "حسناً." "تم.")، ومجموعة إزالة التكرار كانت على مستوى الجلسة - بمجرد تذكر تجزئة جملة ما، سيتم ابتلاع نفس الجملة في أي جولة لاحقة في نفس الجلسة. كان ذلك فقداناً للمحتوى، أخطر من التكرار. لا يمكن الاستغناء عن طبقة المرساة.

ثانياً: فحص البقاء: أحدهما يتطلب عنصراً واحداً، والآخر دفعات

الأعراض: الجلسة تعمل بوضوح، لكن الواجهة تعرض غير متصل.

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

السبب الجذري: للحكم على "هل ما تزال الجلسة حية؟"، تختلف أشكال الواجهة على الجانبين. في جانب Claude Code استخدمنا صيغة دفعات، تحمل مجموعة من معرفات الجلسات في كل مرة؛ بينما يتوقع جانب Codex معرف جلسة واحد.

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

ثالثاً: اختلاف ترتيب إطارات إعادة تشغيل التاريخ - حالة الوكيل الفرعي ستعلق

هذه هي النقطة الأكثر التواءً في مسار التشخيص.

الأعراض: نقطة حالة الوكيل الفرعي في الشريط الجانبي ما تزال برتقالية "قيد التشغيل" وتتنفس، بينما انتهت أو انقطعت منذ فترة طويلة. تحديث الصفحة لا يعيدها أيضاً - كل تحديث يعيد نفس الأداء. تظهر فقط في جلسات Codex.

كيفية التشخيص: "التحديث لا يعيدها" هو المعيار الأساسي. يوضح أن المشكلة ليست في البث المباشر، بل في إعادة تشغيل التاريخ نفسها - كل إعادة تشغيل تعيد كتابة الحالة بشكل خاطئ.

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

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

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

رابعاً: بنية أمر استدعاء الأداة: قد تتجزأ

الأعراض: في بطاقة أدوات جلسة Codex، يظهر الأمر كأجزاء مثل 1,220p أو /pid=…/ {print}، وأحياناً يُقطع البرنامج النصي الكامل، وأحياناً بعد انتهاء الإجابة تعلق مجموعة من بطاقات الأدوات غير المكتملة.

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

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

هذا الاختلاف قاتل بشكل خاص لمن يبنيون أدوات الموافقة: المستخدم يجب أن يضغط "سماح / رفض" على الهاتف، والأمر المعروض على البطاقة مقطع - هذا يعادل جعل المستخدم يوقع بشكل أعمى. فقدان معنى الأمان أسوأ بكثير من مظهر قبيح.

خامساً: اختلاف سطح اشتراك أحداث القناة

الأعراض: مستخدمان يقذفان بعضهما البعض من الاتصال.

السبب الجذري: إذا اشترك كلا مساري الـrelay في أحداث "تبديل الجلسة" ونفذاها، فسيقذف كل جانب ضحية مختلفة، مما يشكل طرداً مزدوجاً. يجب أن يكون لإجراء التبديل منفذ واحد فريد.

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

هذا النوع من قرارات "عدم فعل شيء عمداً" عادة ما يترك سطر تعليق واحد فقط في الكود، لكنه أُضيف بعد أن وطئنا عليه مرة واحدة - وهذا القيد إذا "أكمله" شخص لاحق "عفوياً"، سيعود الحادث. لذا يجب أن يوضح التعليق سبب عدم القيام به، وليس فقط كتابة عدم القيام به.

سادساً: الحصص وعد الاتصالات مدمجة

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

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

هذا ليس عيباً، بل خيار تصميم - من منظور المستخدم، "كم عدد الجلسات التي يمكنني فتحها في نفس الوقت" أسهل في الفهم من "كم عدد الجلسات لكل محرك". لكن إذا كان تنفيذك يحسب لكل محرك على حدة، فإن الرصيد المعروض في الواجهة الأمامية لن يتطابق مع الخصم الفعلي في الواجهة الخلفية.

كيفية الإصلاح: فكر أولاً في أي معيار تريد، ثم تأكد من أن الواجهتين الأمامية والخلفية تستخدمان نفس المعيار. خلط المعيارين أسوأ من اختيار معيار خاطئ.

سابعاً: اختلاف خصائص الأداء مع نمو حجم التاريخ

الأعراض: تجميد تطبيق الجوال عند فتح جلسة بتاريخ طويل.

السبب الجذري: واجهنا تجمداً واضحاً مرة واحدة على iOS، والسبب الجذري هو وجود عملية تتضاعف بشكل تربيعي مع عدد الرسائل في معالجة التاريخ. يجب توضيح أن هذه ليست مشكلة في المحرك نفسه، بل عدم تطابق بنية تاريخه مع طريقتنا الأصلية في المعالجة - نفس طريقة المعالجة لم تظهر على المحرك الآخر.

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

لمدمجي المنصات: أي جانب أسهل في التكامل

أولاً: ما يلي توصيات من منظور التكامل، وليست تقييماً لقدرات البرمجة. لم نقم باختبارات معيارية مرجعية، وأي ادعاء بأن "فلان أسرع بكذا" لن يصدر عن هذه المقالة.

الحالات الأنسب لاختيار Codex

  1. فريقك موجود بالفعل في نظام OpenAI البيئي - الحساب والحصص والفوترة كلها في مكان واحد، أقل من إدارة محاسبية واحدة وبيانات اعتماد، وهذا التوفير في الجهد لا يجب التقليل من شأنه.
  2. عملياتك مبنية بالفعل حول نموذج الجلسات والمهام الخاص به - عادة ما تكون إعادة هيكلة الأدوات المحيطة للترحيل غير مجدية اقتصادياً، والاختلافات السبعة أعلاه معكوسة هي تكلفة الترحيل.

الحالات الأنسب لاختيار Claude Code

  1. تريد بناء أدوات محيطة بنفسك - من تجربة تكاملنا، حمل رسائل المساعد معرفات ثابتة يجعل الترسيخ والمزامنة متعددة الأطراف أسهل بكثير، والاختلافات الأولى والثالثة والرابعة أسهل في المعالجة في هذا الجانب.
  2. تريد بناء تفاعل مثل الموافقة على الأدوات - بنية الأوامر كاملة، ولا تحتاج إلى تركيب إضافي عند بناء واجهة الموافقة، وبالتالي لا يوجد خطر "التوقيع الأعمى".

تريد فقط تغيير النموذج، ليس بالضرورة تغيير الوكيل

إذا كان مطلبك فقط "تشغيل نفس التفاعل بنموذج مختلف"، فإن تغيير المحرك ليس أفضل من تغيير النموذج الخلفي. جزء من سبب قيامنا بـ PandaCode هو هذا: إبقاء طبقة التفاعل دون تغيير، وتغيير النموذج.

إذا كنت تريد الترحيل: حجم التعديل المقابل للاختلافات السبعة

كثير من الناس يبحثون عن هذين الاسمين، في الواقع لتقييم "إذا استخدمت واحداً بالفعل، فكم سأدفع للتبديل إلى الآخر". دعنا نحول الاختلافات السبعة أعلاه إلى تكاليف ترحيل.

يجب التوضيح: هذا القسم هو حجم تعديل مستنتج من الاختلافات السبعة السابقة، وليس سجلاً لترحيل كامل قمنا به - مسارنا كان "التكامل المتزامن" وليس "التبديل من واحد إلى آخر". لذا عامله كقائمة تحقق، وليس تقديراً لساعات العمل.

الترحيل من Claude Code إلى Codex، تتركز التعديلات في هذه النقاط:

  • منطق إزالة التكرار يجب إعادة كتابته (النقطة الأولى) - هذه هي الأكثر استهانة بها. كود إزالة التكرار حسب المعرف الأصلي لا يمكن استخدامه مباشرة، والأهم أن الخطأ لا يظهر كخطأ، بل فقط يضاعف الرسائل بصمت أو يفقدها بصمت. إذا كان لديك ترسيخ للرسائل، فكر جيداً قبل الترحيل في ما ستأخذه كمرساة.
  • فحص حالة الاتصال يجب تغيير شكل الاستدعاء (النقطة الثانية) - العمل صغير، لكن نسيانه يسبب "يعمل لكن يعرض غير متصل"، ولا يرمي استثناءً.
  • كل ما يعتمد على الترتيب الزمني للتاريخ يجب إعادة التحقق (النقطة الثالثة) - عرض الوكلاء الفرعيين وأشرطة التقدم وأي منطق "يستنتج الحالة الحالية من التاريخ" ضمن هذا.
  • واجهة الموافقة على الأدوات تحتاج طبقة إعادة تجميع الأوامر (النقطة الرابعة) - إذا كان منتجك يحتوي على ميزة موافقة، لا يمكن الاستغناء عن هذه النقطة، وإلا فأنت تجعل المستخدم يوقع بشكل أعمى.

الاتجاه العكسي (من Codex إلى Claude Code) عادة أسهل: يمكن تبسيط إزالة التكرار إلى حسب المعرف، وبنية الأوامر لا تحتاج طبقة إعادة تجميع. لكن انتبه إلى عدم حذف طبقة التوافق المكتوبة لـ Codex مباشرة - إذا كنت تريد الاحتفاظ بالقدرة على الدعم المتزامن، فهذه الطبقة أصل وليست ديناً.

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

نصيحة واحدة: إذا كان نظامك يعمل بالفعل ولديه بيانات جلسات حالية، قم قبل الترحيل بتشغيل المنطق الجديد على البيانات الحالية للمقارنة، ولا تقطع مباشرة. درسنا من حذف 691 رسالة بتكرار خاطئ جاء هكذا - المنطق بحد ذاته يبدو سليماً، وعند فحص البيانات التاريخية اكتشفنا أنه يبتلع المحتوى. صحة المنطق الجديد ≠ أمانه على البيانات الحالية.

طريقتنا: لا نختار، نربط كلاهما

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

قائمة التحقق للتحقق عند دمج محرك جديد

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

  1. معرف الرسالة - هل تحمل رسائل المساعد معرفاً ثابتاً؟ إذا لم يكن كذلك، ما هي مرساة إزالة التكرار لديك؟
  2. بقاء الجلسة - هل واجهة فحص البقاء تستهلك عنصراً واحداً أم دفعات؟ هل إرسال بنية خاطئة يسبب خطأ أم يعطي إجابة خاطئة بصمت؟
  3. ترتيب إعادة تشغيل التاريخ - هل ترتيب الإطارات المعاد تشغيلها يتوافق مع الترتيب الزمني الحقيقي؟ خاصة عند وجود خيوط فرعية.
  4. بنية استدعاء الأداة - هل حقل الأمر يُقرأ كاملاً؟ هل يمكن أن يُقطع؟
  5. سطح اشتراك الأحداث - ما الأحداث التي يجب أن يكون لها منفذ واحد فريد؟ ماذا يحدث عند التنفيذ المتكرر؟
  6. معيار الحصص - هل العد حسب المحرك أم مدمج؟ هل الواجهتان الأمامية والخلفية متطابقتان؟
  7. أداء التاريخ الطويل - عندما يتضاعف عدد الرسائل 10 مرات، هل يزيد وقت المعالجة خطياً أم أسرع؟

كل عنصر نقترح التحقق منه على كمية صغيرة من البيانات أولاً، ثم على تاريخ كبير - النقطتان 3 و7 لا تظهران إلا بعد زيادة حجم البيانات.

البحث العكسي حسب الأعراض: أي نقطة اصطدمت بها

إذا وقعت بالفعل في حفرة، فإن الاستنتاج العكسي من الأعراض عادة أسرع من قراءة التوثيق كاملاً:

العرض الذي تراه الأرجح أنه طريقة التحديد في خطوة واحدة
بعد الخروج والدخول مجدداً تزداد إجابات المساعد النقطة 1 (معرف الرسالة) انظر مباشرة إلى عدد السجلات في ذاكرة التخزين المؤقت للخادم - هل هي طبقة البيانات أم طبقة العرض؟ يتضح فوراً
الجلسة تعمل لكن تعرض غير متصل النقطة 2 (فحص البقاء) تحقق مما إذا كان طلب البقاء يرسل بنية عنصر واحد أم دفعات
حالة الوكيل الفرعي عالقة في "قيد التشغيل"، والتحديث لا يعيدها النقطة 3 (ترتيب إعادة التشغيل) "التحديث لا يعيدها" هو المعيار: المشكلة في إعادة التشغيل وليس البث المباشر
أوامر بطاقة الأدوات مقطعة / بطاقات أدوات معلقة بعد انتهاء الإجابة النقطة 4 (بنية الأمر) انظر إلى بنية حقل الأمر في الإطار الخام، وليس نتيجة العرض
مستخدمان يقذفان بعضهما من الاتصال النقطة 5 (سطح الاشتراك) تحقق مما إذا كان هناك منفذان يعالجان أحداث التبديل في نفس الوقت
الواجهة الأمامية تعرض حصة متبقية والخلفية تجاوزتها النقطة 6 (معيار الحصص) تأكد مما إذا كانت الواجهتان الأمامية والخلفية تعدان حسب المحرك أم بشكل مدمج
تطبيق الجوال يتجمد عند فتح جلسات طويلة النقطة 7 (التاريخ الطويل) قارن الوقت المستغرق بجلسات يتضاعف فيها عدد الرسائل، لترى ما إذا كان غير خطي

معيار عام واحد: إذا كان العرض يتكرر بثبات مع كل تحديث، فالمشكلة غالباً في إعادة تشغيل التاريخ أو طبقة البيانات؛ إذا حدث فقط بشكل متقطع أثناء التفاعل المباشر، فاراجع مسار الدفع. هذا المعيار وفر لنا الكثير من الوقت - النقطتان 1 و3 شُخصتا خطأً في البداية كمشكلتين في العميل.

الأسئلة الشائعة (FAQ)

أيهما أفضل في النهاية، Claude Code أم Codex؟

لا يوجد بطل ثابت بمعزل عن المهمة والإصدار. إذا كنت قد بنيت عملياتك حول Claude Hooks وSkills وCLAUDE.md، فاختر Claude Code؛ وإذا كنت تستخدم بالفعل ChatGPT وCodex App والمهام السحابية ومساحة عمل OpenAI، فاختر Codex. للمشاريع عالية الخطورة، تثبيت نفس المهمة ومعايير القبول وإجراء مقارنة داخل المستودع أكثر موثوقية من النظر إلى نتائج طرف ثالث.

هل يمكن لمستخدمي Claude Code المجانيين استخدام Remote Control؟

تتطلب السياسة الرسمية حالياً اشتراك Pro أو Max أو Team أو Enterprise من Claude.ai، وتستبعد صراحةً طرق المصادقة مثل API Key وBedrock وVertex وFoundry. لا يزال بإمكان Claude Code CLI نفسه العمل بالدفع حسب الاستخدام عبر API Key أو مزود سحابي مدعوم، لكن هذا لا يعني الحصول على أهلية Remote Control الرسمية.

هل يمكن لمستخدمي Codex المجانيين استخدامه؟

تفتح OpenAI من حين لآخر حدود Codex مؤقتة لمستخدمي Free/Go، لكن هذا ليس حقاً دائماً مستقراً. للاستخدام طويل الأمد اعتمد على الخطط المدعومة حالياً مثل Plus وPro وBusiness وEnterprise وEdu؛ ويتأثر Remote أيضاً بإصدار تطبيق سطح المكتب وتفويض الجهاز وسياسات مساحة العمل.

هل تتضمن نسخة PandaNpc المجانية حدود نماذج Claude أو Codex؟

لا. توفر PandaNpc Free حتى جهازي Agent متصلين و5 جلسات Agent متزامنة، وتوفر التحكم عن بُعد والربط بين الأجهزة؛ وتبقى تكاليف Claude أو ChatGPT أو API أو النماذج الأخرى على حساب المستخدم النهائي upstream.

كيف تختار بين التحكم عن بُعد في Claude Code وCodex وPandaNpc؟

إذا كنت تتحكم فقط في Claude Code CLI الرسمي، فإن Claude Remote Control هو الأكثر مباشرة؛ إذا كنت تستخدم Codex على ChatGPT لسطح المكتب وتتصل أساساً من الهاتف، فاختر Codex Remote أولاً؛ إذا كنت تريد التحكم الموحد في Claude Code وCodex CLI والخوادم المتعددة Linux/Windows/macOS من المتصفح وأنظمة سطح مكتب متعددة، أو الاحتفاظ بإعدادات API والنماذج المخصصة، فاستخدم طبقة اتصال متعددة المحركات مثل PandaNpc.

هل Codex CLI وOpenAI Codex هما نفس الشيء؟

يشير Codex في هذه المقالة إلى أداة البرمجة عبر سطر الأوامر من OpenAI. هناك منتجات أخرى في السوق تسمى أيضاً Codex (بما في ذلك بعض البرامج القانونية وبرامج الامتثال)، ومن السهل الخلط عند البحث، لذا فإن إضافة "CLI" أو "OpenAI" كتحديد سيكون أكثر دقة.

هل ستتغير هذه الاختلافات مع الإصدارات؟

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

هل يمكن دمج المحركين في نفس الوقت؟

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

التالي

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


تستند هذه المقالة إلى خبرتنا الهندسية الفعلية في دمج Claude Code وOpenAI Codex في نفس نظام الوصول عن بُعد، آخر تحديث في 2026-08-30. كلا المحركين في تحديث مستمر، يرجى الاعتماد على التوثيق الرسمي لكل منهما للحصول على السلوكيات المحددة.

كيف تستخدم Claude Code Remote Control؟ التحكم عن بُعد من الهاتف، القيود الرسمية والبدائل (2026)

كيف تستخدم Claude Code Remote Control؟ التحكم عن بُعد من الهاتف، القيود الرسمية والبدائل (2026)

كيف يتم تفعيل التحكم عن بعد في Claude Code؟ تقدم هذه المقالة ثلاثة استخدامات رسمية: claude remote-control و claude --remote-control و /remote-control، وتشرح الاتصال بالهاتف والمتصفح، ومتطلبات الحساب، وطرق التحقق، والأخطاء الشائعة، وتقارن حلول PandaNpc في سيناريوهات النموذج المخصص وCodex والأجهزة المتعددة.

اقرأ المقال →
هل يمكن مشاركة اشتراك Claude؟ كيف تشارك Claude Code بأمان مع الأصدقاء والفريق (بدون إعطاء كلمة المرور، ويمكن الإلغاء في أي وقت)

هل يمكن مشاركة اشتراك Claude؟ كيف تشارك Claude Code بأمان مع الأصدقاء والفريق (بدون إعطاء كلمة المرور، ويمكن الإلغاء في أي وقت)

نعم — ودون الحاجة إلى تسليم اسم المستخدم وكلمة المرور لأي شخص. يدعم PandaNpc مشاركة اتصال Claude Code على جهازك عبر رابط مع الأصدقاء أو العائلة أو زملاء الفريق: يمكن للطرف الآخر استخدام حصتك من الاشتراك لتشغيل Claude Code عن بُعد. كل مشاركة هي token مستقل وقابل للإلغاء، ويمكن ضبط مدة صلاحيتها على 1/7/30 يومًا أو صلاحية دائمة. بإلغاء واحد، ينقطع الطرف الآخر فورًا، دون أي تأثير على استخدامك أنت.

اقرأ المقال →
استخدم Codex على هاتفك: ChatGPT Remote مقابل CLI (2026)

استخدم Codex على هاتفك: ChatGPT Remote مقابل CLI (2026)

نعم: يتيح ChatGPT Remote التحكم في Codex المكتبي على Mac/Windows من iPhone/Android؛ لاستخدام CLI/Linux/بدون شاشة استخدم PandaNpc. تشمل: الإعداد والقيود والتحقق واستكشاف الأخطاء.

اقرأ المقال →