云端任务与 GitHub
本地运行的 Codex 受限于你的电脑:电脑合上任务就停,同一时间也跑不了太多。Codex 云端把任务放到 OpenAI 托管的容器里执行:你提交任务后可以去做别的,甚至同时提交十几个;跑完后拿到一份 diff,满意就开 PR。它和 GitHub 打通后,还能在 PR 里 @codex 让它审查或修改代码。
这一页讲云端任务的完整流程:前提条件、环境怎么配、怎么委派和并行、codex cloud 命令、GitHub 代码审查,以及在 GitHub Actions 里跑 Codex。
云端功能需要 ChatGPT 账号
云端任务、GitHub 里的 @codex、自动代码审查都运行在 OpenAI 的基础设施上,需要用 ChatGPT 账号登录,并且账号的套餐包含 Codex(可用套餐和额度以官方说明为准)。
第三方模型接口——包括 HiveGPT 的 Key——只适用于在你电脑上运行的 CLI、IDE 扩展和桌面应用。用 API Key 登录时,codex cloud 会直接提示需要用 ChatGPT 登录。如果你只用 HiveGPT,可以跳到本页最后的「在 GitHub Actions 里用 HiveGPT」。
云端任务是怎么执行的
提交一个云端任务后,大致经过这几步:
- 创建一个新容器,把你的 GitHub 仓库克隆进去,切到指定分支。
- 运行环境的初始化脚本(安装依赖等),这个阶段可以联网。
- 按环境设置决定代理阶段能否联网(默认不能)。
- Codex 代理开始工作:读代码、改文件、跑测试,直到它认为完成。
- 你看到结果:改动的 diff、它运行过的命令和输出、一段总结。
所以云端任务能做的事和本地差不多,区别在于它看不到你本机的文件,只能看到 GitHub 上已推送的代码。没推送的改动,云端看不到。
第一步:连接 GitHub 并创建环境
在 chatgpt.com/codex 登录后:
- 连接 GitHub 账号,授权 Codex 访问需要的仓库。建议只勾选需要的仓库,而不是全部。
- 在设置里新建一个「环境」(environment),选择对应的仓库。
- 配置环境的几项内容,见下表。
| 配置项 | 作用 | 建议 |
|---|---|---|
| 容器镜像 | 默认是预装了多种语言运行时的通用镜像,可以指定 Python、Node.js 等的版本 | 和项目 CI 用的版本保持一致 |
| 初始化脚本 | 容器创建后运行,用来装依赖、生成代码 | 写成幂等的,可以重复执行 |
| 维护脚本 | 复用缓存的容器时运行,用来更新依赖 | 比如 pnpm install 增量更新 |
| 环境变量 | 初始化脚本和代理阶段都能读到 | 只放非敏感配置 |
| 密钥(secrets) | 只在初始化脚本中可用,代理阶段会被移除 | 私有包仓库的 token 放这里 |
| 代理联网 | 关闭,或开启并限定域名和 HTTP 方法 | 默认关闭,确实需要再开 |
一个 Node.js 项目的初始化脚本示例:
corepack enable
pnpm install --frozen-lockfile
pnpm run build:types # 代理改代码前就需要的生成步骤Python 项目:
pip install -r requirements.txt
pip install -r requirements-dev.txt初始化脚本里的 export 不会保留
初始化脚本和代理在不同的 shell 会话里运行,脚本里 export FOO=bar 对代理不可见。需要给代理的变量请写在环境变量配置里,或者写进项目的配置文件。
代理阶段要不要联网
默认关闭有它的道理:代理联网后,可能读到网页里藏着的恶意指令(提示注入),也可能把代码或密钥发到外面,或者装上有问题的依赖。只有在任务确实需要时(比如要查最新的 API 文档、调用测试环境的接口)才开启,并且:
- 用域名白名单,只放行必要的域名;平台提供了「常见依赖源」这类预设(包含主流的包仓库)。
- 能只允许
GET、HEAD、OPTIONS就不要放开POST,降低数据外发的可能。
容器会被缓存一段时间以加快后续任务启动;初始化脚本、环境变量或密钥变化后缓存失效,下一个任务会重新初始化。
第二步:委派任务
在网页上选择环境和分支,写下任务描述后提交。任务描述的写法和本地一样,要给清楚目标、范围和验收方式(见 提示词最佳实践):
在 packages/billing 里,把 calculateInvoice 中的金额计算从 number 改为整数分(cents),
避免浮点误差。改完后运行 pnpm --filter billing test,所有测试必须通过。
不要修改公开导出的函数签名。并行多次尝试
同一个任务可以让 Codex 同时做多次尝试(best-of-N),每次独立完成,你从中挑最好的一份。适合方案不唯一的任务,比如「优化这个慢查询」「重构这个组件」。代价是消耗成倍的额度。
也可以同时提交多个不同任务。要注意:几个任务改同一批文件,最后合并时会冲突,尽量让并行的任务各管一块。
查看结果、开 PR
任务完成后,在任务页面可以看到:
- 每个文件的 diff
- 代理运行过的命令和输出(测试有没有真的跑过、过没过,在这里核实)
- 代理的总结
不满意可以在同一个任务里继续追加要求;满意就点创建 PR。也可以把 diff 拉到本地处理,见下一节。
在终端里管理云端任务
CLI 里的 codex cloud(标注为实验性)可以浏览和操作云端任务,前提是用 ChatGPT 登录了 CLI:
codex cloud # 打开交互界面浏览任务
codex cloud list # 列出任务(--env 按环境过滤,--limit 最多 20 条)
codex cloud exec --env ENV_ID "修复 README 里失效的链接" # 提交新任务
codex cloud exec --env ENV_ID --attempts 3 "优化 search 接口的响应时间" # 3 次并行尝试
codex cloud exec --env ENV_ID --branch feature/x "补充单元测试" # 指定分支,默认当前分支
codex cloud status TASK_ID # 查看任务状态
codex cloud diff TASK_ID # 查看 diff,--attempt N 选第几次尝试
codex cloud apply TASK_ID # 把 diff 应用到本地工作区,--attempt N 同上ENV_ID 在 codex cloud 的交互界面里能看到。codex apply 是一个更短的写法,会把最近一次任务产生的 diff 用 git apply 应用到本地。
本地 apply 之后,改动就在你的工作区里了,可以用本地的 Codex(包括走 HiveGPT 的)继续修改、跑测试。
GitHub 集成:在 PR 里用 @codex
连接 GitHub 后,可以在 Codex 的设置里为仓库开启代码审查。
手动请求审查
在 PR 的评论里写:
@codex review可以附带重点:
@codex review 重点看并发安全和错误处理Codex 收到后会先给评论加一个表情表示已接收,然后像普通审查者一样在 PR 上留下审查意见。默认只报告高优先级的问题(P0、P1),不会在拼写和风格上刷屏。
自动审查
在设置里开启自动审查后,每个新开的 PR 都会自动触发一次审查,不需要手动 @codex。适合团队里每个 PR 都希望有一道机器审查的仓库。
用 AGENTS.md 定制审查标准
Codex 审查时会读仓库里的 AGENTS.md,并遵循其中的审查指南。在根目录的 AGENTS.md 里加一节:
## Review guidelines
- 日志里不允许输出手机号、身份证号、邮箱等个人信息
- 所有 /admin 下的路由必须经过鉴权中间件
- SQL 一律使用参数化查询,发现字符串拼接视为 P0
- 文档里的错别字也按 P1 报告更深目录里的 AGENTS.md 只对该目录下的改动生效,适合给支付、权限这类敏感模块单独加规则。写法见 AGENTS.md。
让它直接改代码
在 PR 评论里 @codex 后面跟的不是 review,而是其他任务时,会启动一个云端任务:
@codex 修复这个 PR 里失败的 CI
@codex 给新增的 /api/refund 接口补上单元测试完成后它会把结果推回来供你审阅。
本地审查不需要 ChatGPT 账号
如果只是想在合并前让 Codex 看看改动,本地就可以做:交互模式里输入 /review,或者运行 codex review。这条路径用你本地配置的模型,HiveGPT 的 Key 也能用。
GitHub Actions:openai/codex-action
OpenAI 提供了官方的 GitHub Action openai/codex-action,在 CI 里安装并运行 Codex。Codex 自己的仓库就用它做 issue 分类和翻译。一个只读审查的骨架:
name: Codex PR Review
on:
pull_request:
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
result: ${{ steps.codex.outputs.final-message }}
steps:
- uses: actions/checkout@v4
- id: codex
uses: openai/codex-action@v1
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
sandbox: read-only # 只读,不让它改仓库
safety-strategy: drop-sudo # 运行前去掉 sudo 权限
prompt: |
审查这个 PR 的改动,只列出可能导致线上故障的问题,每条给出文件和行号。版本号可以写主版本,也可以像 Codex 官方仓库那样固定到某个提交哈希,后者更安全。final-message 输出是 Codex 最后一条回复,可以在后续步骤里用 actions/github-script 发成 PR 评论。其他参数(模型、额外的 codex 参数、允许触发的用户等)以 action 仓库的 README 为准。
在 GitHub Actions 里用 HiveGPT
不想用 OpenAI 的 Key,也可以在工作流里直接安装 CLI,写入和本地一样的 config.toml,用 HiveGPT 的 Key 跑 codex exec。Key 放在仓库的 Actions secrets 里,不要写进仓库。完整的脚本、只读沙箱设置和把结果发成评论的方法见 非交互模式与 CI/CD。
小结
- 云端任务在 OpenAI 的容器里跑,只能看到 GitHub 上已推送的代码,需要 ChatGPT 账号;HiveGPT 等第三方 Key 只适用于本地。
- 环境配置的重点是初始化脚本、密钥只给初始化阶段、代理默认不联网。
- 网页、IDE、桌面端和
codex cloud都能提交任务;--attempts可以并行多次尝试,codex cloud apply把结果拉回本地。 - PR 里
@codex review做审查,审查标准写在AGENTS.md的 Review guidelines 里;@codex加其他指令会启动修改任务。 - 不用云端也能审查:本地
/review或codex review,CI 里用codex exec或openai/codex-action。
下一步:Windows 上使用