將 Windows 11 Pro 安裝使用 ChatGPT Codex CLI 的過程記錄下來,不過依照目前版本更迭速度這麼快的情況,可能過一兩個月又會大大不同了。
什麼是 ChatGPT Codex CLI?
ChatGPT Codex CLI 是一個命令列介面工具,讓你可以直接在終端機或 shell 環境下與 ChatGPT(特別是 Codex 類型的程式碼模型)互動,不必透過瀏覽器的 web 介面。它的用途是將 Codex 的產生程式碼、解釋與修改能力帶到你的本地開發流程中,方便在編輯器、腳本、或自動化流程裡即時使用。

Codex 在 ChatGPT 的 Web 介面就有連結可以進入使用,但是與 Codex CLI 相比還是有很大的差別。
與在 Web 介面使用 Codex 的差異
項目 | Web 介面(ChatGPT/Codex) | Codex CLI |
---|---|---|
使用方式 | 在瀏覽器內操作、圖形介面 | 在終端機透過指令操作 |
整合性 | 較偏向人工互動,複製貼上到 IDE | 易於整合到本地開發流程、CI/CD、腳本 |
檔案處理 | 需手動上傳或貼上 | 可直接讀取/修改本地檔案 |
自動化 | 無法直接串接 shell pipeline | 可搭配 shell 腳本、makefile、自動化工具 |
歷史記錄 | Web UI 有對話紀錄 | CLI 視設定而定,可用本地檔案保存 |
登入方式 | Web 帳號登入 | API key 或 OAuth(取決於設定) |
Codex CLI 與 Github Copilot Agent mode 有什麼差別?
Codex CLI 與 Copilot Agent 在多檔處理上的比較
項目 | Codex CLI | GitHub Copilot Agent 模式 |
---|---|---|
多檔案支援 | O(透過批次指令或腳本一次處理) | O(內建跨檔操作能力) |
跨檔理解專案架構 | X(除非你自己提供 context) | O(可直接讀取專案檔案樹與內容) |
整合度 | 命令列工具,需自行串接到開發流程 | 深度整合 IDE,可即時修改檔案 |
自動化能力 | 高,可結合 CI/CD、shell script | 低,偏人工互動 |
可用性 | 任何支援命令列的環境 | 限定支援 Copilot Chat / Agent 的 IDE |
回應格式控制 | 高,可用 prompt 控制輸出格式 | 中,受 IDE 編輯器呈現限制 |
簡單比喻
- Codex CLI:像一位你可以請到終端機來幫忙的程式助理,他能一次處理一堆檔案,但你得告訴他要改哪些、改法是什麼,而且你要自己把結果存回專案。
- Copilot Agent:像坐在你旁邊的高級對話式 IDE 助手,他可以自己翻專案檔案、找需要改的地方,直接幫你改好並存檔。
Windows 11 Pro 環境要安裝使用 Code CLI 需要先準備好什麼?
在 Windows 11 Pro 環境下要安裝並使用 Codex CLI,基本上需要先準備好幾個環境條件,確保 CLI 可以正常運作和連線到 OpenAI 服務。
基本開發環境
Node.js 與 npm
- Codex CLI 是用 JavaScript/TypeScript 寫的,所以需要 Node.js。
- 建議安裝 LTS 版本(例如 Node.js 20.x LTS)。
- 下載:https://nodejs.org/
安裝完檢查

Python 3
- 某些登入/認證流程(例如
codex login
)會需要 Python 來執行子程序。 - 建議安裝 Python 3.12.x(目前最穩定版本之一)。
- 勾選 "Add Python to PATH" 選項。
https://www.python.org/downloads/release/python-31210/

下載 Windwos Installer (64-bit)

安裝 Python 3.12.10 (64-bit)


安裝後檢查

設定 PowerShell 執行原則
避免 npm.ps1
被擋
# PowerShell 的安全設定調整,用來允許你在本機執行 PowerShell 腳本
# -Scope CurrentUser: 只針對目前的使用者,不影響其他帳號
# -ExecutionPolicy RemoteSigned:允許本機建立的腳本直接執行;從網路下載的腳本必須有數位簽章
# -Force: 自動接受變更,不再詢問確認
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force
# 驗證目前各層級的設定
Get-ExecutionPolicy -List
安裝 Codex CLI
在 PowerShell 執行:
npm install -g @openai/codex

登入 Codex CLI
在 PowerShell 執行:
codex login
如果執行後看到的訊息是:
PS D:\develop> codex login
Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Apps > Advanced app settings > App execution aliases.
Error logging in: login_with_chatgpt subprocess failed:
先把「Python 指令不可用」這件事處理好,再登入。
在 PowerShell 依序執行下面 4 行:
python --version
py -V
where python
where py
這四行可以判斷目前是否已安裝 Python、路徑是否正確、以及是否只有 py
而沒有 python
可執行檔。
如果執行過程中有出現任何環境變數的問題而導致執行 codex login
出現錯誤,我會建議直接複製 command line 出現的訊息,然後直接問 ChatGPT。
我所遇到的狀況是:
PS D:\develop> codex login
Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Apps > Advanced app settings > App execution aliases.
Error logging in: login_with_chatgpt subprocess failed:
PS D:\develop>
經過一連串的設定與找尋後,失敗的原因是 Windows 有兩個 python.exe:
- 真正的 Python
C:\Users\UserName\AppData\Local\Programs\Python\Python312\python.exe
O - Microsoft Store 的假別名(會導向安裝頁面)
C:\Users\UserName\AppData\Local\Microsoft\WindowsApps\python.exe
X
Codex CLI 在呼叫 Python 時,命中了第二個(假別名),所以它以為沒安裝 Python。
要讓 codex login 成功,我們需要把 假別名 python.exe 從 PATH 移除,或直接刪掉/停用它。
手動移除假別名檔案
假別名的檔案路徑:
Rename-Item "$env:LOCALAPPDATA\Microsoft\WindowsApps\python.exe" "python_alias.bak"
Rename-Item "$env:LOCALAPPDATA\Microsoft\WindowsApps\python3.exe" "python3_alias.bak"
然後執行 where.exe python
應該只會出現 C:\Users\UserName\AppData\Local\Programs\Python\Python312\python.exe
如果上面的指令都已經完成,但是最後去執行 codex login
還是出現錯誤…
PS D:\develop> where.exe python
C:\Users\UserName\AppData\Local\Programs\Python\Python312\python.exe
PS D:\develop> python --version
Python 3.12.10
PS D:\develop> codex login
Error logging in: program not found
PS D:\develop>
看起來 codex login
可能是在呼叫 python3
(而我的環境只有 python.exe
)。所先做一個 python3.exe
的 shim,再試一次登入。
在 PowerShell 依序執行以下指令
# 設定你的 Python 3.12 路徑
$pyRoot = "$env:LOCALAPPDATA\Programs\Python\Python312"
# 建立一個 python3.exe(複製自 python.exe)
Copy-Item "$pyRoot\python.exe" "$pyRoot\python3.exe" -Force
# 確認可找到 python3
where.exe python3
# 確認版本
python3 --version
再嘗試登入 Codex CLI
當 Python 環境變數的問題都解決好之後,接著執行
codex login

執行後會:
- 嘗試開啟瀏覽器
- 要求你用 ChatGPT 帳號登入(建議直接選「Sign in with ChatGPT」)
完成登入後

在 command line 裡就會看到 Successfully logged in

測試執行
codex "用 Python 寫一個快速排序"


然後我給了提示
將原地版儲存為檔案,讓我可以使用 python 指令執行
經過一段時間後,產生 quicksort_inplace.py
檔案,然後我開啟另一個 Windows Terminal 去執行

由 Codex CLI 所建立的 quicksort_inplace.py
檔案內容
"""
In-place QuickSort with a simple CLI.
Usage:
python quicksort_inplace.py 3 6 8 10 1 2 1
# If no args are provided, runs a small demo.
"""
import sys
from typing import List, Union
Number = Union[int, float]
def quicksort_inplace(a: List[Number], lo: int = 0, hi: int | None = None) -> None:
"""Sort the list `a` in place using Hoare-style partitioning."""
if hi is None:
hi = len(a) - 1
if lo >= hi:
return
i, j = lo, hi
pivot = a[(lo + hi) // 2]
while i <= j:
while a[i] < pivot:
i += 1
while a[j] > pivot:
j -= 1
if i <= j:
a[i], a[j] = a[j], a[i]
i += 1
j -= 1
if lo < j:
quicksort_inplace(a, lo, j)
if i < hi:
quicksort_inplace(a, i, hi)
def _parse_num(token: str) -> Number:
"""Parse a token into int if possible, otherwise float."""
try:
return int(token)
except ValueError:
return float(token)
def main() -> None:
if len(sys.argv) > 1:
try:
nums = [_parse_num(t) for t in sys.argv[1:]]
except ValueError:
print("Usage: python quicksort_inplace.py [numbers...]", file=sys.stderr)
sys.exit(2)
else:
nums = [3, 6, 8, 10, 1, 2, 1]
quicksort_inplace(nums)
print(nums)
if __name__ == "__main__":
main()
要離開 Codex CLI 環境,使用快速鍵 CTRL + C
如果要登出的話,在 Codex 環境下輸入 /logout
讓 Codex CLI 建立 ASP.NET Core WebApi
在 Windows Terminal 進入 codex
然後輸入
# 設定預設模式:全自動模式 (Full Auto)
/mode full-auto
接著輸入以下的提示詞(可以一行一行複製貼上,如果要換行,請使用 Shift + Enter
)
在目前資料夾建立一個 ASP.NET Core 9 WebAPI 專案,專案名稱為 DemoApi。
請用:dotnet new webapi -f net9.0 -n DemoApi
建立後幫我做兩件事:
1) 在 DemoApi/Program.cs 啟用 Swagger(開發與正式都啟用 UseSwagger / UseSwaggerUI)。
2) 新增 /healthz 健康檢查端點,回傳 200 OK 與字串 "OK"。
最後請執行:dotnet build
完成後把重點輸出回報給我。
輸入完畢後執行,就可以看著 Terminal 裡 Codex 做事

有時候要適時給出決策

完成

使用 Rider 開啟建立好的專案,並且執行

接著叫它幫我安裝設定 Scalar

如果遇到疑問,它會提出問題

不過可能沒有理解我的意思,它就安裝了 NSwag.AspNetCore,最後還是我直接手動安裝 Scalar.AspNetCore 與設定


請它修改啟動組態設定

修改後的 launchSettings.json

就記錄到這裡,今天是第一次使用 Codex CLI,還有很多不是那麼瞭解。
平常都已經習慣使用 Github Copilot,所以對 Codex CLI 就還不是那麼習慣,還有很多需要摸索。
以上
純粹是在寫興趣的,用寫程式、寫文章來抒解工作壓力