解決 Codex Desktop 重複連線 5 次問題的一個簡單技巧

@jinglian
簡體中文1 個月前 · 2026年6月06日
500K
883
151
54
2.2K

TL;DR

本文說明如何透過在應用程式設定檔中正確設定 HTTP 與 HTTPS 代理環境變數,來修復 Codex Desktop 的 WebSocket 握手逾時問題。

前端哥Liam - inline image

2:59

使用 codex Desktop,估计大家经常会遇到下面的情况

前端哥Liam - inline image

而且几乎每次,都是 5 次重试连接之后,都能给出响应,这 5 次重新连接让大家等待了太多时间,纯属浪费。

原因是 codex Desktop 新版升级之后(具体从哪个版本开始,具体不详),默认连接方式改成了 WebSocket 协议。这种连不上,它在日志中直接体现的就是 WebSocket 握手超时

为什么会这样?因为 Codex Desktop 是一个桌面应用,它不像浏览器那样会自动吃系统代理。它启动的时候,需要显式读取环境变量里的 HTTP_PROXY、HTTPS_PROXY 这些,才会走代理。如果这些变量没设,它就以为自己能直达,结果就是等半天没响应,只好进入重连循环。

以 macOS 为例

  1. 在终端里输入下面的命令查看代理信息
text
1scutil --proxy
前端哥Liam - inline image

上面图片显示的 http,https 的代理端口都是 6152,可以手动创建,或者编辑已有的 ~/.codex/.env, 写入代理变量。

text
1HTTP_PROXY=http://127.0.0.1:6152
2HTTPS_PROXY=http://127.0.0.1:6152

编辑完 ~/.codex/.env,保存之后,退出 codex Desktop 后重新打开 codex Desktop,即可解决这个问题。

不想手搓的话,可以使用下面的 Prompt,发送给 Codex

text
1帮我修复 Codex Desktop 一直 Reconnecting 的问题。
2
3请定位我本机正在使用的代理端口和代理协议,然后创建或更新 ~/.codex/.env,写入以下代理配置。不要写死端口,请替换成实际端口;如果文件已经存在,保留其他配置。
4
5HTTP_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"
6HTTPS_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"
7
8写入后检查配置是否正确,并告诉我需要如何重启 Codex Desktop。

当然,你也可以试一下,我的一键自动化脚本(只适用macOS)

bash
1#!/bin/bash
2# 检测 macOS 系统代理并更新 ~/.codex/.env
3
4ENV_DIR="$HOME/.codex"
5ENV_FILE="$ENV_DIR/.env"
6
7# 读取系统代理配置
8proxy_info=$(scutil --proxy)
9
10http_enabled=$(echo "$proxy_info" | awk '/HTTPEnable/{print $3}')
11http_host=$(echo "$proxy_info" | awk '/HTTPProxy/{print $3}')
12http_port=$(echo "$proxy_info" | awk '/HTTPPort/{print $3}')
13
14https_enabled=$(echo "$proxy_info" | awk '/HTTPSEnable/{print $3}')
15https_host=$(echo "$proxy_info" | awk '/HTTPSProxy/{print $3}')
16https_port=$(echo "$proxy_info" | awk '/HTTPSPort/{print $3}')
17
18# 构建代理 URL
19http_proxy=""
20https_proxy=""
21
22if [[ "$http_enabled" == "1" && -n "$http_host" && -n "$http_port" ]]; then
23 http_proxy="http://${http_host}:${http_port}"
24fi
25
26if [[ "$https_enabled" == "1" && -n "$https_host" && -n "$https_port" ]]; then
27 https_proxy="http://${https_host}:${https_port}"
28fi
29
30# 如果 HTTP 代理和 HTTPS 代理都没有
31if [[ -z "$http_proxy" && -z "$https_proxy" ]]; then
32 echo "❌ 未检测到系统代理,当前无代理设置。"
33 exit 0
34fi
35
36# HTTPS 未单独设置时,复用 HTTP 代理
37if [[ -n "$http_proxy" && -z "$https_proxy" ]]; then
38 https_proxy="$http_proxy"
39fi
40
41echo "✅ 检测到系统代理:"
42[[ -n "$http_proxy" ]] && echo " HTTP_PROXY=$http_proxy"
43[[ -n "$https_proxy" ]] && echo " HTTPS_PROXY=$https_proxy"
44
45# 确保目录存在
46mkdir -p "$ENV_DIR"
47
48# 如果 .env 文件不存在,直接创建
49if [[ ! -f "$ENV_FILE" ]]; then
50 {
51 [[ -n "$http_proxy" ]] && echo "HTTP_PROXY=$http_proxy"
52 [[ -n "$https_proxy" ]] && echo "HTTPS_PROXY=$https_proxy"
53 } > "$ENV_FILE"
54 echo "📄 已创建 $ENV_FILE 并写入代理配置。"
55 exit 0
56fi
57
58# 文件已存在,更新或追加
59update_or_append() {
60 local key="$1" value="$2"
61 if grep -q "^${key}=" "$ENV_FILE"; then
62 sed -i '' "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
63 echo "🔄 已更新 ${key}"
64 else
65 echo "${key}=${value}" >> "$ENV_FILE"
66 echo "➕ 已追加 ${key}"
67 fi
68}
69
70[[ -n "$http_proxy" ]] && update_or_append "HTTP_PROXY" "$http_proxy"
71[[ -n "$https_proxy" ]] && update_or_append "HTTPS_PROXY" "$https_proxy"
72
73echo "✅ $ENV_FILE 已更新完成。"

想‮速快‬入门 AI,但不‮道知‬从哪开始?

AI Spark 免‮整费‬理了一份 AI 知识库,覆盖 AI 基础、知‮库识‬搭建、工‮流作‬应用、主流 AI 工具、Obsidian、Codex、Skill 和 Prompt 实战。

免‮知费‬识库:

https://lcnniolukk80.feishu.cn/wiki/space/7644091204958866380?ccm_open_type=lark_wiki_spaceLink&open_tab_from=wiki_home

一鍵儲存

使用 YouMind AI 深度閱讀爆款文章

保存原文、追問細節、總結觀點,並在一個 AI 工作空間裡把爆款文章沉澱成可複用筆記。

了解 YouMind
寫給創作者

把你的 Markdown 變成乾淨的 𝕏 文章

圖片上傳、表格、程式碼區塊,往 𝕏 上手動重排太痛苦。YouMind 把整篇 Markdown 一鍵轉成乾淨、可直接發佈的 𝕏 文章草稿。

試試 Markdown 轉 𝕏

更多可拆解樣本

近期爆款文章

探索更多爆款文章