Codex 介绍

一个基于云的软件工程 Agent,由 codex-1 驱动,可以并行处理多项任务。今天起向 ChatGPT Pro、Team 和 Enterprise 用户开放,Plus 用户也将很快可用。

试用 Codex(在新窗口中打开)

显示控制面板,询问“接下来应该编写什么代码?”,带有一个提示框、仓库/分支选择器以及一个以柔和的代码为主题的背景上的任务列表。

今天,我们发布 Codex 的研究预览版:一个基于云的软件工程 Agent,可以并行处理多项任务。Codex 可以为您执行诸如编写功能、回答有关代码库的问题、修复错误以及提出供审查的 pull request 等任务;每个任务都在其自己的云沙箱环境中运行,并预加载了您的仓库。

Codex 由 codex-1 提供支持,它是针对软件工程优化的 OpenAI o3 版本。它通过强化学习在各种环境中的真实编码任务上进行训练,以生成与人类风格和 PR 偏好非常相似的代码,精确地遵守指令,并且可以迭代地运行测试直到收到通过的结果。我们今天开始向 ChatGPT Pro、Enterprise 和 Team 用户推出 Codex,并将在不久后支持 Plus 和 Edu 用户。

Codex 的工作原理

今天,您可以通过 ChatGPT 中的侧边栏访问 Codex,并通过键入提示并单击**“Code”来为其分配新的编码任务。如果您想向 Codex 询问有关代码库的问题,请单击“Ask”**。每个任务都在单独的隔离环境中独立处理,该环境预加载了您的代码库。Codex 可以读取和编辑文件,以及运行包括测试工具、linters 和类型检查器在内的命令。任务完成通常需要 1 到 30 分钟,具体取决于复杂程度,您可以实时监控 Codex 的进度。

Codex 完成任务后,它会在其环境中提交更改。Codex 通过终端日志和测试输出的引用提供其操作的可验证证据,使您可以跟踪任务完成期间所采取的每个步骤。然后,您可以查看结果,请求进一步的修订,打开 GitHub pull request,或直接将更改集成到您的本地环境中。在产品中,您可以配置 Codex 环境以尽可能接近您的实际开发环境。

Codex 可以通过放置在仓库中的 AGENTS.md 文件来指导。这些是文本文件,类似于 README.md,您可以在其中告知 Codex 如何浏览代码库、运行测试的命令以及如何最好地遵守项目的标准实践。与人类开发人员一样,当提供配置的开发环境、可靠的测试设置和清晰的文档时,Codex Agent 的表现最佳。

在编码评估和内部基准测试中,即使没有 AGENTS.md 文件或自定义 scaffolding,codex-1 也表现出强大的性能。

排除了 23 个在我们的内部基础设施上无法运行的 SWE-Bench 验证样本。codex-1 在 192k tokens 的最大上下文长度和中等“推理工作量”下进行了测试,这是今天将在产品中提供的设置。有关 o3 评估的详细信息,请参见此处。我们的内部 SWE 任务基准测试是 OpenAI 上一组精选的真实内部 SWE 任务。

构建安全和值得信赖的 Agent

我们正在发布 Codex 作为研究预览版,这符合我们的迭代部署策略。在设计 Codex 时,我们优先考虑了安全性和透明度,以便用户可以验证其输出 - 随着 AI 模型独立处理更复杂的编码任务且安全考虑因素不断发展,这种保护措施变得越来越重要。用户可以通过引用、终端日志和测试结果来检查 Codex 的工作。当不确定或遇到测试失败时,Codex Agent 会明确地传达这些问题,使用户能够就如何进行做出明智的决定。用户仍然必须在集成和执行之前手动审查和验证所有 Agent 生成的代码。

代码审查屏幕截图,其中测试文件覆盖验证了引用的文件名,以及蓝色背景上的摘要和通过的测试。

代码审查屏幕截图,其中黑色终端覆盖显示了一个通过的引用文件名测试;在蓝色的柔和背景上可见“修复/具有特殊字符的差异错误”更改的摘要和差异。

与人类偏好对齐

训练 codex-1 的主要目标是使输出与人类编码偏好和标准紧密对齐。与 OpenAI o3 相比,codex-1 始终如一地生成更干净的补丁,可供立即进行人工审核并集成到标准工作流程中。

astropymatplotlibdjangoexpensify
请修复 astropy/astropy 仓库中的以下问题。请通过编辑和测试当前代码执行会话中的代码文件来解决以下问题。仓库克隆在 /testbed 文件夹中。您必须完全解决问题,您的答案才会被认为是正确的。问题陈述:Modeling 的 `separability_matrix` 对于嵌套 CompoundModels 无法正确计算可分离性 考虑以下模型: ```python from astropy.modeling import models as m from astropy.modeling.separable import separability_matrix cm = m.Linear1D(10) & m.Linear1D(5) ``` 它的可分离性矩阵正如您可能期望的那样是对角线的: ```python >>> separability_matrix(cm) array([[ True, False], [False, True]]) ``` 如果我使模型更复杂: ```python >>> separability_matrix(m.Pix2Sky_TAN() & m.Linear1D(10) & m.Linear1D(5)) array([[ True, True, False, False], [ True, True, False, False], [False, False, True, False], [False, False, False, True]]) ``` 输出矩阵再次,正如预期的那样,线性模型的输出和输入是可分离的并且彼此独立。但是,如果我嵌套这些复合模型: ```python >>> separability_matrix(m.Pix2Sky_TAN() & cm) array([[ True, True, False, False], [ True, True, False, False], [False, False, True, True], [False, False, True, True]]) ``` 突然输入和输出不再可分离?我觉得这像是一个 bug,但我可能遗漏了一些东西?
展开

Codex

OpenAI o3
请修复 matplotlib/matplotlib 仓库中的以下问题。请通过编辑和测试当前代码执行会话中的代码文件来解决以下问题。仓库克隆在 /testbed 文件夹中。您必须完全解决问题,您的答案才会被认为是正确的。问题陈述:[Bug]:Windows 校正在 `mlab._spectral_helper` 中不正确 ### Bug 摘要 Windows 校正在 `mlab._spectral_helper` 中不正确:https://github.com/matplotlib/matplotlib/blob/3418bada1c1f44da1f73916c5603e3ae79fe58c1/lib/matplotlib/mlab.py#L423-L430 不需要 `np.abs`,并且对于具有负值的窗口(例如 `flattop`)会给出错误的结果。作为参考,scipy 的实现可以在这里找到:https://github.com/scipy/scipy/blob/d9f75db82fdffef06187c9d8d2f0f5b36c7a791b/scipy/signal/_spectral_py.py#L1854-L1859 ### 用于重现的代码 ```python import numpy as np from scipy import signal window = signal.windows.flattop(512) print(np.abs(window).sum()**2-window.sum()**2) ``` ### 实际结果 4372.942556173262 ### 预期结果 0 ### 附加信息 _无响应_ ### 操作系统 _无响应_ ### Matplotlib 版本 最新 ### Matplotlib 后端 _无响应_ ### Python 版本 _无响应_ ### Jupyter 版本 _无响应_ ### 安装 无
展开

Codex

OpenAI o3
请修复 django/django 仓库中的以下问题。请通过编辑和测试当前代码执行会话中的代码文件来解决以下问题。仓库克隆在 /testbed 文件夹中。您必须完全解决问题,您的答案才会被认为是正确的。问题陈述:仅持续时间表达式在 SQLite 和 MySQL 上不起作用 描述 class Experiment(models.Model): estimated_time = models.DurationField() list(Experiment.objects.annotate(duration=F('estimated_time') + datime.timedelta(1))) Traceback (most recent call last): File "/home/sergey/dev/django/tests/expressions/tests.py", line 1218, in test_duration_expressions list(Experiment.objects.annotate(duration=F('estimated_time') + delta)) File "/home/sergey/dev/django/django/db/models/query.py", line 269, in __iter__ self._fetch_all() File "/home/sergey/dev/django/django/db/models/query.py", line 1172, in _fetch_all self._result_cache = list(self._iterable_class(self)) File "/home/sergey/dev/django/django/db/models/query.py", line 63, in __iter__ for row in compiler.results_iter(results): File "/home/sergey/dev/django/django/db/models/sql/compiler.py", line 998, in apply_converters value = converter(value, expression, connection) File "/home/sergey/dev/django/django/db/backends/base/operations.py", line 571, in convert_durationfield_value value = str(decimal.Decimal(value) / decimal.Decimal(1000000)) decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>]
展开

Codex

OpenAI o3
您的任务是修复以下问题:dd [付款保留 2024-10-14] [$250] LHN - 成员的房间名称在缓存删除后未在 LHN 中更新 如果您还没有,请查看我们的贡献指南以了解入职,并发送电子邮件至 contributors@expensify.com 以请求加入我们的 Slack 频道! 版本号:9.0.34-2 是否可在暂存环境中重现?:是 是否可在生产环境中重现?:是 如果此问题是在回归测试期间发现的,请从 TestRail 添加测试名称、ID 和链接:https://expensify.testrail.io/index.php?/tests/view/4960406 受影响的测试人员的电子邮件或电话号码(无客户):sustinov@applausemail.com 问题报告者:Applause 内部团队 执行的操作: 先决条件: 创建一个 WS 并向其中添加两个员工 步骤: 打开 NewExpensify 应用程序 使用 WS 管理员帐户登录 转到帐户设置 转到故障排除菜单 单击“清除缓存并重新启动”并清除缓存 返回 LHN 收件箱 预期结果: 在缓存删除后,成员的房间名称应更新并在 LHN 中显示房间名称 实际结果: 在缓存删除后,成员的房间名称未在 LHN 中更新 解决方法: 未知
展开

Codex OpenAI o3

预防滥用

防范 AI 驱动的软件工程恶意应用(例如恶意软件开发)变得越来越重要。与此同时,重要的是,保护措施不应不适当地阻碍可能涉及有时也用于恶意软件开发的技术(例如低级内核工程)的合法和有益的应用。

为了平衡安全性和实用性,Codex 经过训练,可以识别并准确拒绝旨在开发恶意软件的请求,同时清楚地区分并支持合法的任务。我们还加强了我们的策略框架,并纳入了严格的安全评估,以有效地加强这些边界。我们发布了 o3 系统卡⁠的附录,以反映这些评估。

安全执行

Codex Agent 完全在云中安全隔离的容器内运行。在任务执行期间,互联网访问被禁用,从而将 Agent 的交互仅限于通过 GitHub 仓库显式提供的代码以及用户通过设置脚本配置的预安装依赖项。Agent 无法访问外部网站、API 或其他服务。

早期用例

OpenAI 的技术团队已开始将 Codex 作为其日常工具包的一部分。OpenAI 工程师最常使用它来卸载重复的、范围明确的任务,例如重构、重命名和编写测试,否则这些任务会中断注意力。它同样适用于搭建新功能、连接组件、修复错误和起草文档。团队正在围绕它建立新的习惯:分类随叫随到的问题、在一天开始时计划任务以及卸载后台工作以保持前进。通过减少上下文切换和浮出被遗忘的待办事项,Codex 帮助工程师更快地交付产品并专注于最重要的事情。

在发布之前,我们还与一小群外部测试人员合作,以更好地了解 Codex 在不同代码库、开发流程和团队中的表现。

根据早期测试人员的经验,我们建议同时将范围明确的任务分配给多个 Agent,并尝试不同类型的任务和提示以有效地探索模型的功能。

Codex CLI 的更新

上个月,我们推出了 Codex CLI,这是一个轻量级的开源编码 Agent,可在您的终端中运行。它将 o3 和 o4-mini 等模型的功能带入您的本地工作流程,使您可以轻松地与它们配对以更快地完成任务。

今天,我们还发布了一个更小的 codex-1 版本,它是专门为在 Codex CLI 中使用而设计的 o4-mini 版本。此新模型支持 CLI 中更快速的工作流程,并针对低延迟代码问答和编辑进行了优化,同时保留了在指令遵循和风格方面的相同优势。它现在可用作 Codex CLI 和 API 中 codex-mini-latest 的默认模型。当我们继续改进 Codex-mini 模型时,底层快照将定期更新。

我们还使将您的开发者帐户连接到 Codex CLI 变得更加容易。现在,您可以直接使用您的 ChatGPT 帐户登录并选择要使用的 API 组织,而无需手动生成和配置 API 令牌。我们将自动为您生成和配置 API 密钥。另外,注册了 ChatGPT Plus 和 Pro 的用户如果使用 ChatGPT 登录 Codex CLI,也可以在接下来的 30 天内分别开始兑换 5 美元和 50 美元的免费 API 积分。

Codex 的可用性、定价和限制

从今天开始,我们将在全球范围内向 ChatGPT Pro、Enterprise 和 Team 用户推出 Codex,并将在不久后支持 Plus 和 Edu 用户。在接下来的几周内,用户将可以免费获得慷慨的访问权限,以便您探索 Codex 可以做什么,之后我们将推出速率限制的访问权限和灵活的定价选项,让您可以按需购买额外的使用量。我们计划很快扩展对 Plus 和 Edu 用户的访问。

对于使用 codex-mini-latest 构建的开发者,该模型在 Responses API 上可用,定价为每 1M 个输入 tokens 1.50 美元,每 1M 个输出 tokens 6 美元,并享受 75% 的提示缓存折扣。

Codex 仍处于早期开发阶段。作为研究预览版,它目前缺少诸如前端工作的图像输入以及在 Agent 工作时纠正 Agent 的能力等功能。此外,委托给远程 Agent 比交互式编辑需要更长的时间,这可能需要一些时间来适应。随着时间的推移,与 Codex Agent 的交互将越来越类似于与同事的异步协作。随着模型功能的进步,我们预计 Agent 会在更长的时间内处理更复杂的任务。

接下来是什么

我们设想一个未来,开发人员推动他们想要拥有的工作,并将其余工作委托给 Agent - 从而更快地行动,并通过 AI 提高生产力。为了实现这一目标,我们正在构建一套支持实时协作和异步委托的 Codex 工具。

与 Codex CLI 等 AI 工具配对已迅速成为行业规范,帮助开发人员在编码时更快地行动。但我们相信 ChatGPT 中 Codex 引入的异步、多 Agent 工作流程将成为工程师生产高质量代码的事实上的方式。

最终,我们看到这两种交互模式 - 实时配对和任务委托 - 正在融合。开发人员将在他们的 IDE 和日常工具中与 AI Agent 协作,以提出问题、获得建议和卸载更长的任务,所有这些都在一个统一的工作流程中进行。

展望未来,我们计划引入更具交互性和灵活性的 Agent 工作流程。开发人员将很快能够在中期提供指导、协作制定实施策略并获得主动的进度更新。我们还设想在您已经使用的工具中进行更深入的集成:今天,Codex 连接到 GitHub,很快您就可以从 Codex CLI、ChatGPT Desktop 甚至诸如您的问题跟踪器或 CI 系统之类的工具中分配任务。

软件工程是首批体验到 AI 驱动的生产力显着提升的行业之一,为个人和小型团队开辟了新的可能性。虽然我们对这些收益感到乐观,但我们也在与合作伙伴合作,以更好地了解广泛采用 Agent 对开发人员工作流程、跨人员的技能发展、技能水平和地域的影响。

这仅仅是个开始 - 我们很高兴看到您使用 Codex 构建什么。

直播回放

附录

系统消息

我们正在共享 codex-1 系统消息,以帮助开发人员了解模型的默认行为,并定制 Codex 以在自定义工作流程中有效地工作。例如,codex-1 系统消息鼓励 Codex 运行 AGENTS.md 文件中提到的所有测试,但如果您时间紧迫,可以要求 Codex 跳过这些测试。

1
# 指令
2
- 用户将提供一个任务。
3
- 该任务涉及在当前工作目录中使用 Git 仓库。
4
- 在完成所有终端命令之前(或终止它们),请等待所有终端命令完成。
5
6
# Git 指令
7
如果完成用户的任务需要编写或修改文件:
8
- 不要创建新分支。
9
- 使用 git 提交您的更改。
10
- 如果 pre-commit 失败,请修复问题并重试。
11
- 检查 git 状态以确认您的提交。您必须将您的工作树保持在干净的状态。
12
- 只有已提交的代码才会被评估。
13
- 不要修改或修改现有的提交。
14
15
# AGENTS.md 规范
16
- 容器通常包含 AGENTS.md 文件。这些文件可以出现在容器文件系统中的任何位置。典型位置包括 `/`、`~` 以及 Git 仓库中的各种位置。
17
- 这些文件是人类向您(Agent)提供在容器内工作的说明或提示的一种方式。
18
- 一些示例可能是:编码约定、有关代码如何组织的信息,或有关如何运行或测试代码的说明。
19
- AGENTS.md 文件可能会提供有关 PR 消息(Agent 生成的 GitHub Pull Request 附加的消息,描述 PR)的说明。应遵守这些说明。
20
- AGENTS.md 文件中的说明:
21
 - AGENTS.md 文件的范围是整个目录树,以包含它的文件夹为根。
22
 - 对于您在最终补丁中接触的每个文件,您必须遵守任何 AGENTS.md 文件中的说明,这些文件的范围包含该文件。
23
 - 除非文件另有说明,否则有关代码样式、结构、命名等的说明仅适用于 AGENTS.md 文件范围内的代码。
24
 - 在冲突指令的情况下,更深层嵌套的 AGENTS.md 文件优先。
25
 - 直接系统/开发人员/用户指令(作为提示的一部分)优先于 AGENTS.md 指令。
26
- AGENTS.md 文件不必仅存在于 Git 仓库中。例如,您可能会在您的主目录中找到一个。
27
- 如果 AGENTS.md 包含用于验证您的工作的程序化检查,您必须运行所有这些检查并尽最大努力验证在所有代码更改完成后检查是否通过。
28
 - 这甚至适用于看起来简单的更改,即文档。您仍然必须运行所有程序化检查。
29
30
# 引用说明
31
- 如果您浏览了文件或使用了终端命令,您必须在最终响应(而不是 PR 消息的正文)中添加相关引用。引用使用以下格式引用文件路径和终端输出:
32
 1) `【F:<file_path>†L<line_start>(-L<line_end>)?】`
33
 - 文件路径引用必须以 `F:` 开头。`file_path` 是文件相对于包含相关文本的仓库根目录的准确文件路径。
34
 - `line_start` 是该文件中相关输出的 1 索引起始行号。
35
 2) `【<chunk_id>†L<line_start>(-L<line_end>)?】`
36
 - 其中 `chunk_id` 是终端输出的 chunk_id,`line_start` 和 `line_end` 是该 chunk 中相关输出的 1 索引起始行号和结束行号。
37
- 行尾是可选的,如果未提供,则行尾与行开始相同,因此仅引用 1 行。
38
- 确保行号正确,并且引用的文件路径或终端输出与引用之前的单词或子句直接相关。
39
- 不要引用 chunk 中完全空的行,只引用有内容的行。
40
- 仅从文件路径和终端输出中引用,不要从先前的 pr 差异和评论中引用,也不要将 git 哈希引用为 chunk id。
41
- 使用引用任何代码更改、文档或文件的文件路径引用,并且仅对相关的终端输出使用终端引用。
42
- 除非终端输出与之前的条款直接相关(即测试结果上的条款),否则首选文件引用而不是终端引用。
43
 - 对于 PR 创建任务,在最终响应的摘要部分中引用代码更改时使用文件引用,并在测试部分中使用终端引用。
44
 - 对于问答任务,如果您需要以编程方式验证答案(即计算代码行数),则应仅使用终端引用。否则,请使用文件引用。

```
`

*   [2025](https://openai.com/research/index/?tags=2025)
*   [OpenAI Codex](https://openai.com/research/index/?tags=codex)

## 作者

[OpenAI ](https://openai.com/news/?author=openai#results)
我们的研究

*   [研究索引](https://openai.com/research/index/)
*   [研究概述](https://openai.com/research/)
*   [研究驻留计划](https://openai.com/residency/)

最新进展

*   [OpenAI o3](https://openai.com/index/introducing-o3-and-o4-mini/)
*   [OpenAI o4-mini](https://openai.com/index/introducing-o3-and-o4-mini/)
*   [GPT-4o](https://openai.com/index/gpt-4o-system-card/)
*   [GPT-4o mini](https://openai.com/index/gpt-4o-mini-advancing-cost-efficient-intelligence/)
*   [Sora](https://openai.com/index/sora-system-card/)

安全

*   [安全方法](https://openai.com/safety/)
*   [安全与隐私](https://openai.com/security-and-privacy/)
*   [信任与透明度](https://openai.com/trust-and-transparency/)

ChatGPT

*   [探索 ChatGPT](https://openai.com/chatgpt/overview/)
*   [团队](https://openai.com/chatgpt/team/)
*   [企业版](https://openai.com/chatgpt/enterprise/)
*   [教育版](https://openai.com/chatgpt/education/)
*   [定价](https://openai.com/chatgpt/pricing/)
*   [下载](https://openai.com/chatgpt/download/)

Sora

*   [Sora 概述](https://openai.com/sora/)
*   [功能](https://openai.com/sora/#features)
*   [定价](https://openai.com/sora/#pricing)
*   [Sora 登录(在新窗口中打开)](https://sora.com/)

API 平台

*   [平台概述](https://openai.com/api/)
*   [定价](https://openai.com/api/pricing/)
*   [API 登录(在新窗口中打开)](https://platform.openai.com/login)
*   [文档(在新窗口中打开)](https://platform.openai.com/docs/overview)
*   [开发者论坛(在新窗口中打开)](https://community.openai.com/)

商业

*   [商业概述](https://openai.com/business/)

公司

*   [关于我们](https://openai.com/about/)
*   [我们的章程](https://openai.com/charter/)
*   [职业](https://openai.com/careers/)
*   [品牌](https://openai.com/brand/)

更多

*   [新闻](https://openai.com/news/)
*   [故事](https://openai.com/stories/)
*   [帮助中心(在新窗口中打开)](https://help.openai.com/)

条款与政策

*   [使用条款](https://openai.com/policies/terms-of-use/)
*   [隐私政策](https://openai.com/policies/privacy-policy/)
*   [安全](https://openai.com/security-and-privacy/)
*   [其他政策 ](https://openai.com/policies/)

[(在新窗口中打开)](https://x.com/OpenAI)[(在新窗口中打开)](https://www.youtube.com/OpenAI)[(在新窗口中打开)](https://www.linkedin.com/company/openai)[(在新窗口中打开)](https://github.com/openai)[(在新窗口中打开)](https://www.instagram.com/openai/?hl=en)[(在新窗口中打开)](https://www.tiktok.com/@openai?lang=en)[(在新窗口中打开)](https://discord.gg/openai)

OpenAI © 2015–2025
EnglishUnited States