Codex Terus Menyambung Ulang? Periksa DNS dan Routing Clash

Terakhir diperbarui: 2026-09-10

Kesalahan Codex seperti Reconnecting..., stream disconnected before completion, dan error sending request dapat melibatkan gangguan DNS atau routing Clash yang salah. Panduan ini menjelaskan cara menyelidiki kemungkinan itu, menerapkan peningkatan Clash Verge Rev yang ditargetkan, dan memverifikasi hasilnya.

Apa yang sebenarnya ditunjukkan laporan komunitas

Pengguna Reddit melaporkan tugas yang terputus yang menargetkan chatgpt.com/backend-api/codex/responses, percobaan sambung ulang berulang, dan kesalahan body respons. Laporan-laporan ini menunjukkan gejala, bukan diagnosis DNS. Request terputus, loop penyambungan ulang

Diskusi terpisah menggambarkan kegagalan selama remote context compaction. Seorang komentator menyarankan untuk memeriksa proxy, tetapi diskusi tersebut tidak menetapkan penyebab yang terverifikasi. Diskusi compaction

Laporan di X menunjukkan pertanyaan serupa: postingan 9 September menggambarkan kegagalan stream yang persisten, sementara postingan 6 September melaporkan SSE idle timeout selama remote compaction. Keduanya tidak memberikan perbandingan DNS. Ini adalah contoh yang berguna tentang masalah pengguna, tetapi tidak menetapkan penyebab yang sama. Laporan stream X, Laporan compaction X

Gejala Apa yang perlu diperiksa
Timeout langsung dengan error resolver DNS, keterjangkauan node, dan apakah trafik masuk ke Clash
ChatGPT berfungsi di browser tetapi Codex gagal Perbedaan pada proxy, DNS, sertifikat, dan egress
Output dimulai, lalu stream terputus Koneksi jangka panjang, perubahan jaringan, dan error layanan
Hanya percakapan panjang atau compaction yang gagal Bandingkan dengan tugas baru yang kecil; selidiki session dan error server
HTTP 401, 403, 429, atau 5xx Periksa asal dan body respons untuk autentikasi, kebijakan, batas, atau kegagalan layanan

Periksa status layanan OpenAI dan catat waktu serta versi klien. Untuk chat yang macet, OpenAI juga merekomendasikan memeriksa approval yang tertunda dan mencoba chat baru yang lebih kecil dan terfokus. Versi desktop dan CLI dapat berbeda. Pemecahan masalah resmi

Kasus lokal: jawaban DNS yang tidak terduga memicu DIRECT

Dalam satu investigasi macOS yang dicatat menggunakan Clash Verge Rev dan Mihomo, node proxy dapat dijangkau, tetapi chatgpt.com cocok dengan aturan GeoIP/CN dan mencoba koneksi langsung yang time out. Perbandingan dengan DNS terenkripsi yang dijangkau melalui proxy menunjukkan jawaban yang anomali pada jalur resolusi lokal.

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

Ada dua masalah konfigurasi yang perlu ditangani: jalur resolusi dan keputusan routing. Kasus yang dicatat ini bukan tolok ukur atau bukti bahwa kegagalan Codex lain memiliki penyebab yang sama. Jawaban yang anomali saja juga tidak dapat mengidentifikasi perantara yang bertanggung jawab atau menetapkan secara khusus DNS cache poisoning.

Diagnosa sebelum mengubah konfigurasi

Periksa connection log

Cari hostname yang sebenarnya di error, termasuk chatgpt.com atau openai.com. Catat rule yang cocok, connection chain, dan error pada waktu kegagalan. Koneksi yang seharusnya menggunakan proxy tetapi memilih DIRECT memerlukan peninjauan urutan rule. Mihomo mengevaluasi routing rules dari atas ke bawah. Dokumentasi routing

Jika tidak ada connection yang cocok muncul, pertama-tama pastikan apakah klien tersebut menggunakan Clash. Keberhasilan browser tidak menetapkan jalur yang digunakan oleh proses terpisah.

Bandingkan jalur resolusi

Di macOS, periksa system resolver dan jawaban saat ini:

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

Untuk perbandingan terenkripsi, ganti 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'

Request menggunakan antarmuka DNS JSON Cloudflare. Periksa connection panel: proxy lokal eksplisit menjamin entri ke Clash, tetapi aturan Clash tetap menentukan egress akhir.

Alamat IP yang berbeda saja bukan bukti adanya gangguan. Pemilihan CDN, caching, address family, dan Fake-IP dapat menjelaskan perbedaan. Alamat sintetis dari rentang Fake-IP Clash tidak secara inheren mencurigakan. Korelasikan jawaban yang anomali dengan rute yang salah dan kegagalan, lalu bandingkan dengan jalur jaringan terverifikasi lain. Dengan TUN aktif, bahkan dig @resolver dapat diintersep; itu tidak otomatis menjadi pengujian upstream yang independen.

Terapkan peningkatan Clash Verge Rev yang ditargetkan

Template ini memerlukan Clash Verge Rev dengan Mihomo, subscription yang sudah ada, dan node proxy yang berfungsi. Ini adalah subscription Script, bukan profil lengkap mandiri. Cadangkan konfigurasi saat ini terlebih dahulu. Jika Anda sudah menggunakan script, integrasikan perubahan ke dalam fungsi main(config) yang sudah ada. Periksa konfigurasi runtime akhir setelah semua langkah peningkatan. Dokumentasi Script Clash Verge Rev

Setel CODEX_PROXY_GROUP ke grup yang sudah ada dan pilih node proxy yang berfungsi di grup itu. Setel NODE_DNS ke resolver DoH yang berfungsi sebelum proxy terhubung dan dapat menyelesaikan hostname node dengan benar. Contoh AliDNS ditujukan untuk validasi pada jaringan daratan Tiongkok; gantilah bila tidak sesuai. Itu tidak digunakan untuk menyelesaikan domain AI di bawah ini.

// 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 menambahkan kebijakan DNS khusus domain dan menambahkan aturan proxy di depan sambil tetap mempertahankan aturan dan kebijakan domain lainnya. Script ini mengubah resolusi hostname node. Empat suffix domain adalah cakupan awal, bukan daftar lengkap dari setiap fitur Codex, provider kustom, layanan MCP, atau unduhan task.

Mihomo mendukung nameserver-policy khusus domain dan suffix proxy eksplisit pada alamat server DNS. Resolusi node memerlukan jalur independen untuk menghindari ketergantungan melingkar. Referensi konfigurasi DNS

Script yang ditargetkan mempertahankan pengaturan fallback yang sudah ada. Tinjau ketergantungan DNS yang lebih luas secara terpisah sebelum menggantinya. Periksa juga pemetaan hosts yang sudah usang atau kebijakan yang lebih spesifik dan saling bertentangan.

Periksa TUN secara terpisah

Untuk proses yang tidak menggunakan proxy sistem, aktifkan TUN di Clash Verge Rev dan verifikasi bahwa TUN berjalan. Gabungkan field berikut ke objek TUN yang sudah ada, sambil mempertahankan pengaturan lainnya:

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

Ini mencakup DNS UDP dan TCP pada port 53. Mihomo mendokumentasikan keterbatasan untuk DNS yang diarahkan ke LAN di macOS dan Windows; DNS terenkripsi yang dikelola aplikasi juga berada di luar aturan port 53 ini. Verifikasi perilaku resolver dan antarmuka, bukan menganggap toggle tersebut mencakup setiap permintaan. Referensi TUN

Verifikasi konfigurasi, routing, dan Codex secara terpisah

Pertama, periksa konfigurasi akhir untuk kesalahan, referensi grup, dan urutan aturan. Jika CLI Mihomo tersedia, mihomo -t -f <final-config-path> memeriksa apakah konfigurasi dapat diparse. Ini tidak membuktikan konektivitas.

Selanjutnya, periksa routing koneksi yang sebenarnya dan jalankan probe HTTPS yang diverifikasi sertifikat melalui port lokal Anda yang sebenarnya:

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 dari layanan yang dituju setelah verifikasi sertifikat berhasil menetapkan pertukaran HTTP untuk probe ini. Status 401 atau 403 tetap dapat memblokir akses. Ini tidak membuktikan bahwa request Codex yang diautentikasi berhasil, dan menonaktifkan verifikasi sertifikat akan membatalkan pemeriksaan ini.

Terakhir, selesaikan tugas kecil di klien yang awalnya gagal. CLI yang terpasang dan diautentikasi dapat menjalankan pemeriksaan opsional berikut, yang membuat request model nyata dan menggunakan kuota akun:

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

Keberhasilan CLI hanya memverifikasi request CLI tersebut; uji aplikasi desktop secara terpisah jika kegagalan terjadi di sana. Periksa ulang setelah pembaruan langganan, perubahan jaringan, dan sleep/wake. Lapisan konfigurasi yang lebih baru atau grup yang diganti namanya tetap dapat merusak peningkatan.

Pertanyaan yang sering diajukan

Apakah mengubah system DNS ke 8.8.8.8 sudah cukup?

Tidak selalu. Alamat resolver saja tidak menetapkan enkripsi, routing proxy, atau keterjangkauan. Verifikasi resolver, transport, dan egress secara bersama-sama.

Mengapa Codex gagal saat Clash berjalan?

Proses tersebut mungkin melewati proxy, cocok dengan rule direct, atau bergantung pada node DNS yang tidak tersedia. Masalahnya juga mungkin tidak terkait dengan DNS. Temukan koneksi yang sebenarnya sebelum mengubah beberapa pengaturan sekaligus.

Bagaimana jika masih terputus?

Jika DNS, TLS, dan routing berfungsi, periksa status layanan, ukuran percakapan, versi klien, stabilitas koneksi node, dan body error yang tepat. OpenAI mendokumentasikan lokasi umpan balik dan log; tinjau log untuk rahasia sebelum membagikannya. Pemecahan masalah dan log

Bagaimana cara membatalkan perubahan?

Nonaktifkan Script yang ditambahkan dan pulihkan profil cadangan, pengaturan TUN, dan semua pengaturan system DNS yang Anda ubah. Arsitektur proxy-providers terpisah nantinya dapat mengisolasi subscription node dari DNS dan aturan lokal, tetapi tidak diperlukan untuk perbaikan yang ditargetkan ini.

Untuk langkah instalasi dan impor, lihat Clash Verge setup. Untuk kegagalan lainnya, lihat Clash troubleshooting. Anda dapat menggunakan proses diagnostik ini dengan subscription yang kompatibel yang sudah ada; membeli layanan lain bukan prasyarat untuk menguji DNS.