OpenAI官方揭秘:我們這樣用Codex寫代碼「7大核心用法、6條最佳實踐首次公開」
Codex已深入OpenAI各大技術(shù)團隊的日常工作,包括安全、產(chǎn)品工程、前端、API、基礎(chǔ)設(shè)施和性能工程等。
本文基于對OpenAI工程師的訪談和內(nèi)部使用數(shù)據(jù),匯編了多個用例和最佳實踐,展示Codex如何幫助團隊更快地行動、提高工作質(zhì)量,并大規(guī)模地管理復(fù)雜性。
https://cdn.openai.com/pdf/6a2631dc-783e-479b-b1a4-af0cfbd38630/how-openai-uses-codex.pdf

7大核心用法
用法一:代碼理解
Codex幫助我們的團隊在新員工入職、調(diào)試或調(diào)查事故時,快速熟悉代碼庫的陌生部分。
工程師們常用Codex來定位功能的核心邏輯、梳理服務(wù)或模塊間的關(guān)系,并追蹤系統(tǒng)中的數(shù)據(jù)流。它還能揭示架構(gòu)模式或缺失的文檔,而這些通常需要大量手動工作才能生成。
在事故響應(yīng)期間,Codex通過揭示組件間的交互或追蹤故障狀態(tài)在系統(tǒng)間的傳播路徑,幫助工程師快速進入新的代碼領(lǐng)域
團隊成員分享:
性能工程師, 檢索系統(tǒng):“修復(fù)一個bug時,用‘提問模式’(Ask mode)看看代碼庫里還有哪些地方可能出現(xiàn)同樣的問題。”
網(wǎng)站可靠性工程師, API平臺:“值班時,我會把堆棧跟蹤粘貼進去,然后問Codex認證流程在哪里。它能直接跳轉(zhuǎn)到正確的文件,讓我可以快速進行分類處理?!?/span>
DevOps工程師, 基礎(chǔ)設(shè)施服務(wù):“對于‘我該在哪里做這件事?’這類跨Terraform和Python倉庫的問題,Codex的回答比grep快得多?!?/span>
示例提示:
這個倉庫中的認證邏輯是在哪里實現(xiàn)的?
總結(jié)一下請求是如何從入口點到響應(yīng)流經(jīng)這個服務(wù)的。
哪些模塊與 [插入模塊名] 交互,故障是如何處理的?
用法二:重構(gòu)與遷移
Codex常被用于執(zhí)行跨多個文件或包的變更。例如,當(dāng)工程師更新API、更改模式實現(xiàn)方式或遷移到新的依賴項時,Codex可以輕松地保證變更的一致性。
當(dāng)同一更新需要在數(shù)十個文件中進行,或者更新需要感知那些無法用正則表達式或查找替換輕松捕捉的結(jié)構(gòu)和依賴關(guān)系時,它尤其有用。
工程師們也用它來進行代碼清理,比如將過大的模塊拆分成小塊、用現(xiàn)代模式替換舊模式,或為更好的可測試性準備代碼。
團隊成員分享:
后端工程師, ChatGPT Web:“Codex把所有舊的
getUserById()調(diào)用都換成了我們新的服務(wù)模式,然后打開了PR。這在幾分鐘內(nèi)就完成了,而手動做的話需要幾個小時?!?/span>產(chǎn)品工程師, ChatGPT Enterprise:“為了清除上線阻礙,我讓Codex掃描舊模式的每一個實例,用Markdown總結(jié)其影響,然后直接用修復(fù)方案打開PRs?!?/span>
示例提示:
按功能將此文件拆分為獨立的模塊,并為每個模塊生成測試。
將所有基于回調(diào)的數(shù)據(jù)庫訪問轉(zhuǎn)換為async/await模式。
用法三:性能優(yōu)化
Codex被用于識別和解決性能瓶頸。
在性能調(diào)優(yōu)或可靠性工作中,工程師會提示Codex分析緩慢或內(nèi)存密集型的代碼路徑,如低效循環(huán)、冗余操作或高成本查詢,并建議優(yōu)化方案,這通常會帶來顯著的效率和可靠性提升
Codex還通過識別仍在使用的高風(fēng)險或已棄用的模式來支持代碼健康。團隊依靠它來幫助減少長期技術(shù)債務(wù)并主動預(yù)防回歸。
團隊成員分享:
基礎(chǔ)設(shè)施工程師, API可靠性:“我用Codex掃描重復(fù)的高成本數(shù)據(jù)庫調(diào)用。它非常擅長標記熱點路徑和起草批處理查詢,我稍后可以對其進行微調(diào)?!?/span>
平臺工程師, 模型服務(wù):“Codex非常適合快速發(fā)現(xiàn)性能問題——我花5分鐘寫一個prompt,就能節(jié)省30分鐘的工作量?!?/span>
示例提示:
優(yōu)化此循環(huán)以提高內(nèi)存效率,并解釋為什么你的版本更快
在此請求處理程序中找到重復(fù)的高成本操作,并建議緩存機會
建議一種更快的方式來批量處理此函數(shù)中的數(shù)據(jù)庫查詢。
用法四:提升測試覆蓋率
Codex幫助工程師更快地編寫測試,尤其是在覆蓋率很低或完全缺失的地方
在修復(fù)bug或進行重構(gòu)時,工程師經(jīng)常要求Codex建議能夠覆蓋邊緣案例或潛在失敗路徑的測試。對于新代碼,它可以根據(jù)函數(shù)簽名和周圍邏輯生成單元測試或集成測試
Codex在識別邊界條件方面特別有用,例如空輸入、最大長度或不尋常但有效的狀態(tài),這些在初步測試中常常被忽略。
團隊成員分享:
前端工程師, ChatGPT Desktop:“我讓Codex在夜間處理低覆蓋率的模塊,早上醒來就能看到可運行的單元測試PRs?!?/span>
后端工程師, 支付與賬單:“在單一代碼庫(mono-repo)里切換分支很痛苦,所以我讓Codex編寫測試并啟動CI,而我則繼續(xù)在我的分支上工作?!?/span>
示例提示:
為此函數(shù)編寫單元測試,包括邊緣案例和失敗路徑
為此排序工具生成一個基于屬性的測試
擴展此測試文件,以覆蓋關(guān)于null輸入和無效狀態(tài)的缺失場景。
用法五:提升開發(fā)速度
Codex通過加速開發(fā)周期的開始和結(jié)束階段,幫助團隊更快地行動。
在啟動新功能時,工程師用它來搭建樣板代碼——生成文件夾、模塊和API存根,從而快速獲得可運行的代碼,無需手動連接每個部分。
當(dāng)項目接近發(fā)布時,Codex通過處理一些雖小但必不可少的任務(wù)來幫助滿足緊張的截止日期,例如分類bug、填補最后的實現(xiàn)空白,以及生成部署腳本、遙測鉤子或配置文件。
它也被用來將產(chǎn)品反饋轉(zhuǎn)化為初始代碼。工程師經(jīng)常粘貼用戶請求或規(guī)格說明,讓Codex生成一個可以后續(xù)返回并完善的草稿。
團隊成員分享:
產(chǎn)品工程師, ChatGPT Enterprise:“我開了一整天的會,但仍然合并了4個PRs,因為Codex在后臺幫我工作?!?/span>
全棧工程師, 內(nèi)部工具:“Codex完美地幫助我們交付了3-4個低優(yōu)先級的修復(fù),這些修復(fù)本來可能會在待辦事項列表中被擱置,這感覺非常有賦能感?!?/span>
示例提示:
為 POST /events 搭建一個新的API路由,包含基本的驗證和日志記錄
為跟蹤新用戶引導(dǎo)流程的成功/失敗生成一個遙測鉤子,使用這個模板 [插入你的遙測代碼示例]
基于此規(guī)格說明創(chuàng)建一個存根實現(xiàn):[插入規(guī)格說明或產(chǎn)品反饋]
用法六:保持心流
當(dāng)工程師的日程被碎片化和中斷填滿時,Codex幫助他們保持生產(chǎn)力。
它被用來捕捉未完成的工作、將筆記轉(zhuǎn)化為可工作的原型,或分拆出可供日后回顧的探索性任務(wù)。這使得暫停和恢復(fù)工作變得更加容易,而不會丟失上下文,尤其是在他們需要值班或會議繁多的時候。
團隊成員分享:
后端工程師, ChatGPT API:“如果我發(fā)現(xiàn)一個可以順手修復(fù)的問題,我會創(chuàng)建一個Codex任務(wù),而不是切換分支。等我有空時再審查它的PR?!?/span>
API工程師, 基礎(chǔ)設(shè)施可觀測性:“我習(xí)慣性地將Slack話題、Datadog追蹤、問題單等轉(zhuǎn)發(fā)給Codex,這樣我就可以專注于高優(yōu)先級的工作。”
示例提示:
生成一個重構(gòu)此服務(wù)的計劃,并將其拆分為更小的模塊
為重試邏輯創(chuàng)建存根,并添加一個TODO——我稍后會填寫退避邏輯
總結(jié)這個文件,這樣我明天就知道該從哪里繼續(xù)了
用法七:探索與構(gòu)思
Codex對于開放式工作也很有用,比如尋找替代解決方案或驗證設(shè)計決策。你可以提示它提供解決問題的不同方法、探索不熟悉的模式,或?qū)僭O(shè)進行壓力測試。這有助于揭示權(quán)衡、擴展設(shè)計選項,并使實現(xiàn)選擇更加清晰
它還被用來識別相關(guān)的bug。給定一個已知問題或已棄用的方法,Codex可以在代碼中識別其他地方的類似模式,從而更容易地捕獲回歸或完成清理工作
團隊成員分享:
產(chǎn)品工程師, ChatGPT Desktop:“Codex幫助我解決了冷啟動問題——我粘貼一個規(guī)格說明和一些文檔,它就能搭建出代碼框架或指出我遺漏了什么?!?/span>
性能工程師, 檢索系統(tǒng):“修復(fù)一個bug后,我會問Codex類似的問題可能潛伏在哪里,然后創(chuàng)建后續(xù)任務(wù)。”
示例提示:
如果系統(tǒng)是事件驅(qū)動而不是請求/響應(yīng)模式,這個功能會如何工作?
找出所有手動構(gòu)建SQL字符串而不是使用我們查詢構(gòu)建器的模塊
用更函數(shù)式的風(fēng)格重寫此代碼,避免突變和副作用
最佳實踐
當(dāng)獲得結(jié)構(gòu)、上下文和迭代空間時,Codex的效果最好。以下是OpenAI團隊為在日常工作中持續(xù)獲得價值而培養(yǎng)的一些習(xí)慣
1.從“提問模式”開始 (Start with Ask Mode)
對于大型變更,先提示Codex生成一個實現(xiàn)計劃(使用Ask模式),這個計劃隨后會成為你切換到Code模式時后續(xù)提示的輸入。這種兩步流程能讓Codex的輸出更有根據(jù),并有助于避免錯誤。Codex最適合處理那些需要你或團隊成員花費大約一小時或幾百行代碼來完成的、范圍明確的任務(wù)。隨著模型的改進,它能承擔(dān)的任務(wù)規(guī)模有望增加
2.迭代式改進Codex的開發(fā)環(huán)境
設(shè)置啟動腳本、環(huán)境變量和網(wǎng)絡(luò)訪問能顯著降低Codex的錯誤率。在運行任務(wù)時,注意那些可以在Codex環(huán)境配置中糾正的構(gòu)建錯誤。這可能需要幾次迭代,但從長遠來看會帶來顯著的效率提升
3.像寫Github Issue一樣構(gòu)建你的提示
當(dāng)提示模仿你描述PR或Issue的方式時,Codex的響應(yīng)會更好。這意味著在相關(guān)時要包含文件路徑、組件名稱、diffs和文檔片段。使用像“用[模塊X]中的同樣方式實現(xiàn)這個”這樣的模式可以改善結(jié)果
4.將Codex任務(wù)隊列用作輕量級待辦事項列表
分派任務(wù)來捕捉切題的想法、部分完成的工作或偶然發(fā)現(xiàn)的修復(fù)。沒有必要一次性生成一個完整的PR。Codex可以作為一個暫存區(qū),當(dāng)你重新集中注意力時可以隨時返回。
5.使用 AGENTS.md 提供持久上下文
維護一個AGENTS.md文件,以幫助Codex在你的倉庫中跨多個提示更有效地操作。這些文件通常包含命名約定、業(yè)務(wù)邏輯、已知的怪癖,或Codex無法僅從代碼中推斷出的依賴關(guān)系
6.利用“N選最佳” (Best of N) 提升輸出質(zhì)量
“N選最佳”功能允許你為單個任務(wù)同時生成多個響應(yīng),以便快速探索多種解決方案并選擇最佳方案。對于更復(fù)雜的任務(wù),你可以審查多個迭代版本,并結(jié)合不同響應(yīng)的部分來獲得更強的結(jié)果
source:https://cdn.openai.com/pdf/6a2631dc-783e-479b-b1a4-af0cfbd38630/how-openai-uses-codex.pdf






























