> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel PAO — strumento di ottimizzazione dell'output per agenti AI

> Presentazione di laravel/pao. Pacchetto ufficiale Laravel che, in ambienti con agenti AI, comprime in formato JSON l'output di PHPUnit, Pest, PHPStan e Artisan, riducendo il consumo di token fino al 99,8%.

## Introduzione

[laravel/pao](https://github.com/laravel/pao) è un pacchetto che ottimizza l'output degli strumenti di sviluppo PHP per gli agenti AI. **PAO (PHP Agent-Optimized output)** converte automaticamente l'output verboso di PHPUnit, Pest, Paratest, PHPStan e Laravel Artisan in JSON compatto e strutturato.

Man mano che molti agenti AI, incluso GitHub Copilot, sono passati a modelli di prezzo basati sul numero di token, la riduzione dell'output degli strumenti si è tradotta direttamente in una riduzione dei costi. PAO è progettato per risolvere questo problema ed è previsto come dipendenza predefinita degli starter kit di Laravel.

```mermaid theme={null}
graph TD
    A["Esecuzione del tool<br>(PHPUnit/Pest/PHPStan/Artisan)"] --> B{"Ambiente<br>di un agente AI?"}
    B -->|Sì| C["Emette output compresso in JSON"]
    B -->|No| D["Output normale<br>(invariato)"]
    C --> E["L'agente AI elabora<br>risparmiando token"]
    D --> F["Un umano lo verifica normalmente"]
```

## Perché è importante

Con gli agenti AI sempre più integrati nel flusso di sviluppo, il numero di token dell'output degli strumenti si traduce direttamente in costi e velocità di risposta.

In un progetto con 1.000 test, l'output di PHPUnit può essere di migliaia di righe, ma all'agente AI servono solo "successo/fallimento, numero e punti di fallimento". PAO comprime queste informazioni in un oggetto JSON di dimensioni ridotte.

* **Output dei test**: riduzione dei token fino al 99,8%
* **Output PHPStan**: fornisce solo le informazioni necessarie in JSON strutturato
* **Output Artisan**: rimuove codici ANSI, caratteri di bordatura e spazi bianchi, riducendo fino al 75%

## Installazione

Compatibile con PHP 8.3 o superiore, PHPUnit 12-13 / Pest 4-5 / Paratest / PHPStan / Laravel 12 o superiore.

```bash theme={null}
composer require laravel/pao --dev
```

Funziona semplicemente installandolo. PAO si aggancia automaticamente a PHPUnit, Pest, Paratest e PHPStan tramite l'autoloader di Composer. Nei progetti Laravel il service provider viene rilevato automaticamente e viene abilitata anche l'ottimizzazione dell'output di Artisan.

<Info>
  PAO si attiva solo quando rileva un ambiente di agente AI. Quando è un umano ad eseguire direttamente dal terminale, è completamente disabilitato e l'output normale rimane inalterato.
</Info>

## Agenti AI supportati

PAO rileva automaticamente i seguenti agenti AI.

| Agente         | Metodo di rilevamento                     |
| -------------- | ----------------------------------------- |
| GitHub Copilot | Variabili d'ambiente come `COPILOT_MODEL` |
| Claude Code    | `CLAUDECODE` o `CLAUDE_CODE`              |
| Cursor         | `CURSOR_AGENT`                            |
| Gemini CLI     | `GEMINI_CLI`                              |
| Devin          | File `/opt/.devin`                        |
| Codex          | Variabili d'ambiente come `CODEX_SANDBOX` |

## Prima / Dopo

### Output dei test (PHPUnit / Pest)

Una suite di 1.000 test viene convertita come segue.

**Prima (senza PAO)**

```
PHPUnit 12.5.14 by Sebastian Bergmann and contributors.

.............................................................   61 / 1002 (  6%)
.............................................................  122 / 1002 ( 12%)
...
..........................                                    1002 / 1002 (100%)

Time: 00:00.321, Memory: 46.50 MB

OK (1002 tests, 1002 assertions)
```

**Dopo (con PAO)**

```json theme={null}
{
  "tool": "phpunit",
  "result": "passed",
  "tests": 1002,
  "passed": 1002,
  "duration_ms": 321
}
```

L'output ha sempre dimensioni costanti indipendentemente dal numero di test. In caso di fallimento sono inclusi percorso del file, numero di riga e messaggio di fallimento.

### Output di plugin come coverage

L'output aggiuntivo dei plugin di Pest come `--coverage` o `--profile` viene incluso nell'array `raw` dopo aver rimosso codici ANSI e decorazioni.

```json theme={null}
{
  "tool": "pest",
  "result": "passed",
  "tests": 1002,
  "passed": 1002,
  "duration_ms": 1520,
  "raw": [
    "Http/Controllers/Controller 100.0%",
    "Models/User 0.0%",
    "Total: 33.3 %"
  ]
}
```

### Output PHPStan

```json theme={null}
{
  "tool": "phpstan",
  "result": "failed",
  "errors": 2,
  "error_details": {
    "/app/Http/Controllers/Controller.php": [
      {
        "line": 9,
        "message": "Method Controller::index() should return int but returns string.",
        "identifier": "return.type"
      },
      {
        "line": 14,
        "message": "Call to an undefined method Controller::doesNotExist().",
        "identifier": "method.notFound"
      }
    ]
  }
}
```

### Output di Laravel Artisan

Dall'output di comandi come `php artisan about` vengono rimossi codici ANSI, caratteri di bordatura, separatori a puntini e spazi bianchi.

**Prima (senza PAO) — 2.111 caratteri**

```
  Environment ................................................................
  Application Name ................................................... Laravel
  Laravel Version ..................................................... 13.3.0
  PHP Version .......................................................... 8.5.4
  Debug Mode ......................................................... ENABLED
```

**Dopo (con PAO) — 535 caratteri**

```
 Environment ..
 Application Name .. Laravel
 Laravel Version .. 13.3.0
 PHP Version .. 8.5.4
 Debug Mode .. ENABLED
```

Con comandi come `about`, `db:show` e `migrate:status` si può ottenere una riduzione dei token fino al 75%.

## Integrazione negli starter kit di Laravel

PAO è previsto come dipendenza predefinita degli starter kit di Laravel. Creando un nuovo progetto viene installato automaticamente e puoi iniziare subito lo sviluppo con agenti AI mantenendo bassi i costi in token.

## Conclusioni

`laravel/pao` funziona semplicemente installandolo e si attiva solo negli ambienti degli agenti AI, senza alcun impatto sul workflow di sviluppo esistente. È un pacchetto che vale la pena valutare per qualsiasi progetto PHP/Laravel che voglia ridurre i costi di sviluppo con agenti AI.

<Card title="Repository laravel/pao" icon="github" href="https://github.com/laravel/pao">
  Trovi qui il codice sorgente e l'elenco aggiornato di strumenti e agenti supportati.
</Card>


## Related topics

- [laravel/agent-skills — la raccolta ufficiale di skill per agenti AI di Laravel](/it/blog/agent-skills-introduction.md)
- [Aggiornamenti Laravel di maggio 2026](/it/blog/changelog/202605.md)
- [Laravel Agent Detector — pacchetto per rilevare gli agenti AI](/it/blog/agent-detector-introduction.md)
- [Il nuovo ecosistema di analisi del codice Laravel — surveyor / ranger / roster](/it/blog/laravel-ecosystem-analysis.md)
- [Agenti personalizzati](/it/packages/laravel-copilot-sdk/custom-agents.md)
