从写代码,到创作下一幕

探索 字节跳动 - 火山方舟 的 AI 编程与视频创作活动。

Agent Plan & Coding Plan

一站体验多款热门模型,为 AI 编程与智能体开发提供更多选择。新用户可联系(微信: goo_lvyouyou)免费体验 9.9 agent plan。

Seedance 2.5

让创意,跃然成片。探索 30 秒视频、多模态参考与局部编辑,把脑海中的画面变成下一支作品。

中文

云端环境

为 Codex Cloud 中的任务创建、配置和共享可复用的环境

Codex Cloud 在云端运行编程任务,因此即使你的 电脑处于睡眠状态,工作也能继续。你可以在网页版、移动端或桌面应用中使用它来编辑 代码、运行命令和查看结果。

云端环境 是任务使用的可复用配置,包括仓库、 依赖项、工具和访问设置。Codex 会检查你的仓库, 准备环境配置,并与你一起测试。每个新任务都会基于已发布的环境获得独立的 工作区。

入门介绍请参阅 Codex Cloud 概述。

在 Codex Cloud 中启动任务

在网页版或桌面应用中,选择工作位置 > 云端, 然后选择一个已发布的环境。在移动端,打开 Codex 并选择 已发布的环境。描述你希望 Codex 完成的工作,然后发送请求。 如果需要新的配置,请在网页版或桌面应用中创建环境。

Enterprise 管理员可以在推出 Codex Cloud 之前查看工作区访问权限 。

创建和发布环境

请在网页版或桌面应用中新建环境。 使用你的 ChatGPT 账号登录:

  1. 在新任务中,选择工作位置 > 云端,打开选择环境, 然后选择创建环境。
  2. 选择要检出的 GitHub 仓库。如果出现提示,请连接 GitHub。
  3. 选择开始使用。Codex 会检查仓库、安装依赖项 和工具,并测试工作流。
  4. 出现提示时,提供缺少的访问权限或信息。你也可以指定 特定版本、命令或服务。
  5. 查看配置报告、配置和文件。完成尚未完成的工作, 保存更改,然后选择发布。
  6. 出现环境已发布 后,选择启动新任务,并 描述你希望 Codex 完成的工作。

你也可以从设置 > Codex Cloud > 环境 > 创建环境 开始。

自定义安装和启动

Codex 会从你的仓库中识别运行时、软件包版本、工具和服务。 在对话中完善配置即可;你无需自行编写 安装脚本。

Codex 可以将经过测试的配置记录在两个字段中:

  • 安装脚本: 用于安装依赖项和准备开发资源的命令。
  • 启动技能: 用于启动服务并检查服务是否就绪的指令。

复用和更新已保存的状态

  • 新任务: 从已发布环境中准备好的文件系统开始。
  • 现有任务: 继续使用自己保存的文件,包括未提交的 更改和已安装的工具。
  • 仓库刷新: 在后台自动运行,保留 依赖项缓存,不重新运行安装或启动命令。

要更新可复用的配置,请打开设置 > Codex Cloud > 环境。 在环境的 … 菜单中,选择编辑。描述更改, 让 Codex 准备并测试,保存更改,然后选择重新发布。启动 新任务以使用更新;现有任务会保留各自的状态。

提交重要工作,或保存你需要的输出。已保存的状态不能替代 版本控制。

配置环境变量和网络敏感信息

Codex 会识别缺少的配置,并向你询问无法推断的值。 在环境配置中,选择环境变量 或 网络敏感信息 旁边的管理。选择每个值的提供方式:

配置 用途 提供方式
环境变量 程序必须直接读取的值 直接传递给环境中的程序。
网络敏感信息 发送到特定 HTTPS 服务的凭据 程序收到占位符;代理会在发往允许目标地址的请求中将其替换为真实值。

对于网络敏感信息,请设置键、值 和允许的域名。使用的 键必须与任何直接传递的变量不同。替换机制适用于通过 443 端口发送的 HTTPS 请求, 在配置和任务运行期间均有效;它不会将原始凭据放入本地进程或 文件。

保存归环境所有的网络敏感信息会将其目标地址添加到受限的 互联网访问范围。直接传递的变量和个人值不会添加目标地址。 测试前请查看已保存的网络策略。 工作区要求请参阅智能体安全。

提供个人值

使用个人保险库保存你自己的环境变量和网络敏感信息, 供工作区中的云端环境使用。

共享环境可以要求每个人从自己的 账号提供值。共享环境会共享这些要求,而不会共享你的 个人凭据。

出现提示时,在添加个人敏感信息 中输入必填值,然后选择 保存并启动。可选值可以留空。

要提前管理这些值:

  1. 打开设置 > Codex Cloud,然后选择个人保险库 选项卡。
  2. 选择添加,在类型 下选择环境变量 或网络敏感信息, 然后输入匹配的键 和你的值。
  3. 在适用范围 下,选择所有环境 或指定环境, 然后选择保存。

只有被请求的值才会传递给任务。针对特定环境设置的值 优先于通用默认值。个人网络敏感信息使用环境的 允许目标地址,并以相同方式替换占位符。

在 Enterprise 工作区内共享

共享准备好的配置,让同事可以基于它启动自己的任务:

  1. 打开环境配置。
  2. 在隐私 > 谁可以使用 下,选择你的工作区。
  3. 保存更改。如果尚未发布环境,请将其发布。

在谁可以使用 下选择仅自己,即可将环境保持为私有。 每个任务都有独立的工作文件;拥有配置的访问权限并不意味着可以访问 他人的任务,也不意味着拥有编辑环境的权限。

共享前,请查看准备好的文件和归环境所有的凭据。云端 身份和 VPN 连接也可以提供共享的服务访问权限。 仓库访问权限和个人连接取决于运行任务的账号。

在云端使用 Codex 控制任务访问权限。管理工作区环境 控制创建和编辑与工作区共享的环境的权限。请参阅 角色和工作区权限。

智能体安全

环境的互联网访问设置定义了其 VM 可以访问哪些域名。VPN 设置将该 VM 连接到私有 网络上的服务。

在 Enterprise 工作区中,管理员使用 智能体安全配置工作区对 智能体行为、受管执行环境的网络连接以及支持的 工具使用的要求。这些要求与每个环境中保存的域名设置 共同生效。全局策略和支持的 Codex Cloud 覆盖设置请参阅智能体安全。

连接服务

配置对工作流所需的软件包注册表、API 和其他服务的 访问权限:

  1. 在环境配置中,启用允许 Codex 访问互联网。
  2. 在允许的域名 下,选择包管理器 或仅自定义域名, 然后在额外允许的域名 下添加所需的主机。当 工作流需要更广泛的访问范围时,使用全部(无限制)。
  3. 保存,并在配置期间测试服务。发布或重新发布,然后在新任务中验证 访问是否正常。

工作区要求请参阅智能体安全。允许访问某个 目标地址并不会提供凭据,也不会授予该服务中的权限。

包管理器预设包含的域名

包管理器 预设允许访问以下注册表、仓库和 下载主机:

  • 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 服务。

  1. 打开环境的高级 > VPN 设置,然后选择添加。
  2. 输入 VPN 提供商提供的连接凭据。
  3. 在 VPN 的访问规则和环境的 互联网访问设置中允许所需的目标地址。
  4. 保存,然后发布或重新发布。启动新任务并测试服务。

目前支持的 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)允许任务获取用于访问云 资源的短期凭据。你的组织需要与云提供商配置可信关系,并 授予该身份工作流所需的权限。

  1. 打开已保存环境的高级 > OIDC 设置。
  2. 选择添加,然后选择可用的连接,或选择 创建连接…,为支持的提供商创建连接。
  3. 对于新连接,输入提供商的身份详细信息并创建连接。 在提供商端,使用显示的 签发者(Issuer)、受众(Audience)、 主体(Subject) 或声明条件配置可信关系,并授予资源权限。
  4. 确认连接已关联,并查看其别名。保存,然后发布 或重新发布环境。
  5. 启动新任务,分别测试一项允许的操作和一项被拒绝的操作。

不同提供商的配置方式有所不同,且只能关联受支持的连接。 访问权限由该身份的权限决定;你个人在提供商端的权限 不会转移给它。请在网络策略中单独允许所需的提供商端点和服务 目标地址。

保存关联或别名更改,即可在配置期间应用;发布或 重新发布后,新任务才会使用这些更改。编辑共享身份连接可能 影响使用它的其他环境。

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 请求失败

分别检查目标主机名和身份验证:

  1. 确认环境的 互联网访问设置允许访问该主机。对于位于 packages.example.com 的私有注册表,请检查这一确切的主机名。如果下载还使用 downloads.example.com,也需要允许访问该主机。
  2. 检查包管理器或客户端配置的 URL 和凭据。 允许访问某个域名并不会授予该服务的访问权限。
  3. 如果身份验证使用网络敏感信息,请检查其允许的域名 是否包含目标地址,以及请求是否通过 443 端口使用 HTTPS。
  4. 在 Enterprise 工作区中,请管理员结合 环境设置,检查适用的 智能体安全要求。

保存所有配置更改,并在配置期间测试请求。发布或 重新发布,然后在新任务中验证访问是否正常。

缺少必需的值或该值无法使用

检查你是否将值添加到了环境配置中的正确位置:

  • 环境变量: 用于程序需要直接读取的值, 例如 APP_MODE=development。
  • 网络敏感信息: 用于发送到允许访问的 HTTPS 服务的凭据,例如私有注册表令牌。程序收到占位符; 代理会在匹配的请求中替换为凭据。如果程序 需要读取原始值,请将其添加到环境变量 中。

对于个人值,请检查其键 是否与环境的请求匹配, 以及适用范围 是否包含该环境。针对特定 环境设置的值优先于通用默认值。

请参阅环境变量和网络敏感信息 了解配置说明。

VPN 已连接,但无法访问 HTTP 或 HTTPS 服务

  1. 确认客户端使用环境配置的 HTTP/HTTPS 代理。 使用 curl 测试时,请省略 --noproxy,以便请求使用该代理。
  2. 检查目标地址是否同时符合环境允许的域名和 VPN 的访问规则。
  3. 如果可以通过 IP 地址访问服务,却无法通过主机名访问,请检查 Tailscale DNS 设置。对于公司内部域名,请确认分流 DNS 指向正确的 DNS 服务器,且该服务器可通过 Tailscale 网络访问。 使用服务的完整限定主机名,并确认它解析为 IPv4 地址。

请参阅私有网络连接了解连接配置。

任务无法使用环境或其更新

在设置 > Codex Cloud > 环境 中检查该环境。 如果显示未发布 标记,请完成配置并选择发布,使其 可供任务使用。

要更改已发布的环境,请打开其编辑 流程,让 Codex 准备 并测试更改,然后选择重新发布。从更新后的环境启动新任务, 即可使用新配置。现有任务会保留各自的工作状态。