Skip to content

非交互、CI 与 SDK

Codex 自动化有三条常见路径:

路径适合首选入口
一次性脚本 / CI运行检查、审查 diff、生成补丁codex exec
GitHub ActionsPR review、CI 失败自动修复、发布检查openai/codex-action@v1
产品集成 / 内部平台流式事件、线程、审批、深度集成Codex SDK 或 app-server

codex exec

最小用法:

codex exec "review the current diff and list only P0/P1 risks"

带权限:

codex exec \
  --sandbox read-only \
  --ask-for-approval never \
  "summarize this repo and identify risky areas"

继续会话:

codex exec "find the likely cause of this failing test"
codex exec resume --last "apply the smallest fix and rerun the test"

非交互模式适合可重复任务。把 prompt 写成文件并纳入版本控制,比在 CI YAML 里堆长字符串更容易维护。

API key 自动化

CODEX_API_KEY 只用于 codex exec,适合单次自动化:

CODEX_API_KEY="$OPENAI_API_KEY" \
  codex exec --json "triage open bug reports"

不要把 key 暴露给整个 job 的后续步骤。CI 里如果先运行仓库脚本再设置 key,风险更低;如果先把 key 放进环境,依赖安装脚本也可能读到它。

Gushen888 CI

如果 CI 要走 Gushen888,用标准 ~/.codex 文件或临时 CODEX_HOME:

export CODEX_HOME="$PWD/.codex-ci"
mkdir -p "$CODEX_HOME"

cat > "$CODEX_HOME/auth.json" << 'EOF'
{
  "OPENAI_API_KEY": "sk-..."
}
EOF

cat > "$CODEX_HOME/config.toml" << 'EOF'
model_provider = "Gushen888"
model = "gpt-5.6-sol"
approval_policy = "never"
sandbox_mode = "workspace-write"

[model_providers.Gushen888]
name = "Gushen888"
wire_api = "responses"
requires_openai_auth = true
base_url = "https://api.gushen888.cloud/v1"
EOF

codex exec "run the documented checks and summarize failures"

CI 里不要把 .codex-ci/auth.json 上传为 artifact。

GitHub Action

OpenAI 官方 Action 会安装 Codex CLI,启动 Responses API proxy,并按配置运行 codex exec。适合在 GitHub Actions 里减少手写安装和密钥处理。

.github/workflows/codex-review.yml

name: Codex review
on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  codex:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0
          persist-credentials: false

      - uses: openai/codex-action@v1
        with:
          openai-api-key: ${{ secrets.OPENAI_API_KEY }}
          prompt-file: .github/codex/prompts/review.md
          sandbox: read-only

安全建议:

  • 限制触发者,避免 fork PR 直接接触 secret
  • checkout 时不要持久化凭据,除非后续步骤需要写回
  • 让 Codex job 只产生 diff 或报告
  • 写 PR 的步骤放在单独 job,不要携带模型 API key
  • 对 issue、PR body、commit message 做 prompt injection 防护

自动修复 CI

推荐模式:

  • 主 CI 失败后触发独立 workflow
  • Checkout 失败 commit
  • 安装依赖但不暴露模型 key
  • 运行 Codex 生成 patch
  • 上传 patch artifact
  • 另一个 job 应用 patch 并开 PR

这样 OpenAI / Gushen888 key 不会出现在拥有写权限的 job 环境里。

App Server

codex app-server 适合做产品级集成。它通过 JSON-RPC 风格消息管理 thread、turn、stream events、审批和历史。

codex app-server
codex app-server --listen ws://127.0.0.1:4500
codex app-server --listen unix://

WebSocket transport 适合 localhost 或 SSH tunnel。不要在没有认证的情况下暴露到非 loopback 地址。

Codex SDK

SDK 适合在后端服务或内部工具里调用 Codex,比 shell 包装 codex exec 更容易处理:

  • 长会话
  • 流式事件
  • 结构化输出
  • 审批和工具结果
  • 多 agent 编排

如果只是 CI 里跑一次 review,用 codex exec 或 GitHub Action 更直接。需要产品集成、平台化或复杂 orchestration 时再用 SDK。

Agents SDK + Codex MCP

Codex 可以作为 MCP server 被其他 agent 调用:

codex mcp-server

典型用途:

  • 一个主 agent 做分派,让 Codex 负责代码实现
  • 多 agent pipeline 中把 Codex 当作“可审查的代码执行者”
  • 用 OpenAI Agents SDK 统一编排 handoff、trace 和 guardrails

保持每个 Codex 子任务范围清晰,并让它在独立工作目录或 worktree 中运行。

官方参考

面向编码工具与 Agent 工作流的稳定模型网关。