Codex CLI
Delega tareas de codificación a Codex a través del terminal Hermes. Codex es el CLI de agente autónomo de codificación de OpenAI.
Cuándo usarlo
- Construcción de características
- Refactorización
- Revisiones de PR
- Corrección por lotes de issues
Requiere el CLI de Codex y un repositorio git.
Prerrequisitos
- Codex instalado:
npm install -g @openai/codex - Autenticación de OpenAI configurada: ya sea
OPENAI_API_KEYo credenciales OAuth de Codex del flujo de inicio de sesión del CLI de Codex - Debe ejecutarse dentro de un repositorio git — Codex se niega a ejecutarse fuera de uno
- Usa
pty=trueen las llamadas al terminal — Codex es una aplicación de terminal interactiva
Para el propio Hermes, model.provider: openai-codex usa el OAuth de Codex gestionado por Hermes
en ~/.hermes/auth.json después de hermes auth add openai-codex. Para el
CLI de Codex independiente, puede existir una sesión OAuth válida en
~/.codex/auth.json; no trates la ausencia de OPENAI_API_KEY como prueba
única de que falta la autenticación de Codex.
Tareas de un solo uso
terminal(command="codex exec 'Añade un modo oscuro a la configuración'", workdir="~/proyecto", pty=true)
Para trabajos temporales (Codex necesita un repositorio git):
terminal(command="cd $(mktemp -d) && git init && codex exec 'Crea un juego de Snake en Python'", pty=true)
Modo en segundo plano (tareas largas)
# Iniciar en segundo plano con PTY
terminal(command="codex exec --full-auto 'Refactoriza el módulo de autenticación'", workdir="~/proyecto", background=true, pty=true)
# Devuelve session_id
# Monitorear el progreso
process(action="poll", session_id="<id>")
process(action="log", session_id="<id>")
# Enviar entrada si Codex hace una pregunta
process(action="submit", session_id="<id>", data="sí")
# Matar si es necesario
process(action="kill", session_id="<id>")
Banderas clave
| Banderas | Efecto |
|---|---|
exec "prompt" | Ejecución de un solo uso, sale cuando termina |
--full-auto | En espacio aislado pero autoaprueba cambios de archivo en el espacio de trabajo |
--yolo | Sin espacio aislado, sin aprobaciones (más rápido, más peligroso) |
--sandbox danger-full-access | Sin espacio aislado de Codex; útil cuando el contexto del servicio host rompe bubblewrap |
Advertencia sobre la pasarela Hermes
Al invocar el CLI de Codex desde un contexto de pasarela/servicio de Hermes (por ejemplo,
sesiones de agente impulsadas por Telegram), el espacio aislado workspace-write de Codex puede fallar incluso
cuando el mismo comando funciona en el shell interactivo del usuario. Un síntoma típico son
errores de bubblewrap/espacio de nombres de usuario como setting up uid map: Permission denied
o loopback: Failed RTM_NEWADDR: Operation not permitted.
En ese contexto, prefiere:
codex exec --sandbox danger-full-access "<tarea>"
Usa los límites del proceso como capa de seguridad en su lugar: workdir explícito, estado
git limpio antes del lanzamiento, instrucciones de tarea estrechas, revisión con git diff, pruebas
dirigidas, y confirmación humana/del agente antes de confirmar cambios amplios.
Revisiones de PR
Clona a un directorio temporal para una revisión segura:
terminal(command="REVIEW=$(mktemp -d) && git clone https://github.com/usuario/repo.git $REVIEW && cd $REVIEW && gh pr checkout 42 && codex review --base origin/main", pty=true)
Corrección paralela de issues con Worktrees
# Crear worktrees
terminal(command="git worktree add -b fix/issue-78 /tmp/issue-78 main", workdir="~/proyecto")
terminal(command="git worktree add -b fix/issue-99 /tmp/issue-99 main", workdir="~/proyecto")
# Lanzar Codex en cada uno
terminal(command="codex --yolo exec 'Arregla el issue #78: <descripción>. Confirma cuando termines.'", workdir="/tmp/issue-78", background=true, pty=true)
terminal(command="codex --yolo exec 'Arregla el issue #99: <descripción>. Confirma cuando termines.'", workdir="/tmp/issue-99", background=true, pty=true)
# Monitorear
process(action="list")
# Después de la finalización, enviar y crear PRs
terminal(command="cd /tmp/issue-78 && git push -u origin fix/issue-78")
terminal(command="gh pr create --repo usuario/repo --head fix/issue-78 --title 'fix: ...' --body '...'")
# Limpiar
terminal(command="git worktree remove /tmp/issue-78", workdir="~/proyecto")
Revisiones por lotes de PRs
# Obtener todas las referencias de PR
terminal(command="git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'", workdir="~/proyecto")
# Revisar múltiples PRs en paralelo
terminal(command="codex exec 'Revisa el PR #86. git diff origin/main...origin/pr/86'", workdir="~/proyecto", background=true, pty=true)
terminal(command="codex exec 'Revisa el PR #87. git diff origin/main...origin/pr/87'", workdir="~/proyecto", background=true, pty=true)
# Publicar resultados
terminal(command="gh pr comment 86 --body '<revisión>'", workdir="~/proyecto")
Reglas
- Usa siempre
pty=true— Codex es una aplicación de terminal interactiva y se cuelga sin una PTY - Repositorio git requerido — Codex no se ejecuta fuera de un directorio git. Usa
mktemp -d && git initpara trabajo temporal - Usa
execpara usos únicos —codex exec "prompt"se ejecuta y sale limpiamente --full-autopara construcción — autoaprueba cambios dentro del espacio aislado- Segundo plano para tareas largas — usa
background=truey monitorea con la herramientaprocess - No interfieras — monitorea con
poll/log, sé paciente con tareas de larga duración - Paralelo está bien — ejecuta múltiples procesos Codex a la vez para trabajo por lotes