Codex se reconectează mereu? Verifică DNS și rutarea Clash

Ultima actualizare: 2026-09-10

Erori Codex precum Reconnecting..., stream disconnected before completion și error sending request pot implica interferențe DNS sau rutare Clash incorectă. Acest ghid explică cum să investighezi această posibilitate, să aplici o îmbunătățire țintită Clash Verge Rev și să verifici rezultatul.

Ce arată de fapt rapoartele comunității

Utilizatorii Reddit au raportat sarcini întrerupte care vizează chatgpt.com/backend-api/codex/responses, încercări repetate de reconectare și erori în corpul răspunsului. Aceste rapoarte stabilesc simptome, nu un diagnostic DNS. Cerere întreruptă, buclă de reconectare

O discuție separată descrie eșecuri în timpul compactării contextului la distanță. Un comentator sugerează investigarea proxy-ului, dar discuția nu stabilește o cauză verificată. Discuție despre compactare

Rapoartele de pe X arată întrebări similare: o postare din 9 septembrie descrie eșecuri persistente ale stream-ului, iar o postare din 6 septembrie raportează un SSE idle timeout în timpul compactării la distanță. Niciuna nu oferă o comparație DNS. Acestea sunt exemple utile de probleme ale utilizatorilor, dar nu stabilesc o cauză comună. Raport X stream, Raport X compactare

Simptom Ce să investighezi
Timeout imediat cu o eroare de resolver DNS, accesibilitatea nodului și dacă traficul intră în Clash
ChatGPT funcționează într-un browser, dar Codex eșuează Diferențe în proxy, DNS, certificate și egress
Ieșirea pornește, apoi stream-ul se deconectează Conexiuni de lungă durată, schimbări de rețea și erori de serviciu
Eșuează doar conversațiile lungi sau compactarea Compară cu o sarcină nouă mică; investighează erorile de sesiune și de server
HTTP 401, 403, 429 sau 5xx Inspectează originea răspunsului și corpul pentru autentificare, politici, limite sau eșecuri ale serviciului

Verifică starea serviciului OpenAI și notează ora și versiunea clientului. Pentru chat-uri blocate, OpenAI recomandă și verificarea aprobărilor în așteptare și încercarea unui chat nou, mai mic și mai focalizat. Versiunile Desktop și CLI pot diferi. Depanare oficială

Un caz local: un răspuns DNS neașteptat a declanșat DIRECT

Într-o investigație macOS înregistrată folosind Clash Verge Rev și Mihomo, nodurile proxy erau accesibile, dar chatgpt.com se potrivea unei reguli GeoIP/CN și încerca o conexiune directă care a expirat. O comparație cu DNS criptat accesat prin proxy a arătat un răspuns anormal pe calea locală de rezolvare.

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

Există două probleme de configurare de abordat: calea de rezolvare și decizia de rutare. Acest caz înregistrat nu este un benchmark și nici dovada că alte eșecuri Codex au aceeași cauză. Un răspuns anormal, singur, nu poate identifica nici intermediarul responsabil și nici stabili specific otrăvirea cache-ului DNS.

Diagnostică înainte de a schimba configurația

Verifică jurnalul de conexiuni

Caută numele de gazdă real în eroare, inclusiv chatgpt.com sau openai.com. Notează regula potrivită, lanțul de conexiune și eroarea din momentul eșecului. O conexiune care ar trebui să folosească un proxy, dar selectează DIRECT, justifică o verificare a ordinii regulilor. Mihomo evaluează regulile de rutare de sus în jos. Documentație de rutare

Dacă nu apare nicio conexiune potrivită, stabilește mai întâi dacă acel client folosește Clash. Succesul în browser nu stabilește calea folosită de un proces separat.

Compară căile de rezolvare

Pe macOS, inspectează resolverul de sistem și răspunsul său curent:

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

Pentru o comparație criptată, înlocuiește 7890 cu portul tău 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'

Cererea folosește interfața DNS JSON a Cloudflare. Verifică panoul de conexiune: un proxy local explicit garantează intrarea în Clash, dar regulile Clash determină totuși ieșirea finală.

Adresele IP diferite singure nu sunt dovadă de interferență. Selectarea CDN, cache-ul, familiile de adrese și Fake-IP pot explica diferențele. O adresă sintetică din intervalul Fake-IP al Clash nu este în mod inerent suspectă. Corelează un răspuns anormal cu ruta incorectă și cu eșecul, apoi compară cu o altă cale de rețea verificată. Cu TUN activat, chiar și dig @resolver poate fi interceptat; nu este automat un test upstream independent.

Aplică o îmbunătățire țintită Clash Verge Rev

Acest șablon necesită Clash Verge Rev cu Mihomo, un abonament existent și un nod proxy funcțional. Este un Script de abonament, nu un profil complet independent. Fă mai întâi o copie de siguranță a configurației curente. Dacă folosești deja un script, integrează schimbarea în funcția existentă main(config). Inspectează configurația finală de runtime după toți pașii de îmbunătățire. Documentația Script Clash Verge Rev

Setați CODEX_PROXY_GROUP la un grup existent și selectați un nod proxy funcțional din acel grup. Setați NODE_DNS la un resolver DoH care funcționează înainte ca proxy-ul să se conecteze și care rezolvă corect numele de host ale nodurilor. Exemplul AliDNS este destinat validării pe o rețea din China continentală; înlocuiți-l când nu este potrivit. Nu este folosit pentru a rezolva domeniile AI de mai jos.

// 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;
}

Scriptul adaugă o politică DNS specifică domeniului și inserează în față reguli de proxy, păstrând în același timp celelalte reguli și politicile de domeniu. Modifică rezolvarea numelor de host ale nodurilor. Cele patru sufixe de domeniu sunt un punct de pornire, nu o listă exhaustivă a fiecărei funcții Codex, a fiecărui provider personalizat, serviciu MCP sau descărcare de task.

Mihomo acceptă un nameserver-policy specific domeniului și un sufix proxy explicit pe o adresă de server DNS. Rezolvarea nodurilor are nevoie de o cale independentă pentru a evita o dependență circulară. Referință de configurare DNS

Scriptul vizat păstrează setările existente de fallback. Examinați separat dependențele DNS mai ample înainte de a le înlocui. Verificați, de asemenea, mapările hosts vechi sau politicile mai specifice aflate în conflict.

Verificați TUN separat

Pentru procesele care nu folosesc proxy-ul de sistem, activați TUN în Clash Verge Rev și verificați că rulează. Fuzionați următoarele câmpuri în obiectul TUN existent, păstrând celelalte setări ale acestuia:

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

Acestea acoperă DNS UDP și TCP pe portul 53. Mihomo documentează limitări pentru DNS direcționat către LAN pe macOS și Windows; DNS criptat gestionat de aplicație este, de asemenea, în afara acestor reguli pentru portul 53. Verificați comportamentul resolverului și al interfeței în loc să presupuneți că comutatorul acoperă fiecare solicitare. Referință TUN

Verificați separat configurația, rutarea și Codex

Mai întâi verificați configurația finală pentru erori, referințe de grup și ordinea regulilor. Dacă este disponibil CLI-ul Mihomo, mihomo -t -f <final-config-path> verifică dacă configurația poate fi analizată corect. Nu dovedește conectivitatea.

Apoi inspectați rutarea reală a conexiunii și rulați un test HTTPS verificat prin certificat prin portul local real:

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/

Un răspuns de la serviciul vizat, după verificarea cu succes a certificatului, stabilește un schimb HTTP pentru acest test. Un 401 sau 403 poate totuși bloca accesul. Nu dovedește că o solicitare Codex autentificată funcționează, iar dezactivarea verificării certificatului ar invalida acest test.

La final, finalizați o sarcină mică în clientul care a eșuat inițial. Un CLI instalat și autentificat poate rula următoarea verificare opțională, care face o solicitare reală către model și folosește cota contului:

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

Un succes în CLI verifică doar acea solicitare CLI; testați aplicația desktop separat dacă acolo a apărut eșecul. Verificați din nou după o actualizare a abonamentului, o schimbare de rețea și sleep/wake. Straturile ulterioare de configurare sau grupurile redenumite pot totuși strica o îmbunătățire.

Întrebări frecvente

Este suficient să schimbați DNS-ul sistemului la 8.8.8.8?

Nu neapărat. O adresă de resolver singură nu stabilește criptarea, rutarea prin proxy sau accesibilitatea. Verificați împreună resolverul, transportul și ieșirea.

De ce eșuează Codex în timp ce rulează Clash?

Procesul ar putea ocoli proxy-ul, ar putea potrivi o regulă directă sau ar putea depinde de un DNS al nodului indisponibil. Problema ar putea fi, de asemenea, fără legătură cu DNS. Identificați conexiunea reală înainte de a schimba mai multe setări odată.

Ce se întâmplă dacă tot se deconectează?

Dacă DNS, TLS și rutarea funcționează, investigați starea serviciului, dimensiunea conversației, versiunea clientului, stabilitatea conexiunii nodului și corpul exact al erorii. OpenAI documentează locațiile pentru feedback și jurnale; revizuiți jurnalele pentru secrete înainte de a le partaja. Depanare și jurnale

Cum anulez modificarea?

Dezactivați Script-ul adăugat și restaurați profilul salvat ca backup, setările TUN și orice setări DNS de sistem pe care le-ați schimbat. O arhitectură separată proxy-providers poate ulterior izola abonamentele nodurilor de DNS-ul local și de reguli, dar nu este necesară pentru această remediere țintită.

Pentru pașii de instalare și import, consultați Configurarea Clash Verge. Pentru alte eșecuri, consultați Depanarea Clash. Puteți folosi acest proces de diagnostic cu un abonament compatibil existent; cumpărarea altui serviciu nu este o condiție prealabilă pentru testarea DNS.