Codex Terus Bersambung Semula? Periksa DNS dan Penghalaan Clash

Kemaskini terakhir: 2026-09-10

Ralat Codex seperti Reconnecting..., stream disconnected before completion, dan error sending request boleh melibatkan gangguan DNS atau penghalaan Clash yang salah. Panduan ini menerangkan cara menyiasat kemungkinan itu, menerapkan peningkatan Clash Verge Rev yang disasarkan, dan mengesahkan hasilnya.

Apa yang sebenarnya ditunjukkan oleh laporan komuniti

Pengguna Reddit telah melaporkan tugas terganggu yang menyasarkan chatgpt.com/backend-api/codex/responses, percubaan sambung semula berulang, dan ralat badan respons. Laporan ini menetapkan gejala, bukan diagnosis DNS. Permintaan terganggu, gelung sambung semula

Perbincangan berasingan menerangkan kegagalan semasa pemampatan konteks jauh. Seorang pengulas mencadangkan menyiasat proksi, tetapi perbincangan itu tidak menetapkan punca yang disahkan. Perbincangan pemampatan

Laporan di X menunjukkan soalan yang serupa: siaran 9 September menerangkan kegagalan aliran yang berterusan, manakala siaran 6 September melaporkan tamat masa melahu SSE semasa pemampatan jauh. Tiada satu pun memberikan perbandingan DNS. Ini ialah contoh berguna bagi masalah pengguna, tetapi ia tidak menetapkan punca yang dikongsi bersama. Laporan aliran X, laporan pemampatan X

Simptom Apa yang perlu disiasat
Tamat masa serta-merta dengan ralat resolver DNS, kebolehcapaian nod, dan sama ada trafik memasuki Clash
ChatGPT berfungsi dalam pelayar tetapi Codex gagal Perbezaan dalam proksi, DNS, sijil, dan egress
Output bermula, kemudian aliran terputus Sambungan jangka panjang, perubahan rangkaian, dan ralat perkhidmatan
Hanya perbualan panjang atau pemampatan gagal Bandingkan dengan tugas baharu yang kecil; siasat sesi dan ralat pelayan
HTTP 401, 403, 429, atau 5xx Periksa asal respons dan badan untuk pengesahan, polisi, had, atau kegagalan perkhidmatan

Periksa status perkhidmatan OpenAI dan rekod masa serta versi klien. Untuk sembang yang tersekat, OpenAI juga mengesyorkan menyemak kelulusan yang belum selesai dan cuba sembang baharu yang lebih kecil dan fokus. Versi desktop dan CLI mungkin berbeza. Penyelesaian masalah rasmi

Kes tempatan: jawapan DNS yang tidak dijangka mencetuskan DIRECT

Dalam satu penyiasatan macOS yang direkodkan menggunakan Clash Verge Rev dan Mihomo, nod proksi boleh dicapai, tetapi chatgpt.com sepadan dengan peraturan GeoIP/CN dan cuba sambungan terus yang tamat masa. Perbandingan dengan DNS terenkripsi yang dicapai melalui proksi menunjukkan jawapan anomali pada laluan resolusi tempatan.

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

Terdapat dua isu konfigurasi untuk ditangani: laluan resolusi dan keputusan penghalaan. Kes yang direkodkan ini bukan penanda aras atau bukti bahawa kegagalan Codex lain mempunyai punca yang sama. Jawapan anomali sahaja juga tidak boleh mengenal pasti perantara yang bertanggungjawab atau menetapkan keracunan cache DNS secara khusus.

Diagnosis sebelum menukar konfigurasi

Periksa log sambungan

Cari nama hos sebenar dalam ralat, termasuk chatgpt.com atau openai.com. Rekod peraturan yang dipadankan, rantaian sambungan, dan ralat pada masa kegagalan. Sambungan yang sepatutnya menggunakan proksi tetapi memilih DIRECT memerlukan semakan susunan peraturan. Mihomo menilai peraturan penghalaan dari atas ke bawah. Dokumentasi penghalaan

Jika tiada sambungan yang sepadan muncul, mula-mula pastikan sama ada klien itu menggunakan Clash. Kejayaan pelayar tidak menetapkan laluan yang digunakan oleh proses berasingan.

Bandingkan laluan resolusi

Pada macOS, periksa resolver sistem dan jawapan semasanya:

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

Untuk perbandingan terenkripsi, gantikan 7890 dengan port HTTP/mixed Clash anda:

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'

Permintaan ini menggunakan antara muka DNS JSON Cloudflare. Periksa panel sambungan: proksi tempatan yang eksplisit menjamin kemasukan ke dalam Clash, tetapi peraturan Clash masih menentukan egress akhir.

Alamat IP yang berbeza sahaja bukan bukti gangguan. Pemilihan CDN, cache, keluarga alamat, dan Fake-IP boleh menjelaskan perbezaan. Alamat sintetik daripada julat Fake-IP Clash tidak semestinya mencurigakan. Korelasikan jawapan anomali dengan laluan yang salah dan kegagalan, kemudian bandingkan dengan laluan rangkaian lain yang telah disahkan. Dengan TUN didayakan, malah dig @resolver mungkin dipintas; ia tidak secara automatik menjadi ujian upstream yang bebas.

Terapkan peningkatan Clash Verge Rev yang disasarkan

Templat ini memerlukan Clash Verge Rev dengan Mihomo, langganan sedia ada, dan nod proksi yang berfungsi. Ia ialah Script langganan, bukan profil kendiri yang lengkap. Sandarkan konfigurasi semasa terlebih dahulu. Jika anda sudah menggunakan script, integrasikan perubahan ke dalam fungsi main(config) yang sedia ada. Periksa konfigurasi runtime akhir selepas semua langkah peningkatan. Dokumentasi Script Clash Verge Rev

Tetapkan CODEX_PROXY_GROUP kepada kumpulan yang sedia ada dan pilih nod proksi yang berfungsi dalam kumpulan itu. Tetapkan NODE_DNS kepada resolver DoH yang berfungsi sebelum proksi disambungkan dan dapat menyelesaikan nama hos nod dengan betul. Contoh AliDNS bertujuan untuk pengesahan pada rangkaian tanah besar China; gantikannya apabila tidak sesuai. Ia tidak digunakan untuk menyelesaikan domain AI di bawah.

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

Skrip menambah dasar DNS khusus domain dan mendahulukan peraturan proksi sambil mengekalkan peraturan dan dasar domain yang lain. Ia mengubah resolusi nama hos nod. Empat sufiks domain ialah skop permulaan, bukan senarai lengkap bagi setiap ciri Codex, penyedia tersuai, perkhidmatan MCP, atau muat turun tugas.

Mihomo menyokong nameserver-policy khusus domain dan sufiks proksi yang jelas pada alamat pelayan DNS. Resolusi nod memerlukan laluan yang berasingan untuk mengelakkan kebergantungan bulatan. Rujukan konfigurasi DNS

Skrip yang disasarkan mengekalkan tetapan fallback sedia ada. Semak kebergantungan DNS yang lebih luas secara berasingan sebelum menggantikannya. Juga semak pemetaan hosts yang lapuk atau dasar yang bercanggah dan lebih khusus.

Semak TUN secara berasingan

Untuk proses yang tidak menggunakan proksi sistem, dayakan TUN dalam Clash Verge Rev dan sahkan bahawa ia sedang berjalan. Gabungkan medan berikut ke dalam objek TUN sedia ada anda, sambil mengekalkan tetapan yang lain:

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

Ini merangkumi DNS UDP dan TCP pada port 53. Mihomo mendokumenkan had untuk DNS yang ditujukan ke LAN pada macOS dan Windows; DNS terenkripsi yang diuruskan oleh aplikasi juga berada di luar peraturan port-53 ini. Sahkan tingkah laku resolver dan antara muka, bukannya menganggap suis itu meliputi setiap permintaan. Rujukan TUN

Sahkan konfigurasi, penghalaan, dan Codex secara berasingan

Mula-mula semak konfigurasi akhir untuk ralat, rujukan kumpulan, dan susunan peraturan. Jika CLI Mihomo tersedia, mihomo -t -f <final-config-path> menyemak sama ada konfigurasi dapat diparse. Ia tidak membuktikan kesambungan.

Seterusnya periksa penghalaan sambungan sebenar dan jalankan probe HTTPS yang disahkan sijil melalui port tempatan sebenar anda:

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/

Respons daripada perkhidmatan yang dimaksudkan selepas pengesahan sijil berjaya mewujudkan pertukaran HTTP untuk probe ini. Kod 401 atau 403 masih boleh menyekat akses. Ia tidak membuktikan bahawa permintaan Codex yang diautentikasi berfungsi, dan melumpuhkan pengesahan sijil akan membatalkan semakan ini.

Akhir sekali, lengkapkan tugas kecil dalam klien yang pada asalnya gagal. CLI yang dipasang dan diautentikasi boleh menjalankan semakan pilihan berikut, yang membuat permintaan model sebenar dan menggunakan kuota akaun:

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

Kejayaan CLI hanya mengesahkan permintaan CLI itu; uji aplikasi desktop secara berasingan jika di situlah kegagalan berlaku. Semak semula selepas kemas kini langganan, perubahan rangkaian, dan tidur/bangun. Lapisan konfigurasi kemudian atau kumpulan yang dinamakan semula masih boleh memecahkan peningkatan.

Soalan lazim

Adakah menukar DNS sistem kepada 8.8.8.8 mencukupi?

Tidak semestinya. Alamat resolver sahaja tidak menetapkan penyulitan, penghalaan proksi, atau kebolehcapaian. Sahkan resolver, pengangkutan, dan egress bersama-sama.

Mengapa Codex gagal semasa Clash sedang berjalan?

Proses itu mungkin memintas proksi, sepadan dengan peraturan terus, atau bergantung pada DNS nod yang tidak tersedia. Masalah itu juga mungkin tidak berkaitan dengan DNS. Cari sambungan sebenar sebelum menukar beberapa tetapan sekali gus.

Bagaimana jika ia masih terputus?

Jika DNS, TLS, dan penghalaan berfungsi, siasat status perkhidmatan, saiz perbualan, versi klien, kestabilan sambungan nod, dan badan ralat yang tepat. OpenAI mendokumenkan maklum balas dan lokasi log; semak log untuk rahsia sebelum berkongsi. Penyelesaian masalah dan log

Bagaimana saya membatalkan perubahan?

Lumpuhkan Script yang ditambah dan pulihkan profil sandaran, tetapan TUN, dan sebarang tetapan DNS sistem yang anda ubah. Seni bina proxy-providers yang berasingan kemudian boleh mengasingkan langganan nod daripada DNS tempatan dan peraturan, tetapi tidak diperlukan untuk pembaikan yang disasarkan ini.

Untuk langkah pemasangan dan import, lihat Persediaan Clash Verge. Untuk kegagalan lain, lihat Penyelesaian masalah Clash. Anda boleh menggunakan proses diagnostik ini dengan langganan serasi yang sedia ada; membeli perkhidmatan lain bukan prasyarat untuk menguji DNS.