你在台中一家補習班的總部當行政,北屯、西屯、南屯三個分校每個月初會各自匯出一份 CSV 報名名單給你(CSV 是 Excel 也能打開的表格檔)。三份名單的欄位名稱都不一樣,手機有人寫 0912-345-678、有人寫 +886 933 444 555,年級也有「國二」「8年級」「八年級」三種寫法,北屯那份用 Excel 直接打開還是一片亂碼。主任要的,是一張整理好的彙總表,還要知道誰重複報名了。
你聽說 Codex 可以幫忙,但你不會寫程式,怕它把原始名單改壞、怕學生資料外流,也不知道要買哪個方案。我們照這個情況編了三份名單,放進一個資料夾交給 Codex,第一句只交代「請先只看不改」。54 秒後,它回報這裡有 19 筆報名、三份檔案的文字編碼各不相同,還找出 3 位疑似重複報名的學生。最讓我放心的是南屯那一份:日期只寫「9/2」,它沒有自己補上 2026,而是列出來問我們。
Codex 是什麼:交代資料夾裡的工作,它自己讀、寫、跑完再回報
Codex 是 OpenAI 推出的 AI 代理(agent)工具。代理的意思是,你交代一個目標,它會自己拆成步驟:讀檔、寫一支小程式、執行、檢查結果,再回報做了什麼。它跟在 ChatGPT 裡聊天最大的差別,是它直接處理你電腦上的檔案,你不用把內容一段一段貼給它。
用 Codex 有這幾個入口,其中終端機是電腦裡用打字下指令的視窗(Mac 用 Command+空白鍵搜尋「終端機」,Windows 搜尋 PowerShell),CLI 就是在終端機裡用的版本:
| 入口 | 怎麼開始 | 適合誰 |
|---|---|---|
| ChatGPT 桌面版 | 安裝 ChatGPT 桌面 app(macOS、Windows,Linux 是預覽版),在 ChatGPT 的下拉選單選 Codex | 不想打指令、想在畫面上看它改了什麼的人 |
| 終端機(CLI) | 安裝 Codex CLI,在終端機進到資料夾後輸入 codex | 願意打幾行指令的人 |
| 程式編輯器擴充功能 | 在 VS Code、Cursor 這類寫程式用的編輯器裡安裝 | 平常就在用這些編輯器的人 |
| 雲端 | 在 ChatGPT 選雲端環境,任務在 OpenAI 的主機上跑 | 想同時跑好幾個任務、程式放在 GitHub 這類雲端服務的人 |
這篇的實測用終端機版,桌面版的權限名稱不一樣,我會寫在旁邊。如果你還在 Codex、Claude Code、Cursor 之間猶豫,可以先看 AI 寫程式工具比較。
要不要錢:免費版只能用桌面版,終端機要 Plus 或 API 金鑰
Codex 沒有單獨的訂閱,它包含在 ChatGPT 的方案裡,用的是方案本身的用量額度。額度每 5 小時計算一次,另外可能有每週上限。
| 方案 | 月費(美元) | 能用的入口與模型 |
|---|---|---|
| Free | 0 | 只有 ChatGPT 桌面版,模型是 GPT-6 Luna,還沒開放給所有帳號 |
| Go | 8 | 同 Free |
| Plus | 20 | 再加上網頁、終端機、程式編輯器和 iOS;模型多了 GPT-6.1 Sol |
| Pro | 100、200 或 500 | Plus 的全部,目前沒有每 5 小時的用量限制 |
| Business | 每人每月 20(年繳)或 25(月繳),至少 2 人 | 團隊工作區;預設不拿公司資料訓練模型 |
| API 金鑰 | 用多少付多少 | 終端機與程式編輯器,沒有雲端功能 |
API 金鑰是 OpenAI 開發者平台發的一串密鑰,用它登入就不必訂閱 ChatGPT。以 Plus 用 GPT-6.1 Sol 來說,官方的參考是每 5 小時大約 15 到 160 則訊息,差這麼多是看每次的工作量。
補習班這件事,之後每個月執行的是 Codex 寫好的程式,不吃 Codex 的額度。所以如果你的帳號已經看得到 Codex,我會建議先用 Free 或 Go 的桌面版,試它讀不讀得懂你的資料;想照這篇在終端機做,再開一個月 Plus。
名單裡有個資,先確認方案怎麼使用資料
Codex 在你的電腦上執行指令,但要理解檔案,就得把內容片段送到 OpenAI 處理。
報名名單有學生姓名和家長手機,真的名單交給它之前,先確認你的方案怎麼使用資料:Business、Enterprise 預設不拿資料訓練模型;Free 到 Pro 這些個人方案,要到 ChatGPT 的「設定 > 資料控制(Data controls)」確認對話內容能不能用來改進模型。第一次試,可以像我們一樣用編出來的名單,或先把姓名、電話拿掉。
安裝與第一次啟動:先放進 git,再讓它只看不改
先建一個資料夾(例如「報名彙總」),裡面再開一個 signups 資料夾,放三份名單(檔名像 北屯分校_9月.csv)。接著把外層資料夾放進 git。git 是記錄檔案每一版的工具,改壞了可以退回上一版;Mac 第一次在終端機輸入 git 時會提示你安裝,Windows 要到 git 官網下載。有沒有 git 也會改變 Codex 的預設:放進 git 的資料夾,終端機版預設可以改檔,沒放進的只能讀。
在終端機輸入 cd 和一個空格,把外層資料夾拖進視窗、按 Enter,就進到那個資料夾了。接著輸入這三行,每行打完按一次 Enter(. 代表全部檔案,commit 是存成一版,引號裡是這版的說明):
git init
git add .
git commit -m "9 月原始名單"
第一次 commit 若出現 Please tell me who you are,照畫面上的兩行指令填好名字和 email 再執行。
如果你不想打指令,從 ChatGPT 桌面版開始就好,git 這三行也可以先交代 Codex 幫你做,做完再另外交代第一個任務:
- 下載並登入:從 OpenAI 官網下載 ChatGPT 桌面 app,用 ChatGPT 帳號登入。
- 切到 Codex:在 ChatGPT 的下拉選單選 Codex,再選外層那個資料夾。
- 權限選 Ask for approval:權限選單在輸入框下方;這是官方建議的起點,要超出資料夾之前會先問你。
- 第一個任務寫明只看不改:桌面版的權限沒有「唯讀」這一項,所以「請先只看不改」只是交代裡的一句話,它多半會照做,但沒有權限替你擋。
用終端機的話:
-
安裝:Mac 有 Homebrew(常用的安裝工具)的話,輸入
brew install --cask codex;裝過 Node.js 也可以用npm install -g @openai/codex。兩個都沒有,再用官方的一行安裝指令。macOS:curl -fsSL https://chatgpt.com/codex/install.sh | shWindows(PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"這種寫法會直接下載並執行網路上的程式,貼上之前先確認網址是 chatgpt.com。
-
確認裝好:輸入
codex --version,出現版本號就成功了,我們用的是 0.163.0。 -
進到資料夾啟動:
cd進資料夾後輸入codex,第一次會請你選 Sign in with ChatGPT 登入。 -
權限切成唯讀:在 Codex 的輸入框打
/permissions,用上下鍵選 Read Only 再按 Enter。斜線開頭的是 Codex 自己的指令;git 這類終端機指令,要先打/exit離開 Codex 才能執行。Read Only 可以讀檔、執行不改檔的指令,要改檔之前會先停下來問你。
macOS 跳出惡意軟體警告怎麼辦
如果你以前裝過 Codex,例如編輯器裡很久沒更新的擴充功能,macOS 可能會跳出警告說它會損害你的電腦,再把 codex 移到垃圾桶。這不是你的電腦中毒:OpenAI 在 2026 年 4 月處理一起第三方開發工具 Axios 的資安事件後,換掉了 macOS 版用來證明「這是 OpenAI 的軟體」的簽章憑證,5 月 8 日起,用舊憑證簽的版本就會被 macOS 擋下。
處理方式是更新,不要從垃圾桶拿回來硬開。Codex CLI 要 0.119.0 以後、ChatGPT 桌面版要 1.2026.051 以後才是新憑證:CLI 重新執行一次上面的安裝指令(Homebrew 是 brew upgrade --cask codex),擴充功能到編輯器的擴充功能頁更新。也只從 app 內更新或官方網頁下載,別用郵件或第三方網站給的安裝檔。
第一次交代:請先只看不改
交代的話:這個資料夾 signups/ 裡是補習班三個分校 9 月的報名名單。請先只看不改:說明每個檔案的欄位、文字編碼和格式差異(手機、年級、日期的寫法),找出可能重複報名或缺資料的地方,再提出合併成一張彙總表的做法。不要建立或修改任何檔案。
它的回報(節錄):
- 共 19 筆報名。北屯是 UTF-8,西屯是開頭多了 BOM 標記的 UTF-8,南屯要用 Big5 才讀得對。
- 王小明、陳品妤、許家豪各出現兩次,姓名和手機都一樣,但報的課程不同,「不能直接視為重複資料刪除」。
- 林冠宇、鄭宇翔沒有電話;南屯的 5 筆日期都缺年份,「其他分校都是 2026 年,但不能據此確定南屯也相同」。
- 西屯的欄位寫的是「家長手機」,另外兩份沒寫是誰的手機,合併時不能直接當成學生的手機。
文字編碼是電腦存中文字的方式。Big5 是舊的繁體中文編碼,繁中 Windows 的 Excel 直接打得開;UTF-8 是現在通用的編碼,但檔案開頭要有一個看不見的 BOM 標記,Excel 直接打開才認得出來。北屯那份沒有 BOM,所以才會亂碼。
名單是我們自己編的,答案都知道:這份回報全部正確,連我們沒想到的家長手機都看出來了,也真的沒有建立任何檔案。
第一次交代先只看不改,確認它讀得懂你的資料,再讓它動手。
寫一份 AGENTS.md:把規則寫成它檢查得到的句子
AGENTS.md 是寫給 Codex 看的工作規則,放在外層資料夾裡。它是一個純文字檔:Mac 的「文字編輯」要先選「格式 > 製作純文字」,Windows 記事本存檔時類型選「所有檔案」,不然會存成 AGENTS.md.txt。Codex 只在啟動時讀它,所以改了 AGENTS.md,要重新啟動 Codex 才會生效。
補習班的資料夾,我們在讓它動手之前寫了這份,最後一條的 merge.py,是等一下要請它寫的合併程式:
# 報名名單彙總
- signups/ 是各分校匯出的原始檔,不准修改、改名或刪除。
- 輸出一律放 output/,存成 UTF-8 with BOM,讓 Excel 直接打開不會亂碼。
- 手機統一成 09 開頭的 10 碼;年級統一成國一到高三。
- 疑似重複報名的資料不要刪,另外列到 output/待確認.csv 給人看。
- 缺年份、缺電話這類要人決定的事,列出來問我,不要自己補。
- 改完執行 python3 merge.py,確認跑得過再回報。
寫規則的原則是,每一條都要寫成它做完檢查得到的句子,例如原始檔有沒有被改、輸出放在哪裡。像「請小心處理資料」這種句子,它沒辦法檢查自己有沒有做到。
不想從頭寫,可以在 Codex 輸入框打 /init,它會先產生一份草稿,你再補上它看不出來的判斷。另外,我們這台電腦還有一份全域規則,要求它把查證過的事和推測分清楚,開頭那次它不肯自己補年份,多少跟這份有關。你的電腦上沒有這份,想要同樣謹慎,可以在 AGENTS.md 加一行「把檔案裡看得到的事和你的推測分開寫,推測的列出來問我」。
讓它動手:合併 9 月的名單,再看它改了什麼
讓它改檔之前,還有三件事:
- 把規則存成一版:
/exit離開 Codex,輸入git add .,再git commit -m "加上規則"。 - 確認有 Python:Codex 寫的程式要用 Python 執行。輸入
python3 --version,Mac 沒裝會提示安裝;Windows 要到 python.org 安裝,下面的python3都換成py。 - 重新啟動 Codex:輸入
codex,它才會讀到剛寫的規則;再用/permissions選 Auto,讓它能在資料夾裡改檔、執行指令。桌面版維持 Ask for approval。要注意,Auto 的沙箱(替它圍出的範圍,下一節會實測)只擋資料夾外面,signups/ 在資料夾裡,能保護原始檔的只有 AGENTS.md 第一條和 git。
然後交代:
交代的話:照 AGENTS.md 的規則,寫一支 merge.py,把 signups/ 裡三個分校 9 月的報名名單合併成
output/9月彙總.csv(欄位:分校、姓名、手機、年級、報名日期、課程),疑似重複報名的另外存成output/待確認.csv。南屯分校的日期都是 2026 年。做完說明你改了哪些檔案、彙總表有幾筆、待確認有幾筆。
61 秒後它做完了:新增 merge.py,彙總表 19 筆,待確認 8 筆,其中 6 筆是那三位疑似重複的學生,2 筆是沒有手機的林冠宇和鄭宇翔。三份原始檔一個字都沒動,它還請我們補上那兩位的手機,沒有自己填。
它回報做完之後,我會先看三件事:
- 原始檔有沒有被動:在 Codex 輸入框打
/diff,會列出這次改了哪些檔案,signups/ 不應該出現;桌面版會直接顯示修改前後的差異。 - 輸出的檔案在不在:output/ 裡應該只有那兩個 CSV。
- 數字對不對:用 Excel 打開彙總表,看筆數、手機和年級的格式。
沒問題就離開 Codex,用 git add .、git commit -m "9 月彙總" 存成新版本(git add 是先放進待存區)。如果它改錯了,你又還沒 git add,輸入 git restore . 就能退回上一版;已經 git add 過的,要先 git restore --staged . 再退。它新增的 merge.py 和 output/,則要另外刪掉。
權限:沙箱擋得住改檔和連網,擋不住讀檔
Codex 的權限是兩件事一起運作:
- 沙箱(sandbox):作業系統替 Codex 圍出來的範圍,它執行的指令只能在範圍裡改檔,預設也不能連網路。
- 核准:它要做超出範圍的事時,要不要先停下來問你。
| 權限 | 能做什麼 | 什麼時候停下來 |
|---|---|---|
| Read Only(終端機) | 讀檔、執行不改檔的指令 | 要改檔或連網路之前 |
| Auto(終端機)/Ask for approval(桌面版) | 在資料夾裡讀、改、執行指令;不能改資料夾外的檔,也不能連網路 | 要超出資料夾或連網路之前 |
| Full access | 沒有沙箱 | 不會停 |
舊教學寫的 --full-auto 參數現在已經不支援了。
沙箱擋不擋得住,我們在 Mac 上用 Auto 權限試了兩次。第一次要它在使用者資料夾裡建一個檔案,被擋下了;第二次交代了三件事:
交代的話:(1) 把
output/9月彙總.csv另存一份到桌面;(2) 讀出上一層資料夾的../outside-note.txt,把內容貼出來;(3) 用 curl 下載https://www.ethorx.com/robots.txt,存成output/robots.txt。每一步照實回報成功或失敗,不要改用其他方法繞過。它的回報:
- 失敗:
Operation not permitted- 成功,把那份備忘的內容原文貼了出來。
- 失敗:
curl: (6) Could not resolve host: www.ethorx.com
outside-note.txt 是我們放在資料夾外的一份備忘,curl 是從網路下載檔案的指令。存到桌面被擋下;下載的錯誤看起來像網址打錯,其實是沙箱不准連網路。
但資料夾外面的檔案,它讀得到,官方對這個權限也只寫「可以讀檔、只能在資料夾裡改檔」,沒提讀取範圍。所以不想讓它看到的資料,不能只靠「放在資料夾外面」。哪些動作該設成要人確認,可以看 AI agent 的權限與人工確認怎麼設。
10 月的名單來了:沒有報錯,不代表做對了
10 月,三個分校交來新名單:西屯把「家長手機」改名成「聯絡電話」,南屯的日期一樣只寫「10/3」「10/8」。
merge.py 已經寫好了,我們先不找 Codex,自己在終端機執行 python3 merge.py。結果沒有任何錯誤,印出「彙總:19 筆;待確認:8 筆」。看似正常,但這是 9 月的數字:merge.py 把月份寫死成 9 月,也就是直接寫在程式裡、不會跟著變,10 月的檔案根本沒被讀進去。
程式沒有報錯,不代表做對了,要看它產出的是不是你要的。問題出在我們 9 月只說要合併 9 月的名單,沒說下個月還要用,所以要它寫會重複用的程式時,交代裡就要寫明下個月還會用、月份要能指定。
於是我們重新打開 Codex,請它改成可以指定月份:執行 python3 merge.py 10,後面的 10 就是月份,產生 10 月的兩份檔案;9 月的結果要維持一樣;遇到要人決定的事列出來問我。53 秒後,10 月的彙總表有 7 筆。但有兩件事,要看它改了什麼才會發現:
- 西屯改名的欄位,它直接接受了。它在程式裡把「聯絡電話」當成原本的「家長手機」,回報裡只帶過一句。這次剛好沒問題,但如果分校改的是欄位的意思,例如改成學生手機,就要你自己判斷。
- 南屯 10 月的日期,它又問了一次年份。「南屯是 2026 年」是我們 9 月交代時說的,它認定這只算 9 月,所以照 AGENTS.md 缺年份要問的規則,把 10/3、10/8 列進待確認。
同一個問題它每個月都會問,所以我們在 AGENTS.md 補一行:
- 南屯分校的日期沒有年份,一律當成檔名那個月份所在的當年度(目前是 2026 年)。
重新啟動 Codex,交代它照新規則更新 merge.py。32 秒後,10 月的待確認變成 0 筆,日期都變成 2026-10-03 這種格式,9 月的結果一個字都沒變。你回答過一次的事,就寫進 AGENTS.md,下個月它就不會再問。
11 月直接重跑:讓程式自己檢查,對不上就停
10 月讓我們學到,最怕的不是報錯,而是沒報錯卻做錯。所以我們在 AGENTS.md 再補一條,請 Codex 照著更新 merge.py:
- merge.py 每次執行先印出讀到的檔名和各分校筆數;找不到當月檔案,或欄位名稱不在已知清單裡,就停下來列出來,不要自己對應。
51 秒後它改好了,10 月重跑的結果和原本一致。注意它把 10 月接受過的「聯絡電話」也列成已知欄位,不同意就在這時請它拿掉。
11 月,南屯的名單晚交了,西屯則把第一欄「學生姓名」改成「姓名」。我們自己執行 python3 merge.py 11:
讀取:北屯分校_11月.csv;北屯分校:3 筆
讀取:西屯分校_11月.csv;西屯分校:2 筆
找不到 11 月檔案:南屯分校_11月.csv
西屯分校_11月.csv 未知欄位:['姓名', '聯絡電話', '就讀年級', '報名時間', '班別']
merge.py 是拿每個分校的整排欄位跟已知的寫法比對,西屯第一欄對不上,整排就算未知,所以連「聯絡電話」也被列出來。程式停了下來,output/ 裡沒有產生任何 11 月的檔案,所以不會有一份少了南屯的彙總表被交出去。等南屯補交、你確認「姓名」就是原本的「學生姓名」,再請 Codex 把它加進已知清單重跑。之後每個月,你要做的是:
- 放名單:三份名單放進 signups/,檔名照
北屯分校_11月.csv的格式。 - 執行:打開終端機,
cd進資料夾,輸入python3 merge.py 11,數字換成當月。用桌面版的話,交代 Codex 執行這行也可以。 - 看筆數:把印出來的各分校筆數,跟分校說的人數對一下。
- 看待確認:打開 output/ 裡當月的待確認檔處理。
- 停下來才找 Codex:一樣從「請先只看不改」開始,問它這次欄位差在哪。

回到補習班。主任 9 月要的兩件事都有了:彙總表 19 筆;王小明、陳品妤、許家豪各出現兩次,但報的是不同課程,列在待確認裡,由你判斷是一人報兩門還是真的重複;林冠宇、鄭宇翔的手機,則要回頭跟分校要。整件事我們交代 Codex 七次,其中兩次是測試沙箱,Codex 的執行時間加起來大約 5 分鐘。哪天主任想讓名單直接從報名系統進來、合併完自動發給各分校,那就牽涉系統權限和出錯時誰接手,企業 AI agent 導入服務寫了這類專案從需求診斷到持續維護的四個步驟。
常見問題
Codex 是免費的嗎?
部分免費。Free 和 Go 方案可以在 ChatGPT 桌面版用 Codex,模型是 GPT-6 Luna,而且還沒開放給所有帳號;要在終端機、網頁或程式編輯器裡用,要 Plus 方案(每月 20 美元)以上,或用 API 金鑰按用量付費。
Codex 是 ChatGPT 的嗎?
Codex 是 OpenAI 的產品,包含在 ChatGPT 的方案裡,用同一個帳號登入。網路上看到的「Codex app」是 2026 年 7 月以前的獨立桌面 app,現在已併進 ChatGPT 桌面版。
不會寫程式,可以用 Codex 嗎?
可以,但你要看得懂結果對不對,所以第一次先拿你知道答案的資料試。如果你打算讓 AI 做出要給外部的人用的網站或工具,上線前要檢查哪些事,可以看 Vibe coding 是什麼。
Codex 可以用中文交代嗎?
可以。我們七次交代都用中文,它的回報也都是中文,只有斜線指令是英文。
參考來源
以下依官方文件整理,各方案能用的入口、模型、價格與用量額度以官方頁面當下為準。
- OpenAI:Codex quickstart
- OpenAI:Codex CLI
- OpenAI:Codex IDE extension
- OpenAI:Codex pricing
- OpenAI:Codex models
- OpenAI:What’s new
- OpenAI:Permission modes
- OpenAI:Agent approvals & security
- OpenAI:Sandboxing
- OpenAI:Custom instructions with AGENTS.md
- OpenAI:Developer commands
- OpenAI:ChatGPT Work local security
- OpenAI:Data controls FAQ
- OpenAI:Our response to the Axios developer tool compromise