Skip to content

Codex 非交互模式

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


基础用法

执行单个任务

基本 exec 命令

bash

# 执行简单任务

codex exec "列出当前目录的 Python 文件"

# 使用双引号处理复杂命令

codex exec "分析 src/ 目录的代码结构"

从标准输入读取

stdin 输入

bash

# 从管道读取

echo "解释这段代码" | codex exec --stdin

# 从文件读取

codex exec --stdin < task.txt

# 多行输入

cat <<EOF | codex exec --stdin

创建一个函数计算阶乘

测试这个函数

EOF

非交互模式非常适合自动化任务和脚本集成。


命令行参数

常用参数

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

完整示例

完整参数示例

bash

# 指定模型

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

配置

配置文件设置

配置非交互模式

bash

# 非交互模式默认设置

[exec]

# 默认模型

default_model = "gpt-5.4"

# 自动批准阈值

auto_approve_threshold = "medium"

# 超时时间(秒)

timeout = 300

执行策略

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

设置执行策略

bash

# 使用 ask 策略

codex exec --approval ask "创建文件"

# 使用 approve 策略(谨慎使用)

codex exec --approval approve "运行测试"

# 使用 deny 策略(只读)

codex exec --approval deny "分析代码"

出于安全考虑,非交互模式下默认禁用可能产生副作用的操作。


Shell 脚本集成

基本脚本

Shell 脚本示例

bash

#!/bin/bash

# 使用 Codex 进行代码审查

codex exec "审查 src/ 目录中的代码" --output review.md

if [ $? -eq 0 ]; then

    echo "审查完成,结果已保存到 review.md"

else

    echo "审查失败"

fi

批量处理

批量处理脚本

bash

#!/bin/bash

# 批量审查多个文件

for file in $(find src -name "*.py"); do

    echo "审查: $file"

    codex exec "审查 $file 文件" --output "review_$(basename $file).md"

done

条件执行

条件执行

bash

#!/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 工作流

bash
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 配置

bash
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

bash

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 流程中调用。

AI 思考中...

Codex 规则与钩子

Codex AGENTS.md

基于 VitePress 构建,部署于 GitHub Pages