云端环境
为 Codex Cloud 中的任务创建、配置和共享可复用的环境
Codex Cloud 在云端运行编程任务,因此即使你的 电脑处于睡眠状态,工作也能继续。你可以在网页版、移动端或桌面应用中使用它来编辑 代码、运行命令和查看结果。
云端环境 是任务使用的可复用配置,包括仓库、 依赖项、工具和访问设置。Codex 会检查你的仓库, 准备环境配置,并与你一起测试。每个新任务都会基于已发布的环境获得独立的 工作区。
入门介绍请参阅 Codex Cloud 概述。
在 Codex Cloud 中启动任务
在网页版或桌面应用中,选择工作位置 > 云端, 然后选择一个已发布的环境。在移动端,打开 Codex 并选择 已发布的环境。描述你希望 Codex 完成的工作,然后发送请求。 如果需要新的配置,请在网页版或桌面应用中创建环境。
Enterprise 管理员可以在推出 Codex Cloud 之前查看工作区访问权限 。
创建和发布环境
请在网页版或桌面应用中新建环境。 使用你的 ChatGPT 账号登录:
- 在新任务中,选择工作位置 > 云端,打开选择环境, 然后选择创建环境。
- 选择要检出的 GitHub 仓库。如果出现提示,请连接 GitHub。
- 选择开始使用。Codex 会检查仓库、安装依赖项 和工具,并测试工作流。
- 出现提示时,提供缺少的访问权限或信息。你也可以指定 特定版本、命令或服务。
- 查看配置报告、配置和文件。完成尚未完成的工作, 保存更改,然后选择发布。
- 出现环境已发布 后,选择启动新任务,并 描述你希望 Codex 完成的工作。
你也可以从设置 > Codex Cloud > 环境 > 创建环境 开始。
自定义安装和启动
Codex 会从你的仓库中识别运行时、软件包版本、工具和服务。 在对话中完善配置即可;你无需自行编写 安装脚本。
Codex 可以将经过测试的配置记录在两个字段中:
- 安装脚本: 用于安装依赖项和准备开发资源的命令。
- 启动技能: 用于启动服务并检查服务是否就绪的指令。
复用和更新已保存的状态
- 新任务: 从已发布环境中准备好的文件系统开始。
- 现有任务: 继续使用自己保存的文件,包括未提交的 更改和已安装的工具。
- 仓库刷新: 在后台自动运行,保留 依赖项缓存,不重新运行安装或启动命令。
要更新可复用的配置,请打开设置 > Codex Cloud > 环境。 在环境的 … 菜单中,选择编辑。描述更改, 让 Codex 准备并测试,保存更改,然后选择重新发布。启动 新任务以使用更新;现有任务会保留各自的状态。
提交重要工作,或保存你需要的输出。已保存的状态不能替代 版本控制。
配置环境变量和网络敏感信息
Codex 会识别缺少的配置,并向你询问无法推断的值。 在环境配置中,选择环境变量 或 网络敏感信息 旁边的管理。选择每个值的提供方式:
| 配置 | 用途 | 提供方式 |
|---|---|---|
| 环境变量 | 程序必须直接读取的值 | 直接传递给环境中的程序。 |
| 网络敏感信息 | 发送到特定 HTTPS 服务的凭据 | 程序收到占位符;代理会在发往允许目标地址的请求中将其替换为真实值。 |
对于网络敏感信息,请设置键、值 和允许的域名。使用的 键必须与任何直接传递的变量不同。替换机制适用于通过 443 端口发送的 HTTPS 请求, 在配置和任务运行期间均有效;它不会将原始凭据放入本地进程或 文件。
保存归环境所有的网络敏感信息会将其目标地址添加到受限的 互联网访问范围。直接传递的变量和个人值不会添加目标地址。 测试前请查看已保存的网络策略。 工作区要求请参阅智能体安全。
提供个人值
使用个人保险库保存你自己的环境变量和网络敏感信息, 供工作区中的云端环境使用。
共享环境可以要求每个人从自己的 账号提供值。共享环境会共享这些要求,而不会共享你的 个人凭据。
出现提示时,在添加个人敏感信息 中输入必填值,然后选择 保存并启动。可选值可以留空。
要提前管理这些值:
- 打开设置 > Codex Cloud,然后选择个人保险库 选项卡。
- 选择添加,在类型 下选择环境变量 或网络敏感信息, 然后输入匹配的键 和你的值。
- 在适用范围 下,选择所有环境 或指定环境, 然后选择保存。
只有被请求的值才会传递给任务。针对特定环境设置的值 优先于通用默认值。个人网络敏感信息使用环境的 允许目标地址,并以相同方式替换占位符。
在 Enterprise 工作区内共享
共享准备好的配置,让同事可以基于它启动自己的任务:
- 打开环境配置。
- 在隐私 > 谁可以使用 下,选择你的工作区。
- 保存更改。如果尚未发布环境,请将其发布。
在谁可以使用 下选择仅自己,即可将环境保持为私有。 每个任务都有独立的工作文件;拥有配置的访问权限并不意味着可以访问 他人的任务,也不意味着拥有编辑环境的权限。
共享前,请查看准备好的文件和归环境所有的凭据。云端 身份和 VPN 连接也可以提供共享的服务访问权限。 仓库访问权限和个人连接取决于运行任务的账号。
在云端使用 Codex 控制任务访问权限。管理工作区环境 控制创建和编辑与工作区共享的环境的权限。请参阅 角色和工作区权限。
智能体安全
环境的互联网访问设置定义了其 VM 可以访问哪些域名。VPN 设置将该 VM 连接到私有 网络上的服务。
在 Enterprise 工作区中,管理员使用 智能体安全配置工作区对 智能体行为、受管执行环境的网络连接以及支持的 工具使用的要求。这些要求与每个环境中保存的域名设置 共同生效。全局策略和支持的 Codex Cloud 覆盖设置请参阅智能体安全。
连接服务
配置对工作流所需的软件包注册表、API 和其他服务的 访问权限:
- 在环境配置中,启用允许 Codex 访问互联网。
- 在允许的域名 下,选择包管理器 或仅自定义域名, 然后在额外允许的域名 下添加所需的主机。当 工作流需要更广泛的访问范围时,使用全部(无限制)。
- 保存,并在配置期间测试服务。发布或重新发布,然后在新任务中验证 访问是否正常。
工作区要求请参阅智能体安全。允许访问某个 目标地址并不会提供凭据,也不会授予该服务中的权限。
包管理器预设包含的域名
包管理器 预设允许访问以下注册表、仓库和 下载主机:
- npm 和 Yarn:
registry.npmjs.org,registry.yarnpkg.com - PyPI 和 PyTorch:
pypi.org,files.pythonhosted.org,download.pytorch.org,download-r2.pytorch.org - Rust:
crates.io,index.crates.io,static.crates.io,static.rust-lang.org - Go:
proxy.golang.org,sum.golang.org - Maven 和 Gradle:
repo.maven.apache.org,repo1.maven.org,plugins.gradle.org,plugins-artifacts.gradle.org,services.gradle.org,downloads.gradle.org - Bazel:
bcr.bazel.build,mirror.bazel.build - Buf:
buf.build - CPAN:
cpan.metacpan.org - Ubuntu 和 Debian 仓库:
archive.ubuntu.com,security.ubuntu.com,ports.ubuntu.com,ppa.launchpadcontent.net,deb.debian.org,security.debian.org - 供应商仓库:
packages.microsoft.com,apt.buildkite.com,developer.download.nvidia.com,deb.nodesource.com - GitHub 源码、归档、发布版本和 LFS:
github.com,codeload.github.com,github-cloud.githubusercontent.com,github-cloud.s3.amazonaws.com,release-assets.githubusercontent.com - 其他下载:
dl.google.com,pkgconfig.freedesktop.org
对于已登记的根域名,Codex 也允许访问对应的 www 主机名。
其他子域名需要单独添加允许域名条目。请在额外允许的域名 下添加
依赖项所需的其他主机。
对于通过公共互联网访问、且按源 IP 筛选连接的服务,请使用智能体出站 IP 数据源。 允许所有已公布的地址范围,每天检查数据源,并在范围变化时更新服务的 允许列表。这些地址范围由多个客户共享;请保留 服务的身份验证和授权控制。
私有网络连接(VPN)
通过 VPN 连接,让云端任务访问私有网络上的内部 API、软件包注册表以及其他 HTTP 或 HTTPS 服务。
- 打开环境的高级 > VPN 设置,然后选择添加。
- 输入 VPN 提供商提供的连接凭据。
- 在 VPN 的访问规则和环境的 互联网访问设置中允许所需的目标地址。
- 保存,然后发布或重新发布。启动新任务并测试服务。
目前支持的 VPN 提供商是 Tailscale。创建 Tailscale 身份验证密钥时,请同时启用可复用 和临时。可复用密钥允许新的 云端任务 VM 加入你的网络。Tailscale 会在临时 设备离线后自动将其移除。我们计划支持更多 VPN 提供商。
支持私有 IPv4 子网路由。任务可以通过 Tailscale 分流 DNS 和 MagicDNS,使用主机名访问私有服务。
如果服务使用组织内部的 DNS,请在 Tailscale 管理控制台配置分流 DNS,
将内部域名的查询发送到你的 DNS 服务器。使用服务的完整限定主机名,
例如 api.corp.example.com,且该主机名必须解析为 IPv4 地址。
环境的互联网访问设置和 Tailscale 访问规则也必须允许该目标地址。
共享环境中的任务使用该环境配置的 VPN 身份。
使用 OIDC 访问云资源
OpenID Connect(OIDC)允许任务获取用于访问云 资源的短期凭据。你的组织需要与云提供商配置可信关系,并 授予该身份工作流所需的权限。
- 打开已保存环境的高级 > OIDC 设置。
- 选择添加,然后选择可用的连接,或选择 创建连接…,为支持的提供商创建连接。
- 对于新连接,输入提供商的身份详细信息并创建连接。 在提供商端,使用显示的 签发者(Issuer)、受众(Audience)、 主体(Subject) 或声明条件配置可信关系,并授予资源权限。
- 确认连接已关联,并查看其别名。保存,然后发布 或重新发布环境。
- 启动新任务,分别测试一项允许的操作和一项被拒绝的操作。
不同提供商的配置方式有所不同,且只能关联受支持的连接。 访问权限由该身份的权限决定;你个人在提供商端的权限 不会转移给它。请在网络策略中单独允许所需的提供商端点和服务 目标地址。
保存关联或别名更改,即可在配置期间应用;发布或 重新发布后,新任务才会使用这些更改。编辑共享身份连接可能 影响使用它的其他环境。
Enterprise 工作区可申请使用 OIDC。请联系你的 OpenAI 客户团队启用此功能。
运行和返回任务
选择一个已发布的环境,并描述你的目标。Codex 会使用其中的 仓库和工具来编辑文件、运行命令和检查工作。 提交或创建PR之前,请查看更改和测试结果。
在网页版或移动端继续
在网页版中,选择工作位置 > 云端,然后选择环境。在移动端中, 打开 Codex 并选择可用的环境。请在网页版或桌面应用中 新建环境。
重新打开同一个任务,即可跨设备继续工作。新任务会基于 已发布的配置开始独立的工作。即使你的电脑处于睡眠状态,Codex Cloud 中的任务也能 继续运行。
从 Slack 或 Microsoft Teams 启动任务
在启用了云端委派的 Enterprise 工作区中,在
Slack 或 Microsoft Teams 中请 @ChatGPT 处理仓库。Codex 会使用对话
上下文,选择一个与工作区共享且运行任务的
账号可以使用的环境。你可以在提示词中指定首选环境或添加
指导说明。
对于 Slack,启用了 Codex Cloud 基于角色的访问控制的工作区必须同时向 部署的服务账号和发起请求的 用户授予 Codex Cloud 访问权限。请参阅为 Slack 启用 Codex Cloud 了解管理员配置方法。
完成所有连接和审批提示,然后在 对话中查看结果。使用同一个已连接的账号继续跟进,即可继续任务; 其他参与者的请求不会自动继续你的任务。
请参阅在 Slack 和 Teams 中管理 ChatGPT 了解工作区配置,并参阅在 Slack 中使用 ChatGPT了解 Slack 任务控制功能。
VM 规格
每个云端任务都在具有以下默认资源的 VM 中运行:
| ChatGPT 套餐 | vCPUs | 内存 | 磁盘空间 |
|---|---|---|---|
| Plus, Edu Plus | 2 | 8 GiB | 8 GiB |
| Pro, Business, Enterprise | 4 | 16 GiB | 32 GiB |
| Edu, Edu Pro | 4 | 16 GiB | 32 GiB |
默认情况下,从你最后一次 开始一个轮次或恢复任务起,任务保存的 VM 状态最多可在七天内恢复。
Enterprise 可使用更大的 VM 和自定义规格。请联系你的 OpenAI 客户团队,了解可用配置和价格。
当前限制
云端环境目前尚不支持以下功能, 我们已将其列入路线图:
- 计算机和浏览器操作
- GitLab 和自托管的 GitHub Enterprise Server
存储在仓库中的技能可用于云端任务。本地电脑中的个人技能 不会同步到云端环境。
排查配置和运行时访问问题
配置失败或缺少必要工具
查看配置对话,找到失败的命令。请 Codex 诊断 错误,并在修复后重新运行命令。例如:“安装 pnpm 并 运行项目测试。”
- 如果初始配置失败,选择重试,使用该配置会话中 已选择的仓库再次尝试。
- 如果修复需要更改源文件、软件包清单或锁文件, 请在编程任务中完成更改,然后返回配置流程。
Codex 验证配置后,发布或重新发布环境。
软件包下载或 HTTPS 请求失败
分别检查目标主机名和身份验证:
- 确认环境的
互联网访问设置允许访问该主机。对于位于
packages.example.com的私有注册表,请检查这一确切的主机名。如果下载还使用downloads.example.com,也需要允许访问该主机。 - 检查包管理器或客户端配置的 URL 和凭据。 允许访问某个域名并不会授予该服务的访问权限。
- 如果身份验证使用网络敏感信息,请检查其允许的域名 是否包含目标地址,以及请求是否通过 443 端口使用 HTTPS。
- 在 Enterprise 工作区中,请管理员结合 环境设置,检查适用的 智能体安全要求。
保存所有配置更改,并在配置期间测试请求。发布或 重新发布,然后在新任务中验证访问是否正常。
缺少必需的值或该值无法使用
检查你是否将值添加到了环境配置中的正确位置:
- 环境变量: 用于程序需要直接读取的值,
例如
APP_MODE=development。 - 网络敏感信息: 用于发送到允许访问的 HTTPS 服务的凭据,例如私有注册表令牌。程序收到占位符; 代理会在匹配的请求中替换为凭据。如果程序 需要读取原始值,请将其添加到环境变量 中。
对于个人值,请检查其键 是否与环境的请求匹配, 以及适用范围 是否包含该环境。针对特定 环境设置的值优先于通用默认值。
请参阅环境变量和网络敏感信息 了解配置说明。
VPN 已连接,但无法访问 HTTP 或 HTTPS 服务
- 确认客户端使用环境配置的 HTTP/HTTPS 代理。
使用
curl测试时,请省略--noproxy,以便请求使用该代理。 - 检查目标地址是否同时符合环境允许的域名和 VPN 的访问规则。
- 如果可以通过 IP 地址访问服务,却无法通过主机名访问,请检查 Tailscale DNS 设置。对于公司内部域名,请确认分流 DNS 指向正确的 DNS 服务器,且该服务器可通过 Tailscale 网络访问。 使用服务的完整限定主机名,并确认它解析为 IPv4 地址。
请参阅私有网络连接了解连接配置。
任务无法使用环境或其更新
在设置 > Codex Cloud > 环境 中检查该环境。 如果显示未发布 标记,请完成配置并选择发布,使其 可供任务使用。
要更改已发布的环境,请打开其编辑 流程,让 Codex 准备 并测试更改,然后选择重新发布。从更新后的环境启动新任务, 即可使用新配置。现有任务会保留各自的工作状态。