如何使用 OpenAI Codex 写代码

coding入门8 分钟阅读2026/7/5

上周,我正面对着一个乱成一锅粥的 Node.js 代码库,急需大重构。里面有几十个函数还在用过时的回调模式,得全改成 async/await,外加一些怎么也消不掉的 TypeScript 类型报错。要是手动改,光是无脑查找替换就得花上好几个小时。我之前一直拿 Cursor 做点自动补全的小活儿,但我现在需要的是个能跨文件改代码,还能跑测试套件确保不会搞崩的狠角色。

就在这时,我决定好好试试 OpenAI 的 Codex。刚发布那会儿我没拿它当回事,以为不过是个套着终端壳的聊天机器人,但周末我深度体验了一把,还真被惊艳到了。下面我就来详细说说我是怎么配置的、踩了哪些坑,以及你怎么才能把它用在自己的开发任务上。

了解 Codex 的四种形态

在开始之前,你得知道 Codex 并不是单一的产品。它其实有四种用法,选错了只会让你抓狂:

  1. 桌面应用(Desktop App):一个独立应用,你把本地文件夹或 git 仓库指给它,它就直接在你电脑上干活。
  2. VS Code 扩展:在编辑器里并排运行,非常适合行内编辑和快速提问。
  3. 命令行工具(CLI):基于终端的界面,专为命令行重度用户准备。
  4. Codex 云端版(Codex Cloud):在 OpenAI 的沙箱服务器上运行。能搞定更大的任务,甚至可以通过 GitHub 集成直接提 PR,完全不用碰你本地环境。

这次重构,我从桌面应用开始,因为我需要它读取本地文件、改代码,还要跑本地的测试套件。下面是我的实操过程。

第一步:配置与认证

上手的出奇简单,这也让我后来栽了跟头。

  1. 下载并打开 Codex 桌面应用。
  2. 用你的 ChatGPT 账号登录。(如果你有 Pro、Team 或 Enterprise 订阅,会有更高的速率限制,干正事的话这个绝对少不了。)
  3. 在电脑上选一个文件夹或 git 仓库作为 Codex 的工作区。

我把它指向了那个乱糟糟的 Node.js 项目文件夹。应用立马开始给代码库建索引,中等大小的项目大概花了 30 秒。

我踩的第一个坑: 我直接在主工作分支上开搞,没建新分支。Codex 会直接原地修改你的文件。不到五分钟,15 个文件里散落着一堆未提交的改动,我都不太确定它到底干了啥。现在,我每次开任务前必定会新建一个 git 分支。万一搞砸了,直接 git checkout . 从头再来就行。

第二步:开启你的第一个任务

Codex 是按“任务”运作的。你给它一个提示词,它就会制定计划、写代码,最关键的是——它能自己跑命令来验证结果。

针对我的回调转 async/await 重构,我在任务输入框里敲了这段提示词:

Find all functions in the src/ directory that use callback patterns 
(the last argument is a function called 'cb' or 'callback') and convert 
them to async/await. Update any callers of these functions to handle 
the promises correctly. After making the changes, run 'npm test' to 
ensure nothing is broken.

(在 src/ 目录下找出所有使用回调模式的函数(最后一个参数是名为 'cb' 或 'callback' 的函数),并将它们转换为 async/await。更新这些函数的所有调用方,以正确处理 promise。修改完成后,运行 'npm test' 确保没有搞崩。)

接下来发生的事让我挺意外。Codex 并没有无脑开始替换文本。它先列出了一份分步计划:首先扫描模式,然后列出受影响的文件,接着进行编辑,最后跑测试。在执行计划前,它还征得了我的同意。

第三步:看它干活(并适时干预)

Codex 开始干活后,我能看到它打开文件、修改代码、保存文件。它大概过了 20 个文件,完成了模式转换。改得很干净——它准确识别了 return callback(err) 的模式,并转成了 throw new Error(err),这波操作很细节。

然后它卡壳了。我有个文件里有一大串复杂的回调瀑布,变量还跨作用域共享。Codex 第一次转换时搞出了个作用域 bug。当它跑 npm test 的时候,我眼睁睁看着测试套件实时报错。

Codex 就是在这里赢得了我的尊重:它读取了报错的测试输出,意识到了自己的错误,把那个文件的改动撤回了,然后换了种思路——在转 async/await 之前,先把共享状态包进闭包里。第二次尝试,测试通过了。

这种迭代循环(编辑 → 跑测试 → 看报错 → 修复)才是 Codex 的真正实力。它不只是生成代码片段,而是一个能验证自己工作成果的智能体。

第四步:用 VS Code 扩展精修

主体重构搞定后,还剩几个 TypeScript 类型报错。这时候我切到了 VS Code 扩展,因为改动比较小,而且我想直接在编辑器里看 diff。

VS Code 扩展的交互更偏向对话。我选中一个报类型错的函数,问它“TypeScript 为什么抱怨这里的返回类型?”,它解释说转换后的 async 函数现在返回的是 Promise<void> 而不是单纯的 void,导致我没更新的接口报错了。它主动提出修复接口,我点了一下就接受了修改。

第五步:把任务委派给 Codex Cloud

第二天,我有了个新任务:从头写个处理 CSV 解析的工具模块。这活儿不需要本地环境,所以我试了试 Codex Cloud。

配置 GitHub 集成大概就两分钟。我授权 OpenAI 访问我的仓库,给它发了任务提示词,让它自己在云端跑。差不多十分钟后,我收到通知说它已经提了个 PR。我在 GitHub 上审查了这个 PR,留了几条评论让它处理边界情况,Codex 居然真的根据我的评审意见推了新的 commit。感觉就像招了个随叫随到的初级开发。

实用建议与真实局限

深度体验了 Codex 之后,这是我总结的血泪经验,真希望我一开始就知道:

1. 永远在新分支上干活。 怎么强调都不为过。Codex 会直接改你的文件。如果你在主分支上搞,有的你焦虑的。

2. 提示词要具体到极致。 只说“重构一下”只会得到不可控的结果。写“把 src/utils 下所有的回调转成 async/await,确保所有调用方都更新了,并运行 npm test”,才能得到你要的东西。

3. 给它一套靠谱的测试套件。 当 Codex 能验证自己的工作时,它的表现是最好的。如果没有测试,它会很乐意地做出看起来正确但暗藏 bug 的改动。智能体的水平取决于它的反馈循环。

4. 根据任务选对工具。 桌面应用适合需要本地上下文的大型多文件重构;VS Code 扩展适合快速修复和代码解释;如果你是 SSH 连到服务器上,CLI 是首选;Codex Cloud 最适合那些独立的、最后只需要一个 PR 的任务。

接下来聊聊局限。Codex 绝不是装在盒子里的资深开发。在处理深层嵌套的架构决策时,它还是挺吃力的。重构的时候,它就漏掉了一个我大脑立刻就能察觉的循环依赖。它还有个过度设计的毛病——我让它加个日志函数,它居然想搞一整套带文件轮转的 Winston 日志系统,其实简单包个 console.log 就完事了。所以,它写的每一行代码你还是得老老实实 review。

另外,它的速率限制消耗得很快。用普通的 Plus 账号,我大概重度重构了 45 分钟就触发上限了。如果你想用它干满一个工作日,大概率得升级到 Pro 或 Team 账号。

最后,上下文窗口不是无限的。在庞大的单体仓库里,Codex 有时会忘掉它已经改过哪些文件,导致前后改动不一致。对于巨型代码库,把任务拆成更小、更聚焦的提示词,别指望它能“一键修复整个应用”。

尽管有这些槽点,Codex 已经在我的工作流里稳占一席之地了。它替代不了我,但确实把重构、写样板代码和修 bug 时那种枯燥乏味的苦力活给接管了。而且说实话,看着它自己读报错、自己修 bug,是真的挺有意思的。

相关 Agent

G

GitHub Copilot

AI结对编程助手,提供实时代码建议。

了解更多 →