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 диагноза. Прекъсната заявка, цикъл на повторно свързване
Отделна дискусия описва сривове по време на remote context compaction. Коментатор предлага да се провери проксито, но дискусията не установява потвърдена причина. Дискусия за compaction
Доклади в X показват сходни въпроси: публикация от 9 септември описва постоянни сривове на потока, а публикация от 6 септември съобщава за SSE idle timeout по време на remote compaction. Нито една не предоставя DNS сравнение. Това са полезни примери за потребителски проблеми, но не установяват обща причина. Доклад за поток в X, Доклад за compaction в X
| Симптом | Какво да се провери |
|---|---|
| Незабавен timeout с грешка от resolver | DNS, достъпност на възела и дали трафикът влиза в Clash |
| ChatGPT работи в браузър, но Codex се проваля | Разлики в проксито, DNS, сертификатите и изходящия трафик |
| Изходът започва, след което потокът се прекъсва | Дълготрайни връзки, промени в мрежата и грешки в услугата |
| Провалят се само дълги разговори или compaction | Сравнете с малка нова задача; проверете за грешки в сесията и сървъра |
| HTTP 401, 403, 429, или 5xx | Проверете произхода и тялото на отговора за проблеми с удостоверяване, политики, лимити или сривове на услугата |
Проверете състоянието на услугите на OpenAI и запишете часа и версията на клиента. При блокирали чатове OpenAI също препоръчва да проверите за чакащи одобрения и да опитате с по-малък, фокусиран нов чат. Версиите за Desktop и CLI може да се различават. Официално отстраняване на проблеми
Локален случай: неочакван DNS отговор задейства DIRECT
В едно документирано разследване на macOS с Clash Verge Rev и Mihomo прокси възлите бяха достъпни, но chatgpt.com съвпадаше с правило GeoIP/CN и правеше опит за директна връзка, която изтичаше по време. Сравнение с криптиран DNS, достигнат през проксито, показа аномален отговор по локалния път за резолвиране.
Request to chatgpt.com
→ anomalous DNS answer
→ no earlier matching OpenAI domain rule
→ GeoIP selects DIRECT
→ connection times out and Codex retries
Тук има два конфигурационни проблема за адресиране: пътят на резолвиране и решението за маршрутизация. Този документиран случай не е еталон и не е доказателство, че други сривове на Codex имат същата причина. Сам по себе си аномален отговор също не може да идентифицира отговорния посредник или конкретно да установи poisoning на DNS кеша.
Диагностицирайте преди да променяте конфигурацията
Проверете журнала на връзките
Потърсете действителното име на хоста в грешката, включително chatgpt.com или openai.com. Запишете съвпадналото правило, веригата на връзката и грешката в момента на срива. Връзка, която трябва да използва прокси, но избира DIRECT, изисква преглед на реда на правилата. Mihomo оценява правилата за маршрутизация отгоре надолу. Документация за маршрутизация
Ако не се появява съвпадаща връзка, първо установете дали този клиент използва Clash. Успехът в браузъра не установява пътя, използван от отделен процес.
Сравнете пътищата за резолвиране
В macOS проверете системния resolver и текущия му отговор:
scutil --dns
dscacheutil -q host -a name chatgpt.com
За криптирано сравнение заменете 7890 с HTTP/mixed порта на вашия 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'
Заявката използва DNS JSON интерфейса на Cloudflare. Проверете панела за връзки: изрично локално прокси гарантира влизане в Clash, но правилата на Clash все пак определят крайния изходящ път.
Различните IP адреси сами по себе си не са доказателство за намеса. Изборът на CDN, кеширането, семействата адреси и Fake-IP могат да обяснят разликите. Синтетичен адрес от диапазона Fake-IP на Clash не е по своята същност подозрителен. Свържете аномалния отговор с неправилния маршрут и срива, след което сравнете с друг проверен мрежов път. При включен TUN дори dig @resolver може да бъде прихванат; това не е автоматично независим тест към upstream.
Приложете целенасочено подобрение за Clash Verge Rev
Този шаблон изисква Clash Verge Rev с Mihomo, съществуващ абонамент и работещ прокси възел. Това е subscription Script, а не цялостен самостоятелен профил. Първо архивирайте текущата конфигурация. Ако вече използвате script, интегрирайте промяната в съществуващата му функция main(config). Проверете крайната конфигурация по време на изпълнение след всички стъпки по подобрението. Документация за Script в Clash Verge Rev
Задайте CODEX_PROXY_GROUP към съществуваща група и изберете работещ proxy възел в тази група. Задайте NODE_DNS към DoH резолвер, който работи преди proxy да се свърже и коректно резолвира имената на хостовете на възлите. Примерът с AliDNS е предназначен за проверка в мрежа от континентален Китай; заменете го, когато не е подходящ. Той не се използва за резолвиране на AI домейните по-долу.
// 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;
}
Скриптът добавя DNS политика за конкретни домейни и поставя proxy правилата в началото, като запазва другите правила и политики за домейни. Той променя резолвирането на имената на хостовете на възлите. Четирите домейнни суфикса са началeн обхват, а не изчерпателен списък на всяка функция на Codex, custom provider, MCP услуга или изтегляне на задача.
Mihomo поддържа nameserver-policy за конкретни домейни и изричен proxy суфикс върху адрес на DNS сървър. Резолвирането на възли се нуждае от независим път, за да се избегне циклична зависимост. Справка за DNS конфигурация
Целевият скрипт запазва съществуващите fallback настройки. Прегледайте по-широките DNS зависимости отделно, преди да ги заменяте. Също така проверете за остарели hosts съпоставяния или конфликтни, по-специфични политики.
Проверете TUN отделно
За процеси, които не използват системния proxy, активирайте TUN в Clash Verge Rev и се уверете, че работи. Обединете следните полета във вашия съществуващ TUN обект, като запазите останалите му настройки:
tun:
enable: true
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
Те обхващат UDP и TCP DNS на порт 53. Mihomo документира ограничения за DNS, насочен към LAN, в macOS и Windows; управляваният от приложенията криптиран DNS също е извън тези правила за порт 53. Проверете поведението на резолвера и интерфейса, вместо да приемате, че превключвателят покрива всяка заявка. Справка за TUN
Проверете конфигурацията, маршрутизацията и Codex поотделно
Първо проверете крайната конфигурация за грешки, препратки към групи и ред на правилата. Ако Mihomo CLI е наличен, mihomo -t -f <final-config-path> проверява дали конфигурацията се парсва. Това не доказва свързаност.
След това проверете действителната маршрутизация на връзката и изпълнете HTTPS проверка с валидиране на сертификата през вашия реален локален порт:
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 обмен за тази проверка. 401 или 403 все още могат да блокират достъпа. Това не доказва, че автентикирана заявка на Codex работи, а изключването на валидирането на сертификата би обезсилило тази проверка.
Накрая изпълнете малка задача в клиента, който първоначално е дал грешка. Инсталиран и автентикиран CLI може да изпълни следната незадължителна проверка, която прави реална заявка към модел и използва квотата на акаунта:
codex exec --skip-git-repo-check --sandbox read-only \
'Reply with exactly: PONG. Do not use tools.'
Успех в CLI потвърждава само тази CLI заявка; тествайте desktop приложението отделно, ако там е възникнал проблемът. Проверете отново след промяна на абонамента, смяна на мрежата и sleep/wake. По-късни конфигурационни слоеве или преименувани групи все още могат да нарушат подобрение.
Често задавани въпроси
Достатъчно ли е да сменя системния DNS на 8.8.8.8?
Не непременно. Сам по себе си адресът на резолвера не осигурява криптиране, proxy маршрутизация или достижимост. Проверете заедно резолвера, транспорта и изходящия път.
Защо Codex се проваля, докато Clash работи?
Процесът може да заобикаля proxy, да съвпада с правило за директна връзка или да зависи от недостъпен DNS за възли. Проблемът може също да не е свързан с DNS. Установете реалната връзка, преди да променяте няколко настройки наведнъж.
Какво ако все още се разкача?
Ако DNS, TLS и маршрутизацията работят, проучете състоянието на услугата, размера на разговора, версията на клиента, стабилността на връзката на възела и точния текст на грешката. OpenAI документира местата за обратна връзка и логове; прегледайте логовете за тайни данни, преди да ги споделите. Отстраняване на проблеми и логове
Как да отменя промяната?
Деактивирайте добавения Script и възстановете резервното копие на профила, TUN настройките и всички системни DNS настройки, които сте променили. Отделна архитектура с proxy-providers може по-късно да изолира абонаментите за възли от локалния DNS и правилата, но не е задължителна за тази целева корекция.
За стъпките по инсталиране и импортиране вижте настройка на Clash Verge. За други проблеми вижте отстраняване на проблеми в Clash. Можете да използвате този диагностичен процес със съществуващ съвместим абонамент; купуването на друга услуга не е предварително условие за тестване на DNS.