Volver al inicio

PromptPilot para IA CLI: programador de tareas

PromptPilot — programador de colas para IA CLI como Claude Code. Soporta CLI, Web UI, bot de Telegram con manejo de límites de tasa y reanudación de sesiones. Arquitectura en SQLite + worker de un solo hilo asegura confiabilidad.

Automatización de IA CLI con PromptPilot: bots y colas
Advertisement 728x90

PromptPilot: Un Programador de Colas para Herramientas CLI de IA

PromptPilot te permite encolar tareas para herramientas CLI de IA como Claude Code, Codex y Qwen. La herramienta ejecuta prompts según una programación mediante CLI, interfaz web o bot de Telegram. Soporta prioridades, reintentos ante límites de tasa y recuperación de sesiones. El trabajador procesa una tarea a la vez, evitando carreras por límites de API.

Escenarios del mundo real: calentar límites antes del trabajo, usar cuotas sobrantes antes de fin de mes, encolar tareas remotamente mediante bot. Las tareas se almacenan en SQLite con modo WAL para concurrencia.

Casos de Uso Prácticos

La herramienta resuelve problemas cotidianos de desarrolladores:

Google AdInline article slot
  • Calentar límites: Programa un prompt ligero para las 5:00 AM para que la sesión comience temprano. Para las 9:00 AM, el límite está parcialmente usado; a las 10:00 AM — se reinicia.
  • Límite de tasa nocturno: Tarde en la noche, encola una tarea para la hora de reinicio — el resultado está listo por la mañana.
  • Lanzamiento remoto: Desde un taxi mediante bot, envía una auditoría de código — al regresar, el límite se ha refrescado, tarea completada.
  • Ajustes móviles: Añade validación a payments.py con pruebas directamente desde Telegram.
  • Habilidades de Claude: Invoca una habilidad como demo-invite.md mediante /skills en el bot o un botón en la UI.

Ejemplo de lanzamiento CLI:

pp add "Escribe pruebas para api.py" --dir C:\Projects\PromptPilot -p 1 -a "2026-04-01T05:00"

Arquitectura del Sistema

Interfaces (CLI, Web UI, Bot TG) escriben en SQLite (~/.promptpilot). El trabajador sondea la cola cada 5s, lanza un subproceso con el CLI de IA.

Interfaces → SQLite (WAL) → Trabajador (sondeo 5s) → subproceso (claude.exe | codex | qwen)
Servidor: FastAPI + JS UI
Bot: API de Telegram

Los procesos son independientes:

Google AdInline article slot
  • Trabajador: Monohilo, una tarea a la vez. Ante límite de tasa — retroceso exponencial.
  • Servidor: REST en :8420, UI JS vanilla.
  • Bot: Diálogos paso a paso, autorización por número de teléfono.

Recuperación de fallos: Al inicio, las tareas en ejecución se revierten a pendientes.

Instalación y Configuración

Clona el repositorio, instala editable:

git clone https://github.com/your/promptpilot
cd PromptPilot
pip install -e .

Crea .env:

Google AdInline article slot
PP_CLAUDE_EXE=C:\Users\usuario\.local\bin\claude.exe
PP_DEFAULT_CLI=claude
PP_PROJECTS_ROOT=C:\Projects
PP_TASK_TIMEOUT=300
PP_BASE_DELAY=60
PP_MAX_DELAY=3600
PP_TG_TOKEN=...
PP_TG_ALLOWED_PHONES=+79001234567
PP_TASK_PASSWORD=12345

Lanzando Servicios

Modo CLI:

pp worker  # procesa cola
pp server  # http://127.0.0.1:8420
pp bot     # Telegram
pp start   # trabajador + servidor

Bandeja (.exe para Windows): Doble clic — icono en bandeja (🟢/🟠/⚫). Compilación: \.build.ps1 → dist/pp.exe (40MB, autocontenido).

PowerShell: \.start.ps1 (todos los servicios), \.stop.ps1.

Interfaces de Gestión

CLI

pp add "Refactoriza db.py" --dir /ruta -p 5
pp add --file prompts.txt
pp list --status pending

Web UI (:8420)

  • Prompt + Ctrl+Enter
  • Habilidades para Claude
  • Preajustes de programación
  • Filtros de estado
  • Detalles: tokens, costo, modelo

Auto-refresco 5s, archivo HTML único.

Bot de Telegram

Autorización: comparte contacto (PP_TG_ALLOWED_PHONES). Paso a paso: prompt → proveedor → prioridad → dir → programación.

Comandos: /skills, lista de tareas con paginación, detalles con botones [Responder|Eliminar].

Manejo de Límites de Tasa

Detección mediante stderr: "rate limit", "429", "quota exceeded".

Retroceso exponencial:

def compute_next_run(retry_count: int) -> datetime:
    delay = min(BASE_DELAY * (2 ** retry_count), MAX_DELAY)
    jitter = delay * 0.1 * (random.random() * 2 - 1)
    return datetime.now(timezone.utc) + timedelta(seconds=delay + jitter)

Retrasos: 60s → 120s → ... → 3600s + ±10% jitter. Tras max_retries — fallida.

Continuando Conversaciones

Claude podría preguntar: "¿auth.py o auth_v2.py?". La tarea guarda session_id. En bot/UI: 💬 Responder → nueva tarea con --resume <session_id>.

Puntos Clave

  • Trabajador monohilo garantiza sin condiciones de carrera para límites de API.
  • SQLite WAL + recuperación de fallos para fiabilidad.
  • Tres interfaces: CLI para velocidad, UI/bot para comodidad.
  • Retroceso exponencial con jitter para límites de tasa.
  • Soporte para habilidades y reanudación de sesiones de Claude Code.

— Editorial Team

Advertisement 728x90

Leer después