戰(zhàn)與踩坑)
大家有沒有這種感覺網(wǎng)頁聊天里的AI不管聊得多好一旦要真正落盤改代碼它就隔了一層。你在對(duì)話框里描述需求它給你一段代碼你復(fù)制回去運(yùn)行報(bào)錯(cuò)了再復(fù)制回來一來一回效率很低。我在過去幾個(gè)項(xiàng)目里反復(fù)折騰AI編程工具最后固定下來的是Codex CLI這個(gè)跑在終端里的AI Agent。它不屬于IDE插件也不是網(wǎng)頁對(duì)話框而是直接在項(xiàng)目目錄里干活——你告訴它需求它自己去讀代碼、寫文件、執(zhí)行命令、看報(bào)錯(cuò)、再修整個(gè)閉環(huán)都在命令行里完成。這篇文章把Windows Node這套環(huán)境下的完整上手路徑寫出來從環(huán)境準(zhǔn)備、安裝登錄到跑通第一個(gè)任務(wù)、調(diào)節(jié)配置最后盤點(diǎn)Windows下我踩過的坑。適合兩類人一是已經(jīng)在用終端寫代碼、想把日常雜活交給AI的開發(fā)者二是剛接觸AI Agent、想從網(wǎng)頁聊天切到命令行實(shí)操的人。1. 為什么是它終端里的AI Agent到底解決了誰的痛點(diǎn)1.1 聊天式AI和Agent的區(qū)別不在聰明在有手有腳傳統(tǒng)的AI編程輔助本質(zhì)是問答式的。你問一句它答一段主體還是人人負(fù)責(zé)理解、人負(fù)責(zé)動(dòng)手、人負(fù)責(zé)驗(yàn)證。這在查函數(shù)用法、寫小段算法的時(shí)候確實(shí)夠用一旦需求跨多個(gè)文件、涉及環(huán)境依賴、需要反復(fù)試運(yùn)行問答式的效率瓶頸就出來了——上下文要被你手動(dòng)搬運(yùn)報(bào)錯(cuò)信息要靠你手動(dòng)喂回去。Codex CLI這類Agent最大的不同是它能自己動(dòng)手。它可以在工作目錄里查看文件列表、讀取文件內(nèi)容、修改文件、執(zhí)行shell命令。你把需求說清楚它自己規(guī)劃步驟自己寫代碼自己跑甚至看到一個(gè)報(bào)錯(cuò)之后自己回去改代碼再跑。這個(gè)循環(huán)很像一個(gè)新人開發(fā)者在干活看一眼代碼改一處跑一下報(bào)錯(cuò)就再改。只不過它的閱讀速度和修改速度比人快得多。我做項(xiàng)目時(shí)最常用的場(chǎng)景是準(zhǔn)備測(cè)試數(shù)據(jù)、批量重命名、補(bǔ)注釋、寫腳本處理臟數(shù)據(jù)。這些活得寫代碼但又不值得認(rèn)真當(dāng)一個(gè)功能來做。以前我都是自己寫個(gè)一次性的Node腳本用完就刪現(xiàn)在直接開個(gè)Codex會(huì)話用自然語言描述需求它把腳本寫出來、跑完、我驗(yàn)一下結(jié)果完事。省掉的是從腦子里翻譯成代碼的時(shí)間。1.2 它和IDE插件的邊界也不一樣很多人會(huì)問IDE里不也有AI插件嗎為什么非要CLI我的體感是IDE插件的優(yōu)勢(shì)在于貼身——它看著你當(dāng)前打開的文件適合補(bǔ)全、解釋、小范圍重構(gòu)。但它很少主動(dòng)跑命令也不會(huì)站在整個(gè)項(xiàng)目的角度去改多個(gè)散落文件。CLI型Agent的優(yōu)勢(shì)是寬和自動(dòng)化它可以同時(shí)操作幾十個(gè)文件適合批量重構(gòu)、批量生成。它可以執(zhí)行命令比如安裝依賴、跑測(cè)試、啟動(dòng)服務(wù)然后根據(jù)輸出來判斷下一步。它可以被腳本調(diào)用、可以非交互式執(zhí)行適合把AI塞進(jìn)自動(dòng)化流程里。所以我現(xiàn)在的習(xí)慣是在IDE里寫代碼時(shí)用補(bǔ)全類AI遇到跨文件改造跑通一個(gè)流程處理一堆臟數(shù)據(jù)這類任務(wù)切到終端開Codex。兩者不沖突甚至互補(bǔ)。1.3 什么人應(yīng)該先忍住別裝也說句勸退的話。Codex CLI要求你至少看得懂終端的基本操作cd進(jìn)目錄、看報(bào)錯(cuò)、理解路徑。如果你從沒在命令行里運(yùn)行過Node腳本建議先去補(bǔ)二十分鐘基礎(chǔ)否則Agent做了什么你完全無感出了問題也沒法判斷是該修提示詞還是該修環(huán)境。它不是一個(gè)幫你跳過學(xué)習(xí)的工具而是一個(gè)幫你省掉重復(fù)勞動(dòng)的工具——這兩者有本質(zhì)區(qū)別。2. 開工前檢查單Windows Node 環(huán)境最容易出事的三個(gè)位置2.1 Node版本過低過新都會(huì)卡在安裝環(huán)節(jié)Codex CLI本質(zhì)是一個(gè)npm包所以最基礎(chǔ)的條件是Node.js環(huán)境。官方要求Node 20以上我建議直接上22 LTS。為什么是LTS而不是最新版因?yàn)閚pm生態(tài)里有些依賴對(duì)奇數(shù)版本、對(duì)剛發(fā)布的新版本兼容性不夠穩(wěn)用LTS能少碰很多我這明明沒問題為什么裝不上的詭異情況。Windows下管理Node版本我推薦nvm-windows它和macOS/Linux上的nvm用法幾乎一致。安裝好之后兩條命令nvm install 22 nvm use 22裝完務(wù)必確認(rèn)一下當(dāng)前版本node -v npm -v這一步看起來糙但真的能擋掉不少問題。我見過好幾個(gè)朋友說Codex安裝時(shí)報(bào)引擎版本不匹配結(jié)果一查node還是14.x。如果你之前為了其他項(xiàng)目裝過老版本Node且沒有用版本管理器那建議這次直接上nvm-windows重管。2.2 終端選不對(duì)后面跑命令各種別扭Windows默認(rèn)的cmd和老版PowerShell 5.0在跑現(xiàn)代CLI工具時(shí)有兩個(gè)典型毛病一是字符編碼經(jīng)常出現(xiàn)亂碼尤其是中文環(huán)境二是對(duì)某些命令的解析方式和Unix shell不一致。我的建議是裝Windows Terminal然后把默認(rèn)shell設(shè)為PowerShell 7或者直接裝Git Bash使用。原因很簡單Codex CLI的命令行交互界面有顏色、有動(dòng)態(tài)刷新的狀態(tài)Windows Terminal對(duì)這類ANSI轉(zhuǎn)義的支持比老終端好很多PowerShell 7和Git Bash對(duì)UTF-8和路徑符號(hào)的處理也更接近其他系統(tǒng)。這不影響Codex判斷文件但影響你的閱讀體驗(yàn)以及會(huì)話過程中手動(dòng)輸入指令的順暢度。如果你打算長期用順手把終端編碼切到UTF-8chcp 65001這個(gè)命令只對(duì)當(dāng)前窗口生效下次開終端要重新執(zhí)行。介意的話可以在PowerShell profile里加一行或者直接在Windows Terminal的配置文件里把默認(rèn)編碼改掉。2.3 Git是隱藏依賴別等Agent要提交時(shí)才裝Codex CLI在運(yùn)行時(shí)會(huì)大量調(diào)用git來查看文件變更、生成diff、甚至幫你提交代碼。它不是可選依賴而是實(shí)際工作流的一部分。如果你機(jī)器上還沒裝git先裝好并且配置好用戶信息git config --global user.name your-name git config --global user.email your-email這兩行配置不然后面Agent幫你git commit的時(shí)候會(huì)直接報(bào)錯(cuò)那時(shí)候你還得切出會(huì)話去配。我習(xí)慣在每個(gè)準(zhǔn)備交給Agent處理的項(xiàng)目里先git init一次這樣它每一步改動(dòng)我都能用git diff回溯心里有底。別小看這個(gè)習(xí)慣——AI寫代碼偶爾會(huì)自由發(fā)揮得很遠(yuǎn)有g(shù)it的話隨時(shí)能回滾沒有的話只能手動(dòng)刪改。另外如果你打算用WSL下的Linux環(huán)境跑后面第4章會(huì)講到本地沙箱模式為什么依賴它那在WSL里也要裝Node和git別只裝Windows版本。我見過最尷尬的局面是Windows里一切就緒切到WSL后node都不存在然后在那折騰半天環(huán)境變量。所以選定一條路就走到底別混著來。3. 安裝、登錄、第一條指令30分鐘跑通最小閉環(huán)3.1 一條npm命令裝好版本校驗(yàn)別跳過環(huán)境就緒后安裝本身簡單到離譜。在終端執(zhí)行npm install -g openai/codex安裝完成后第一步永遠(yuǎn)是用版本命令驗(yàn)證codex --version能正常打印版本號(hào)說明核心安裝沒問題。如果這一步報(bào)錯(cuò)基本只有兩個(gè)原因Node版本不對(duì)、或者npm全局目錄不在PATH里。后者在Windows上偶爾出現(xiàn)解決方法是把npm全局安裝目錄通常在%APPDATA%\npm加到系統(tǒng)的Path環(huán)境變量里然后重啟終端。npm下載慢的問題我給一個(gè)通用解法把registry切到國內(nèi)公共鏡像下載速度會(huì)立竿見影。這個(gè)配置對(duì)后續(xù)所有npm包都生效不算什么偏門操作npm config set registry https://registry.npmmirror.com裝完之后不用急著改回來日常沒有影響。3.2 codex login十幾秒的授權(quán)決定你會(huì)不會(huì)中途斷檔安裝包本身不包含身份需要登錄一次賬號(hào)。執(zhí)行codex login終端會(huì)顯示一條授權(quán)鏈接并在瀏覽器中打開登錄頁。你登錄自己的Codex賬號(hào)確認(rèn)授權(quán)然后終端會(huì)自動(dòng)確認(rèn)成功。整個(gè)過程大概幾十秒。這里有兩個(gè)Windows下常見的小問題第一瀏覽器沒自動(dòng)彈出來。不用慌把終端里的鏈接手動(dòng)復(fù)制到任意瀏覽器里打開完成授權(quán)即可授權(quán)結(jié)果會(huì)回傳。第二登錄狀態(tài)有時(shí)會(huì)因?yàn)橘~號(hào)token過期而失效表現(xiàn)是執(zhí)行任務(wù)到一半突然提示需要重新授權(quán)。這不常見但遇到了重新跑一次codex login就行。我的建議是別在頭一天晚上寫好的長任務(wù)上刷存在感開始大任務(wù)前先確認(rèn)登錄狀態(tài)有效。登錄之后用戶目錄下會(huì)生成一個(gè)隱藏目錄.codex里面存放著認(rèn)證信息和配置文件。Windows下路徑是C:\Users\你的用戶名\.codex\。后面調(diào)整配置、寫項(xiàng)目手冊(cè)都是在這個(gè)目錄里操作。3.3 用codex init建立一個(gè)項(xiàng)目使用說明書這是很多人會(huì)忽略的一步。在項(xiàng)目目錄下執(zhí)行codex init它會(huì)在當(dāng)前目錄生成一個(gè)AGENTS.md文件。這個(gè)文件的作用是給AI Agent看的項(xiàng)目手冊(cè)——項(xiàng)目是做什么的、用什么框架、構(gòu)建命令是什么、有沒有不能動(dòng)的目錄。Codex每次在這個(gè)目錄里工作時(shí)都會(huì)優(yōu)先讀這個(gè)文件來理解項(xiàng)目背景。我的建議是不要讓它保持默認(rèn)空模板而是手動(dòng)維護(hù)幾行信息比如本項(xiàng)目是Express老項(xiàng)目入口在src/index.js測(cè)試用vitestnode_modules不要?jiǎng)?。你寫的越清楚Agent后續(xù)自主干活越少瞎猜。這個(gè)文件有點(diǎn)像你給實(shí)習(xí)生寫的第一天入職培訓(xùn)文檔投入很小省下的溝通成本很大。3.4 第一條指令先讓它看看這個(gè)項(xiàng)目最小閉環(huán)的驗(yàn)證方式很簡單在一個(gè)項(xiàng)目目錄里讓Codex先只觀察、不動(dòng)手。交互模式啟動(dòng)codex進(jìn)入對(duì)話后輸入請(qǐng)列出當(dāng)前目錄的結(jié)構(gòu)并說明這個(gè)項(xiàng)目大概在做什么。不要修改任何文件。如果你用的是codex exec一次性執(zhí)行模式也可以這樣codex exec 請(qǐng)列出當(dāng)前目錄的結(jié)構(gòu)并說明這個(gè)項(xiàng)目大概在做什么。不要修改任何文件。Codex會(huì)自己調(diào)用命令讀取目錄然后給你一份總結(jié)。第一次跑通這個(gè)流程意味著安裝、登錄、上下文讀取、響應(yīng)生成這條鏈路全部正常。之后就可以開始真正干活了。4. 它怎么讀懂并操作你的電腦Codex CLI的運(yùn)行機(jī)制拆解4.1 核心循環(huán)觀察、思考、行動(dòng)、驗(yàn)證然后循環(huán)理解Codex CLI抓一條主線就夠了它是一個(gè)循環(huán)。它拿到你的自然語言指令后先把目標(biāo)拆成若干步驟然后反復(fù)做四件事——觀察當(dāng)前狀態(tài)、思考下一步操作、調(diào)用一個(gè)工具執(zhí)行、根據(jù)結(jié)果判斷是否完成或需要調(diào)整。這個(gè)循環(huán)在終端里的表現(xiàn)是它會(huì)一條條顯示當(dāng)前正在做什么查看某個(gè)文件、執(zhí)行某個(gè)命令、修改某段代碼。你可以看著它一步步推進(jìn)而不是一次性甩給你一個(gè)結(jié)果。這個(gè)過程透明性很強(qiáng)也給了你在中途干預(yù)的機(jī)會(huì)——看到方向不對(duì)直接打斷并糾正比等它跑完再返工效率高很多。它在代碼里實(shí)際操作的類型基本覆蓋了四種讀取類查看文件、列目錄、修改類寫文件、批量替換、執(zhí)行類跑shell命令、安裝依賴、跑測(cè)試、以及搜索類在項(xiàng)目里按關(guān)鍵詞找文件。說白了你自己在終端里能做的事情它都能通過調(diào)用工具完成。4.2 工作區(qū)邊界它眼里只有當(dāng)前項(xiàng)目別指望它管全局Codex CLI不是接管你整個(gè)電腦的AI它的視野和行動(dòng)范圍默認(rèn)限制在當(dāng)前工作目錄。你從哪個(gè)目錄啟動(dòng)codex它就圍繞哪個(gè)目錄工作。這個(gè)設(shè)計(jì)一方面是為了安全避免它隨便讀你桌面上的私人文件另一方面也是為了讓上下文更聚焦不讓無關(guān)文件干擾判斷。在項(xiàng)目根目錄里它可以自由查看所有子目錄和文件除非你的配置文件里設(shè)了exclude排除項(xiàng)。我強(qiáng)烈建議在大項(xiàng)目里配置排除node_modules、dist、.git這類又大又沒用的目錄。否則Agent掃描文件列表時(shí)可能會(huì)慢也可能在讀文件時(shí)把一些自動(dòng)生成的代碼當(dāng)成業(yè)務(wù)邏輯來分析導(dǎo)致理解偏差。4.3 計(jì)劃和審批為什么我不建議一上來就全自動(dòng)Codex CLI在執(zhí)行操作前有審批機(jī)制尤其是執(zhí)行命令和修改文件時(shí)會(huì)等待你確認(rèn)。這個(gè)機(jī)制決定了它在你的機(jī)器上是有邊界的執(zhí)行者而不是失控的自動(dòng)機(jī)。實(shí)際使用中有一個(gè)授權(quán)行為模式的選擇常見的有讓Agent全自動(dòng)執(zhí)行、讓它先把計(jì)劃列出來等你批準(zhǔn)、或者只在出現(xiàn)錯(cuò)誤時(shí)向你確認(rèn)。我強(qiáng)烈建議第一次使用時(shí)選先計(jì)劃后執(zhí)行的模式。你可以通過啟動(dòng)時(shí)的參數(shù)或配置來控制比如在交互中輸入計(jì)劃模式或者首次執(zhí)行時(shí)明確要求先給出計(jì)劃不要執(zhí)行。這個(gè)習(xí)慣能幫你快速理解Agent的思考方式它打算先看哪個(gè)文件打算用什么方案有沒有理解偏。等你對(duì)它的風(fēng)格熟悉了再逐步放開授權(quán)級(jí)別不遲。4.4 云端執(zhí)行與本地執(zhí)行兩種運(yùn)行模式的取舍Codex CLI有兩條執(zhí)行路徑。一種是云上執(zhí)行模式AI在遠(yuǎn)程沙箱里分析代碼、運(yùn)行命令然后把結(jié)果同步回本地目錄。好處是你本機(jī)不需要裝很多依賴環(huán)境更干凈缺點(diǎn)是網(wǎng)絡(luò)請(qǐng)求來回有一定延遲而且如果你本地環(huán)境的差異會(huì)影響結(jié)果比如依賴只在本地裝過它可能跑通了但你沒跑通。另一種是本地沙箱模式AI直接在本機(jī)執(zhí)行命令和修改文件更像一個(gè)真人在你的終端里操作。好處是和工作區(qū)實(shí)際環(huán)境完全一致適合跑構(gòu)建、跑測(cè)試這類依賴本地環(huán)境的操作缺點(diǎn)是在Windows原生環(huán)境下完整的沙箱隔離能力受限通常需要借助WSL或容器來獲得可靠的本地沙箱隔離。我的建議是日常改代碼、寫腳本、批量處理文件用云端模式?jīng)]問題一旦涉及跑構(gòu)建、跑測(cè)試、起服務(wù)、看運(yùn)行結(jié)果優(yōu)先切到本地模式。這也是為什么我在第2章強(qiáng)調(diào)WSL可裝可不裝但真高頻使用后大概率會(huì)需要。5. 首個(gè)實(shí)戰(zhàn)讓Codex把一個(gè)亂糟糟的下載目錄整理成規(guī)整分類理論說完了來一個(gè)完整的實(shí)戰(zhàn)。這個(gè)案例我選得很日常整理一個(gè)亂糟糟的下載目錄。它不涉及復(fù)雜的業(yè)務(wù)邏輯但足夠展示Agent工作的完整閉環(huán)理解需求、制定計(jì)劃、寫代碼、運(yùn)行、遇到報(bào)錯(cuò)、自我修復(fù)、驗(yàn)證結(jié)果。5.1 準(zhǔn)備實(shí)驗(yàn)場(chǎng)地我先創(chuàng)建一個(gè)模擬目錄里面放了幾類文件扮演下載文件夾mkdir codex-demo cd codex-demo mkdir data # 在data目錄下放一些文件幾張圖片、幾個(gè)文檔、兩個(gè)壓縮包文件命名故意造得亂一點(diǎn)比如photo1.jpg、微信圖片_20250101.png、項(xiàng)目說明final(2).docx、報(bào)告數(shù)據(jù).xlsx、backup-2024.zip、temp.zip——什么都混在一起。目標(biāo)也很明確按擴(kuò)展名分類圖片、文檔、壓縮包分門別類放進(jìn)獨(dú)立的子目錄文件名統(tǒng)一加上當(dāng)天日期前綴原文件不能被刪除只能移動(dòng)。5.2 給Codex下達(dá)需求先要計(jì)劃啟動(dòng)交互模式輸入請(qǐng)掃描當(dāng)前項(xiàng)目下的data目錄。這個(gè)目錄里混了很多種類型的文件請(qǐng)寫一個(gè)Node腳本把它們按類型移動(dòng)進(jìn)不同的子目錄圖片jpg/png/gif放到images文檔docx/pdf/txt/xlsx放到docs壓縮包zip/rar/7z放到archives。移動(dòng)后的文件名加上當(dāng)天日期前綴例如2025-01-08_photo1.jpg。要先給出你的執(zhí)行計(jì)劃不要直接改動(dòng)文件。注意我特意在最后加了先給出執(zhí)行計(jì)劃不要直接改動(dòng)文件。這是第一次使用時(shí)的安全操作先看它準(zhǔn)備怎么干再放行。Codex給出的計(jì)劃基本是先列目錄確認(rèn)文件清單然后寫腳本遍歷文件用正則或擴(kuò)展名判斷類型用fs.rename移動(dòng)文件并測(cè)試運(yùn)行。它還會(huì)提一句移動(dòng)前先對(duì)每個(gè)文件確認(rèn)擴(kuò)展名這個(gè)細(xì)節(jié)說明它確實(shí)先看了目錄里有哪些文件而不是憑空想方案。5.3 批準(zhǔn)執(zhí)行然后它踩了一個(gè)經(jīng)典的Windows坑我確認(rèn)計(jì)劃后說按這個(gè)方案執(zhí)行。Codex開始寫腳本、運(yùn)行。第一次運(yùn)行報(bào)錯(cuò)了。錯(cuò)誤信息很眼熟Error: EXDEV: cross-device link not permitted, rename C:\...\data\photo1.jpg - D:\...\images\2025-01-08_photo1.jpg這不是它代碼寫錯(cuò)了而是Windows文件系統(tǒng)的特性如果源文件和目標(biāo)目錄不在同一個(gè)磁盤分區(qū)C盤和D盤fs.rename不能直接跨盤符移動(dòng)文件。如果你用過Node寫文件操作工具這個(gè)坑大概率也遇到過。Codex看到報(bào)錯(cuò)后沒有停下來等我來處理。它自動(dòng)讀取了報(bào)錯(cuò)信息判斷是跨盤符問題然后把方案改成先復(fù)制文件到目標(biāo)目錄再刪除原文件的方式重試。第二次運(yùn)行成功data目錄下的文件被整理到位控制臺(tái)打印出每個(gè)文件移動(dòng)前后的路徑。5.4 校驗(yàn)結(jié)果并復(fù)盤這個(gè)過程中發(fā)生了什么我手動(dòng)打開目錄檢查images、docs、archives三個(gè)文件夾出現(xiàn)文件各歸其位文件名帶上了日期前綴。原文件沒有丟失腳本沒有誤刪格式完整。這個(gè)案例真正值得注意的不是Codex會(huì)寫腳本——腳本本身不復(fù)雜。而是它展現(xiàn)出了一種完整的工作方式它不是一次性甩給你一個(gè)你應(yīng)該這樣寫的答案然后讓你自己去跑而是自己推進(jìn)了看目錄、寫腳本、運(yùn)行、識(shí)別報(bào)錯(cuò)、修復(fù)方案、重跑、驗(yàn)證這一整個(gè)閉環(huán)。你的角色從執(zhí)行者變成了審批者。你只需要在它每次請(qǐng)求批準(zhǔn)時(shí)判斷這個(gè)操作是否安全、方向是否對(duì)剩下的重復(fù)勞動(dòng)它包了。5.5 復(fù)盤我作為使用者做了什么關(guān)鍵判斷我不是全程躺著。在它運(yùn)行報(bào)錯(cuò)后我本來想提示它換個(gè)分區(qū)試試但發(fā)現(xiàn)它已經(jīng)在自我修復(fù)了于是閉嘴等結(jié)果。如果它連續(xù)修兩次還不行我才會(huì)介入給出方向。這就是人機(jī)協(xié)作該有的節(jié)奏AI負(fù)責(zé)執(zhí)行人負(fù)責(zé)判斷邊界和方向。它每次請(qǐng)求執(zhí)行命令時(shí)我會(huì)掃一眼將要執(zhí)行的命令——有沒有rm -rf、有沒有超出工作目錄的路徑、有沒有明顯離譜的權(quán)限操作。確認(rèn)沒問題就放行。信任是逐步建立的別一開始就全自動(dòng)也別永遠(yuǎn)不敢放權(quán)。6. 從偶爾能用到日常順手配置與提示詞調(diào)教跑通第一個(gè)任務(wù)后你大概率會(huì)希望它更像自己的工具而不是通用的AI。這一章聊怎么調(diào)教。調(diào)教分兩個(gè)層面配置文件層面的持久化設(shè)置以及會(huì)話中提示詞層面的溝通技巧。6.1 config.toml你的持久化偏好清單Codex的主要配置文件是.codex目錄下的config.toml。Windows下路徑為C:\Users\你的用戶名\.codex\config.toml。沒有就手動(dòng)創(chuàng)建。我常用的幾個(gè)配置項(xiàng)整理如下配置項(xiàng)作用我推薦的設(shè)置model指定使用的模型標(biāo)識(shí)保持默認(rèn)即可值以你賬號(hào)可用的模型為準(zhǔn)sandbox_mode運(yùn)行模式云端或本地沙箱默認(rèn)云端需要本地跑構(gòu)建時(shí)切換本地auto_approve_behavior自動(dòng)審批行為新手階段設(shè)為先出計(jì)劃熟練后再放寬include額外讓Agent讀取的路徑保持默認(rèn)即可exclude排除不掃描的目錄必須加入node_modules、dist、.git環(huán)境變量讓Agent在運(yùn)行命令時(shí)繼承的額外環(huán)境按項(xiàng)目需要填寫其中exclude是要重點(diǎn)關(guān)注的一項(xiàng)。在一個(gè)大型前端項(xiàng)目里node_modules動(dòng)輒十萬個(gè)文件不排除掉的話Agent每次列目錄都慢半拍還有可能把依賴庫里的代碼當(dāng)成項(xiàng)目代碼來分析。排除后它的上下文干凈很多回答質(zhì)量和速度都會(huì)上去。6.2 AGENTS.md把你項(xiàng)目的潛規(guī)則寫在明面上我在第3章提過codex init生成的AGENTS.md這里展開講。它本質(zhì)上是給Agent讀的項(xiàng)目說明書。你不在場(chǎng)時(shí)它靠這個(gè)文件來判斷什么能做、什么不能做。我維護(hù)這個(gè)文件的大致模板是項(xiàng)目簡介兩三句話說明項(xiàng)目是做什么的。常用命令啟動(dòng)命令、測(cè)試命令、構(gòu)建命令直接寫成可復(fù)制的形式。目錄約定哪些目錄存放源碼、哪些是構(gòu)建產(chǎn)物、哪些千萬別刪。代碼風(fēng)格分號(hào)還是無分號(hào)單引號(hào)還是雙引號(hào)縮進(jìn)幾格。明確禁區(qū)比如不要修改package.json版本號(hào)不要?jiǎng)訑?shù)據(jù)庫遷移文件。寫這個(gè)文件的技巧是把自己平時(shí)在群里跟同事反復(fù)叮囑的話全寫進(jìn)去。Agent和同事的區(qū)別是同事問一次就記住了Agent可能每次干活前都要靠這個(gè)文件補(bǔ)記憶。所以越具體越好寧可啰嗦不要留白。6.3 提示詞的四件套話術(shù)在會(huì)話里給Agent下達(dá)任務(wù)時(shí)我總結(jié)了一個(gè)四件套結(jié)構(gòu)基本不出錯(cuò)背景這個(gè)項(xiàng)目是什么相關(guān)文件在哪。目標(biāo)你要它最終交付什么。約束什么不能碰、什么必須保留、有沒有兼容性要求。驗(yàn)收標(biāo)準(zhǔn)怎么算做好比如跑npm test全部通過。舉例對(duì)比一下。差的提示詞幫我優(yōu)化一下這個(gè)下載功能?!恢纼?yōu)化到什么程度也不知道哪些方面不能動(dòng)。好的提示詞這個(gè)項(xiàng)目在src/utils/download.js里有一個(gè)下載邏輯目前并發(fā)下載10個(gè)文件時(shí)偶爾超時(shí)。請(qǐng)引入p-limit做并發(fā)控制把并發(fā)數(shù)限制在5保持現(xiàn)有函數(shù)簽名不變確保調(diào)用方不用改代碼。完成后跑一下npm test確認(rèn)沒破壞現(xiàn)有功能。后者它基本一次就能正確完成。前者它會(huì)猶豫然后問你一堆問題。在命令行交互模式下也能追問但一來一回多花時(shí)間。不如一開始就說清楚。6.4 多輪糾錯(cuò)怎么讓它從錯(cuò)誤里自己爬出來Agent會(huì)犯錯(cuò)但犯錯(cuò)后的處理方式和人協(xié)作很類似把錯(cuò)誤信息貼回去讓它分析。你不需要自己看懂報(bào)錯(cuò)只需要告訴它運(yùn)行報(bào)錯(cuò)了輸出在下面你分析一下原因然后修復(fù)。它會(huì)自己定位到報(bào)錯(cuò)那行判斷是環(huán)境問題、代碼問題還是依賴問題。這里有個(gè)小技巧如果它在同一個(gè)問題上連續(xù)失敗兩次以上不要繼續(xù)讓它自己撞墻了。這時(shí)應(yīng)該主動(dòng)補(bǔ)充上下文比如這個(gè)函數(shù)是從第三方庫里引入的不是自己寫的別去改那個(gè)庫或者這臺(tái)機(jī)器上npm install需要額外參數(shù)。很多情況下它失敗不是因?yàn)槟芰Σ粔蚨且驗(yàn)樗鄙僖粋€(gè)只有你知道的上下文信息。你把這個(gè)信息補(bǔ)給它問題往往立刻解決。6.5 MCP讓Agent長出新的器官Codex支持通過MCPModel Context Protocol擴(kuò)展能力。你可以把它理解為給Agent接入新的工具接口比如接一個(gè)數(shù)據(jù)庫操作接口它能直接查表看數(shù)據(jù)接到瀏覽器工具它能操作網(wǎng)頁接到某個(gè)內(nèi)部API的SDK它能直接調(diào)接口測(cè)試。配置方式是在config.toml里聲明mcp_servers指定啟動(dòng)命令和參數(shù)。如果你沒有明確需求這個(gè)功能可以先放一放。我的建議是先用一個(gè)月純命令行版本搞清楚它的工作習(xí)慣再考慮接MCP。一上來就接一堆擴(kuò)展容易讓你分不清能力邊界到底在哪出問題也不知道是核心功能還是擴(kuò)展的鍋。7. Windows下踩坑實(shí)錄這些問題我修了很久最后是Windows環(huán)境下的常見問題匯總。這一部分是我實(shí)際使用中花時(shí)間最多的地方寫出來幫你少繞路。7.1 安裝時(shí)報(bào)engine相關(guān)錯(cuò)誤現(xiàn)象npm install -g openai/codex報(bào)錯(cuò)提示要求Node版本高于某個(gè)值。原因機(jī)器上的Node版本太舊。解法用nvm-windows切換到22 LTS。不要手動(dòng)去改包內(nèi)的engine字段那是在制造更大的坑。7.2 PowerShell執(zhí)行策略攔住了腳本執(zhí)行現(xiàn)象Codex在本地模式下嘗試跑腳本時(shí)被PowerShell的ExecutionPolicy攔下來。原因Windows PowerShell默認(rèn)執(zhí)行策略偏向保守禁止運(yùn)行未經(jīng)簽名的腳本。解法在PowerShell里查看執(zhí)行策略必要時(shí)調(diào)整為當(dāng)前用戶可運(yùn)行本地腳本Get-ExecutionPolicy -List Set-ExecutionPolicy -Scope CurrentUser RemoteSigned如果你用的是Git Bash這個(gè)坑一般不會(huì)碰到。這也是我推薦用Windows Terminal配PowerShell 7或Git Bash的原因之一。7.3 終端中文亂碼現(xiàn)象Codex輸出的中文、或者腳本打印的中文日志在終端里顯示成亂碼。原因老式終端默認(rèn)按GBK代碼頁936解碼而大部分現(xiàn)代工具輸出UTF-8。解法切到Windows Terminal執(zhí)行chcp 65001切換UTF-8代碼頁。如果用小眾終端模擬器去它的設(shè)置里找編碼選項(xiàng)強(qiáng)制UTF-8。這個(gè)問題不影響Agent實(shí)際邏輯但影響閱讀也影響你復(fù)制報(bào)錯(cuò)信息復(fù)制出來是亂碼喂回給Agent它也看不懂。7.4 本地沙箱模式啟動(dòng)失敗現(xiàn)象嘗試使用本地沙箱模式時(shí)Codex提示當(dāng)前環(huán)境不支持或需要額外組件。原因Windows原生環(huán)境對(duì)OS級(jí)別沙箱隔離的支持較弱不像Linux那樣有成熟的內(nèi)建沙箱機(jī)制。解法兩條路。一是安裝WSL在WSL里的Linux環(huán)境啟用本地沙箱模式二是不開本地沙箱繼續(xù)用默認(rèn)的云端執(zhí)行模式。除非你頻繁需要在本地跑構(gòu)建和測(cè)試否則默認(rèn)云端模式完全夠用。7.5 跨盤符移動(dòng)文件的EXDEV錯(cuò)誤現(xiàn)象Agent寫的文件移動(dòng)腳本報(bào)EXDEV: cross-device link not permitted。原因Windows下不同磁盤分區(qū)之間fs.rename等基于同一文件系統(tǒng)設(shè)計(jì)的操作不能直接用。解法這是代碼層面的問題直接讓Agent改成復(fù)制到目標(biāo)位置后再刪除原文件。如果它沒自動(dòng)意識(shí)到你可以把這句錯(cuò)誤信息貼給它加一句注意這是Windows跨盤符問題它馬上就能修正。7.6 大項(xiàng)目掃描慢上下文越混越亂現(xiàn)象在大型前端項(xiàng)目里Agent列目錄很慢有時(shí)還會(huì)答非所問把依賴代碼當(dāng)業(yè)務(wù)邏輯分析。原因沒有排除node_modules等大目錄Agent掃描文件列表時(shí)被無用信息淹沒。解法在config.toml的exclude里加node_modules、dist、.git、coverage等目錄。改完配置后重啟Codex會(huì)話體感上快了不是一點(diǎn)半點(diǎn)。7.7 授權(quán)狀態(tài)失效任務(wù)跑到一半中斷現(xiàn)象長任務(wù)執(zhí)行到中途終端提示需要重新登錄授權(quán)。原因賬號(hào)登錄憑證過期。解法重新跑codex login。建議在開始一個(gè)長任務(wù)前先確認(rèn)登錄狀態(tài)或者在配置里了解清楚憑證的有效期機(jī)制這一點(diǎn)不同賬號(hào)策略可能不同。至少要有心理準(zhǔn)備別在大任務(wù)跑到最后一步時(shí)被登錄打斷。7.8 讓Agent讀不到某些文件現(xiàn)象Agent說找不到某個(gè)文件但文件明明就在項(xiàng)目里。原因可能是被exclude規(guī)則排除了也可能是當(dāng)前工作目錄不對(duì)。解法先看當(dāng)前會(huì)話啟動(dòng)時(shí)所在的目錄路徑再看配置文件里的exclude有沒有把該目錄排除掉。排查順序是先確定工作目錄、再查配置、最后才是問Agent你是不是看漏了。大部分情況不是它看漏是上下文邊界沒設(shè)對(duì)。最后再補(bǔ)一句實(shí)際體會(huì)用Codex CLI跑了這段時(shí)間我最深的感受是它的價(jià)值不在于AI能寫多少代碼而在于把從想法到落盤之間的距離壓縮到了極致。以前我有個(gè)小需求想一下實(shí)現(xiàn)思路、寫代碼、調(diào)試、驗(yàn)證至少半小時(shí)現(xiàn)在同樣是半小時(shí)我可以讓Agent同時(shí)做三四件事我只負(fù)責(zé)驗(yàn)收。我現(xiàn)在的固定流程是進(jìn)入項(xiàng)目目錄、寫AGENTS.md、讓它先出計(jì)劃、批準(zhǔn)執(zhí)行、有問題貼回給它的報(bào)錯(cuò)提示。這套流程跑順之后它已經(jīng)不只是工具更像一個(gè)隨叫隨到、不會(huì)抱怨、指哪打哪的虛擬同事。如果你剛開始用我這篇里最想讓你記住的一句話是不要急著把所有權(quán)限交給它。先讓它多匯報(bào)、多請(qǐng)示你多觀察幾次它的工作方式再?zèng)Q定哪些環(huán)節(jié)可以放權(quán)。安全邊界這種東西寧可保守一點(diǎn)后面再放開也不遲。