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,但實際值可能是 7897、7898 或自訂埠號,必須以用戶端「設定」或設定檔中的 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-SUFFIX 比 DOMAIN-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,如果你的介面顯示其他埠號,請全部替換成實際值。
- 在 Clash 用戶端開啟系統代理,模式先選 Rule,確認狀態頁顯示核心正在執行。
- 在終端機設定代理環境變數。HTTP 與 HTTPS 請求可共用同一個 HTTP 代理端點,不要把 SOCKS5 語法誤填進 HTTP_PROXY。
- 測試套件來源與一般 HTTPS 請求,確認 Clash 連線記錄出現對應請求。
- 依官方安裝指引安裝 Codex CLI,安裝完成後執行版本查詢,先確認命令已加入 PATH。
- 執行登入流程,瀏覽器授權完成後回到終端機,再用一個不涉及敏感檔案的小型專案測試。
各平台環境變數寫法
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-CODEX、DIRECT 還是其他策略組。若看不到任何請求,代表 CLI 沒有使用這個 Clash 埠,應先檢查環境變數或改用 TUN 模式。若看到請求但連續失敗,可測試另一個台灣、香港或其他地區節點,並比較延遲、握手是否成功與實際回應時間。
| 現象 | 優先處理項目 | 對照測試 |
|---|---|---|
| 瀏覽器與 CLI 都無法連線 | 節點、Clash 核心與本機代理埠 | 用瀏覽器開啟一般 HTTPS 頁面 |
| 瀏覽器正常,CLI 失敗 | HTTP_PROXY、HTTPS_PROXY 與子程序繼承 | 在同一終端機執行 curl 測試 |
| Global 正常,Rule 失敗 | 網域規則順序與策略組選擇 | 查看連線記錄是否命中 DIRECT |
| 請求偶爾成功、偶爾逾時 | 節點品質、DNS 與並發連線 | 固定單一節點連續測試 |
常見問題
一定要開啟 TUN 模式才能使用 Codex CLI 嗎?
不一定。Codex CLI 能正確讀取 HTTP_PROXY 與 HTTPS_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 用戶端
規則分流的前提是用戶端先接管流量。前往下載中心依平台選擇用戶端,再回到教學文章完成系統代理或 TUN 接管設定。