本文为非官方中文翻译,内容以 OpenAI 官方英文文档为准。
官方来源:https://developers.openai.com/codex/cloud/environments
Cloud environments
为 Codex 自定义依赖和工具
使用 environment 来控制 Codex 在云任务期间安装和运行的内容。例如,你可以添加依赖、安装诸如 linter 和 formatter 之类的工具,以及设置环境变量。
在 Codex settings 中配置 environment。
Codex 云任务如何运行
当你提交一个任务时,会发生以下情况:
- Codex 创建一个容器,并在所选分支或 commit SHA 检出你的仓库。
- Codex 运行你的 setup 脚本;如果恢复的是一个已缓存的容器,还会运行一个可选的 maintenance 脚本。
- Codex 应用你的互联网访问设置。setup 脚本会在具有互联网访问权限的情况下运行。Agent 的互联网访问默认关闭,但如果需要,你可以启用受限或不受限访问。参见 agent internet access。
- agent 以循环方式运行终端命令。它会编辑代码、运行检查,并尝试验证其工作。如果你的仓库包含
AGENTS.md,agent 会使用它来查找项目特定的 lint 和测试命令。 - 当 agent 完成后,它会显示其答案以及它所更改文件的 diff。你可以打开一个 PR,或提出后续问题。
默认 universal 镜像
Codex agent 在一个名为 universal 的默认容器镜像中运行,该镜像预装了常见的语言、软件包和工具。
在 environment 设置中,选择 Set package versions 以固定 Python、Node.js 和其他运行时的版本。
有关已安装内容的详细信息,请参见 openai/codex-universal,其中提供了一个 参考 Dockerfile,以及一个可以在本地拉取并测试的镜像。
虽然 codex-universal 为了速度和便利预装了多种语言,你也可以使用 setup scripts 向容器安装额外的软件包。
环境变量和 secrets
环境变量 会在任务的整个持续时间内设置(包括 setup 脚本和 agent 阶段)。
Secrets 与环境变量类似,但有以下区别:
- 它们以额外一层加密方式存储,并且仅在任务执行时解密。
- 它们仅对 setup 脚本可用。出于安全原因,在 agent 阶段开始之前,secrets 会被移除。
自动设置
对于使用常见包管理器(npm、yarn、pnpm、pip、pipenv 和 poetry)的项目,Codex 可以自动安装依赖和工具。
手动设置
如果你的开发设置更复杂,你也可以提供自定义 setup 脚本。例如:
# Install type checker
pip install pyright
# Install dependencies
poetry install --with test
pnpm install
setup 脚本在与 agent 分离的 Bash 会话中运行,因此像
export 这样的命令不会持续到 agent 阶段。要持久化环境
变量,请将它们添加到 ~/.bashrc,或在 environment 设置中配置它们。
容器缓存
Codex 最多会缓存容器状态 12 小时,以加快新任务和后续任务的速度。
当一个 environment 被缓存时:
- Codex 克隆仓库并检出默认分支。
- Codex 运行 setup 脚本,并缓存生成的容器状态。
当恢复一个已缓存的容器时:
- Codex 检出为该任务指定的分支。
- Codex 运行 maintenance 脚本(可选)。当 setup 脚本是在较旧的 commit 上运行且依赖需要更新时,这会很有用。
如果你更改了 setup 脚本、maintenance 脚本、环境变量或 secrets,Codex 会自动使缓存失效。如果你的仓库发生了使缓存状态不兼容的更改,请在 environment 页面上选择 Reset cache。
对于 Business 和 Enterprise 用户,缓存会在所有有权访问该 environment 的用户之间共享。使缓存失效将影响你工作区中该 environment 的所有用户。
互联网访问和网络代理
在 setup 脚本阶段,为安装依赖提供互联网访问。在 agent 阶段,互联网访问默认关闭,但你可以配置受限或不受限访问。参见 agent internet access。
Environments 在一个 HTTP/HTTPS 网络代理之后运行,以实现安全和防滥用。所有出站互联网流量都会通过此代理。