Codex 自动化与 CI/CD

Codex 提供多种自动化方式,可以在脚本、流水线和服务端中使用。


非交互模式(exec)

exec 命令用于脚本和自动化场景,不需要打开 TUI。

基本用法

exec 命令

# 执行单次任务
codex exec "审查代码并输出报告"

# 输出到文件
codex exec -o review.md "审查 src/auth.py"

# 使用特定模型
codex exec -m gpt-5.4-mini "分析项目结构"

# 全自动执行
codex exec --full-auto "运行测试并修复失败"

常用参数

参数说明
-m指定模型
-o输出结果到文件
--full-auto全自动执行
--ephemeral不保存会话文件
--jsonJSON Lines 输出格式
--output-schema按 JSON Schema 格式输出
--sandbox设置沙箱模式

从标准输入读取

stdin 输入

# 从管道读取
echo "解释这个错误" | codex exec -

# 从文件读取
codex exec - < task.txt

# 多行任务
cat <<EOF | codex exec -
分析 src/ 目录
找出潜在的 Bug
输出修复建议
EOF

恢复会话

恢复执行

# 恢复最近会话
codex exec resume --last "继续修复 Bug"

# 恢复指定会话
codex exec resume --session abc123 "下一步任务"

默认情况下,exec 运行在只读沙箱中,不会修改文件。


Codex SDK

Codex SDK 提供编程接口,可以在代码中调用 Agent 能力。

安装 SDK

安装 SDK

npm install @openai/codex-sdk

使用示例

SDK 基本用法

import { Codex } from '@openai/codex-sdk';

// 创建 Codex 客户端
const codex = new Codex({
  apiKey: process.env.OPENAI_API_KEY
});

// 执行任务
const thread = await codex.run({
  prompt: '审查 src/auth.py 文件',
  model: 'gpt-5.4'
});

// 获取结果
console.log(thread.messages);

// 继续任务
const followUp = await codex.run({
  threadId: thread.id,
  prompt: '修复发现的 Bug'
});

SDK 适用场景

  • 集成到 CI/CD 管道
  • 创建自定义 Agent 应用
  • 自动化内部工具
  • 批量处理任务

GitHub Action

官方提供 Codex GitHub Action,可在 CI 流水线中触发任务。

基本工作流

GitHub Action 示例

span style="color: green;">
name: Codex Review

on
: [pull_request]

jobs
:
  codex-review
:
    runs-on
: ubuntu-latest
    steps
:
      - uses
: actions/checkout@v4
        with
:
          fetch-depth
: 0

      - name
: Run Codex Review
        uses
: openai/codex-action@v1
        with
:
          prompt-file
: '.github/codex-review.md'
          model
: 'gpt-5.4'
          sandbox
: 'workspace-write'
          output-file
: 'review.md'

      - name
: Post Review
        uses
: actions/github-script@v7
        with
:
          script
: |
           const fs = require('fs');
            const review = fs.readFileSync('review.md', 'utf8');
            github.rest.pulls.createReview({
              owner: context.repo.owner,
              repo: context.repo.repo,
              pull_number: context.issue.number,
              body: review,
              event: 'COMMENT'
            });

Action 参数

参数说明
prompt直接指定任务描述
prompt-file指定任务文件路径
model使用的模型
sandbox沙箱模式
output-file输出文件路径
codex-args额外 CLI 参数

安全配置

安全设置

span style="color: green;">
- name: Run Codex
  uses
: openai/codex-action@v1
  with
:
    prompt
: '审查变更'
    safety-strategy
: 'drop-sudo'
    unprivileged-user
: 'codex-runner'
    allow-users
: ['maintainers']

使用 GitHub Action 时,确保 API Key 作为 Secrets 存储,不要硬编码。


App Server

App Server 将 Codex 能力作为服务端 API 暴露。

启动 App Server

启动服务

# 启动 App Server
codex app-server

# 指定端口
codex app-server --port 3000

# 远程访问
codex --remote ws://server:3000

适用场景

  • 团队共享 Codex 能力
  • 远程 CI/CD 调用
  • 集成到内部平台

MCP Server

将 Codex 作为 MCP 工具提供给其他 Agent 调用。

配置 Codex MCP

MCP Server 配置

# 其他 Agent 的配置中
[mcp_servers.codex]
command = "codex"
args = ["mcp-server"]

最佳实践

安全性

  • 使用只读沙箱模式
  • API Key 作为 Secrets 存储
  • 限制触发条件(仅特定事件)
  • 审查输出后再应用更改

可靠性

  • 设置合理的超时时间
  • 使用 --ephemeral 避免状态残留
  • 验证任务成功后再继续
  • 处理失败情况的回滚

常见问题

Q: exec 和交互模式的区别?

exec 单次执行后退出,适合自动化;交互模式持续对话。

Q: CI/CD 中如何认证?

使用 CODEX_API_KEY 环境变量,作为 Secrets 存储。

Q: GitHub Action 可以修改文件吗?

可以,设置 sandbox: workspace-write。

Q: 如何在 Docker 中使用?

将 Codex 安装到镜像,配置好认证后调用。