你可以使用环境来控制 Codex 在云端任务中会安装什么、运行什么。例如,你可以补充依赖、安装 lint / formatter 等工具,以及设置环境变量。
在 Codex 设置 中配置环境。
Codex Cloud 任务的运行方式
当你提交一个任务时,会发生以下事情:
- Codex 创建一个容器,并在你选定的分支或 commit SHA 上检出仓库。
- Codex 运行你的设置脚本;如果恢复的是缓存容器,还会额外运行可选的维护脚本。
- Codex 会应用你的互联网访问设置。设置脚本阶段默认可联网;智能体阶段默认关闭互联网访问,但你可以按需启用受限访问或无限制访问。详见智能体互联网访问。
- 智能体在终端循环中运行命令,编辑代码、执行检查并尝试验证结果。如果仓库中包含
AGENTS.md,智能体会用它来定位项目特定的 lint 和测试命令。 - 智能体完成后,会展示最终答复以及它改动过文件的 diff。你可以继续追问,或直接打开 pull request。
默认 universal 镜像
Codex 智能体默认运行在名为 universal 的容器镜像中,该镜像预装了常见语言、包管理器和开发工具。
在环境设置中,可以通过 Set package versions(设置包版本) 固定 Python、Node.js 以及其他运行时的版本。
codex-universal 为了速度和便利性预装了常见语言,但你仍然可以通过设置脚本向容器额外安装所需软件包。
环境变量与密钥(Secrets)
环境变量(Environment variables) 会在任务的整个生命周期内生效,包括设置脚本阶段和智能体执行阶段。
密钥(Secrets) 与环境变量类似,但有两点不同:
- 它们会以额外加密层进行存储,只会在任务执行时解密。
- 它们只会提供给设置脚本使用。出于安全原因,在智能体阶段开始前,这些密钥会被移除。
自动设置
对于使用常见包管理器的项目,例如 npm、yarn、pnpm、pip、pipenv 和 poetry,Codex 可以自动安装依赖和工具。
手动设置
如果你的开发环境更复杂,也可以提供自定义设置脚本。例如:
# Install type checker
pip install pyright
# Install dependencies
poetry install --with test
pnpm install
容器缓存
为了加快新任务和后续追问的启动速度,Codex 会缓存容器状态,最长可保留 12 小时。
当环境进入缓存状态时:
- Codex 会克隆仓库并检出默认分支。
- Codex 会运行设置脚本,并把最终容器状态缓存下来。
当某个缓存容器被恢复时:
- Codex 会检出该任务指定的分支。
- Codex 会运行维护脚本(可选)。这在设置脚本基于较早提交执行、而依赖需要更新时尤其有用。
如果你修改了设置脚本、维护脚本、环境变量或密钥,Codex 会自动使缓存失效。如果仓库变化导致现有缓存状态不再兼容,可以在环境页面点击 Reset cache(重置缓存)。
网络访问与代理
在设置脚本阶段,环境默认可访问互联网,以便安装依赖。智能体阶段的网络访问默认关闭,但你可以按需配置为受限访问或无限制访问。详见智能体互联网访问。
出于安全和滥用防护考虑,环境会运行在一个 HTTP/HTTPS 网络代理之后。所有向外的互联网流量都会经过该代理。