OpenAI Codex CLI 在台港怎麼用?Clash 連線設定教學

OpenAI Codex CLI 讓開發者可直接在終端機取得 AI 程式協助,但連線品質會影響登入與執行結果。本教學帶你用 Clash 完成基本代理和分流設定。

Codex CLI 的連線方式與 Clash 分工

OpenAI Codex CLI 是在終端機裡執行的程式開發工具,可以讀取專案檔案、分析程式碼、提出修改方案,並在取得授權後呼叫 AI 服務。它和瀏覽器裡的聊天頁面不同,請求是由命令列程序直接發出,因此只把瀏覽器設成代理,不代表 Codex CLI 一定能使用同一條連線。

在台灣或香港使用時,最常見的問題不是 Clash 沒有節點,而是不同階段使用了不同的網路路徑。安裝套件時可能需要連線到套件來源,首次登入需要存取授權頁面,執行指令時又需要連線到 API。只要其中一段沒有經過正確代理,就可能出現登入頁打不開、授權回呼失敗、請求逾時或回答執行到一半中斷。

Clash 在這裡負責三件事:提供本機代理連接埠、依網域規則選擇直連或代理,以及在需要時透過 TUN 接管不遵循系統代理的命令列流量。Codex CLI 則負責建立登入狀態與送出 API 請求。兩者不是互相取代的關係,Clash 必須先處於可用狀態,Codex CLI 才能使用設定好的代理。

階段需要的連線建議檢查方式
安裝套件管理工具下載 Codex CLI先確認終端機能使用代理
登入授權頁面、登入服務與回呼瀏覽器與終端機都保持同一代理狀態
執行AI API、模型請求與檔案操作查看 Clash 連線記錄與程序環境變數
更新新版本套件與依賴下載避免只代理 API 網域而忽略套件來源

先分清「登入」與「呼叫 API」

登入頁面能打開,不代表命令列請求已經走代理;反過來,API 可以連線,也不代表瀏覽器授權回呼一定成功。排查時要分別測試瀏覽器、終端機與 Codex CLI 本身,不要只根據其中一項結果下結論。

台港網路環境的代理模式選擇

如果只需要讓 Codex CLI 這類命令列工具使用代理,可以先採用「規則模式加環境變數」,這是影響範圍最小、最容易回復的方案。瀏覽器與其他遵循系統設定的程式則繼續使用系統代理。若終端機仍然無法連線,再改用 TUN 模式,讓所有程序的 TCP 與 DNS 流量都由 Clash 接管。

  • 規則模式:境內網站維持 DIRECT,指定的 AI 服務走代理,適合日常開發與流量控管。
  • 全域模式:所有請求都使用目前選中的節點,適合短時間確認「是否為分流規則造成的問題」,不建議長期使用。
  • TUN 模式:透過虛擬網卡接管不遵循系統代理的程序,適合環境變數無效、套件工具或子程序忽略代理設定的情況。

在 Clash Verge Rev 或其他 mihomo 用戶端中,先確認目前核心不是已停止維護的原版 Clash。設定檔裡常見的混合連接埠是 7890,但實際值可能是 78977898 或自訂埠號,必須以用戶端「設定」或設定檔中的 mixed-port 為準。台灣與香港的家庭網路通常不需要開啟 allow-lan,本機使用時將它設為 false 可以減少區域網路暴露面。

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info

如果你使用 Clash for Windows、ClashX 或 Clash for Android,介面名稱可能不同,但判斷原則一致:確認核心正在執行、節點可以連通、模式已切到 Rule,再確認系統代理或 TUN 是否真的開啟。不要同時啟用兩個 Clash 用戶端,否則常見的 7890 埠衝突會讓其中一個程序無法正常接收請求。

Codex CLI 的 Clash 分流設定

分流時不必把所有流量都送到代理。比較穩定的做法是先為登入與 API 相關網域建立一個獨立策略組,再把這些網域指向策略組。策略組名稱可以依你的訂閱內容調整,以下使用 AI-CODEX 作為示例,並假設它包含一個可用節點。

proxy-groups:
  - name: AI-CODEX
    type: select
    proxies:
      - "香港節點"
      - "台灣節點"
      - DIRECT

rules:
  - DOMAIN-SUFFIX,openai.com,AI-CODEX
  - DOMAIN-SUFFIX,chatgpt.com,AI-CODEX
  - DOMAIN-SUFFIX,oaistatic.com,AI-CODEX
  - DOMAIN-SUFFIX,oaiusercontent.com,AI-CODEX
  - MATCH,DIRECT

這份範例只展示分流思路,實際需要代理的網域會因登入流程、用戶端版本與服務端調整而改變。遇到登入頁可以開啟但 API 仍逾時的情況,先在 Clash 的連線頁查看被拒絕或直連的網域,再把確認屬於登入或 API 流程的網域加入規則,不要盲目使用大量關鍵字規則。

DOMAIN-SUFFIXDOMAIN-KEYWORD 更適合這類設定。後者只要網域中包含某段文字就會命中,容易把不相關的網站一併送進代理。規則順序也很重要:明確的 AI 服務規則必須放在最後的 MATCH 之前;如果 MATCH,DIRECT 提前出現,後面的所有規則都不會生效。

DNS 與 TUN 的配合

只代理 HTTPS 請求而讓 DNS 仍由本地網路解析,可能造成網域解析錯誤或命中錯誤出口。mihomo 可以使用 fake-ip 模式,並透過 TUN 的 DNS 劫持把 UDP 53 查詢交給 Clash。若台港網路環境下直連解析穩定,也可以先使用 redir-host 排查相容性,確認命令列可用後再考慮 fake-ip。

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 1.1.1.1

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53

ipv6: false 是排查階段的保守選擇,可避免系統具備 IPv6、但代理規則只接管 IPv4 時產生繞行。若你的網路、節點與應用程式都已確認支援 IPv6,再按需要開啟。TUN 需要額外權限:Windows 通常要服務模式或系統管理員授權,macOS 需要允許網路擴充功能,安卓則需要接受系統 VPN 請求。

動手設定:讓終端機使用 Clash

以下流程適用於 Windows PowerShell、macOS Terminal 與 Linux shell。開始前先在 Clash 裡選好節點,用瀏覽器確認基本連線,並記下本機混合代理埠。示例使用 127.0.0.1:7890,如果你的介面顯示其他埠號,請全部替換成實際值。

  1. 在 Clash 用戶端開啟系統代理,模式先選 Rule,確認狀態頁顯示核心正在執行。
  2. 在終端機設定代理環境變數。HTTP 與 HTTPS 請求可共用同一個 HTTP 代理端點,不要把 SOCKS5 語法誤填進 HTTP_PROXY。
  3. 測試套件來源與一般 HTTPS 請求,確認 Clash 連線記錄出現對應請求。
  4. 依官方安裝指引安裝 Codex CLI,安裝完成後執行版本查詢,先確認命令已加入 PATH。
  5. 執行登入流程,瀏覽器授權完成後回到終端機,再用一個不涉及敏感檔案的小型專案測試。

各平台環境變數寫法

macOS 與 Linux 可以在目前 shell 中暫時設定:

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1,::1

curl -I https://example.com
codex --version

Windows PowerShell 的寫法如下:

$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"
$env:ALL_PROXY="http://127.0.0.1:7890"
$env:NO_PROXY="localhost,127.0.0.1,::1"

curl.exe -I https://example.com
codex --version

這些變數只對目前的終端機工作階段有效,關閉視窗後通常就會消失。確認設定有效後,再依作業系統需要寫入 shell 設定檔或使用 PowerShell 的使用者環境變數。若公司網路或本機工具只接受 SOCKS5,可把端點改成 socks5://127.0.0.1:7890,但前提是該埠確實提供 SOCKS5 服務;混合埠通常可以自動判斷,仍以 Clash 文件與用戶端顯示為準。

不要把代理變數提交到專案

代理位址通常不包含帳密,但企業環境可能使用帶有認證資訊的代理 URL。請將環境變數放在本機 shell 設定或作業系統使用者設定中,不要寫入 .env、Dockerfile、CI 設定或公開的專案檔案。

登入與執行失敗的排查順序

Codex CLI 出現錯誤時,先不要立即更換節點或重裝用戶端。依照「代理埠、環境變數、分流規則、DNS、登入狀態」的順序排查,通常可以很快定位問題。

  • 出現 connection refused:多半是 Clash 沒有啟動,或環境變數使用了錯誤埠號。檢查 Clash 的 mixed-port,再關閉可能佔用相同埠號的其他代理工具。
  • 登入頁無法打開:查看瀏覽器是否仍使用另一個 VPN 或代理。清除互相衝突的系統代理,讓瀏覽器與終端機暫時使用同一個 Clash 節點。
  • 登入完成但終端機沒有反應:授權回呼可能沒有回到原本的終端機,也可能是瀏覽器與 CLI 不在同一個網路環境。重新執行登入指令,不要在授權過程中切換網路。
  • 請求逾時或 TLS 錯誤:先把模式切換成 Global 做對照。如果 Global 可以使用,代表 Rule 規則或 DNS 判斷有問題;如果仍然失敗,再檢查節點品質、系統時間與代理協定。
  • 只有某個專案失敗:檢查專案內的 shell 腳本、容器設定與子程序是否清除了代理環境變數。Codex CLI 本身能連線,不代表它啟動的每個外部工具都會繼承相同設定。

可以在 Clash 的連線記錄中搜尋與登入或 API 有關的網域,觀察它最後使用的是 AI-CODEXDIRECT 還是其他策略組。若看不到任何請求,代表 CLI 沒有使用這個 Clash 埠,應先檢查環境變數或改用 TUN 模式。若看到請求但連續失敗,可測試另一個台灣、香港或其他地區節點,並比較延遲、握手是否成功與實際回應時間。

現象優先處理項目對照測試
瀏覽器與 CLI 都無法連線節點、Clash 核心與本機代理埠用瀏覽器開啟一般 HTTPS 頁面
瀏覽器正常,CLI 失敗HTTP_PROXY、HTTPS_PROXY 與子程序繼承在同一終端機執行 curl 測試
Global 正常,Rule 失敗網域規則順序與策略組選擇查看連線記錄是否命中 DIRECT
請求偶爾成功、偶爾逾時節點品質、DNS 與並發連線固定單一節點連續測試

常見問題

一定要開啟 TUN 模式才能使用 Codex CLI 嗎?

不一定。Codex CLI 能正確讀取 HTTP_PROXYHTTPS_PROXY 時,使用規則模式即可。當命令列工具、套件管理器或子程序忽略環境變數,再使用 TUN 接管整台裝置。TUN 會擴大代理範圍,開啟前應先確認系統權限與 DNS 設定。

台灣節點與香港節點應該怎麼選?

不要只看延遲數字。先確認節點能完成登入與 API 請求,再比較連續執行時的穩定度。可以建立 AI-CODEX 策略組,手動切換兩地節點觀察 Clash 記錄;若某節點登入成功但長請求頻繁逾時,應以穩定度優先,不必固定追求最低 ping。

設定了 HTTPS_PROXY,為什麼還是顯示網路錯誤?

常見原因包括埠號填錯、Clash 只開啟 SOCKS 埠、環境變數沒有在目前終端機生效,或 Rule 把目標網域送到 DIRECT。先執行 echo $HTTPS_PROXY 或 PowerShell 的 $env:HTTPS_PROXY 確認值,再查看 Clash 是否收到請求。

Codex CLI 可以使用 Clash 的全域模式嗎?

可以,全域模式適合用來做短時間對照測試。確認問題後,建議回到 Rule 模式,只讓登入、API 與必要的套件來源走代理,其餘台港本地服務維持直連,這樣比較容易控制延遲與流量,也方便日後排查。

準備好開始設定了嗎

先取得適合目前平台的 Clash 用戶端,再依照代理模式、分流規則與終端機環境變數逐項測試。每次只修改一個設定,比較容易找到真正影響 Codex CLI 的環節。

下載 Clash 用戶端

規則分流的前提是用戶端先接管流量。前往下載中心依平台選擇用戶端,再回到教學文章完成系統代理或 TUN 接管設定。

下載Clash