Codex Web/Cloud:云端异步任务与环境配置
Codex 的云端模式让你可以把任务异步委派给远程环境,自己继续做其他事情。无论是长时间运行的重构任务、批量并行的代码生成,还是需要特定依赖的构建验证,云端模式都能胜任。
本篇将全面解析 Codex Web 界面、Cloud Environment 配置、互联网访问控制、任务生命周期,以及如何从 CLI 和 App 操控云端任务。
一、Codex Web 与 Codex Cloud 的关系
这两个词经常交替出现,先理清它们的关系:
| 概念 | 含义 |
|---|---|
| Codex Web | 网页界面(codex.openai.com)——提交任务、查看进度、审查结果、创建 PR 的主要入口 |
| Codex Cloud | 云端执行环境 —— 实际运行任务的容器化基础设施,包含代码 checkout、依赖安装、命令执行 |
| 关系 | Codex Web 是前端入口,Codex Cloud 是后端引擎。你也可以通过 CLI、App、IDE Extension 提交任务到 Cloud |
无论你从哪个客户端提交任务,它们都运行在相同的 Codex Cloud 基础设施上,使用相同的环境配置。
二、GitHub 仓库连接与配置
云端模式的第一步是连接 GitHub 账号。
2.1 设置步骤
- 访问 codex.openai.com
- 点击 Connect GitHub → 授权 Codex 访问你的仓库
- 选择要授权的仓库(可以是全部或指定仓库)
- 授权后 Codex 即可:
- 读取仓库代码
- 创建分支和 Pull Request
- 响应
@codex提及
2.2 从 GitHub 触发任务
连接后,你可以在 GitHub Issues 或 Pull Requests 中用 @codex 标记,Codex 会自动拾取并在云端执行任务。
ChatGPT Plus、Pro、Business、Edu 和 Enterprise 计划均包含 Codex 使用额度。部分 Enterprise 工作区可能需要管理员先完成初始配置。
三、Cloud Environment 设置
环境配置是云端模式的核心——它决定了 Codex 在哪个容器中运行、安装什么依赖、能访问哪些秘密。
3.1 默认容器镜像:universal
Codex Cloud 使用一个名为 universal 的默认容器镜像,预装了常见语言和工具:
- Python、Node.js、Go、Rust、Java 等常见运行时
- 常用包管理器(npm、pip、cargo 等)
- Git、curl 等基础工具
你可以在环境设置中通过 Set package versions 固定 Python、Node.js 等运行时的版本。详细的预装内容参见 openai/codex-universal Dockerfile。
3.2 Setup Script(启动脚本)
用于安装项目特定的依赖和工具。在环境创建后第一时间执行。
自动设置:对于使用 npm、yarn、pnpm、pip、pipenv、poetry 的项目,Codex 可以自动检测并安装依赖。
手动设置:复杂项目可以自定义 setup script:
# 安装类型检查器
pip install pyright
# 安装依赖
poetry install --with test
pnpm installSetup script 在独立的 Bash 会话中运行,export 命令不会持久化到 agent 阶段。要持久化环境变量,请写入 ~/.bashrc
或在环境设置中配置。
3.3 Maintenance Script(维护脚本)
当缓存容器被复用时执行的可选脚本,用于更新依赖:
# 缓存容器可能基于旧提交,更新依赖
pnpm install3.4 环境变量与 Secrets
| 类型 | 可用范围 | 安全性 |
|---|---|---|
| Environment Variables | 全程可用:setup script + agent 阶段均可访问 | 标准存储 |
| Secrets | 仅 setup script 可用,agent 阶段前被移除 | 额外加密层,仅在执行时解密 |
设计思路:Secrets 仅对 setup script 可见,这是有意为之的安全设计——防止 agent 在执行任意代码时泄露敏感信息。如果 agent 需要访问某个 API Key,建议在 setup script 中将其写入配置文件,而非直接暴露为环境变量。
3.5 容器缓存
Codex 会缓存容器状态以加速后续任务:
| 特性 | 说明 |
|---|---|
| 缓存时长 | 最长 12 小时 |
| 缓存创建 | clone 仓库 → checkout 默认分支 → 运行 setup script → 缓存 |
| 缓存复用 | checkout 任务指定分支 → 运行 maintenance script |
| 自动失效 | 修改 setup script、maintenance script、环境变量或 secrets 时 |
| 手动重置 | 环境设置页点击 Reset cache |
| 团队共享 | Business/Enterprise 用户的缓存在所有有权限的用户间共享 |
四、互联网访问控制
这是云端模式中最重要的安全配置之一。
4.1 两个阶段的网络策略
| 阶段 | 网络访问 | 说明 |
|---|---|---|
| Setup Script 阶段 | ✅ 始终开启 | 需要下载依赖包和工具 |
| Agent 阶段 | ❌ 默认关闭 | 可按环境单独开启,支持域名白名单和 HTTP 方法限制 |
4.2 Agent 阶段网络配置
Agent 阶段的互联网访问按环境单独配置:
开关状态:
- Off(默认)— 完全封锁网络
- On — 开启网络,可通过以下手段限制
域名白名单预设:
| 预设方案 | 说明 |
|---|---|
| None | 空白名单,从零添加域名 |
| Common dependencies | 预设常用依赖域名(github.com、npmjs.com、pypi.org 等 70+ 域名) |
| All (unrestricted) | 允许所有域名(风险最高) |
HTTP 方法限制:
可以仅允许 GET、HEAD、OPTIONS,屏蔽 POST、PUT、DELETE 等写入操作,进一步降低数据泄露风险。
4.3 互联网访问的安全风险
- Prompt 注入 — agent 可能读取不可信的网页内容并执行其中的指令
- 代码/秘密泄露 — agent 可能将代码或敏感信息发送到外部
- 恶意依赖 — 可能下载包含漏洞的依赖
- 许可证问题 — 可能引入有许可证限制的内容
最佳实践:仅允许必要的域名和 HTTP 方法,并仔细审查 agent 的输出和工作日志。
4.4 网络代理
所有云端环境的出站流量都通过 HTTP/HTTPS 网络代理,这是 OpenAI 的安全和滥用防护层。
五、云端任务生命周期
理解一个云端任务从提交到完成的完整流程:
5.1 完整流程
5.2 各阶段详解
| 步骤 | 阶段 | 说明 |
|---|---|---|
| ① | 提交任务 | 通过 Web、CLI、App、IDE 或 GitHub @codex 提交任务描述 |
| ② | 创建容器 | 基于 universal 镜像创建容器,checkout 指定分支/commit |
| ③ | 运行 Setup Script | 执行环境配置的启动脚本(缓存复用时改为 maintenance script) |
| ④ | 应用网络策略 | 根据环境配置开启/关闭 Agent 的网络访问 |
| ⑤ | Agent 循环执行 | Agent 在循环中编辑代码、运行检查、验证结果(读取 AGENTS.md 获取项目规范) |
| ⑥ | 输出结果 | 显示 agent 的回答 + 变更的文件 diff |
| ⑦ | 创建 PR | 满意结果后直接生成 GitHub Pull Request |
| ⑧ | Follow-up | 不满意时追加要求,Codex 基于现有上下文继续工作 |
5.3 从不同客户端提交的差异
| 入口 | 启动方式 | 特点 |
|---|---|---|
| Web 界面 | 直接在 codex.openai.com 提交 | 可视化管理,适合浏览和审查 |
| CLI | codex cloud exec "prompt" | 可脚本化批量提交,支持 --attempts |
| App | 新线程选择 Cloud 模式 | 与 Worktree/Local 线程统一管理 |
| IDE Extension | /cloud 切换或 Run in the cloud | 保留本地对话上下文,可本地 apply diff |
| GitHub | Issue/PR 中 @codex | 直接在 GitHub 工作流中触发 |
六、从 CLI 操控云端任务
CLI 提供了一套完整的云端任务管理命令。
6.1 查看云端任务
# 打开云端任务列表(浏览器)
codex cloud
# 列出近期任务
codex cloud list6.2 提交云端任务
# 基本提交
codex cloud exec "Add input validation to the signup form"
# 指定环境
codex cloud exec --env my-project-env "Fix the failing CI tests"
# 多次尝试(Best-of-N)
codex cloud exec --attempts 3 "Refactor the auth module to use JWT"6.3 应用云端结果
# 将云端任务的 diff 应用到本地
codex apply6.4 命令参考
| 命令 | 说明 |
|---|---|
codex cloud | 在浏览器中打开云端任务列表 |
codex cloud list | 在终端列出近期云端任务 |
codex cloud exec "prompt" | 提交新的云端任务 |
codex cloud exec --env NAME | 指定云端环境 |
codex cloud exec --attempts N | 多次尝试,选择最佳结果 |
codex apply | 将云端任务的 diff 应用到本地 |
七、Best-of-N 多次尝试(--attempts)
--attempts 是云端模式的杀手级功能——让 Codex 并行运行多次尝试,然后你从中选择最佳结果。
7.1 工作原理
codex cloud exec --attempts 3 "Optimize the database query performance"- Codex 并行启动 3 个独立容器
- 每个容器独立执行相同的任务
- 由于 LLM 的随机性,每次尝试可能产生不同的解决方案
- 你可以比较所有结果,选择最佳的一个
7.2 适用场景
| 场景 | 推荐 attempts | 原因 |
|---|---|---|
| 有多种可能解决方案的重构任务 | 3–5 | 比较不同方案的优劣 |
| 复杂 bug 修复(不确定根因) | 2–3 | 增加命中正确修复的概率 |
| 简单确定性任务 | 1(默认) | 无需多次尝试 |
| 生成式任务(写文档、创建测试) | 2–3 | 不同风格和角度的输出可供挑选 |
每次 attempt 独立消耗计算资源和 token。--attempts 5 意味着 5 倍的资源消耗。建议对简单任务使用默认值 1,对关键任务使用
2–3。
八、适用场景与最佳实践
8.1 云端模式的理想场景
| 场景 | 为什么用云端 | 推荐入口 |
|---|---|---|
| 长时间运行任务 | 不占用本地资源,不受电脑休眠影响 | Web / CLI |
| 并行批量任务 | 同时提交多个任务并行运行 | CLI (可脚本化) |
| 需要特定依赖环境 | 本地没装某些工具,云端环境已配置好 | Web / App |
| 多方案探索 | --attempts 并行生成多个解决方案 | CLI |
| CI/CD 集成 | 在 CI 流程中自动触发 Codex 任务 | CLI / GitHub Action |
| GitHub 工作流集成 | 在 Issue/PR 中直接 @codex 触发 | GitHub |
8.2 不适合云端的场景
- 需要实时交互 — 需要反复对话微调的任务,本地模式更合适
- 调试前端 UI — 需要看到界面效果,本地/Worktree 更方便
- 涉及本地硬件/服务 — 云端无法访问你的本地数据库或设备
8.3 云端任务最佳实践
- 写好
AGENTS.md— 云端 agent 会读取它来了解项目规范和 lint/test 命令 - 配置完善的环境 — 确保 setup script 能正确安装所有依赖
- 最小化网络访问 — 默认关闭,仅在必要时开启并限制域名
- 善用容器缓存 — 避免频繁修改 setup script 导致缓存失效
- 先本地测试,再云端批量 — 小任务先本地验证效果,确认后再批量提交
- 审查每个 PR — 云端生成的 diff 仍需人工审查确认
九、实战:批量重构工作流
以下是一个利用云端模式批量处理任务的实战示例。
场景:将项目中所有 REST API 迁移为 GraphQL
Step 1 — 配置环境
- 在 Codex Web 中创建/检查环境配置
- 确保 setup script 包含必要的 GraphQL 工具链:
npm install
npm install -g graphql-cliStep 2 — 批量提交任务
使用 CLI 脚本批量提交:
# 为每个 API 模块提交独立的迁移任务
for module in users orders products payments; do
codex cloud exec --env my-project \
"Migrate the $module REST API endpoints to GraphQL. \
Follow the patterns in src/graphql/schema.ts. \
Update tests and ensure they pass."
doneStep 3 — 监控进度
# 查看所有任务状态
codex cloud list或在 Web 界面中查看每个任务的进度。
Step 4 — 审查结果
每个任务完成后:
- 查看 diff 和 agent 的工作日志
- 如需修改,追加 follow-up 要求
- 满意后为每个模块创建独立的 PR
Step 5 — 本地验证
# 将所有 PR 合并到测试分支后运行完整测试
codex apply
npm test十、云端模式速查
- Codex Web → 网页管理界面(codex.openai.com)
- Codex Cloud → 后端容器化执行环境
- 五个入口 → Web / CLI / App / IDE Extension / GitHub @codex
- 环境配置 → universal 镜像 + Setup script + Maintenance script
- 变量与秘密 → Environment Variables(全程)+ Secrets(仅 setup)
- 容器缓存 → 最长 12h,修改配置自动失效
- 网络控制 → Setup 始终联网;Agent 默认关闭,可按域名/方法限制
- 任务生命周期 → 提交 → 容器 → Setup → Agent 循环 → Diff → PR / Follow-up
- CLI 云端命令 →
codex cloud exec+--env+--attempts+codex apply - Best-of-N →
--attempts N并行多次尝试,选择最佳结果 - 适用场景 → 长时任务 / 并行批量 / 特定依赖 / 多方案探索 / CI 集成