Codex fortsätter att återansluta? Kontrollera DNS och Clash-routning
Codex-fel som Reconnecting..., stream disconnected before completion och error sending request kan involvera DNS-störningar eller felaktig Clash-routning. Den här guiden förklarar hur du undersöker den möjligheten, tillämpar en riktad förbättring i Clash Verge Rev och verifierar resultatet.
Vad community-rapporterna faktiskt visar
Användare på Reddit har rapporterat avbrutna uppgifter riktade mot chatgpt.com/backend-api/codex/responses, upprepade återanslutningsförsök och fel i response body. Dessa rapporter fastställer symtom, inte en DNS-diagnos. Avbruten begäran, återanslutningsloop
En separat diskussion beskriver fel under komprimering av fjärrkontext. En kommentator föreslår att proxyn bör undersökas, men diskussionen fastställer inte någon verifierad orsak. Diskussion om komprimering
Rapporter på X visar liknande frågor: ett inlägg från 9 september beskriver ihållande stream-fel, medan ett inlägg från 6 september rapporterar en SSE-idle-timeout under fjärrkomprimering. Ingen av dem ger någon DNS-jämförelse. Det här är användbara exempel på användarproblem, men de fastställer inte en gemensam orsak. X-rapport om stream, X-rapport om komprimering
| Symtom | Vad som ska undersökas |
|---|---|
| Omedelbar timeout med ett resolver-fel | DNS, nodens nåbarhet och om trafiken går in i Clash |
| ChatGPT fungerar i en webbläsare men Codex misslyckas | Skillnader i proxy, DNS, certifikat och utgående trafik |
| Utdata startar, sedan kopplas streamen från | Långlivade anslutningar, nätverksförändringar och tjänstefel |
| Endast långa konversationer eller komprimering misslyckas | Jämför med en liten ny uppgift; undersök sessions- och serverfel |
| HTTP 401, 403, 429 eller 5xx | Inspektera svarets ursprung och body för autentisering, policy, begränsningar eller tjänstefel |
Kontrollera OpenAI service status och registrera tidpunkten och klientversionen. För chattar som fastnat rekommenderar OpenAI också att kontrollera väntande godkännanden och att prova en mindre, fokuserad ny chatt. Desktop- och CLI-versioner kan skilja sig åt. Officiell felsökning
Ett lokalt fall: ett oväntat DNS-svar utlöste DIRECT
I en dokumenterad undersökning på macOS med Clash Verge Rev och Mihomo gick proxynoder att nå, men chatgpt.com matchade en regel av typen GeoIP/CN och försökte en direktanslutning som tog timeout. En jämförelse med krypterad DNS som nåddes via proxyn visade ett avvikande svar på den lokala resolver-vägen.
Request to chatgpt.com
→ anomalous DNS answer
→ no earlier matching OpenAI domain rule
→ GeoIP selects DIRECT
→ connection times out and Codex retries
Det finns två konfigurationsproblem att hantera: resolver-vägen och routningsbeslutet. Detta dokumenterade fall är inte ett riktmärke eller bevis för att andra Codex-fel har samma orsak. Ett avvikande svar i sig kan inte heller identifiera den ansvariga mellanhanden eller specifikt fastställa DNS cache poisoning.
Diagnostisera innan du ändrar konfigurationen
Kontrollera anslutningsloggen
Sök efter det faktiska värdnamnet i felet, inklusive chatgpt.com eller openai.com. Registrera den matchade regeln, anslutningskedjan och felet vid tidpunkten för misslyckandet. En anslutning som borde använda en proxy men väljer DIRECT motiverar en granskning av regelordningen. Mihomo utvärderar routningsregler uppifrån och ned. Dokumentation om routning
Om ingen matchande anslutning visas, fastställ först om den klienten använder Clash. Att det fungerar i webbläsaren fastställer inte vilken väg som används av en separat process.
Jämför resolver-vägar
På macOS, inspektera systemets resolver och dess aktuella svar:
scutil --dns
dscacheutil -q host -a name chatgpt.com
För en krypterad jämförelse, ersätt 7890 med din HTTP/mixed-port i 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'
Begäran använder Cloudflares DNS JSON-gränssnitt. Kontrollera anslutningspanelen: en uttrycklig lokal proxy garanterar att trafiken går in i Clash, men Clash-regler avgör fortfarande den slutliga utgående vägen.
Enbart olika IP-adresser är inte bevis på störningar. CDN-val, cachelagring, adressfamiljer och Fake-IP kan förklara skillnader. En syntetisk adress från Clashs Fake-IP-intervall är inte i sig misstänkt. Korrelera ett avvikande svar med den felaktiga routningen och felet, och jämför sedan med en annan verifierad nätverksväg. Med TUN aktiverat kan även dig @resolver fångas upp; det är inte automatiskt ett oberoende test mot upstream.
Tillämpa en riktad förbättring i Clash Verge Rev
Den här mallen kräver Clash Verge Rev med Mihomo, en befintlig prenumeration och en fungerande proxynod. Det är ett prenumerations-Script, inte en fullständig fristående profil. Säkerhetskopiera den aktuella konfigurationen först. Om du redan använder ett script, integrera ändringen i dess befintliga funktion main(config). Inspektera den slutliga runtime-konfigurationen efter alla förbättringssteg. Dokumentation för Clash Verge Rev Script
Ställ in CODEX_PROXY_GROUP till en befintlig grupp och välj en fungerande proxynod i den gruppen. Ställ in NODE_DNS till en DoH-resolver som fungerar innan proxyn ansluter och som korrekt löser nodvärdnamn. AliDNS-exemplet är avsett för validering på ett fastlandskinesiskt nätverk; ersätt det när det är olämpligt. Det används inte för att lösa AI-domänerna nedan.
// 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;
}
Skriptet lägger till domänspecifik DNS-policy och lägger in proxyregler först samtidigt som andra regler och domänpolicyer behålls. Det ändrar upplösningen av nodvärdnamn. De fyra domänsuffixen är ett inledande omfång, inte en uttömmande lista över varje Codex-funktion, anpassad leverantör, MCP-tjänst eller uppgiftsnedladdning.
Mihomo stöder en domänspecifik nameserver-policy och ett uttryckligt proxysuffix på en DNS-serveradress. Nodupplösning behöver en oberoende väg för att undvika ett cirkulärt beroende. Referens för DNS-konfiguration
Det riktade skriptet behåller befintliga fallback-inställningar. Granska bredare DNS-beroenden separat innan du ersätter dem. Kontrollera också om det finns inaktuella hosts-mappningar eller konfliktande, mer specifika policyer.
Kontrollera TUN separat
För processer som inte använder systemproxyn, aktivera TUN i Clash Verge Rev och verifiera att det körs. Slå ihop följande fält med ditt befintliga TUN-objekt och bevara dess övriga inställningar:
tun:
enable: true
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
Dessa täcker UDP- och TCP-DNS på port 53. Mihomo dokumenterar begränsningar för LAN-riktad DNS på macOS och Windows; applikationshanterad krypterad DNS ligger också utanför dessa port-53-regler. Verifiera resolver- och gränssnittsbeteende i stället för att anta att växeln täcker varje begäran. TUN-referens
Verifiera konfiguration, routning och Codex separat
Kontrollera först den slutliga konfigurationen för fel, gruppreferenser och regelordning. Om Mihomo CLI är tillgängligt kontrollerar mihomo -t -f <final-config-path> om konfigurationen kan tolkas. Det bevisar inte anslutning.
Inspektera sedan faktisk anslutningsroutning och kör en certifikatverifierad HTTPS-sond via din verkliga lokala port:
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/
Ett svar från den avsedda tjänsten efter lyckad certifikatverifiering fastställer ett HTTP-utbyte för denna sond. En 401 eller 403 kan fortfarande blockera åtkomst. Det bevisar inte att en autentiserad Codex-begäran fungerar, och att inaktivera certifikatverifiering skulle ogiltigförklara denna kontroll.
Slutför till sist en liten uppgift i klienten som ursprungligen misslyckades. En installerad, autentiserad CLI kan köra följande valfria kontroll, som gör en verklig modellbegäran och använder kontokvot:
codex exec --skip-git-repo-check --sandbox read-only \
'Reply with exactly: PONG. Do not use tools.'
En CLI-framgång verifierar bara den CLI-begäran; testa skrivbordsappen separat om det var där felet uppstod. Kontrollera igen efter en prenumerationsuppdatering, nätverksändring och vila/uppvakning. Senare konfigurationslager eller omdöpta grupper kan fortfarande bryta en förbättring.
Vanliga frågor
Räcker det att ändra system-DNS till 8.8.8.8?
Inte nödvändigtvis. En resolveradress i sig etablerar inte kryptering, proxyroutning eller nåbarhet. Verifiera resolver, transport och utgående väg tillsammans.
Varför misslyckas Codex medan Clash körs?
Processen kan kringgå proxyn, matcha en direktregel eller vara beroende av otillgänglig node DNS. Problemet kanske också inte har med DNS att göra. Hitta den faktiska anslutningen innan du ändrar flera inställningar samtidigt.
Vad händer om den fortfarande kopplar från?
Om DNS, TLS och routning fungerar, undersök tjänstestatus, konversationsstorlek, klientversion, stabiliteten i nodanslutningen och den exakta feltexten. OpenAI dokumenterar platser för feedback och loggar; granska loggar efter hemligheter innan du delar dem. Felsökning och loggar
Hur återställer jag ändringen?
Inaktivera det tillagda skriptet och återställ den säkerhetskopierade profilen, TUN-inställningarna och alla system-DNS-inställningar du ändrade. En separat proxy-providers-arkitektur kan senare isolera nodprenumerationer från lokal DNS och regler, men krävs inte för denna riktade åtgärd.
För installations- och importsteg, se Clash Verge-konfiguration. För andra fel, se Clash-felsökning. Du kan använda denna diagnostiska process med en befintlig kompatibel prenumeration; att köpa en annan tjänst är inte en förutsättning för att testa DNS.