Codex CLI Ejemplos prácticos

Esta sección muestra varios escenarios de uso de Codex CLI mediante ejemplos prácticos, ayudándote a dominar rápidamente su aplicación en el desarrollo real.


Escritura de código

Ejemplo 1: Crear una nueva funcionalidad

Pídele a Codex que cree un módulo de funcionalidad completo:

Tarea

Crea una función de Python que acepte una lista de cadenas y devuelva la cadena más larga y su posición de índice.

Codex generará un código similar al siguiente:

Código generado

def find_longest_string(strings):
    """
Encuentra la cadena más larga y su posición de índice en una lista de cadenas.

    Args:
strings: lista de cadenas

    Returns:
tuple: (cadena más larga, posición de índice)
Si la lista está vacía, devuelve (None, -1)
    """

    if not strings:
        return None, -1

    longest = max(strings, key=len)
    index = strings.index(longest)

    return longest, index


# Ejemplo de prueba
if __name__ == "__main__":
    test_list = ["apple", "banana", "cherry", "dragonfruit"]
    result, idx = find_longest_string(test_list)
    print(f"Cadena más larga: {result}, índice: {idx}")
    # Salida: Cadena más larga: dragonfruit, índice: 3
El código generado por Codex incluye comentarios de documentación detallados y ejemplos de prueba, y se puede usar directamente.

Ejemplo 2: Refactorizar código

Pídele a Codex que refactorice el código existente:

Tarea

Refactoriza esta función para usar un generador:
def get_squares(n):
    result = []
    for i in range(n):
        result.append(i * i)
    return result

Codex proporcionará el código refactorizado:

Código refactorizado

def get_squares(n):
    """
Genera los cuadrados de 0 a n-1.

    Args:
n: número de cuadrados a generar

    Yields:
int: cuadrados de 0 a n-1
    """

    for i in range(n):
        yield i * i


# Ejemplo de uso
for square in get_squares(5):
    print(square)
# Salida: 0, 1, 4, 9, 16

Revisión de código

Ejemplo 1: Revisar problemas de código

Pídele a Codex que revise el código y sugiera mejoras:

Tarea

Revisa los problemas del siguiente código:
def process_data(data):
    result = []
    for item in data:
        if item['type'] == 'a':
            result.append(item['value'] * 2)
        elif item['type'] == 'b':
            result.append(item['value'] + 10)
        elif item['type'] == 'c':
            result.append(item['value'])
    return result

Codex analizará y proporcionará un informe de revisión:

## 代码审查报告

### 问题
1. **缺少错误处理**:没有检查 item 是否包含必要的键
2. **类型不一致**:'c' 类型直接返回原值,而其他类型做了处理
3. **硬编码值**:乘数和加数应该作为参数或配置

### 改进建议
1. 添加默认字典或 try-except 处理
2. 统一处理逻辑
3. 将 magic numbers 提取为常量

Ejemplo 2: Usar el comando /review

Usa el comando de revisión integrado en Codex:

Tarea

/review src/

Codex escaneará todo elsrc/directorio y generará un informe completo de revisión de código.


Depuración y resolución de problemas

Ejemplo 1: Analizar mensajes de error

Entrega el mensaje de error a Codex para que lo analice:

Tarea

Ayúdame a analizar este error:
Traceback (most recent call last):
  File "app.py", line 42, in <module>
    main()
  File "app.py", line 38, in fetch_data()
  File "app.py", line 25, in fetch_data
    response = requests.get(url)
  File "/usr/lib/python3.10/site-packages/requests/api.py", line 88, in in get
    return session.request(method='GET', url=url, **kwargs)
  requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.example.com', port=443): Max retries exceeded

Codex proporcionará un análisis y una solución:

## 错误分析

### 原因
网络连接问题 - 无法连接到 api.example.com

### 可能的原因
1. 网络不通
2. 域名解析失败
3. 服务器不可用
4. 防火墙阻止

### 建议的排查步骤
1. 检查网络连接:ping api.example.com
2. 验证域名解析:nslookup api.example.com
3. 检查端口是否开放:telnet api.example.com 443
4. 如果是本地开发,检查代理设置

Ejemplo 2: Agregar registros de depuración

Pídele a Codex que agregue código de depuración:

Tarea

Agrega registros de depuración para esta función:
def calculate(a, b):
    return a + b * (a - b)

Codex generará una versión con registros de depuración:

Agregar registros de depuración

import logging

# Configurar registro
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)


def calculate(a, b):
    """Función de cálculo con registros de depuración"""
    logger.debug(f"calculate called with a={a}, b={b}")

    result = a + b * (a - b)

    logger.debug(f"a + b = {a} + {b} = {a + b}")
    logger.debug(f"a - b = {a} - {b} = {a - b}")
    logger.debug(f"b * (a - b) = {b} * {a - b} = {b * (a - b)}")
    logger.debug(f"final result: {result}")

    return result

Operaciones de archivos

Ejemplo 1: Renombrar archivos en lote

Tarea

Renombra todos los archivos como image_001.jpg en el directorio actual a image-001.jpg (cambia guiones bajos por guiones).

Ejemplo 2: Crear estructura de proyecto

Tarea

Crea una estructura de directorios estándar para un proyecto Flask, que incluya:
- app.py archivo principal
- config.py archivo de configuración
- requirements.txt
- tests/directorio
- static/y templates/directorio

Codex creará la estructura completa del proyecto y generará todos los archivos necesarios.

Codex primero mostrará la lista de archivos que creará y, después de la confirmación, los ejecutará.

Ejecución de comandos

Ejemplo 1: Ejecutar pruebas

Tarea

Ejecuta las pruebas unitarias del proyecto.

Codex detectará automáticamente el tipo de proyecto y ejecutará el comando de prueba correspondiente:

  • Proyecto Python: pytest o unittest
  • Proyecto Node.js: npm test o yarn test
  • Proyecto Rust: cargo test

Ejemplo 2: Operaciones de Git

Tarea

Crea un commit de Git que incluya todos los cambios y utilice un mensaje de commit adecuado.

Codex analizará todos los cambios no confirmados y luego ejecutará:

  1. git status- Ver cambios
  2. git diff- Revisar modificaciones específicas
  3. git add -A- Agregar todos los archivos
  4. git commit -m "..."- Crear el commit
Para operaciones de Git, Codex mostrará primero el contenido de los cambios y solo los ejecutará después de la confirmación.

Análisis de proyectos

Ejemplo 1: Comprender la estructura del proyecto

Tarea

Analiza la arquitectura y el stack tecnológico de este proyecto.

Codex examinará del proyecto:

  • Archivos de configuración (package.json, Cargo.toml, requirements.txt, etc.)
  • Estructura de directorios
  • Archivos fuente principales

Luego proporcionará un informe de análisis detallado.

Ejemplo 2: Buscar dependencias

Tarea

Encuentra qué archivos hacen referencia al archivo auth.py.

Modo de planificación

Usa el comando /plan para planificar tareas complejas:

Tarea

/plan Agrega autenticación de usuarios a este proyecto React, incluyendo inicio de sesión, registro y verificación JWT.

Codex mostrará primero un plan de implementación detallado:

## 实施计划:用户认证功能

### 步骤 1:准备
- 创建用户模型
- 安装认证依赖(jsonwebtoken, bcryptjs)

### 步骤 2:后端实现
- 创建 /api/auth/register 端点
- 创建 /api/auth/login 端点
- 实现 JWT 生成和验证中间件

### 步骤 3:前端实现
- 创建登录表单组件
- 创建注册表单组件
- 添加认证状态管理

### 步骤 4:测试
- 编写后端单元测试
- 测试前端表单交互

是否确认执行此计划?
[Y] 确认 [N] 取消 [M] 修改
El modo de planificación te permite conocer el razonamiento completo de Codex antes de ejecutar, evitando trabajos innecesarios.

Ejemplo integral

Un ejemplo de flujo de trabajo completo:

Flujo de trabajo completo

# 1. Iniciar una nueva sesión
/new

# 2. Conocer el proyecto
¿Qué framework utiliza este proyecto? ¿Cuáles son las funcionalidades principales?

# 3. Agregar una nueva funcionalidad
EnusersAgrega una funcionalidad de envío de código de verificación en el módulo, ten en cuenta:
- Generación del código de verificación (6dígitos)
- 60No se puede reenviar dentro de segundos
- Código de verificación10válido por minutos

# 4. Pruebas
Ejecuta las pruebas correspondientes para asegurarte de que la funcionalidad funcione correctamente.

# 5. Revisión de código
/review

Este ejemplo muestra un flujo de desarrollo típico: entender el proyecto → implementar la funcionalidad → probar → revisar.


Resumen de atajos

EscenarioComando utilizado
Escribir una funciónSimplemente describe el requisito
Revisar código/review o "ayúdame a revisar..."
Depurar problemasPega el mensaje de error y solicita un análisis
Ejecutar comandosComienza con !
Planificación de tareas complejas/plan + descripción de la tarea
Comprender código¿Qué hace esta función?
La práctica hace al maestro. Usar Codex con frecuencia te hará más competente y aumentará en gran medida tu eficiencia al escribir código.
Otras extensiones