Codex 非交互模式

非交互模式允许你在脚本、CI/CD 流水线或无头环境中使用 Codex。本节详细介绍如何配置和使用非交互模式。


基础用法

执行单个任务

基本 exec 命令

# 执行简单任务
codex exec "列出当前目录的 Python 文件"

# 使用双引号处理复杂命令
codex exec "分析 src/ 目录的代码结构"

从标准输入读取

stdin 输入

# 从管道读取
echo "解释这段代码" | codex exec --stdin

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

# 多行输入
cat <<EOF | codex exec --stdin
创建一个函数计算阶乘
测试这个函数
EOF
非交互模式非常适合自动化任务和脚本集成。

命令行参数

常用参数

参数说明
exec "任务"执行指定任务
--stdin从标准输入读取任务
--model, -m指定模型
--no-auto-approve禁用自动确认
--output, -o输出到文件

完整示例

完整参数示例

# 指定模型
codex exec -m gpt-5.4-mini "审查代码"

# 输出到文件
codex exec "创建 README" -o README.md

# 禁用自动确认
codex exec --no-auto-approve "运行测试"

# 组合使用
codex exec -m gpt-5.4 "审查 PR" --output review.md

配置

配置文件设置

配置非交互模式

# 非交互模式默认设置
[exec]
# 默认模型
default_model = "gpt-5.4"

# 自动批准阈值
auto_approve_threshold = "medium"

# 超时时间(秒)
timeout = 300

执行策略

在非交互模式下,默认策略通常是 deny(拒绝可能产生副作用的操作):

设置执行策略

# 使用 ask 策略
codex exec --approval ask "创建文件"

# 使用 approve 策略(谨慎使用)
codex exec --approval approve "运行测试"

# 使用 deny 策略(只读)
codex exec --approval deny "分析代码"
出于安全考虑,非交互模式下默认禁用可能产生副作用的操作。

Shell 脚本集成

基本脚本

Shell 脚本示例

#!/bin/bash

# 使用 Codex 进行代码审查
codex exec "审查 src/ 目录中的代码" --output review.md

if [ $? -eq 0 ]; then
    echo "审查完成,结果已保存到 review.md"
else
    echo "审查失败"
fi

批量处理

批量处理脚本

#!/bin/bash

# 批量审查多个文件
for file in $(find src -name "*.py"); do
    echo "审查: $file"
    codex exec "审查 $file 文件" --output "review_$(basename $file).md"
done

条件执行

条件执行

#!/bin/bash

# 根据文件数量决定是否使用 Codex
FILE_COUNT=$(find src -name "*.py" | wc -l)

if [ $FILE_COUNT -gt 10 ]; then
    echo "文件较多,使用 Codex 批量审查"
    codex exec "审查所有 Python 文件" --output full_review.md
else
    echo "文件较少,逐个审查"
    for file in $(find src -name "*.py"); do
        codex exec "简单审查 $file"
    done
fi

CI/CD 集成

GitHub Actions

GitHub Actions 工作流

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

on
: [pull_request]

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

      - name
: Setup Codex
        uses
: openai/codex-action@v1

      - name
: Run Code Review
        run
: |
         codex exec "Review code changes in this PR" \
            --output review.md

      - name
: Upload Review
        uses
: actions/upload-artifact@v4
        with
:
          name
: code-review
          path
: review.md

GitLab CI

GitLab CI 配置

span style="color: #007F45;">
codex_review:
  image
: node:20
  before_script
:
   - npm install -g @openai/codex
  script
:
   - codex exec "Review changes in this merge request" --output review.md
  artifacts
:
    paths
:
     - review.md

Jenkins

Jenkins Pipeline

pipeline {
    agent any

    stages {
        stage('Code Review') {
            steps {
                sh 'codex exec "Review changed files" --output review.md'
            }
        }
    }

    post {
        always {
            archiveArtifacts 'review.md'
        }
    }
}
将 Codex 集成到 CI/CD 流程中,可以实现自动化代码审查和质量检查。

最佳实践

输出处理

  • 使用 --output 将结果保存到文件
  • 检查返回码判断执行是否成功
  • 处理可能的错误情况

性能优化

  • 使用 gpt-5.4-mini 减少成本
  • 批量处理多个任务
  • 设置合理的超时时间

安全性

  • 避免使用 --approval approve
  • 在 CI/CD 中使用只读模式
  • 保护 API 密钥
在生产环境中使用非交互模式时,请格外注意安全问题。

常见问题

Q: 非交互模式支持所有功能吗?

大部分功能都支持,但某些需要交互确认的功能可能无法使用。

Q: 如何处理需要确认的操作?

使用 --no-auto-approve 参数,或在配置文件中设置执行策略。

Q: 输出格式可以定制吗?

目前支持纯文本输出和 Markdown 输出。

Q: 如何在 Docker 中使用?

将 Codex 安装到 Docker 镜像中,然后在 CI/CD 流程中调用。