Introducción
laravel/pao es un paquete que optimiza la salida de las herramientas de desarrollo PHP para agentes de IA. PAO (PHP Agent-Optimized output) convierte automáticamente la salida verbosa de PHPUnit, Pest, Paratest, PHPStan y Laravel Artisan en un JSON estructurado y compacto. Como muchos agentes de IA, incluido GitHub Copilot, han migrado a modelos de precios basados en el número de tokens, reducir la salida de las herramientas se traduce directamente en reducir costes. PAO se ha diseñado para resolver este problema y está previsto que se integre como dependencia por defecto de los starter kits de Laravel.Por qué es importante
A medida que los agentes de IA se integran más profundamente en el flujo de desarrollo, el número de tokens de salida de las herramientas se relaciona directamente con el coste y la velocidad de respuesta. En un proyecto con 1.000 tests, la salida de PHPUnit ocupa miles de líneas, pero el agente de IA solo necesita saber “éxito/fallo, número, ubicación de los fallos”. PAO comprime esa información en un objeto JSON de una sola cifra en tamaño.- Salida de tests: reducción de tokens de hasta el 99,8 %
- Salida de PHPStan: entrega solo la información necesaria en JSON estructurado
- Salida de Artisan: hasta el 75 % de reducción eliminando códigos ANSI, caracteres de recuadro y espacios
Instalación
Requiere PHP 8.3 o superior, y funciona con PHPUnit 12–13 / Pest 4–5 / Paratest / PHPStan / Laravel 12 o superior.PAO se activa solo si detecta un entorno de agente de IA. Si un humano lo ejecuta directamente en la terminal, se desactiva por completo y se mantiene la salida normal.
Agentes de IA con los que funciona
PAO detecta automáticamente los siguientes agentes de IA.| Agente | Método de detección |
|---|---|
| GitHub Copilot | Variables de entorno como COPILOT_MODEL |
| Claude Code | CLAUDECODE o CLAUDE_CODE |
| Cursor | CURSOR_AGENT |
| Gemini CLI | GEMINI_CLI |
| Devin | Archivo /opt/.devin |
| Codex | Variables de entorno como CODEX_SANDBOX |
Before / After
Salida de tests (PHPUnit / Pest)
Una suite de 1.000 tests se transforma como sigue. Before (sin PAO)Salida de plugins como cobertura
La salida adicional de plugins de Pest como--coverage o --profile se incluye en un array raw con los códigos ANSI y adornos eliminados.
Salida de PHPStan
Salida de Laravel Artisan
De la salida de comandos comophp artisan about se eliminan códigos ANSI, caracteres de recuadro, separadores de puntos y espacios.
Before (sin PAO): 2.111 caracteres
about, db:show o migrate:status se puede esperar una reducción de tokens de hasta el 75 %.
Integración con los starter kits de Laravel
Está previsto que PAO se integre como dependencia por defecto de los starter kits de Laravel. Al crear un nuevo proyecto se instalará automáticamente y podrás empezar de inmediato el desarrollo con agentes de IA controlando el coste de tokens.Conclusión
laravel/pao funciona con solo instalarlo y solo se activa en entornos de agente de IA, por lo que no afecta en absoluto al flujo de desarrollo existente. Es un paquete cuya adopción vale la pena considerar en cualquier proyecto PHP o Laravel que quiera reducir los costes de desarrollo con agentes de IA.
Repositorio laravel/pao
Aquí puedes consultar el código fuente y la lista más reciente de herramientas y agentes compatibles.