Modo no interactivo de Codex
El modo no interactivo te permite usar Codex en scripts, pipelines de CI/CD o entornos headless. Esta sección detalla cómo configurar y usar el modo no interactivo.
Uso básico
Ejecutar una sola tarea
Comando exec básico
# Ejecutar una tarea simple
codex exec "Lista los archivos Python del directorio actual"
# Usar comillas dobles para comandos complejos
codex exec "Analiza la estructura de código del directorio src/"
codex exec "Lista los archivos Python del directorio actual"
# Usar comillas dobles para comandos complejos
codex exec "Analiza la estructura de código del directorio src/"
Leer desde la entrada estándar
Entrada stdin
# Leer desde una tubería (pipe)
echo "Explica este código" | codex exec --stdin
# Leer desde un archivo
codex exec --stdin < task.txt
# Entrada multilínea
cat <<EOF | codex exec --stdin
Crear una función que calcule el factorial
Prueba esta función
EOF
echo "Explica este código" | codex exec --stdin
# Leer desde un archivo
codex exec --stdin < task.txt
# Entrada multilínea
cat <<EOF | codex exec --stdin
Crear una función que calcule el factorial
Prueba esta función
EOF
El modo no interactivo es muy adecuado para tareas automatizadas e integración con scripts.
Parámetros de línea de comandos
Parámetros comunes
| Parámetro | Descripción |
|---|---|
exec "任务" | Ejecuta la tarea especificada |
--stdin | Lee la tarea desde la entrada estándar |
--model, -m | Especifica el modelo |
--no-auto-approve | Desactiva la confirmación automática |
--output, -o | Salida a archivo |
Ejemplo completo
Ejemplo completo de parámetros
# Especificar el modelo
codex exec -m gpt-5.4-mini "Revisa el código"
# Salida a archivo
codex exec "Crea un README" -o README.md
# Desactivar la confirmación automática
codex exec --no-auto-approve "Ejecuta las pruebas"
# Uso combinado
codex exec -m gpt-5.4 "Revisa el PR" --output review.md
codex exec -m gpt-5.4-mini "Revisa el código"
# Salida a archivo
codex exec "Crea un README" -o README.md
# Desactivar la confirmación automática
codex exec --no-auto-approve "Ejecuta las pruebas"
# Uso combinado
codex exec -m gpt-5.4 "Revisa el PR" --output review.md
Configuración
Configuración del archivo de configuración
Configurar el modo no interactivo
# Configuración predeterminada del modo no interactivo
[exec]
# Modelo predeterminado
default_model = "gpt-5.4"
# Umbral de aprobación automática
auto_approve_threshold = "medium"
# Tiempo de espera (segundos)
timeout = 300
[exec]
# Modelo predeterminado
default_model = "gpt-5.4"
# Umbral de aprobación automática
auto_approve_threshold = "medium"
# Tiempo de espera (segundos)
timeout = 300
Política de ejecución
En el modo no interactivo, la política predeterminada suele serdeny(rechazar operaciones que puedan causar efectos secundarios):
Establecer la política de ejecución
# Usar la política ask
codex exec --approval ask "Crea un archivo"
# Usar la política approve (usar con precaución)
codex exec --approval approve "Ejecuta las pruebas"
# Usar la política deny (solo lectura)
codex exec --approval deny "Analiza el código"
codex exec --approval ask "Crea un archivo"
# Usar la política approve (usar con precaución)
codex exec --approval approve "Ejecuta las pruebas"
# Usar la política deny (solo lectura)
codex exec --approval deny "Analiza el código"
Por razones de seguridad, en el modo no interactivo las operaciones que pueden causar efectos secundarios están deshabilitadas por defecto.
Integración con scripts de Shell
Script básico
Ejemplo de script de Shell
#!/bin/bash
# Usar Codex para revisión de código
codex exec "Revisa el código en el directorio src/" --output review.md
if [ $? -eq 0 ]; then
echo "Revisión completada, los resultados se guardaron en review.md"
else
echo "La revisión falló"
fi
# Usar Codex para revisión de código
codex exec "Revisa el código en el directorio src/" --output review.md
if [ $? -eq 0 ]; then
echo "Revisión completada, los resultados se guardaron en review.md"
else
echo "La revisión falló"
fi
Procesamiento por lotes
Script de procesamiento por lotes
#!/bin/bash
# Revisar múltiples archivos por lotes
for file in $(find src -name "*.py"); do
echo "Revisa:$file"
codex exec "Revisa$filearchivos" --output "review_$(basename $file).md"
done
# Revisar múltiples archivos por lotes
for file in $(find src -name "*.py"); do
echo "Revisa:$file"
codex exec "Revisa$filearchivos" --output "review_$(basename $file).md"
done
Ejecución condicional
Ejecución condicional
#!/bin/bash
# Decidir si usar Codex según la cantidad de archivos
FILE_COUNT=$(find src -name "*.py" | wc -l)
if [ $FILE_COUNT -gt 10 ]; then
echo "Hay muchos archivos, usa Codex para revisión por lotes"
codex exec "Revisa todos los archivos Python" --output full_review.md
else
echo "Hay pocos archivos, revisa uno por uno"
for file in $(find src -name "*.py"); do
codex exec "Revisión simple$file"
done
fi
# Decidir si usar Codex según la cantidad de archivos
FILE_COUNT=$(find src -name "*.py" | wc -l)
if [ $FILE_COUNT -gt 10 ]; then
echo "Hay muchos archivos, usa Codex para revisión por lotes"
codex exec "Revisa todos los archivos Python" --output full_review.md
else
echo "Hay pocos archivos, revisa uno por uno"
for file in $(find src -name "*.py"); do
codex exec "Revisión simple$file"
done
fi
Integración CI/CD
GitHub Actions
Flujo de trabajo de 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
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
Configuración de GitLab CI
span style="color: #0053A6;">
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
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'
}
}
}
agent any
stages {
stage('Code Review') {
steps {
sh 'codex exec "Review changed files" --output review.md'
}
}
}
post {
always {
archiveArtifacts 'review.md'
}
}
}
Integrar Codex en los flujos de CI/CD permite realizar revisiones de código automatizadas y controles de calidad.
Buenas prácticas
Manejo de salida
- Usa
--outputGuardar el resultado en un archivo - Verifica el código de retorno para determinar si la ejecución fue exitosa
- Manejar posibles situaciones de error
Optimización de rendimiento
- Usa
gpt-5.4-miniReducir costos - Procesar múltiples tareas por lotes
- Establecer un tiempo de espera razonable
Seguridad
- Evita usar
--approval approve - Usar el modo de solo lectura en CI/CD
- Proteger las claves de API
Al usar el modo no interactivo en entornos de producción, presta especial atención a los problemas de seguridad.
Preguntas frecuentes
P: ¿El modo no interactivo admite todas las funciones?
La mayoría de las funciones son compatibles, pero algunas que requieren confirmación interactiva pueden no estar disponibles.
P: ¿Cómo manejar las operaciones que requieren confirmación?
Usa--no-auto-approveel parámetro, o establece la política de ejecución en el archivo de configuración.
P: ¿Se puede personalizar el formato de salida?
Actualmente se admiten salida de texto plano y salida en Markdown.
P: ¿Cómo usarlo en Docker?
Instala Codex en la imagen de Docker y luego invócalo en el flujo de CI/CD.
Otras extensiones