Codex vis prisijungia iš naujo? Patikrinkite DNS ir Clash maršrutizavimą
Codex klaidos, tokios kaip Reconnecting..., stream disconnected before completion ir error sending request, gali būti susijusios su DNS trukdžiais arba neteisingu Clash maršrutizavimu. Šiame vadove paaiškinama, kaip ištirti šią galimybę, pritaikyti tikslinį Clash Verge Rev patobulinimą ir patikrinti rezultatą.
Ką iš tikrųjų rodo bendruomenės pranešimai
Reddit naudotojai pranešė apie nutrauktas užduotis, nukreiptas į chatgpt.com/backend-api/codex/responses, pasikartojančius pakartotinio prisijungimo bandymus ir atsakymo turinio klaidas. Šie pranešimai nustato simptomus, o ne DNS diagnozę. Nutrauktas užklausos, prisijungimo iš naujo ciklas
Atskira diskusija aprašo nesėkmes nutolusio konteksto kompaktinimo metu. Vienas komentatorius siūlo tirti proxy, tačiau diskusija nepatvirtina įrodyto priežasties. Kompaktinimo diskusija
Pranešimai X rodo panašius klausimus: rugsėjo 9 d. įraše aprašomi nuolatiniai srauto gedimai, o rugsėjo 6 d. įraše pranešama apie SSE neveikos laiką nutolusio kompaktinimo metu. Nei viename nepateikiamas DNS palyginimas. Tai naudingi naudotojų problemų pavyzdžiai, tačiau jie nenustato bendros priežasties. X srauto pranešimas, X kompaktinimo pranešimas
| Simptomas | Ką tirti |
|---|---|
| Nedelsiant pasibaigia laikas su sprendiklio klaida | DNS, mazgo pasiekiamumas ir ar srautas patenka į Clash |
| ChatGPT veikia naršyklėje, bet Codex neveikia | Proxy, DNS, sertifikatų ir išėjimo skirtumai |
| Išvestis prasideda, tada srautas atsijungia | Ilgai veikiančios jungtys, tinklo pokyčiai ir paslaugos klaidos |
| Sugenda tik ilgi pokalbiai arba kompaktinimas | Palyginkite su maža nauja užduotimi; tirkite sesijos ir serverio klaidas |
| HTTP 401, 403, 429 arba 5xx | Patikrinkite atsakymo kilmę ir turinį dėl autentifikavimo, politikos, limitų ar paslaugos gedimų |
Patikrinkite OpenAI paslaugos būseną ir užsirašykite laiką bei kliento versiją. Užstrigusiems pokalbiams OpenAI taip pat rekomenduoja patikrinti laukiančius patvirtinimus ir išbandyti mažesnį, labiau fokusuotą naują pokalbį. Darbalaukio ir CLI versijos gali skirtis. Oficialus trikčių šalinimas
Vietinis atvejis: netikėtas DNS atsakymas suaktyvino DIRECT
Viename užfiksuotame macOS tyrime naudojant Clash Verge Rev ir Mihomo, proxy mazgai buvo pasiekiami, tačiau chatgpt.com atitiko GeoIP/CN taisyklę ir bandė tiesioginį ryšį, kuris viršijo laiką. Palyginus su užšifruotu DNS, pasiektu per proxy, vietiniame sprendimo kelyje buvo gautas anomalus atsakymas.
Request to chatgpt.com
→ anomalous DNS answer
→ no earlier matching OpenAI domain rule
→ GeoIP selects DIRECT
→ connection times out and Codex retries
Yra dvi konfigūracijos problemos, kurias reikia spręsti: sprendimo kelias ir maršrutizavimo sprendimas. Šis užfiksuotas atvejis nėra etalonas ar įrodymas, kad kiti Codex gedimai turi tą pačią priežastį. Vien anomalus atsakymas taip pat negali nustatyti atsakingo tarpininko ar konkrečiai patvirtinti DNS talpyklos užnuodijimo.
Diagnozuokite prieš keisdami konfigūraciją
Patikrinkite ryšio žurnalą
Ieškokite tikrojo prieglobos vardo klaidoje, įskaitant chatgpt.com arba openai.com. Užfiksuokite sutapusią taisyklę, ryšio grandinę ir klaidą gedimo metu. Ryšys, kuris turėtų naudoti proxy, bet pasirenka DIRECT, reikalauja peržiūrėti taisyklių tvarką. Mihomo vertina maršrutizavimo taisykles nuo viršaus į apačią. Maršrutizavimo dokumentacija
Jei jokio sutampančio ryšio nematyti, pirmiausia nustatykite, ar tas klientas naudoja Clash. Sėkmė naršyklėje neparodo kelio, kurį naudoja atskiras procesas.
Palyginkite sprendimo kelius
macOS sistemoje patikrinkite sistemos sprendiklį ir jo dabartinį atsakymą:
scutil --dns
dscacheutil -q host -a name chatgpt.com
Užšifruotam palyginimui pakeiskite 7890 savo Clash HTTP/mixed prievadu:
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'
Užklausa naudoja Cloudflare DNS JSON sąsają. Patikrinkite ryšio skydelį: aiškiai nurodytas vietinis proxy garantuoja patekimą į Clash, tačiau galutinį išėjimą vis tiek nustato Clash taisyklės.
Skirtingi IP adresai patys savaime nėra trukdžių įrodymas. CDN parinkimas, spartinančioji atmintinė, adresų šeimos ir Fake-IP gali paaiškinti skirtumus. Iš Clash Fake-IP diapazono suformuotas sintetinis adresas savaime nėra įtartinas. Susiekite anomalų atsakymą su neteisingu maršrutu ir nesėkme, tada palyginkite su kitu patvirtintu tinklo keliu. Kai įjungtas TUN, net dig @resolver gali būti perimtas; tai ne automatiškai nepriklausomas aukštesnio lygio testas.
Pritaikykite tikslinį Clash Verge Rev patobulinimą
Šiam šablonui reikia Clash Verge Rev su Mihomo, esamos prenumeratos ir veikiančio proxy mazgo. Tai yra prenumeratos Script, o ne pilnas savarankiškas profilis. Pirmiausia sukurkite dabartinės konfigūracijos atsarginę kopiją. Jei jau naudojate script, integruokite pakeitimą į jo esamą main(config) funkciją. Patikrinkite galutinę vykdymo metu naudojamą konfigūraciją po visų patobulinimo veiksmų. Clash Verge Rev Script dokumentacija
Nustatykite CODEX_PROXY_GROUP į esamą grupę ir toje grupėje pasirinkite veikiantį tarpinio serverio mazgą. Nustatykite NODE_DNS į DoH skyriklį, kuris veikia dar prieš prisijungiant tarpiniam serveriui ir teisingai išsprendžia mazgų hostnames. AliDNS pavyzdys skirtas patikrai tinkluose žemyninėje Kinijoje; pakeiskite jį, kai tai netinka. Jis nenaudojamas toliau pateiktiems AI domenams išspręsti.
// 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;
}
Skriptas prideda domenui specifinę DNS politiką ir įterpia tarpinio serverio taisykles į pradžią, išlaikydamas kitas taisykles ir domenų politikas. Jis keičia mazgų hostname sprendimą. Keturi domenų sufiksai yra pradinis taikymo sritis, o ne išsamus kiekvienos Codex funkcijos, pasirinktinių tiekėjų, MCP paslaugos ar užduoties atsisiuntimo sąrašas.
Mihomo palaiko domenui specifinę nameserver-policy ir aiškų proxy sufiksą DNS serverio adresui. Mazgų sprendimui reikia nepriklausomo kelio, kad būtų išvengta ciklinės priklausomybės. DNS konfigūracijos nuoroda
Tikslinis skriptas išlaiko esamus atsarginio perjungimo nustatymus. Prieš juos pakeisdami, atskirai peržiūrėkite platesnes DNS priklausomybes. Taip pat patikrinkite, ar nėra pasenusių hosts susiejimų arba konfliktuojančių, konkretesnių politkų.
Patikrinkite TUN atskirai
Procesams, kurie nenaudoja sistemos tarpinio serverio, įjunkite TUN Clash Verge Rev ir patikrinkite, ar jis veikia. Sujunkite šiuos laukus į savo esamą TUN objektą, išsaugodami kitus jo nustatymus:
tun:
enable: true
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
Tai apima UDP ir TCP DNS per 53 prievadą. Mihomo dokumentuoja LAN nukreipto DNS apribojimus macOS ir Windows; programos valdomas šifruotas DNS taip pat nepatenka į šias 53 prievado taisykles. Verčiau patikrinkite skyriklio ir sąsajos elgseną, o ne manykite, kad perjungiklis apima kiekvieną užklausą. TUN nuoroda
Tikrinkite konfigūraciją, maršrutizavimą ir Codex atskirai
Pirmiausia patikrinkite galutinę konfigūraciją dėl klaidų, grupių nuorodų ir taisyklių tvarkos. Jei Mihomo CLI pasiekiamas, mihomo -t -f <final-config-path> patikrina, ar konfigūracija nusiskaito. Tai neįrodo ryšio.
Tada patikrinkite tikrąjį ryšio maršrutizavimą ir paleiskite sertifikatu patvirtintą HTTPS užklausą per savo tikrą vietinį prievadą:
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/
Atsakas iš numatytos paslaugos po sėkmingo sertifikato patikrinimo nustato HTTP mainus šiai užklausai. 401 arba 403 vis tiek gali blokuoti prieigą. Tai neįrodo, kad autentifikuota Codex užklausa veikia, o sertifikato patikros išjungimas padarytų šį patikrinimą negaliojančiu.
Galiausiai užbaikite mažą užduotį klientėje, kuri anksčiau nepavyko. Įdiegta, autentifikuota CLI gali paleisti šį pasirenkamą patikrinimą, kuris siunčia tikrą modelio užklausą ir naudoja paskyros kvotą:
codex exec --skip-git-repo-check --sandbox read-only \
'Reply with exactly: PONG. Do not use tools.'
CLI sėkmė patvirtina tik tą CLI užklausą; jei gedimas įvyko darbalaukio programoje, ją tikrinkite atskirai. Patikrinkite iš naujo po prenumeratos atnaujinimo, tinklo pakeitimo ir miego / pažadinimo. Vėlesni konfigūracijos sluoksniai arba pervadintos grupės vis tiek gali sugadinti patobulinimą.
Dažniausiai užduodami klausimai
Ar pakanka pakeisti sistemos DNS į 8.8.8.8?
Nebūtinai. Vien tik skyriklio adresas nenustato šifravimo, tarpinio serverio maršrutizavimo ar pasiekiamumo. Tikrinkite skyriklį, perdavimo būdą ir išėjimą kartu.
Kodėl Codex nepavyksta, kai veikia Clash?
Procesas gali apeiti tarpinį serverį, atitikti tiesioginę taisyklę arba priklausyti nuo nepasiekiamo mazgo DNS. Problema taip pat gali būti nesusijusi su DNS. Suraskite tikrąjį ryšį prieš vienu metu keisdami kelis nustatymus.
Ką daryti, jei vis tiek atsijungia?
Jei DNS, TLS ir maršrutizavimas veikia, tirkite paslaugos būseną, pokalbio dydį, kliento versiją, mazgo ryšio stabilumą ir tikslų klaidos turinį. OpenAI dokumentuoja grįžtamojo ryšio ir žurnalų vietas; prieš dalindamiesi peržiūrėkite žurnalus dėl paslapčių. Trikčių šalinimas ir žurnalai
Kaip atšaukti pakeitimą?
Išjunkite pridėtą Script ir atkurkite atsarginę profilio kopiją, TUN nustatymus ir visus sistemos DNS nustatymus, kuriuos pakeitėte. Atskira proxy-providers architektūra vėliau gali izoliuoti mazgų prenumeratas nuo vietinio DNS ir taisyklių, tačiau ji nėra būtina šiam tiksliniam pataisymui.
Diegimo ir importavimo veiksmus rasite Clash Verge sąranka. Dėl kitų gedimų žr. Clash trikčių šalinimas. Šį diagnostinį procesą galite naudoti su jau turima suderinama prenumerata; kitos paslaugos pirkimas nėra būtina sąlyga DNS tikrinimui.