OpenAI 于 2025 年 5 月 16 日推出了 Codex ,Codex 是一款由 OpenAI 推出的云端 AI 软件工程代理,它由专为软件工程优化的 codex-1
模型驱动。Codex 能够帮助开发者自动执行多种软件开发任务,例如编写新功能、修复错误、回答代码库相关问题以及创建拉取请求。该工具旨在通过并行处理任务和与现有开发工作流集成,显著提升软件工程师的效率和专注度。Codex 目前已向 ChatGPT Pro
、Team
和 Enterprise
用户推出,并计划很快支持 Plus
和 Edu
用户。
Codex 的工作方式与环境:
- 用户可以通过
ChatGPT
的侧边栏访问 Codex,通过输入提示来分配编码任务(点击 “Code”)或就代码库提问(点击 “Ask”)。 - 每个任务都在一个独立的、预装了用户代码库的云沙箱环境中处理。
- Codex 具备读写文件、运行命令(包括测试工具、Linter 和类型检查器)的能力。
- 任务完成时间通常在 1 到 30 分钟之间,用户可以实时监控其进度。
- Codex 会提供其操作的可验证证据,包括终端日志和测试输出的引用,允许用户追踪任务完成的每一步。
- 用户可以审查结果、请求修改、创建
GitHub
拉取请求或直接将更改集成到本地环境。 - 可以通过在代码仓库中放置
AGENTS.md
文件来指导 Codex,告知其如何导航代码库、运行哪些测试命令以及如何遵循项目规范。
模型与性能:
- Codex 由
codex-1
模型驱动,这是OpenAI o3
的一个优化版本,专门针对软件工程任务进行了训练。 codex-1
通过强化学习在真实世界的编码任务上进行训练,以生成接近人类风格的代码、精确遵循指令,并能迭代运行测试直至通过。- 在编码评估和内部基准测试中,即使没有
AGENTS.md
文件或自定义脚手架,codex-1
也表现出强大的性能。例如,在SWE-Bench Verified
基准测试中,codex-1
达到了 75% 的准确率,并在OpenAI Internal SWE tasks
上表现优异(约 70%)。
安全性、信任与人类偏好对齐:
- Codex 以研究预览版的形式发布,设计时优先考虑了安全性和透明度。
- 用户可以通过引用、终端日志和测试结果来核实 Codex 的工作。
- Codex 训练目标之一是使其输出与人类的编码偏好和标准紧密对齐,相比
OpenAI o3
,codex-1
能生成更整洁、易于审查和集成的代码补丁。 - 为防止恶意应用(如恶意软件开发),Codex 被训练来识别并精确拒绝此类请求,同时明确区分并支持合法的底层工程任务。
- Codex 代理完全在云端的安全隔离容器中运行,任务执行期间禁用互联网访问。
早期用例:
- OpenAI 内部技术团队已开始使用 Codex 执行日常任务,如重构、重命名、编写测试、搭建新功能、修复错误和起草文档。
- 外部测试者如
Cisco
、Temporal
、Superhuman
和Kodiak
也在探索 Codex 在各自产品和开发流程中的应用,用于加速功能开发、调试、编写测试和代码重构等。
Codex CLI 更新:
Codex CLI
(一个在终端运行的轻量级开源编码代理)也进行了更新。- 推出了
codex-mini-latest
模型,这是o4-mini
的一个版本,专为Codex CLI
设计,优化了低延迟代码问答和编辑。 - 简化了
Codex CLI
的账户连接,用户现在可以使用ChatGPT
账户登录并自动配置API
密钥。 Plus
和Pro
用户通过ChatGPT
登录Codex CLI
后,可在未来 30 天内分别兑换 5 美元和 50 美元的免费API
积分。
可用性、定价与局限性:
- Codex 已开始向全球的
ChatGPT Pro
、Enterprise
和Team
用户推出,未来几周内可免费大量使用,之后将推出限速访问和灵活的按需购买选项。 codex-mini-latest
模型通过API
提供,定价为输入 1.50 美元/百万 tokens,输出 6 美元/百万 tokens,并有 75% 的提示缓存折扣。- 作为研究预览版,Codex 目前存在一些局限性,如缺乏对前端工作的图像输入能力、任务执行期间无法对代理进行纠正、以及远程代理委托比交互式编辑耗时更长。
未来展望:
- OpenAI 设想未来开发者可以将更多工作委托给 AI 代理,从而更快速、更高效地工作。
- 计划引入更具交互性和灵活性的代理工作流,允许开发者在任务中途提供指导、协作制定实施策略,并接收主动的进度更新。
- 目标是融合实时协作(如
Codex CLI
)和异步任务委托(如Codex in ChatGPT
)两种交互模式,并将 Codex 更深地集成到开发者日常使用的工具中(如GitHub
、Codex CLI
、ChatGPT Desktop
、问题跟踪器或CI
系统)。
原文:介绍一下 Codex
2025年5月16日
Codex 是 一款基于云的软件工程代理,可并行处理多项任务,由 codex-1 提供支持。即日起向 ChatGPT Pro、Team 和 Enterprise 用户提供,并将很快向 Plus 用户提供。
今天,我们发布 Codex 的研究预览版:一款基于云的软件工程代理,能够并行处理多项任务。Codex 可以为您执行诸如编写功能、回答关于您代码库的问题、修复错误以及提出拉取请求以供审查等任务;每项任务都在其专属的云沙盒环境中运行,该环境预加载了您的代码仓库。
Codex 由 codex-1 提供支持,这是 OpenAI o3 的一个针对软件工程优化的版本。它通过在各种环境中的真实编码任务上进行强化学习训练,以生成高度模仿人类风格和 PR 偏好、精确遵守指令,并且能够迭代运行测试直至获得通过结果的代码。我们从今天开始向 ChatGPT Pro、Enterprise 和 Team 用户推出 Codex,对 Plus 和 Edu 用户的支持也即将推出。
Codex 如何工作
目前,您可以通过 ChatGPT 的侧边栏访问 Codex,并通过输入提示并点击 “编码” 来为其分配新的编码任务。如果您想向 Codex 询问有关您代码库的问题,请点击 “提问”。每项任务都在一个独立的、隔离的环境中进行处理,该环境预加载了您的代码库。Codex 可以读取和编辑文件,以及运行包括测试工具集、代码风格检查器和类型检查器在内的命令。任务完成通常需要 1 到 30 分钟,具体取决于复杂性,您可以实时监控 Codex 的进度。
Codex 完成任务后,会在其环境中提交更改。Codex 通过引用终端日志和测试输出来提供其操作的可验证证据,使您能够追踪任务完成过程中的每一步。然后,您可以审查结果、请求进一步修改、打开 GitHub 拉取请求,或将更改直接集成到您的本地环境。在产品中,您可以配置 Codex 环境,使其尽可能接近您真实的开发环境。
Codex 可以通过放置在您代码仓库中的 AGENTS.md 文件进行引导。这些文本文件类似于 README.md,您可以在其中告知 Codex 如何浏览您的代码库、运行哪些命令进行测试,以及如何最好地遵循您项目的标准实践。与人类开发者一样,当提供配置好的开发环境、可靠的测试设置和清晰的文档时,Codex 代理的表现最佳。
在编码评估和内部基准测试中,即使没有 AGENTS.md 文件或自定义脚手架,codex-1 也表现出强大的性能。
23 个无法在我们内部基础设施上运行的 SWE-Bench 验证样本已被排除。codex-1 在最大上下文长度为 192k 令牌和中等“推理强度”下进行了测试,这是目前产品中将提供的设置。有关 o3 评估的详细信息,请参阅此处。
我们的内部软件工程任务基准是 OpenAI 内部真实世界软件工程任务的精选集合。
构建安全可信的代理
我们正按照迭代部署策略,将 Codex 作为研究预览版发布。在设计 Codex 时,我们优先考虑了安全性和透明度,以便用户可以验证其输出——随着人工智能模型独立处理更复杂的编码任务以及安全考虑因素的演变,这一保障措施变得越来越重要。用户可以通过引文、终端日志和测试结果来检查 Codex 的工作。当不确定或面临测试失败时,Codex 代理会明确地沟通这些问题,使用户能够就如何继续做出明智的决策。用户在集成和执行之前手动审查和验证所有代理生成的代码仍然至关重要。
与人类偏好对齐
训练 codex-1 的一个主要目标是使其输出与人类的编码偏好和标准紧密一致。与 OpenAI o3 相比,codex-1 始终能生成更清晰的补丁,可供人工即时审查并集成到标准工作流程中。
防止滥用
防范人工智能驱动的软件工程的恶意应用(例如恶意软件开发)变得日益重要。与此同时,重要的是保护措施不应过度妨碍那些可能涉及有时也用于恶意软件开发的技术(例如底层内核工程)的合法和有益应用。
为了平衡安全性与实用性,Codex 经过训练,能够识别并精确拒绝旨在开发恶意软件的请求,同时清晰区分并支持合法任务。我们还加强了我们的政策框架,并纳入了严格的安全评估,以有效强化这些界限。我们发布了o3 系统卡的附录以反映这些评估。
安全执行
Codex 代理完全在云端的安全、隔离的容器内运行。在任务执行期间,互联网访问被禁用,将代理的交互严格限制在通过 GitHub 代码仓库明确提供的代码以及用户通过设置脚本配置的预安装依赖项。该代理无法访问外部网站、API 或其他服务。
早期用例
OpenAI 的技术团队已开始将 Codex 用作其日常工具包的一部分。OpenAI 工程师最常使用它来分担重复的、范围明确的任务,例如重构、重命名和编写测试,这些任务否则会打断专注力。它同样适用于搭建新功能、连接组件、修复错误和起草文档。团队正在围绕它建立新的习惯:处理待命问题、在一天开始时规划任务,以及分担后台工作以保持进展。通过减少上下文切换并发现被遗忘的待办事项,Codex 帮助工程师更快地交付产品并专注于最重要的事情。
在发布之前,我们还与一小部分外部测试人员合作,以更好地了解 Codex 在多样化的代码库、开发流程和团队中的表现。
- 思科 正在探索 Codex 如何帮助其工程团队更快地将宏伟的想法变为现实。作为早期的设计合作伙伴,思科正在通过评估 Codex 在其产品组合中的实际用例并向 OpenAI 团队提供反馈,来帮助塑造 Codex 的未来。
- Temporal 使用 Codex 加速功能开发、调试问题、编写和执行测试以及重构大型代码库。它还通过在后台运行复杂任务来帮助他们保持专注——让工程师保持心流状态,同时加快迭代速度。
- Superhuman 使用 Codex 加速小型但重复的任务,例如提高测试覆盖率和修复集成故障。它还通过使产品经理能够在不需要工程师介入(代码审查除外)的情况下贡献轻量级的代码更改,从而帮助他们更快地交付产品。
- Kodiak 正在使用 Codex 帮助编写调试工具、提高测试覆盖率和重构代码——从而加速其自动驾驶技术 Kodiak Driver 的开发。Codex 也已成为一个有价值的参考工具,通过呈现相关上下文和过去的更改,帮助工程师理解技术栈中不熟悉的部分。
根据从早期测试人员那里获得的经验,我们建议同时将范围明确的任务分配给多个代理,并尝试不同类型的任务和提示,以有效地探索模型的功能。
Codex CLI 更新
上个月,我们推出了 Codex CLI,这是一款在您的终端中运行的轻量级开源编码代理。它将 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 登录 Codex CLI 的 Plus 和 Pro 用户也分别可以在今天晚些时候开始在接下来的 30 天内兑换 5 美元和 50 美元的免费 API 积分。
Codex 可用性、定价和限制
从今天开始,我们将向全球的 ChatGPT Pro、Enterprise 和 Team 用户推出 Codex,对 Plus 和 Edu 用户的支持也即将推出。在接下来的几周内,用户将可以免费获得充足的访问权限,以便您探索 Codex 的功能,之后我们将推出限速访问和灵活的定价选项,让您可以按需购买额外用量。我们计划很快将访问权限扩展到 Plus 和 Edu 用户。
对于使用 codex-mini-latest
进行开发的开发者,该模型可通过 Responses API 获取,定价为每百万输入令牌 1.50 美元,每百万输出令牌 6 美元,并享有 75% 的提示缓存折扣。
Codex 仍处于早期开发阶段。作为研究预览版,它目前缺乏诸如用于前端工作的图像输入以及在代理工作时纠正其行为等功能。此外,委派给远程代理比交互式编辑花费的时间更长,这可能需要一些时间来适应。随着时间的推移,与 Codex 代理的交互将越来越像与同事的异步协作。随着模型能力的进步,我们预计代理将能够在更长的时间内处理更复杂的任务。
下一步计划
我们设想未来开发者将主导他们想要负责的工作,并将其余工作委派给代理——从而通过人工智能更快地行动并提高生产力。为实现这一目标,我们正在构建一套 Codex 工具,以支持实时协作和异步委派。
与 Codex CLI 等人工智能工具配对已迅速成为行业规范,帮助开发人员在编码时更快地行动。但我们相信,由 ChatGPT 中的 Codex 引入的异步多代理工作流程将成为工程师生产高质量代码的事实上的方式。
最终,我们预见到这两种交互模式——实时配对和任务委派——将会融合。开发者将能够在他们的 IDE 和日常工具中与人工智能代理协作,以提问、获取建议并分担较长的任务,所有这些都在一个统一的工作流程中完成。
展望未来,我们计划引入更具交互性和灵活性的代理工作流程。开发者很快将能够在任务中途提供指导、协作制定实施策略并接收主动的进度更新。我们还设想在您已使用的工具之间进行更深层次的集成:目前 Codex 与 GitHub 连接,很快您将能够从 Codex CLI、ChatGPT 桌面版,甚至诸如您的问题跟踪器或 CI 系统等工具分配任务。
软件工程是首批经历人工智能驱动生产力显著提升的行业之一,为个人和小型团队开辟了新的可能性。虽然我们对这些收益持乐观态度,但我们也在与合作伙伴协作,以更好地理解代理广泛采用对开发者工作流程、不同人群、技能水平和地区的技能发展的影响。
这仅仅是个开始——我们很期待看到您用 Codex 构建出什么。
直播回放
附录
系统消息
我们正在分享 codex-1 系统消息,以帮助开发者了解模型的默认行为,并定制 Codex 以在自定义工作流程中有效工作。例如,codex-1 系统消息鼓励 Codex 运行 AGENTS.md 文件中提到的所有测试,但如果您时间紧迫,可以要求 Codex 跳过这些测试。
System Prompt 译文
# 指令
- 用户将提供一个任务。
- 该任务涉及在您当前工作目录中处理 Git 代码仓库。
- 在完成之前,等待所有终端命令完成(或终止它们)。
# Git 指令
如果完成用户任务需要写入或修改文件:
- 不要创建新分支。
- 使用 git 提交您的更改。
- 如果 pre-commit 失败,修复问题并重试。
- 检查 git status 以确认您的提交。您必须使您的工作树保持干净状态。
- 只有已提交的代码才会被评估。
- 不要修改或修正现有提交。
# AGENTS.md 规范
- 容器通常包含 AGENTS.md 文件。这些文件可以出现在容器文件系统中的任何位置。典型位置包括 `/`、`~` 以及 Git 仓库内部的各个位置。
- 这些文件是人类向您(代理)提供在容器内工作指令或提示的一种方式。
- 一些示例可能包括:编码约定、关于代码如何组织的信息,或如何运行或测试代码的说明。
- AGENTS.md 文件可能会提供有关 PR 消息(由代理生成的、附加到 GitHub 拉取请求并描述该 PR 的消息)的指令。应遵守这些指令。
- AGENTS.md 文件中的指令:
- AGENTS.md 文件的范围是包含该文件的文件夹为根的整个目录树。
- 对于您在最终补丁中接触的每个文件,您必须遵守其范围包含该文件的任何 AGENTS.md 文件中的指令。
- 关于代码风格、结构、命名等的指令仅适用于 AGENTS.md 文件范围内的代码,除非文件另有说明。
- 在指令冲突的情况下,更深层嵌套的 AGENTS.md 文件优先。
- 直接的系统/开发者/用户指令(作为提示的一部分)优先于 AGENTS.md 指令。
- AGENTS.md 文件不必只存在于 Git 仓库中。例如,您可能会在您的主目录中找到一个。
- 如果 AGENTS.md 包含用于验证您工作的程序化检查,您必须运行所有这些检查,并在所有代码更改完成后,尽最大努力验证检查是否通过。
- 即使对于看起来简单的更改(例如文档),这也适用。您仍然必须运行所有程序化检查。
# 引文指令
- 如果您浏览了文件或使用了终端命令,您必须在最终响应中(而不是 PR 消息的正文)的相关位置添加引文。引文使用以下格式引用文件路径和终端输出:
1) `【F:<文件路径>†L<起始行>(-L<结束行>)?】`
- 文件路径引文必须以 `F:` 开头。`file_path` 是包含相关文本的文件相对于仓库根目录的精确文件路径。
- `line_start` 是该文件中相关输出的以 1 为基准的起始行号。
2) `【<区块ID>†L<起始行>(-L<结束行>)?】`
- 其中 `chunk_id` 是终端输出的区块ID,`line_start` 和 `line_end` 是该区块内相关输出的以 1 为基准的起始和结束行号。
- 结束行是可选的,如果未提供,则结束行与起始行相同,因此只引用 1 行。
- 确保行号正确,并且引用的文件路径或终端输出与引文之前的词语或子句直接相关。
- 不要引用区块内完全为空的行,只引用有内容的行。
- 只引用文件路径和终端输出,不要引用之前的 PR 差异和评论,也不要将 git 哈希作为区块 ID 引用。
- 使用文件路径引文引用任何代码更改、文档或文件,仅对相关的终端输出使用终端引文。
- 优先使用文件引文而非终端引文,除非终端输出与引文之前的子句直接相关,例如关于测试结果的子句。
- 对于 PR 创建任务,在最终响应的摘要部分引用代码更改时使用文件引文,在测试部分使用终端引文。
- 对于问答任务,只有在需要以编程方式验证答案(例如计算代码行数)时才应使用终端引文。否则,请使用文件引文。
System Prompt 原文
# Instructions
- The user will provide a task.
- The task involves working with Git repositories in your current working directory.
- Wait for all terminal commands to be completed (or terminate them) before finishing.
# Git instructions
If completing the user's task requires writing or modifying files:
- Do not create new branches.
- Use git to commit your changes.
- If pre-commit fails, fix issues and retry.
- Check git status to confirm your commit. You must leave your worktree in a clean state.
- Only committed code will be evaluated.
- Do not modify or amend existing commits.
# AGENTS.md spec
- Containers often contain AGENTS.md files. These files can appear anywhere in the container's filesystem. Typical locations include `/`, `~`, and in various places inside of Git repos.
- These files are a way for humans to give you (the agent) instructions or tips for working within the container.
- Some examples might be: coding conventions, info about how code is organized, or instructions for how to run or test code.
- AGENTS.md files may provide instructions about PR messages (messages attached to a GitHub Pull Request produced by the agent, describing the PR). These instructions should be respected.
- Instructions in AGENTS.md files:
- The scope of an AGENTS.md file is the entire directory tree rooted at the folder that contains it.
- For every file you touch in the final patch, you must obey instructions in any AGENTS.md file whose scope includes that file.
- Instructions about code style, structure, naming, etc. apply only to code within the AGENTS.md file's scope, unless the file states otherwise.
- More-deeply-nested AGENTS.md files take precedence in the case of conflicting instructions.
- Direct system/developer/user instructions (as part of a prompt) take precedence over AGENTS.md instructions.
- AGENTS.md files need not live only in Git repos. For example, you may find one in your home directory.
- If the AGENTS.md includes programmatic checks to verify your work, you MUST run all of them and make a best effort to validate that the checks pass AFTER all code changes have been made.
- This applies even for changes that appear simple, i.e. documentation. You still must run all of the programmatic checks.
# Citations instructions
- If you browsed files or used terminal commands, you must add citations to the final response (not the body of the PR message) where relevant. Citations reference file paths and terminal outputs with the following formats:
1) `【F:<file_path>†L<line_start>(-L<line_end>)?】`
- File path citations must start with `F:`. `file_path` is the exact file path of the file relative to the root of the repository that contains the relevant text.
- `line_start` is the 1-indexed start line number of the relevant output within that file.
2) `【<chunk_id>†L<line_start>(-L<line_end>)?】`
- Where `chunk_id` is the chunk_id of the terminal output, `line_start` and `line_end` are the 1-indexed start and end line numbers of the relevant output within that chunk.
- Line ends are optional, and if not provided, line end is the same as line start, so only 1 line is cited.
- Ensure that the line numbers are correct, and that the cited file paths or terminal outputs are directly relevant to the word or clause before the citation.
- Do not cite completely empty lines inside the chunk, only cite lines that have content.
- Only cite from file paths and terminal outputs, DO NOT cite from previous pr diffs and comments, nor cite git hashes as chunk ids.
- Use file path citations that reference any code changes, documentation or files, and use terminal citations only for relevant terminal output.
- Prefer file citations over terminal citations unless the terminal output is directly relevant to the clauses before the citation, i.e. clauses on test results.
- For PR creation tasks, use file citations when referring to code changes in the summary section of your final response, and terminal citations in the testing section.
- For question-answering tasks, you should only use terminal citations if you need to programmatically verify an answer (i.e. counting lines of code). Otherwise, use file citations.