云环境
使用环境控制 Codex 在云端聊天期间安装和运行的内容。例如,你可以添加依赖项、安装代码检查器和格式化工具等工具,以及设置环境变量。
在 Codex 设置 中配置环境。
Codex 云端聊天的运行方式
Section titled “Codex 云端聊天的运行方式”提交提示后,会发生以下情况:
- Codex 创建一个容器,并在选定的分支或 commit SHA 上检出你的代码仓库。
- Codex 运行你的设置脚本;如果恢复的是缓存容器,还会运行可选的维护脚本。
- Codex 应用你的互联网访问设置。设置脚本运行时可以访问互联网。默认情况下,代理无法访问互联网,但你可以根据需要启用有限或不受限制的访问。请参阅代理互联网访问。
- 代理循环运行终端命令。它会编辑代码、运行检查,并尝试验证其工作。如果你的代码仓库包含
AGENTS.md,代理会使用它来查找项目专用的 lint 和测试命令。 - 代理完成后,会显示其回答以及它修改的任何文件的差异。你可以打开 PR,或提出后续问题。
默认通用镜像
Section titled “默认通用镜像”Codex 代理在名为 universal 的默认容器镜像中运行。该镜像预先安装了常用的编程语言、软件包和工具。
在环境设置中,选择 Set package versions 来固定 Python、Node.js 和其他运行时的版本。
有关已安装内容的详细信息,请参阅 openai/codex-universal,其中提供了参考 Dockerfile 以及可在本地拉取和测试的镜像。
虽然 codex-universal 预装了多种语言,可以提升速度和便利性,但你也可以使用设置脚本向容器安装其他软件包。
环境变量和密钥
Section titled “环境变量和密钥”环境变量在整个聊天期间都会设置,包括设置脚本阶段和代理阶段。
密钥与环境变量类似,但存在以下区别:
- 密钥会通过额外的加密层进行存储,并且只会在任务执行期间解密。
- 密钥仅对设置脚本可用。出于安全原因,代理阶段开始前会移除密钥。
对于使用常见软件包管理器(npm、yarn、pnpm、pip、pipenv 和 poetry)的项目,Codex 可以自动安装依赖项和工具。
如果你的开发环境设置更复杂,也可以提供自定义设置脚本。例如:
# Install type checkerpip install pyright
# Install dependenciespoetry install --with testpnpm install设置脚本在与代理不同的 Bash 会话中运行,因此 export 等命令不会持久化到代理阶段。要持久化环境变量,请将其添加到 ~/.bashrc,或在环境设置中进行配置。
Codex 会将容器状态缓存最多 12 小时,以加快新聊天和后续聊天的速度。
当环境处于缓存状态时:
- Codex 克隆代码仓库,并检出默认分支。
- Codex 运行设置脚本,并缓存生成的容器状态。
恢复使用缓存容器时:
- Codex 检出聊天指定的分支。
- Codex 运行维护脚本(可选)。当设置脚本在较早的 commit 上运行且需要更新依赖项时,此功能非常有用。
如果你更改设置脚本、维护脚本、环境变量或密钥,Codex 会自动使缓存失效。如果你的代码仓库发生更改,导致缓存状态不再兼容,请在环境页面中选择 Reset cache。
对于 Business 和 Enterprise 用户,缓存会在所有有权访问该环境的用户之间共享。使缓存失效会影响工作区中该环境的所有用户。
互联网访问和网络代理
Section titled “互联网访问和网络代理”设置脚本阶段可以访问互联网以安装依赖项。在代理阶段,默认无法访问互联网,但你可以配置有限或不受限制的访问。请参阅代理互联网访问。
出于安全和防止滥用的目的,环境会在 HTTP/HTTPS 网络代理后运行。所有出站互联网流量都会通过此代理。