Το Codex συνεχίζει να επανασυνδέεται; Ελέγξτε το DNS και τη δρομολόγηση του Clash
Σφάλματα του Codex όπως Reconnecting..., stream disconnected before completion και error sending request μπορεί να σχετίζονται με παρεμβολή DNS ή λανθασμένη δρομολόγηση στο Clash. Αυτός ο οδηγός εξηγεί πώς να διερευνήσετε αυτήν την πιθανότητα, να εφαρμόσετε μια στοχευμένη βελτίωση του Clash Verge Rev και να επαληθεύσετε το αποτέλεσμα.
Τι δείχνουν πραγματικά οι αναφορές της κοινότητας
Χρήστες στο Reddit έχουν αναφέρει διακοπτόμενες εργασίες που στοχεύουν στο chatgpt.com/backend-api/codex/responses, επαναλαμβανόμενες προσπάθειες επανασύνδεσης και σφάλματα στο σώμα της απάντησης. Αυτές οι αναφορές καταγράφουν συμπτώματα, όχι διάγνωση DNS. Διακοπτόμενο αίτημα, βρόχος επανασύνδεσης
Μια ξεχωριστή συζήτηση περιγράφει αποτυχίες κατά τη συμπίεση απομακρυσμένου πλαισίου συμφραζομένων. Ένας σχολιαστής προτείνει να εξεταστεί ο proxy, αλλά η συζήτηση δεν αποδεικνύει επαληθευμένη αιτία. Συζήτηση για τη συμπίεση
Αναφορές στο X δείχνουν παρόμοιες ερωτήσεις: μια ανάρτηση της 9ης Σεπτεμβρίου περιγράφει επίμονες αποτυχίες ροής, ενώ μια ανάρτηση της 6ης Σεπτεμβρίου αναφέρει SSE idle timeout κατά την απομακρυσμένη συμπίεση. Καμία δεν παρέχει σύγκριση DNS. Αυτά είναι χρήσιμα παραδείγματα προβλημάτων χρηστών, αλλά δεν αποδεικνύουν κοινή αιτία. Αναφορά ροής στο X, αναφορά συμπίεσης στο X
| Σύμπτωμα | Τι να διερευνήσετε |
|---|---|
| Άμεσο timeout με σφάλμα resolver | DNS, προσβασιμότητα του node και αν η κίνηση εισέρχεται στο Clash |
| Το ChatGPT λειτουργεί στον browser αλλά το Codex αποτυγχάνει | Διαφορές σε proxy, DNS, πιστοποιητικά και egress |
| Η έξοδος ξεκινά και μετά διακόπτεται η ροή | Συνδέσεις μεγάλης διάρκειας, αλλαγές δικτύου και σφάλματα υπηρεσίας |
| Αποτυγχάνουν μόνο μακρές συνομιλίες ή η συμπίεση | Συγκρίνετε με μια μικρή νέα εργασία· διερευνήστε σφάλματα συνεδρίας και διακομιστή |
| HTTP 401, 403, 429 ή 5xx | Εξετάστε την προέλευση και το σώμα της απάντησης για αποτυχίες ελέγχου ταυτότητας, πολιτικής, ορίων ή υπηρεσίας |
Ελέγξτε το OpenAI service status και καταγράψτε την ώρα και την έκδοση του client. Για κολλημένες συνομιλίες, η OpenAI συνιστά επίσης να ελέγξετε για εκκρεμείς εγκρίσεις και να δοκιμάσετε μια μικρότερη, εστιασμένη νέα συνομιλία. Οι εκδόσεις Desktop και CLI μπορεί να διαφέρουν. Επίσημη αντιμετώπιση προβλημάτων
Μια τοπική περίπτωση: μια απροσδόκητη απάντηση DNS ενεργοποίησε το DIRECT
Σε μία καταγεγραμμένη διερεύνηση σε macOS με χρήση του Clash Verge Rev και του Mihomo, οι proxy nodes ήταν προσβάσιμοι, αλλά το chatgpt.com αντιστοιχιζόταν σε κανόνα GeoIP/CN και επιχειρούσε άμεση σύνδεση που κατέληγε σε timeout. Μια σύγκριση με κρυπτογραφημένο DNS μέσω του proxy έδειξε μια ανώμαλη απάντηση στη τοπική διαδρομή επίλυσης.
Request to chatgpt.com
→ anomalous DNS answer
→ no earlier matching OpenAI domain rule
→ GeoIP selects DIRECT
→ connection times out and Codex retries
Υπάρχουν δύο ζητήματα διαμόρφωσης που πρέπει να αντιμετωπιστούν: η διαδρομή επίλυσης και η απόφαση δρομολόγησης. Αυτή η καταγεγραμμένη περίπτωση δεν αποτελεί σημείο αναφοράς ούτε απόδειξη ότι άλλες αποτυχίες του Codex έχουν την ίδια αιτία. Μια ανώμαλη απάντηση από μόνη της επίσης δεν μπορεί να προσδιορίσει τον υπεύθυνο ενδιάμεσο ούτε να επιβεβαιώσει ειδικά δηλητηρίαση της DNS cache.
Διάγνωση πριν από την αλλαγή ρύθμισης
Ελέγξτε το connection log
Αναζητήστε το πραγματικό hostname στο σφάλμα, συμπεριλαμβανομένων των chatgpt.com ή openai.com. Καταγράψτε τον κανόνα που αντιστοιχίστηκε, την αλυσίδα σύνδεσης και το σφάλμα τη στιγμή της αποτυχίας. Μια σύνδεση που θα έπρεπε να χρησιμοποιεί proxy αλλά επιλέγει DIRECT δικαιολογεί έλεγχο της σειράς των κανόνων. Το Mihomo αξιολογεί τους κανόνες δρομολόγησης από πάνω προς τα κάτω. Τεκμηρίωση δρομολόγησης
Αν δεν εμφανίζεται καμία αντιστοιχισμένη σύνδεση, πρώτα εξακριβώστε αν αυτός ο client χρησιμοποιεί Clash. Η επιτυχία του browser δεν αποδεικνύει τη διαδρομή που χρησιμοποιεί μια ξεχωριστή διεργασία.
Συγκρίνετε τις διαδρομές επίλυσης
Στο macOS, ελέγξτε τον system resolver και την τρέχουσα απάντησή του:
scutil --dns
dscacheutil -q host -a name chatgpt.com
Για μια κρυπτογραφημένη σύγκριση, αντικαταστήστε το 7890 με το HTTP/mixed port του 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’s DNS JSON interface. Ελέγξτε το connection panel: ένας ρητός τοπικός proxy εγγυάται την είσοδο στο Clash, αλλά οι κανόνες του Clash εξακολουθούν να καθορίζουν το τελικό egress.
Μόνο οι διαφορετικές διευθύνσεις IP δεν αποτελούν απόδειξη παρεμβολής. Η επιλογή CDN, η προσωρινή αποθήκευση, οι οικογένειες διευθύνσεων και το Fake-IP μπορούν να εξηγήσουν διαφορές. Μια συνθετική διεύθυνση από το εύρος Fake-IP του Clash δεν είναι από μόνη της ύποπτη. Συσχετίστε μια ανώμαλη απάντηση με τη λανθασμένη διαδρομή και την αποτυχία, και μετά συγκρίνετε με μια άλλη επαληθευμένη διαδρομή δικτύου. Με ενεργοποιημένο TUN, ακόμη και το dig @resolver μπορεί να υποκλαπεί· δεν αποτελεί αυτόματα ανεξάρτητο upstream test.
Εφαρμόστε μια στοχευμένη βελτίωση του Clash Verge Rev
Αυτό το πρότυπο απαιτεί Clash Verge Rev με Mihomo, μια υπάρχουσα συνδρομή και έναν λειτουργικό proxy node. Είναι ένα subscription Script, όχι ένα πλήρες αυτόνομο προφίλ. Πρώτα δημιουργήστε αντίγραφο ασφαλείας της τρέχουσας ρύθμισης. Αν ήδη χρησιμοποιείτε script, ενσωματώστε την αλλαγή στην υπάρχουσα συνάρτηση main(config). Ελέγξτε την τελική ρύθμιση runtime μετά από όλα τα βήματα βελτίωσης. Τεκμηρίωση Script του Clash Verge Rev
Ορίστε το CODEX_PROXY_GROUP σε μια υπάρχουσα ομάδα και επιλέξτε έναν κόμβο proxy που λειτουργεί μέσα σε αυτήν την ομάδα. Ορίστε το NODE_DNS σε έναν DoH resolver που λειτουργεί πριν συνδεθεί ο proxy και επιλύει σωστά τα hostnames των κόμβων. Το παράδειγμα AliDNS προορίζεται για επικύρωση σε δίκτυο της ηπειρωτικής Κίνας· αντικαταστήστε το όταν δεν είναι κατάλληλο. Δεν χρησιμοποιείται για την επίλυση των παρακάτω AI domains.
// 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;
}
Το script προσθέτει πολιτική DNS ανά domain και προτάσσει κανόνες proxy, διατηρώντας παράλληλα τους υπόλοιπους κανόνες και τις πολιτικές domain. Αλλάζει την επίλυση των hostnames των κόμβων. Τα τέσσερα domain suffixes αποτελούν ένα αρχικό εύρος, όχι εξαντλητική λίστα κάθε λειτουργίας Codex, προσαρμοσμένου provider, υπηρεσίας MCP ή λήψης task.
Το Mihomo υποστηρίζει ένα domain-specific nameserver-policy και ένα explicit proxy suffix σε μια διεύθυνση DNS server. Η επίλυση κόμβων χρειάζεται ανεξάρτητη διαδρομή για να αποφευχθεί μια κυκλική εξάρτηση. Αναφορά ρύθμισης DNS
Το στοχευμένο script διατηρεί τις υπάρχουσες ρυθμίσεις fallback. Εξετάστε ξεχωριστά τις ευρύτερες εξαρτήσεις DNS πριν τις αντικαταστήσετε. Ελέγξτε επίσης για παρωχημένες αντιστοιχίσεις hosts ή αντικρουόμενες, πιο συγκεκριμένες πολιτικές.
Ελέγξτε το TUN ξεχωριστά
Για διεργασίες που δεν χρησιμοποιούν το system proxy, ενεργοποιήστε το 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· το encrypted DNS που διαχειρίζεται η εφαρμογή είναι επίσης εκτός αυτών των κανόνων της θύρας 53. Επαληθεύστε τη συμπεριφορά του resolver και της διεπαφής αντί να υποθέτετε ότι ο διακόπτης καλύπτει κάθε αίτημα. Αναφορά TUN
Επαληθεύστε ξεχωριστά τη ρύθμιση, τη δρομολόγηση και το Codex
Πρώτα ελέγξτε την τελική ρύθμιση για σφάλματα, αναφορές ομάδων και σειρά κανόνων. Αν το Mihomo CLI είναι διαθέσιμο, το mihomo -t -f <final-config-path> ελέγχει αν η ρύθμιση αναλύεται σωστά. Δεν αποδεικνύει συνδεσιμότητα.
Στη συνέχεια εξετάστε την πραγματική δρομολόγηση της σύνδεσης και εκτελέστε ένα HTTPS probe με επαλήθευση πιστοποιητικού μέσω της πραγματικής τοπικής θύρας σας:
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 exchange για αυτό το probe. Ένα 401 ή 403 μπορεί ακόμη να αποκλείσει την πρόσβαση. Δεν αποδεικνύει ότι ένα authenticated αίτημα Codex λειτουργεί, και η απενεργοποίηση της επαλήθευσης πιστοποιητικού θα καθιστούσε άκυρο αυτόν τον έλεγχο.
Τέλος, ολοκληρώστε μια μικρή εργασία στον client που αρχικά απέτυχε. Ένα εγκατεστημένο, authenticated CLI μπορεί να εκτελέσει τον ακόλουθο προαιρετικό έλεγχο, ο οποίος κάνει ένα πραγματικό αίτημα μοντέλου και χρησιμοποιεί το quota του λογαριασμού:
codex exec --skip-git-repo-check --sandbox read-only \
'Reply with exactly: PONG. Do not use tools.'
Μια επιτυχία στο CLI επαληθεύει μόνο αυτό το αίτημα του CLI· δοκιμάστε ξεχωριστά την desktop app αν εκεί παρουσιάστηκε η αποτυχία. Ελέγξτε ξανά μετά από ενημέρωση συνδρομής, αλλαγή δικτύου και sleep/wake. Μεταγενέστερα επίπεδα ρύθμισης ή μετονομασμένες ομάδες μπορούν ακόμη να χαλάσουν μια βελτίωση.
Συχνές ερωτήσεις
Αρκεί η αλλαγή του system DNS σε 8.8.8.8;
Όχι απαραίτητα. Μια διεύθυνση resolver από μόνη της δεν καθιερώνει κρυπτογράφηση, δρομολόγηση μέσω proxy ή προσβασιμότητα. Επαληθεύστε μαζί resolver, transport και egress.
Γιατί αποτυγχάνει το Codex ενώ το Clash εκτελείται;
Η διεργασία ίσως παρακάμπτει τον proxy, ταιριάζει σε έναν direct κανόνα ή εξαρτάται από DNS κόμβου που δεν είναι διαθέσιμο. Το πρόβλημα μπορεί επίσης να μην σχετίζεται με το DNS. Βρείτε την πραγματική σύνδεση πριν αλλάξετε πολλές ρυθμίσεις ταυτόχρονα.
Τι γίνεται αν εξακολουθεί να αποσυνδέεται;
Αν το DNS, το TLS και η δρομολόγηση λειτουργούν, ερευνήστε την κατάσταση της υπηρεσίας, το μέγεθος της συνομιλίας, την έκδοση του client, τη σταθερότητα της σύνδεσης του κόμβου και το ακριβές body του σφάλματος. Η OpenAI τεκμηριώνει θέσεις για feedback και logs· ελέγξτε τα logs για μυστικά πριν τα κοινοποιήσετε. Αντιμετώπιση προβλημάτων και logs
Πώς αναιρώ την αλλαγή;
Απενεργοποιήστε το πρόσθετο Script και επαναφέρετε το αποθηκευμένο αντίγραφο του προφίλ, τις ρυθμίσεις TUN και τυχόν ρυθμίσεις system DNS που αλλάξατε. Μια ξεχωριστή αρχιτεκτονική proxy-providers μπορεί αργότερα να απομονώσει τις συνδρομές κόμβων από το τοπικό DNS και τους κανόνες, αλλά δεν απαιτείται για αυτή τη στοχευμένη διόρθωση.
Για τα βήματα εγκατάστασης και εισαγωγής, δείτε το Clash Verge setup. Για άλλα σφάλματα, δείτε το Clash troubleshooting. Μπορείτε να χρησιμοποιήσετε αυτήν τη διαγνωστική διαδικασία με μια υπάρχουσα συμβατή συνδρομή· η αγορά μιας άλλης υπηρεσίας δεν αποτελεί προϋπόθεση για τη δοκιμή του DNS.