主题
Codex 云端功能
Codex 是 OpenAI 的编程代理,可以读取、修改和运行代码。它帮助你更快地构建功能、修复 bug,并理解不熟悉的代码。Codex 可以在后台、并行地处理多个任务,甚至可以主动使用云端的自有环境。
开始使用
首先访问 chatgpt.com/codex,在那里你可以连接 GitHub 账号,这样 Codex 可以处理你仓库中的代码,你也可以从它的工作中创建 pull request。
Codex 包含在你的 Plus、Pro、Business、Edu 或 Enterprise 计划中。注意,某些 Enterprise 工作区可能需要管理员设置才能访问 Codex。
云端任务工作原理
你可以让 Codex 读取、写入和执行仓库中的代码,以回答问题或起草 PR。
当你启动云端任务时,Codex 会为该任务配置一个沙箱化的云容器,其中包含你可以在环境中指定的代码和依赖项。这意味着 Codex 可以在后台工作,并行处理多个任务,并且可以从不同的设备或服务(如手机或 GitHub)触发。
你可以从大多数 Codex 客户端委托工作:Web、IDE 扩展、iOS 中的 Codex 标签,甚至在 GitHub 中 @codex。(CLI 对云端委托的支持即将推出。)
示例提示
询问模式
使用询问模式获取代码的建议和见解,不应用任何更改。
重构建议
Codex 可以帮助头脑风暴结构改进,例如拆分文件、提取函数和收紧文档。
看看 <代码库中最复杂的文件>。
你能建议更好的方式来拆分它、测试它和隔离功能吗?问答和架构理解
Codex 可以回答关于代码库的深入问题并生成图表。
记录并创建一个 mermaidjs 图表,展示从客户端端点到数据库的完整请求流程。代码模式
当你希望 Codex 主动修改代码并准备 pull request 时,使用代码模式。
安全漏洞
Codex 擅长审计复杂逻辑和发现安全缺陷。
<我的包> 中有一个内存安全漏洞。找到它并修复它。代码审查
在任何 pull request URL 后附加 .diff 并将其包含在提示中。Codex 在容器内加载补丁。
请审查我的代码并建议改进。diff 如下:
<diff>添加测试
实现初始更改后,跟进有针对性的测试生成。
从我的分支,请为以下文件添加测试:
<files>Bug 修复
堆栈跟踪通常足以让 Codex 定位和纠正问题。
在 <我的包> 中找到并修复一个 bug。产品和 UI 修复
虽然 Codex 无法渲染浏览器,但它可以解决小的 UI 回归,你可以提供图片作为输入来提供额外上下文。
我们入职页面上的模态框没有居中。你能修复它吗?云端环境配置
虽然 Codex 云端任务开箱即用,但你可以自定义代理的环境,例如安装依赖项和工具。访问更完整的依赖项、linter、格式化器等通常会带来更好的代理性能。
在 Codex 设置 中配置你的环境。
任务执行流程
当你提交任务时,后台发生以下事情:
- 我们准备一个容器化环境,包含你仓库在所需分支或 sha 的代码,以及你的设置和维护脚本
- 我们为代理配置网络访问。网络访问默认关闭,但你可以配置环境以获得有限或完全的网络访问
- 代理然后在循环中运行终端命令。它编写代码、运行测试,并尝试检查其工作。代理尝试遵守你在 AGENTS.md 文件中定义的任何指定的 lint 或测试命令。代理除了你提供的终端或 CLI 工具外,没有访问任何特殊工具
- 当代理完成时,它呈现其答案和它修改的任何代码的 diff
- 你可以选择打开 PR 或请求后续
默认容器镜像
Codex 代理在名为 universal 的默认容器镜像中运行,预装了常见的语言、包和工具。
可以在环境设置中配置 Python、Node.js 等的版本。
自定义设置脚本
虽然 codex-universal 预装了语言以提高速度和便利性,但你也可以使用设置脚本向容器安装额外的包。
如果你的开发设置更复杂,你也可以提供自定义设置脚本。例如:
bash
# 安装类型检查器
pip install pyright
# 安装依赖
poetry install --with test
pnpm install自动依赖安装
对于使用常见包管理器(npm、yarn、pnpm、pip、pipenv 和 poetry)的项目,Codex 可以自动安装依赖项和工具。
环境变量和密钥
环境变量可以指定,并在任务的整个持续时间内设置。
密钥也可以指定,类似于环境变量,但:
- 在日志中被编辑
- 安全存储
- 不会在任务输出中暴露
容器缓存
Codex 缓存容器状态以使运行新任务和后续任务更快。缓存的环境将克隆仓库并检出默认分支。然后运行设置脚本,结果容器状态缓存最多 12 小时。
当从缓存恢复容器时,我们检出为任务指定的分支,然后运行维护脚本。维护脚本是可选的,有助于为缓存容器更新依赖项,其中设置脚本是在较旧的提交上运行的。
如果设置脚本、维护脚本、环境变量或密钥有更改,我们将自动使缓存失效并删除任何缓存的容器。如果仓库中有会导致向后不兼容问题的更改,你可以使用环境页面上的"重置缓存"按钮手动使缓存失效。
网络访问配置
在设置脚本阶段,网络访问可用于安装依赖项。在代理阶段,网络访问默认禁用,但你可以配置环境以获得有限或完全的网络访问。
安全警告
警告
启用网络访问会使你的环境面临安全风险,包括提示注入、代码或密钥泄露、包含恶意软件或漏洞,或使用有许可限制的内容。为了降低风险,只允许必要的域和方法,并始终审查 Codex 的输出和工作日志。
域允许列表
你可以从预设允许列表中选择:
- 无 — 禁用所有网络访问
- 常见依赖 — 包括流行的源代码控制、包管理和其他开发常用域
- 完全访问 — 允许所有出站网络
使用"无"或"常见依赖"时,你可以向允许列表添加额外的域。
允许的 HTTP 方法
为了增强安全性,你可以进一步将网络请求限制为仅 GET、HEAD 和 OPTIONS 方法。其他 HTTP 方法(POST、PUT、PATCH、DELETE 等)将被阻止。
安全要求
由于 Codex 直接与你的代码库交互,与许多其他 ChatGPT 功能相比,它需要更高级别的账户安全。
多因素认证
- 如果你使用社交登录提供商(Google、Microsoft、Apple),不需要在 ChatGPT 账户上启用多因素认证(MFA)。但是,我们强烈建议在社交登录提供商上设置它(如果尚未配置)
- 如果你使用电子邮件和密码登录,在访问 Codex 之前需要在账户上设置 MFA
- 如果你的账户支持多种登录方法,且其中一种是使用电子邮件和密码,无论你当前使用哪种方法登录,都必须设置 MFA
单点登录(SSO)
如果你通过单点登录(SSO)访问 ChatGPT,你组织的 SSO 管理员应确保为所有用户强制执行 MFA(如果尚未配置)。
从 CLI 使用云端
codex cloud 命令让你无需离开终端就可以分类和启动 Codex 云端任务。
bash
# 打开交互式选择器
codex cloud
# 直接启动任务
codex cloud exec --env ENV_ID "总结未解决的 bug"
# 请求多个解决方案
codex cloud exec --env ENV_ID --attempts 3 "总结未解决的 bug"环境 ID 来自你的 Codex 云端配置——使用 codex cloud 并按 Ctrl+O 选择环境,或使用 Web 仪表板确认确切值。