如何使用OpenAI Codex编程

如何使用OpenAI Codex编程

“软件工程正在发生变化,到 2025 年底,软件工程的面貌将发生根本性的改变。”Greg Brockman 在 OpenAI 发布会上的开场白为接下来的活动定下了基调。OpenAI发布了Codex,这是一个云原生软件代理,旨在与开发者一起工作。

Codex 并非单一产品,而是由 Codex-1 (OpenAI 的最新编码模型)驱动的代理系列。几周前,Codex CLI 作为在终端内运行的轻量级伴侣问世。今天,焦点转向了它更大的远程代理,它完全可以在 ChatGPT 上使用。你可以启动多台“迷你电脑”,在喝咖啡的时候处理多项任务。本文将概述 ChatGPT 上的 Codex,我们将很快发布一些基于项目的相关文章。

从代码补全到Vibe编码

OpenAI 早在 2021 年就开始致力于人工智能辅助编码,当时推出了最初的 Codex 模型,并为 GitHub Copilot 等工具提供支持。那时,它的功能更像是为开发人员提供自动完成支持。

从那时起,很多事情都发生了变化。得益于强化学习技术的重大进步,Codex 的功能已经大大增强。

现在,在 Vibe 编码成为新常态的世界里,你只需用母语描述你想要的东西,Codex 就会找出如何构建它。最新版本的 Codex-1 基于 OpenAI 的 o3 架构,并根据真实世界的拉取请求进行了微调。它不仅能生成代码,还能遵循最佳实践,如内衬、编写测试和保持一致的风格,使其真正适用于实际开发工作。

推荐阅读:掌握 Vibe 编码艺术指南

如何通过ChatGPT界面访问Codex?

按照以下简单步骤开始使用 Codex(所需时间 5 分钟):

1. 在 ChatGPT 中找到 Codex

打开 ChatGPT,进入左侧导航栏的“Codex”侧边栏,您会看到一个新的“Codex (beta)”图标。单击它以显示代理仪表板。

Codex

 

2. 多因子身份验证

点击“Set up MFA to continue”,使用您喜欢的身份验证应用程序(如 Google Authenticator 或 Authy)扫描二维码,然后输入验证码进行验证。就这样,一切就绪。

多因子身份验证

3. 连接 GitHub(仅限首次使用)

只需点击一下 OAuth,Codex 即可授权读/写您的版本库。您可以将其限制在特定组织或个人项目中。

连接 GitHub

4. 选择版本库和分支

选择你希望 Codex 负责的项目。代理会将该分支克隆到它自己的沙盒中。

5. 配置环境(可选)

添加环境变量、秘密或设置命令,就像在 CI 作业中一样。Linters 和 formatters 已预装,但你也可以根据需要更改版本。

6. 选择任务模板

Ask:“解释架构”。Code:”查找并修复 test_api.py 中的错误测试。Suggest:让 Codex 扫描软件仓库并提出维护建议,或直接用自然语言输入自定义指令。

7. 运行与多任务

按下“Launch”。每个任务都会启动自己的微型虚拟机;你可以并行排队处理几十个任务,然后继续在 ChatGPT 的其他地方聊天。

8. 查看结果

绿色复选标记表示测试通过。点击任务卡可以查看差异、模型解释和完整的工作日志。

9. 合并或迭代

点击“Open PR”,将分支推送回 GitHub,或在需要修改时回复任务并提供后续说明。

OpenAI Codex演示

在本节中,我将与大家分享不同的示例,演示这款全新的软件开发代理如何为您的生活增添色彩!

示例 1:加速开发

OpenAI 工程师纳乔-索托(Nacho Soto)展示了 Codex 如何通过设置项目脚手架(如 Swift 软件包)帮助他更快地开始新任务。通过简单的提示,他就能卸下设置工作,专注于构建功能,而 Codex 会在后台处理其余工作。

示例 2:审查工作流

Codex 不仅仅支持代码生成。它还适用于审查工作流,开发人员可在其中检查人工智能生成的拉取请求,发现格式问题等问题,并提示 Codex 进行修复。

示例 3:使用Codex修正代码

工程师 Max Johnson 解释了 Codex 如何帮助他修复小错误和代码质量问题,而又不分散他的注意力。他没有切换上下文,而是将这些任务交给 Codex,之后再查看结果,以改进代码库。

示例 4:通话时发现代码库中的错误

Calvin 分享了 Codex 如何在值班时帮助处理紧急任务。通过向 Codex 发送堆栈跟踪,他可以快速获得诊断或修复。它还有助于微调警报和处理日常运营工作,从而减少人工操作。

OpenAI Codex与o3

提示:“Please fix the following issue in the matplotlib/matplotlib repository. Please resolve the issue in the problem below by editing and testing code files in your current code execution session. The repository is cloned in the /testbed folder. You must fully solve the problem for your answer to be considered correct.”

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Problem statement:[Bug]: Windows correction is not correct in `mlab._spectral_helper`
### Bug summary
Windows correction is not correct in `mlab._spectral_helper`:
https://github.com/matplotlib/matplotlib/blob/3418bada1c1f44da1f73916c5603e3ae79fe58c1/lib/matplotlib/mlab.py#L423-L430
The `np.abs` is not needed, and give wrong result for window with negative value, such as `flattop`.
For reference, the implementation of scipy can be found here :
https://github.com/scipy/scipy/blob/d9f75db82fdffef06187c9d8d2f0f5b36c7a791b/scipy/signal/_spectral_py.py#L1854-L1859
### Code for reproduction
```python
import numpy as np
from scipy import signal
window = signal.windows.flattop(512)
print(np.abs(window).sum()**2-window.sum()**2)
```
### Actual outcome
4372.942556173262
### Expected outcome
0
### Additional information
_No response_
### Operating system
_No response_
### Matplotlib Version
latest
### Matplotlib Backend
_No response_
### Python version
_No response_
### Jupyter version
_No response_
### Installation
None
Problem statement:[Bug]: Windows correction is not correct in `mlab._spectral_helper` ### Bug summary Windows correction is not correct in `mlab._spectral_helper`: https://github.com/matplotlib/matplotlib/blob/3418bada1c1f44da1f73916c5603e3ae79fe58c1/lib/matplotlib/mlab.py#L423-L430 The `np.abs` is not needed, and give wrong result for window with negative value, such as `flattop`. For reference, the implementation of scipy can be found here : https://github.com/scipy/scipy/blob/d9f75db82fdffef06187c9d8d2f0f5b36c7a791b/scipy/signal/_spectral_py.py#L1854-L1859 ### Code for reproduction ```python import numpy as np from scipy import signal window = signal.windows.flattop(512) print(np.abs(window).sum()**2-window.sum()**2) ``` ### Actual outcome 4372.942556173262 ### Expected outcome 0 ### Additional information _No response_ ### Operating system _No response_ ### Matplotlib Version latest ### Matplotlib Backend _No response_ ### Python version _No response_ ### Jupyter version _No response_ ### Installation None
Problem statement:[Bug]: Windows correction is not correct in `mlab._spectral_helper`
### Bug summary

Windows correction is not correct in `mlab._spectral_helper`:
https://github.com/matplotlib/matplotlib/blob/3418bada1c1f44da1f73916c5603e3ae79fe58c1/lib/matplotlib/mlab.py#L423-L430

The `np.abs` is not needed, and give wrong result for window with negative value, such as `flattop`.
For reference, the implementation of scipy can be found here :
https://github.com/scipy/scipy/blob/d9f75db82fdffef06187c9d8d2f0f5b36c7a791b/scipy/signal/_spectral_py.py#L1854-L1859

### Code for reproduction

```python
import numpy as np
from scipy import signal
window = signal.windows.flattop(512)
print(np.abs(window).sum()**2-window.sum()**2)
```


### Actual outcome

4372.942556173262

### Expected outcome

0

### Additional information

_No response_

### Operating system

_No response_

### Matplotlib Version

latest

### Matplotlib Backend

_No response_

### Python version

_No response_

### Jupyter version

_No response_

### Installation

None

输出:

观察结果:

Codex 生成的修正比 o3 生成的修正更准确、更完整。它正确地删除了 mlab._spectral_helper 中窗口归一化过程中不必要使用的 np.abs(),因为它曾导致带有负值(如 flattop)的窗口出现不正确的结果。Codex 用正确的数学表达式替换了错误的逻辑,使用 (window2).sum() 代替了 (np.abs(window)2).sum(),这符合 SciPy 实现中的最佳实践。它还包含一个单元测试来确认该行为,从而使修复既可验证又可靠。相比之下,o3 的输出似乎并不完整,也没有明确解决核心问题,因此 Codex 是更有力的选择。

OpenAI Codex的工作原理

  1. Codex 编写代码:该模型首先生成代码,以解决给定任务。
  2. 它运行代码:不仅要评估输出结果的可信度,还要实际执行。
  3. 检查测试结果:Codex 观察生成的代码是否通过了相关测试。
  4. 只有任务成功完成,它才能获得奖励:与专注于下一个单词预测的传统 LLM 不同,Codex 只有在代码端到端都能正常工作的情况下才能获得高分。
  5. 它通过反馈来学习:如果代码失败,Codex 会重试:创建重写脚本、修正校验错误并调整格式,直到符合标准。
  6. 它像初级开发人员一样发展:这种培训方法能让 Codex 的行为不像文本生成器,而更像一位深思熟虑的工程师,遵循真实世界的编码实践。

OpenAI Codex的工作原理

在标准化基准和 OpenAI 内部工作流程中,Codex-1 都优于之前的模型。如下图所示,在 SWE-Bench Verified 基准测试中,Codex-1 在所有尝试次数上都达到了更高的准确度,并在 OpenAI 的内部软件工程任务中遥遥领先。这凸显了 Codex-1 在现实世界中的可靠性,尤其是对于将其集成到日常工作流程中的开发人员而言。

Codex-1基准测试

Source: OpenAI

云计算工作室内部一瞥

每次按下 Codex 侧边栏中的“运行”按钮,系统就会创建一个微型虚拟机沙盒:拥有自己的文件系统、CPU、内存和锁定的网络策略。系统会克隆你的版本库,注入环境变量,并预装常用的开发工具(排版器、格式化器、测试运行器)。这种隔离带来了两个立竿见影的好处:

  1. 安全性和可重复性– 流氓脚本无法触碰你的笔记本电脑或泄露机密;整个运行过程可在稍后重放。
  2. 规模并行性– 需要修改错别字、协调超时时间,以及查找神秘的错误?启动三个任务,并行查看结果。

可选的 AGENTS.md 文件就像机器人的 README:你可以描述项目布局、如何运行测试、偏好的提交风格,甚至要求在步骤之间打印 ASCII 猫。说明越丰富,Codex 的运行就越流畅。

可用性、限制与下一步?

Codex 目前对 ChatGPT 专业版、企业版和团队版用户开放。免费层和 EDU 用户有望很快获得访问权限。在研究预览期间,使用将受到严格的限制,但这些限制可能会根据需求而变化。未来的计划包括为 Codex 提供 API、集成到 CI 管道以及统一 CLI 和 ChatGPT 版本,以便在本地和云开发之间实现无缝切换。

推荐阅读:

结论

我刚刚完成了一次多文件重构,而且从未碰过我的笔记本电脑。

– OpenAI 工程师

这样的故事预示着未来的编码将类似于高级协调:你提供意图,代理处理细节。Codex 代表着开发人员与代码交互方式的转变,从手动编写所有代码转变为协调高级任务。工程师现在更关注意图和验证,而 Codex 则负责执行。对许多人来说,这预示着一种新的开发工作流程的开始,在这种流程中,人与代理的协作将成为标准而非例外。

您打算如何使用 Codex?请在下面的评论区告诉我!

评论留言