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