Codex nepārtraukti savienojas no jauna? Pārbaudiet DNS un Clash maršrutēšanu
Codex kļūdas, piemēram, Reconnecting..., stream disconnected before completion un error sending request, var būt saistītas ar DNS traucējumiem vai nepareizu Clash maršrutēšanu. Šajā ceļvedī ir paskaidrots, kā izpētīt šo iespēju, lietot mērķētu Clash Verge Rev uzlabojumu un pārbaudīt rezultātu.
Ko patiesībā rāda kopienas ziņojumi
Reddit lietotāji ir ziņojuši par pārtrauktiem uzdevumiem, kas vērsti uz chatgpt.com/backend-api/codex/responses, atkārtotiem savienojuma mēģinājumiem un atbildes ķermeņa kļūdām. Šie ziņojumi apliecina simptomus, nevis DNS diagnozi. Pārtraukts pieprasījums, atkārtota savienojuma cilpa
Atsevišķā diskusijā aprakstītas kļūmes attālās konteksta sablīvēšanas laikā. Kāds komentētājs iesaka izpētīt starpniekserveri, taču diskusija neapstiprina pārbaudītu iemeslu. Sablīvēšanas diskusija
Ziņojumi vietnē X rāda līdzīgus jautājumus: 9. septembra ierakstā aprakstītas pastāvīgas straumes kļūmes, bet 6. septembra ierakstā ziņots par SSE dīkstāves noildzi attālās sablīvēšanas laikā. Neviens no tiem nesniedz DNS salīdzinājumu. Tie ir noderīgi lietotāju problēmu piemēri, taču tie nenosaka kopīgu cēloni. X straumes ziņojums, X sablīvēšanas ziņojums
| Simptoms | Kas jāizpēta |
|---|---|
| Tūlītējs noildze ar resolvera kļūdu | DNS, mezgla sasniedzamība un vai datplūsma nonāk Clash |
| ChatGPT darbojas pārlūkprogrammā, bet Codex neizdodas | Starpniekservera, DNS, sertifikātu un izejošās datplūsmas atšķirības |
| Izvade sākas, tad straume pārtrūkst | Ilgstoši savienojumi, tīkla izmaiņas un pakalpojuma kļūdas |
| Neizdodas tikai garas sarunas vai sablīvēšana | Salīdziniet ar nelielu jaunu uzdevumu; izpētiet sesijas un servera kļūdas |
| HTTP 401, 403, 429 vai 5xx | Pārbaudiet atbildes avotu un ķermeni, lai noteiktu autentifikācijas, politikas, ierobežojumu vai pakalpojuma kļūmes |
Pārbaudiet OpenAI pakalpojuma statusu un pierakstiet laiku un klienta versiju. Sarunām, kas iestrēgušas, OpenAI arī iesaka pārbaudīt gaidošos apstiprinājumus un mēģināt mazāku, mērķētu jaunu sarunu. Darbvirsmas un CLI versijas var atšķirties. Oficiālā problēmu novēršana
Vietējais gadījums: negaidīta DNS atbilde izraisīja DIRECT
Vienā dokumentētā macOS izmeklēšanā, izmantojot Clash Verge Rev un Mihomo, starpniekservera mezgli bija sasniedzami, taču chatgpt.com atbilda GeoIP/CN noteikumam un mēģināja tiešo savienojumu, kas noildza. Salīdzinājums ar šifrētu DNS, kas tika sasniegts caur starpniekserveri, parādīja anomālu atbildi vietējā atrisināšanas ceļā.
Request to chatgpt.com
→ anomalous DNS answer
→ no earlier matching OpenAI domain rule
→ GeoIP selects DIRECT
→ connection times out and Codex retries
Ir jārisina divas konfigurācijas problēmas: atrisināšanas ceļš un maršrutēšanas lēmums. Šis dokumentētais gadījums nav etalons vai pierādījums, ka citām Codex kļūmēm ir tāds pats iemesls. Anomāla atbilde vien pati par sevi arī nevar identificēt atbildīgo starpnieku vai īpaši pierādīt DNS kešatmiņas saindēšanu.
Diagnosticējiet pirms konfigurācijas maiņas
Pārbaudiet savienojuma žurnālu
Meklējiet faktiskā saimniekdatora nosaukumu kļūdā, tostarp chatgpt.com vai openai.com. Pierakstiet atbilstošo noteikumu, savienojuma ķēdi un kļūdu atteices brīdī. Savienojumam, kuram vajadzētu izmantot starpniekserveri, bet kas izvēlas DIRECT, ir jāpārskata noteikumu secība. Mihomo maršrutēšanas noteikumus izvērtē no augšas uz leju. Maršrutēšanas dokumentācija
Ja neparādās atbilstošs savienojums, vispirms noskaidrojiet, vai šis klients izmanto Clash. Panākumi pārlūkprogrammā nepierāda ceļu, ko izmanto atsevišķs process.
Salīdziniet atrisināšanas ceļus
Operētājsistēmā macOS pārbaudiet sistēmas resolveru un tā pašreizējo atbildi:
scutil --dns
dscacheutil -q host -a name chatgpt.com
Šifrētam salīdzinājumam aizstājiet 7890 ar savu Clash HTTP/mixed portu:
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'
Pieprasījums izmanto Cloudflare DNS JSON interfeisu. Pārbaudiet savienojumu paneli: skaidri norādīts lokālais starpniekserveris garantē ieiešanu Clash, taču Clash noteikumi joprojām nosaka galīgo izeju.
Atšķirīgas IP adreses vien pašas par sevi nav traucējumu pierādījums. CDN izvēle, kešēšana, adrešu ģimenes un Fake-IP var izskaidrot atšķirības. Sintētiska adrese no Clash Fake-IP diapazona nav pēc būtības aizdomīga. Saistiet anomālu atbildi ar nepareizo maršrutu un kļūmi, un pēc tam salīdziniet ar citu pārbaudītu tīkla ceļu. Ja ir iespējots TUN, pat dig @resolver var tikt pārtverts; tas automātiski nav neatkarīgs upstream tests.
Lietojiet mērķētu Clash Verge Rev uzlabojumu
Šai veidnei nepieciešams Clash Verge Rev ar Mihomo, esošs abonements un darbojošs starpniekservera mezgls. Tas ir abonementa Script, nevis pilnīgs patstāvīgs profils. Vispirms izveidojiet pašreizējās konfigurācijas rezerves kopiju. Ja jūs jau izmantojat skriptu, integrējiet izmaiņas tā esošajā main(config) funkcijā. Pārbaudiet galīgo izpildlaika konfigurāciju pēc visiem uzlabojuma soļiem. Clash Verge Rev Script dokumentācija
Iestatiet CODEX_PROXY_GROUP uz esošu grupu un izvēlieties tajā strādājošu starpniekservera mezglu. Iestatiet NODE_DNS uz DoH resolvēru, kas darbojas pirms starpniekservera savienojuma un pareizi atrisina mezglu hostvārdus. AliDNS piemērs ir paredzēts validācijai kontinentālās Ķīnas tīklā; nomainiet to, ja tas nav atbilstošs. To neizmanto, lai atrisinātu tālāk norādītos AI domēnus.
// 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;
}
Skripts pievieno domēnam specifisku DNS politiku un pievieno starpniekservera noteikumus sākumā, saglabājot pārējos noteikumus un domēna politikas. Tas maina mezglu hostvārdu atrisināšanu. Četri domēna sufiksi ir sākuma tvērums, nevis izsmeļošs visu Codex funkciju, pielāgotu pakalpojumu sniedzēju, MCP servisu vai uzdevumu lejupielāžu saraksts.
Mihomo atbalsta domēnam specifisku nameserver-policy un skaidru starpniekservera sufiksu DNS servera adresē. Mezgla atrisināšanai vajadzīgs neatkarīgs ceļš, lai izvairītos no cirkulāras atkarības. DNS konfigurācijas atsauce
Mērķētais skripts saglabā esošos fallback iestatījumus. Pirms tos aizstājat, atsevišķi pārskatiet plašākas DNS atkarības. Pārbaudiet arī novecojušus hosts kartējumus vai konfliktējošas, specifiskākas politikas.
Pārbaudiet TUN atsevišķi
Procesiem, kas neizmanto sistēmas starpniekserveri, iespējojiet TUN Clash Verge Rev un pārbaudiet, ka tas darbojas. Sapludiniet šos laukus savā esošajā TUN objektā, saglabājot tā pārējos iestatījumus:
tun:
enable: true
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
Tie aptver UDP un TCP DNS uz 53. porta. Mihomo dokumentē ierobežojumus LAN adresētam DNS macOS un Windows sistēmās; lietotnes pārvaldīts šifrēts DNS arī neietilpst šo 53. porta noteikumu darbībā. Pārbaudiet resolvēra un interfeisa darbību, nevis pieņemiet, ka pārslēgs aptver katru pieprasījumu. TUN atsauce
Atsevišķi pārbaudiet konfigurāciju, maršrutēšanu un Codex
Vispirms pārbaudiet, vai gala konfigurācijā nav kļūdu, grupu atsauču un noteikumu secības. Ja Mihomo CLI ir pieejams, mihomo -t -f <final-config-path> pārbauda, vai konfigurācija tiek parsēta. Tas nepierāda savienojamību.
Pēc tam pārbaudiet faktisko savienojuma maršrutēšanu un palaidiet ar sertifikātu verificētu HTTPS pārbaudi caur savu reālo lokālo portu:
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/
Atbilde no paredzētā pakalpojuma pēc veiksmīgas sertifikāta verifikācijas šai pārbaudei izveido HTTP apmaiņu. 401 vai 403 joprojām var bloķēt piekļuvi. Tas nepierāda, ka autentificēts Codex pieprasījums darbojas, un sertifikāta verifikācijas atspējošana padarītu šo pārbaudi nederīgu.
Visbeidzot, pabeidziet nelielu uzdevumu klientā, kurš sākotnēji neizdevās. Instalēts, autentificēts CLI var palaist tālāk norādīto papildu pārbaudi, kas veic reālu modeļa pieprasījumu un izmanto konta kvotu:
codex exec --skip-git-repo-check --sandbox read-only \
'Reply with exactly: PONG. Do not use tools.'
CLI panākumi pārbauda tikai šo CLI pieprasījumu; ja kļūme notika darbvirsmas lietotnē, pārbaudiet to atsevišķi. Pārbaudiet vēlreiz pēc abonementa atjauninājuma, tīkla izmaiņām un miega/pamošanās. Vēlākas konfigurācijas kārtas vai pārdēvētas grupas joprojām var sabojāt uzlabojumu.
Biežāk uzdotie jautājumi
Vai pietiek ar sistēmas DNS maiņu uz 8.8.8.8?
Ne vienmēr. Viena pati resolvēra adrese nenodrošina šifrēšanu, starpniekservera maršrutēšanu vai sasniedzamību. Pārbaudiet resolvēru, transportu un izejas ceļu kopā.
Kāpēc Codex neizdodas, kamēr darbojas Clash?
Process var apiet starpniekserveri, atbilst tiešam noteikumam vai būt atkarīgs no nepieejama mezgla DNS. Problēma var būt arī nesaistīta ar DNS. Atrodiet faktisko savienojumu, pirms vienlaikus maināt vairākus iestatījumus.
Ko darīt, ja tas joprojām atvienojas?
Ja DNS, TLS un maršrutēšana darbojas, izpētiet pakalpojuma statusu, sarunas lielumu, klienta versiju, mezgla savienojuma stabilitāti un precīzu kļūdas pamattekstu. OpenAI dokumentē atsauksmju un žurnālu atrašanās vietas; pirms kopīgošanas pārskatiet žurnālus, lai tajos nebūtu noslēpumu. Traucējummeklēšana un žurnāli
Kā atsaukt izmaiņu?
Atspējojiet pievienoto Script un atjaunojiet dublēto profilu, TUN iestatījumus un jebkurus sistēmas DNS iestatījumus, kurus mainījāt. Atsevišķa proxy-providers arhitektūra vēlāk var izolēt mezglu abonementus no lokālā DNS un noteikumiem, taču tā nav nepieciešama šim mērķētajam labojumam.
Instalēšanas un importēšanas darbībām skatiet Clash Verge iestatīšana. Citu kļūmju gadījumā skatiet Clash problēmu novēršana. Jūs varat izmantot šo diagnostikas procesu ar esošu saderīgu abonementu; cita pakalpojuma iegāde nav priekšnoteikums DNS testēšanai.