先確認 Codex CLI 與 Clash Verge 的分工
OpenAI Codex CLI 是在終端機中使用 AI 輔助程式開發的命令列工具,可以協助閱讀專案、解釋程式碼、提出修改方案,並在使用者確認後執行部分檔案操作或指令。Clash Verge 則是圖形化代理用戶端,負責匯入訂閱、啟動 mihomo 核心、套用分流規則,以及在本機提供 HTTP、SOCKS 或 mixed 代理連接埠。兩者不是同一類軟體:Codex CLI 負責發出網路請求,Clash Verge 負責替它轉送符合規則的流量。
在台灣或香港使用 Codex CLI 時,實際體驗通常取決於四個環節:帳號與登入狀態是否有效、終端機是否讀取代理環境變數、Clash Verge 的節點與規則是否正常,以及 DNS、TLS 或 IPv6 路徑是否穩定。瀏覽器能正常開啟網頁,不代表命令列工具一定會使用相同的代理;瀏覽器內建的代理擴充功能,也不會自動套用到 Terminal、PowerShell 或其他開發工具。
| 元件 | 主要工作 | 常見檢查位置 |
|---|---|---|
| Codex CLI | 登入、提交請求、接收模型回應與執行互動流程 | 終端機輸出、環境變數、工具版本 |
| Clash Verge | 代理轉送、規則比對、節點選擇與連線日誌 | Profiles、Proxies、Logs、Settings |
| mihomo 核心 | 監聽本機連接埠、建立出站連線、執行 DNS 與規則 | 核心日誌、設定檔、控制連接埠 |
| 作業系統終端機 | 將 HTTP(S) 或 SOCKS 代理設定傳給 CLI 程式 | PowerShell、Shell、環境變數 |
在 Clash Verge 匯入訂閱並確認核心
第一次設定時,建議先讓 Clash Verge 只完成「可以啟動核心並代理一般 HTTPS 流量」這個目標,不要一開始就同時開啟 TUN、複雜 DNS 覆寫、腳本與大量規則集。設定越少,越容易知道問題是在訂閱、節點、系統代理,還是 Codex CLI 本身。
- 開啟 Clash Verge,進入設定檔或 Profiles 頁面,選擇從 URL 匯入。
- 貼上服務提供者給你的 Clash、Clash Meta 或 mihomo 格式訂閱網址。
- 完成下載後,確認設定檔能通過 YAML 與核心欄位檢查,再將它設為目前使用的設定。
- 進入代理頁面,先選擇一個延遲穩定的節點或策略組,不要只依據一次測速結果判斷。
- 在 Clash Verge 的設定頁確認 mixed port。常見值是
7890,但實際值必須以畫面顯示為準。 - 先開啟系統代理,再用瀏覽器或命令列測試一般 HTTPS 網站;確認成功後才測試 Codex CLI。
不同版本的 Clash Verge 或 Clash Verge Rev,選單名稱可能略有差異。你可能看到「Profiles」「Proxies」「Settings」「General」或中文翻譯後的「設定檔」「代理」「設定」。不要把控制介面連接埠當作網頁代理連接埠。前者通常是 9090,用於客戶端管理核心;後者通常是 7890 或其他 mixed port,才是終端機應使用的代理入口。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
allow-lan: false 適合單機使用,可避免區域網路內其他裝置直接連入本機代理。若你把 allow-lan 開啟,必須同時理解區域網路暴露、密碼與防火牆的風險。Codex CLI 通常只需要本機回環位址 127.0.0.1,不需要讓區域網路存取代理。
讓終端機使用 Clash Verge 的代理
Clash Verge 顯示已連線,不代表每個命令列程式都會自動走代理。最穩定的做法,是在目前終端機工作階段明確設定 HTTP_PROXY、HTTPS_PROXY 與 ALL_PROXY。HTTP(S) 代理通常使用 http://127.0.0.1:7890;SOCKS5 代理則常見為 socks5://127.0.0.1:7891,但必須依 Clash Verge 實際開啟的連接埠調整。
macOS 與 Linux 設定方式
在 Bash、Zsh 或其他相容 Shell 中,可先於目前視窗設定環境變數。這種方式只影響目前終端機,適合測試,不會改動所有應用程式的全域設定。
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=socks5://127.0.0.1:7891
curl -I https://api.openai.com/
如果測試後確定需要長期使用,可以把設定放進 ~/.zshrc 或 ~/.bashrc,再重新開啟終端機。工作機與個人機的需求不同,建議不要在共用帳號或受管理裝置上無條件寫入全域設定。若公司網路有自己的安全代理,應先確認 Clash 與公司代理的使用規範,避免形成多層代理或繞過管理政策。
Windows PowerShell 設定方式
PowerShell 可以使用 $env: 語法設定目前視窗的環境變數。完成測試後,關閉視窗即可清除這些暫時設定。
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"
$env:ALL_PROXY="socks5://127.0.0.1:7891"
curl.exe -I https://api.openai.com/
Windows 內建的 curl 在 PowerShell 中可能會被別名行為影響,因此排查時使用 curl.exe 會比較明確。若命令回傳 HTTP 回應,代表 DNS、TCP、TLS 與代理轉送至少已經走到服務端;若顯示無法連接 127.0.0.1:7890,應回到 Clash Verge 確認核心是否啟動、連接埠是否一致,以及是否有其他程式占用該連接埠。
確認 Codex CLI 是否讀取代理
不同版本的 CLI、執行環境與底層 HTTP 函式庫,對代理環境變數的支援細節可能不同。不要只假設「已設定變數」就一定生效。可先觀察 Clash Verge 的連線日誌,再執行 Codex CLI 的登入或簡單查詢流程。如果日誌中完全沒有對應請求,問題可能是 CLI 不讀取該變數、使用了不同的代理設定,或請求在本機驗證階段就已中止。
- 確認環境變數名稱使用大寫形式,並檢查值中沒有多餘空格或引號。
- 確認代理 URL 的協定與連接埠相符,HTTP proxy 與 SOCKS5 proxy 不要混填。
- 若只希望測試 Codex CLI,不要同時開啟多個終端機並設定不同代理。
- 若工具提供自己的網路或代理參數,優先閱讀該版本的內建說明,避免與環境變數互相覆蓋。
- 不要把 API 金鑰、登入權杖或完整錯誤輸出貼到公開平台。
為 Codex CLI 建立合適的分流規則
如果只是讓 Codex CLI 通過 Clash Verge 連線,最簡單的方式是先使用系統代理與目前策略組,不必立刻新增規則。當你希望開發工具的請求固定走某個策略、而一般台灣或香港網站維持直連時,才需要在設定檔中加入更明確的分流規則。
規則通常依序由上而下比對,越具體的網域規則應放在較前面。OpenAI 相關主網域、API 網域、登入頁面與認證流程可能使用不同主機名稱;實際以當前版本的網路日誌、官方說明與登入時產生的連線為準,不應只憑一份過時網域清單。對於未知的第三方遙測、套件下載或文件資源,也不要為了「全部代理」而盲目新增廣泛規則。
rules:
- DOMAIN-SUFFIX,openai.com,AI
- DOMAIN-SUFFIX,oaistatic.com,AI
- DOMAIN-SUFFIX,oaiusercontent.com,AI
- GEOIP,PRIVATE,DIRECT
- MATCH,DIRECT
上面只是展示分流結構的範例,AI 必須替換為你設定檔中實際存在的策略組名稱,例如「節點選擇」或某個自動選擇群組。若策略組不存在,核心會在驗證設定或執行規則時回報錯誤。你也可以把最後的 MATCH 設為另一個通用代理群組,但應先理解這會影響所有沒有被前面規則命中的流量。
| 做法 | 優點 | 可能問題 | 適用情境 |
|---|---|---|---|
| 全部依系統代理 | 設定最少,容易排查 | 其他流量也可能使用同一節點 | 首次測試與臨時使用 |
| 指定 OpenAI 網域 | 流量邊界較清楚 | 新網域或登入服務變更時需檢查 | 日常開發與需要穩定分流 |
| 全部流量代理 | 不容易因漏規則而直連 | 本地服務、套件鏡像與區域網站可能變慢 | 短時間排查網路問題 |
台灣與香港常見連線問題排查
台灣與香港的網路供應商、辦公室防火牆、IPv6 配置與 DNS 行為不完全相同。即使同一個訂閱在家用寬頻正常,換到公司網路、校園網路或手機熱點,也可能出現逾時、TLS 中斷或登入回呼失敗。排查時應記錄「使用哪個網路、哪個節點、哪個終端機、哪個時間」,不要只寫「不能用」。
timeout 與 connection reset
timeout 通常表示在 DNS、TCP、TLS 或資料傳輸其中一個階段等待過久;connection reset 則表示連線被本地網路、中間設備或遠端服務主動中止。先在 Clash Verge 中切換另一個節點,再觀察相同請求是否恢復。若所有節點都失敗,應檢查本機代理連接埠、DNS 與防火牆;若只有單一節點失敗,問題較可能出在節點伺服器或其上游線路。
DNS 與 IPv6 造成的差異
終端機可能使用作業系統解析器,而 Clash 核心則可能使用自己的 DNS 設定。兩者得到不同 IP 時,會出現瀏覽器與 CLI 結果不一致。可先在 Clash Verge 的 DNS 設定中使用清楚、可追蹤的解析策略,並觀察核心日誌。若目前網路的 IPv6 路徑不穩定,可暫時測試關閉 IPv6 優先或改用能正常處理 IPv4 的節點;這是排查手段,不代表所有環境都應永久停用 IPv6。
登入回呼與本機連接埠
部分 CLI 登入流程會在本機開啟暫時 HTTP 連接埠,等待瀏覽器完成授權後回呼終端機。這類回呼通常是本機 localhost 或 127.0.0.1,不應被代理轉送到遠端節點。若你設定了全域代理,可以加入本機繞過環境變數,或在 Clash 的設定中保留私有網段與回環位址直連。
export NO_PROXY=localhost,127.0.0.1,::1
export no_proxy=localhost,127.0.0.1,::1
Windows PowerShell 可使用以下形式:
$env:NO_PROXY="localhost,127.0.0.1,::1"
$env:no_proxy="localhost,127.0.0.1,::1"
若登入瀏覽器已完成,但終端機仍停在等待回呼,請確認沒有同時啟動兩個 Codex CLI 登入流程,也沒有被防毒軟體或系統防火牆阻擋暫時連接埠。完成登入後,可關閉舊終端機並重新開啟一個只保留必要環境變數的視窗,避免殘留錯誤代理參數。
安全使用與穩定化設定
Codex CLI 可能讀取專案檔案、執行命令或提出檔案修改建議,因此網路通了之後仍要處理權限與資料邊界。不要在含有生產環境密鑰、客戶資料、私有憑證或未提交機密的目錄中直接進行高權限操作。對每次檔案修改與命令執行先閱讀差異,尤其是會刪除檔案、修改依賴、變更部署設定或上傳資料的命令。
- 將 API 金鑰、訂閱權杖與 SSH 私鑰放在環境變數或受保護的憑證管理工具,不要寫入專案檔。
- 使用專案根目錄中的忽略規則,避免把
.env、憑證、日誌與快取送入不應公開的位置。 - 第一次測試可建立獨立的測試專案,先確認 CLI 的讀取與修改範圍,再進入正式程式庫。
- 代理日誌可能記錄網域、連接時間與錯誤,不要將包含路徑參數或權杖的完整日誌公開。
- 不要為了讓 CLI 連線而關閉作業系統防火牆、停用 TLS 驗證,或安裝來源不明的憑證。
- 若公司或學校有網路使用政策,應依規定設定代理,不能用 Clash Verge 規避存取控管。
建議採用由簡到繁的驗證順序:先確認 Clash Verge 核心啟動,再確認本機代理連接埠,接著用 curl 測試 HTTPS,然後設定 Codex CLI 的代理環境變數,最後才加入 OpenAI 網域分流與 TUN。每一步只改一個變數,並記錄結果。這樣即使出現錯誤,也能迅速回到上一個已知正常的設定。