Codex لا يزال يعيد الاتصال؟ تحقّق من DNS وتوجيه Clash

آخر تحديث: 2026-09-10

يمكن أن تتضمن أخطاء Codex مثل Reconnecting... وstream disconnected before completion وerror sending request تداخلًا من DNS أو توجيهًا غير صحيح في Clash. يشرح هذا الدليل كيفية استقصاء هذا الاحتمال، وتطبيق تحسين موجّه على Clash Verge Rev، والتحقق من النتيجة.

ما الذي تُظهره تقارير المجتمع فعليًا

أفاد مستخدمو Reddit بمهام متقطعة تستهدف chatgpt.com/backend-api/codex/responses، ومحاولات إعادة اتصال متكررة، وأخطاء في نص الاستجابة. هذه التقارير تثبت وجود الأعراض، لا تشخيصًا متعلقًا بـ DNS. طلب مقطوع، حلقة إعادة الاتصال

تناقش رسالة منفصلة حالات فشل أثناء ضغط السياق البعيد. يقترح أحد المعلّقين فحص الوكيل، لكن النقاش لا يثبت سببًا مؤكّدًا. نقاش الضغط

تُظهر التقارير على X أسئلة مشابهة: منشور بتاريخ 9 سبتمبر يصف حالات فشل مستمرة في البث، بينما يبلّغ منشور بتاريخ 6 سبتمبر عن مهلة خمول SSE أثناء ضغط السياق البعيد. لا يقدّم أيٌّ منهما مقارنةً لـ DNS. هذه أمثلة مفيدة على مشكلات المستخدمين، لكنها لا تثبت سببًا مشتركًا. تقرير X عن البث، تقرير X عن الضغط

العَرَض ما الذي يجب استقصاؤه
انتهاء المهلة فورًا مع خطأ في المُحلِّل DNS، وإمكانية الوصول إلى العقدة، وما إذا كان المرور يدخل إلى Clash
يعمل ChatGPT في المتصفح لكن Codex يفشل الفروقات في الوكيل وDNS والشهادات وEgress
يبدأ الإخراج ثم ينقطع البث الاتصالات طويلة الأمد، وتغيّرات الشبكة، وأخطاء الخدمة
تفشل فقط المحادثات الطويلة أو الضغط قارن مع مهمة جديدة صغيرة؛ تحقّق من أخطاء الجلسة والخادم
HTTP 401 أو 403 أو 429 أو 5xx افحص أصل الاستجابة ومتنها بحثًا عن المصادقة أو السياسة أو الحدود أو حالات فشل الخدمة

تحقّق من حالة خدمة OpenAI وسجّل الوقت وإصدار العميل. بالنسبة للمحادثات العالقة، توصي OpenAI أيضًا بالتحقق من أي موافقات معلّقة وتجربة محادثة جديدة أصغر وأكثر تركيزًا. قد تختلف إصدارات سطح المكتب وCLI. استكشاف الأخطاء الرسمي

حالة محلية: أدّت إجابة DNS غير متوقعة إلى تشغيل DIRECT

في تحقيق مُسجّل على macOS باستخدام Clash Verge Rev وMihomo، كانت عقد الوكيل قابلة للوصول، لكن chatgpt.com طابق قاعدة GeoIP/CN وحاول اتصالًا مباشرًا انتهت مهلته. أظهرت مقارنة مع DNS المُشفّر الذي تم الوصول إليه عبر الوكيل وجودَ إجابة شاذة على مسار التحليل المحلي.

Request to chatgpt.com
  → anomalous DNS answer
  → no earlier matching OpenAI domain rule
  → GeoIP selects DIRECT
  → connection times out and Codex retries

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

شخّص قبل تغيير الإعداد

افحص سجل الاتصال

ابحث عن اسم المضيف الفعلي في الخطأ، بما في ذلك chatgpt.com أو openai.com. سجّل القاعدة المطابقة، وسلسلة الاتصال، والخطأ في وقت الفشل. أي اتصال كان ينبغي أن يستخدم وكيلًا لكنه اختار DIRECT يستدعي مراجعة ترتيب القواعد. يقيم Mihomo قواعد التوجيه من الأعلى إلى الأسفل. توثيق التوجيه

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

قارن مسارات التحليل

على macOS، افحص محلل النظام وإجابته الحالية:

scutil --dns
dscacheutil -q host -a name chatgpt.com

لإجراء مقارنة مُشفّرة، استبدل 7890 بمنفذ HTTP/mixed الخاص بـ Clash:

curl --noproxy '' --proxy http://127.0.0.1:7890 \
  --connect-timeout 10 --max-time 20 \
  -H 'accept: application/dns-json' \
  'https://1.1.1.1/dns-query?name=chatgpt.com&type=A'

يستخدم الطلب واجهة Cloudflare JSON الخاصة بـ DNS. تحقّق من لوحة الاتصال: يضمن الوكيل المحلي الصريح الدخول إلى Clash، لكن قواعد Clash ما تزال تحدد Egress النهائي.

إن اختلاف عناوين IP وحده ليس دليلًا على التداخل. يمكن أن يفسر اختيار CDN، والتخزين المؤقت، وفئات العناوين، وFake-IP هذه الفروقات. العنوان الاصطناعي من نطاق Fake-IP الخاص بـ Clash ليس مشبوهًا بطبيعته. اربط الإجابة الشاذة بالمسار الخاطئ والفشل، ثم قارنها بمسار شبكة آخر موثَّق. مع تفعيل TUN، قد يتم اعتراض حتى dig @resolver؛ فهو ليس تلقائيًا اختبارًا مستقلًا للمزوّد الأعلى.

طبّق تحسينًا موجّهًا على Clash Verge Rev

يتطلّب هذا القالب Clash Verge Rev مع Mihomo، واشتراكًا قائمًا، وعقدة وكيل تعمل. إنه Script لاشتراك، وليس ملفًا شخصيًا كاملًا مستقلًا. انسخ الإعداد الحالي احتياطيًا أولًا. إذا كنت تستخدم Script بالفعل، فادمج التغيير في الدالة main(config) الموجودة فيه. افحص إعداد التشغيل النهائي بعد جميع خطوات التحسين. توثيق Script في Clash Verge Rev

اضبط CODEX_PROXY_GROUP على مجموعة موجودة واختر عقدة وكيل تعمل داخل تلك المجموعة. اضبط NODE_DNS على محلل DoH يعمل قبل اتصال الوكيل ويحل أسماء مضيفي العقد بشكل صحيح. مثال AliDNS مخصص للتحقق على شبكة داخل الصين؛ استبدله عندما يكون غير مناسب. ولا يُستخدم لحل نطاقات الذكاء الاصطناعي أدناه.

// Clash Verge Rev subscription Script. Use with an existing Mihomo profile.
// Replace this with the exact name of a working proxy group in that profile.
const CODEX_PROXY_GROUP = "REPLACE_WITH_EXISTING_PROXY_GROUP";

// Example bootstrap resolver for a mainland-China network. Verify reachability
// and node-hostname answers on your network, or replace with your trusted DoH.
// It must work BEFORE the proxy is established. It does not resolve AI domains.
const NODE_DNS = ["https://223.5.5.5/dns-query#DIRECT"];

function main(config) {
  const groups = config["proxy-groups"] || [];
  if (!groups.some((group) => group.name === CODEX_PROXY_GROUP)) {
    throw new Error("Set CODEX_PROXY_GROUP to an existing working proxy group.");
  }
  if (/[#&,\r\n]/.test(CODEX_PROXY_GROUP)) {
    throw new Error("Use a proxy group name without #, &, commas or newlines.");
  }

  const domains = ["chatgpt.com", "openai.com", "oaistatic.com", "oaiusercontent.com"];
  const doh = [
    "https://1.1.1.1/dns-query#" + CODEX_PROXY_GROUP,
    "https://8.8.8.8/dns-query#" + CODEX_PROXY_GROUP,
  ];
  const dns = config.dns || {};
  const policy = Object.assign({}, dns["nameserver-policy"] || {});
  domains.forEach((domain) => { policy["+." + domain] = doh.slice(); });
  dns.enable = true;
  dns["nameserver-policy"] = policy;
  dns["proxy-server-nameserver"] = NODE_DNS.slice();
  if (!Array.isArray(dns.nameserver) || dns.nameserver.length === 0) {
    dns.nameserver = NODE_DNS.slice();
  }
  config.dns = dns;

  const oldRules = Array.isArray(config.rules) ? config.rules : [];
  const aiRules = domains.map((domain) =>
    "DOMAIN-SUFFIX," + domain + "," + CODEX_PROXY_GROUP
  );
  config.rules = aiRules.concat(oldRules.filter((rule) => !aiRules.includes(rule)));
  return config;
}

تضيف هذه الشيفرة سياسة DNS خاصة بالنطاق وتُقدِّم قواعد الوكيل مع الإبقاء على القواعد وسياسات النطاق الأخرى. وهي تغيّر حل أسماء مضيفي العقد. إن لواحق النطاق الأربعة هي نطاق بداية، وليست قائمة شاملة بكل ميزة في Codex أو موفر مخصص أو خدمة MCP أو تنزيل مهمة.

يدعم Mihomo سياسة nameserver-policy خاصة بالنطاق ولاحقة وكيل صريحة على عنوان خادم DNS. يحتاج حل العقد إلى مسار مستقل لتجنب الاعتماد الدائري. مرجع إعدادات DNS

تحافظ الشيفرة المستهدفة على إعدادات fallback الحالية. راجع اعتمادات DNS الأوسع بشكل منفصل قبل استبدالها. وتحقق أيضًا من وجود تعيينات hosts قديمة أو سياسات أكثر تحديدًا ومتعارضة.

تحقق من TUN بشكل منفصل

بالنسبة للعمليات التي لا تستخدم وكيل النظام، فعّل TUN في Clash Verge Rev وتحقق من أنه يعمل. ادمج الحقول التالية في كائن TUN الحالي لديك، مع الإبقاء على إعداداته الأخرى:

tun:
  enable: true
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
    - tcp://any:53

هذه تغطي DNS عبر UDP وTCP على المنفذ 53. يوثق Mihomo قيودًا على DNS الموجه إلى LAN على macOS وWindows؛ كما أن DNS المُشفّر المُدار من التطبيق يقع أيضًا خارج قواعد المنفذ 53 هذه. تحقّق من سلوك المحلل والواجهة بدلًا من افتراض أن التبديل يغطي كل طلب. مرجع TUN

تحقّق من الإعدادات والتوجيه وCodex بشكل منفصل

تحقق أولًا من الإعداد النهائي بحثًا عن الأخطاء، ومراجع المجموعات، وترتيب القواعد. إذا كانت واجهة Mihomo CLI متاحة، فإن mihomo -t -f <final-config-path> يتحقق مما إذا كان الإعداد يُحلَّل بنجاح. هذا لا يثبت الاتصال.

بعد ذلك افحص توجيه الاتصال الفعلي وشغّل فحص HTTPS مع التحقق من الشهادة عبر المنفذ المحلي الحقيقي لديك:

curl --noproxy '' --proxy http://127.0.0.1:7890 \
  --connect-timeout 10 --max-time 20 \
  -o /dev/null -sS \
  -w 'HTTP=%{http_code} TLS=%{time_appconnect}s TOTAL=%{time_total}s\n' \
  https://chatgpt.com/

إن الحصول على استجابة من الخدمة المقصودة بعد نجاح التحقق من الشهادة يثبت وجود تبادل HTTP لهذا الفحص. قد يظل الوصول محجوبًا بسبب 401 أو 403. هذا لا يثبت أن طلب Codex موثَّق يعمل، كما أن تعطيل التحقق من الشهادة سيبطل هذا الفحص.

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

codex exec --skip-git-repo-check --sandbox read-only \
  'Reply with exactly: PONG. Do not use tools.'

نجاح CLI يثبت فقط طلب CLI ذاك؛ اختبر تطبيق سطح المكتب بشكل منفصل إذا كان الفشل هناك. أعد الفحص بعد تحديث الاشتراك، أو تغيير الشبكة، أو السكون/الاستيقاظ. قد تؤدي طبقات الإعداد اللاحقة أو المجموعات التي أُعيدت تسميتها إلى كسر التحسين.

الأسئلة الشائعة

هل يكفي تغيير DNS النظام إلى 8.8.8.8؟

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

لماذا يفشل Codex بينما Clash يعمل؟

قد تتجاوز العملية الوكيل، أو تطابق قاعدة direct، أو تعتمد على DNS للعقدة غير المتاح. وقد تكون المشكلة أيضًا غير مرتبطة بـ DNS. اعثر على الاتصال الفعلي قبل تغيير عدة إعدادات دفعة واحدة.

ماذا لو استمر الانقطاع؟

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

كيف أتراجع عن التغيير؟

عطّل Script المضاف وأعد ملف التعريف الذي تم نسخه احتياطيًا، وإعدادات TUN، وأي إعدادات DNS نظامية قمت بتغييرها. يمكن لبنية proxy-providers منفصلة لاحقًا عزل اشتراكات العقد عن DNS المحلي والقواعد، لكنها ليست مطلوبة لهذا الإصلاح المستهدف.

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