Zum Hauptinhalt springen

Einleitung

laravel/pao ist ein Paket, das die Ausgaben von PHP-Entwicklungswerkzeugen für KI-Agenten optimiert. PAO (PHP Agent-Optimized output) wandelt die ausschweifenden Ausgaben von PHPUnit, Pest, Paratest, PHPStan und Laravel Artisan automatisch in strukturiertes, kompaktes JSON um. Nachdem viele KI-Agenten – GitHub Copilot inbegriffen – auf tokenbasierte Preismodelle umgestiegen sind, führt die Reduktion der Werkzeugausgaben direkt zu Kostenersparnissen. PAO ist genau dafür konzipiert und soll als Standard-Abhängigkeit in die Laravel-Starterkits aufgenommen werden.

Warum das wichtig ist

Da KI-Agenten tief in den Entwicklungsworkflow integriert werden, wirkt sich die Anzahl der Tokens in Werkzeugausgaben direkt auf Kosten und Antwortzeiten aus. In einem Projekt mit 1.000 Tests umfasst die PHPUnit-Ausgabe mehrere tausend Zeilen; der KI-Agent benötigt jedoch nur die Informationen „Erfolg/Fehlschlag, Anzahl, Fehlerstellen”. PAO komprimiert diese Informationen auf ein einstelliges JSON-Objekt.
  • Testausgabe: bis zu 99,8 % Token-Reduktion
  • PHPStan-Ausgabe: strukturiertes JSON, das nur die nötigen Informationen liefert
  • Artisan-Ausgabe: ANSI-Codes, Rahmenzeichen und Leerraum werden entfernt – bis zu 75 % Reduktion

Installation

Erforderlich sind PHP 8.3 oder höher, PHPUnit 12–13 / Pest 4–5 / Paratest / PHPStan sowie Laravel 12 oder höher.
composer require laravel/pao --dev
Es genügt die Installation. PAO klinkt sich über den Composer-Autoloader automatisch in PHPUnit, Pest, Paratest und PHPStan ein. In Laravel-Projekten wird der Service Provider automatisch erkannt und auch die Optimierung der Artisan-Ausgaben aktiviert.
PAO ist nur aktiv, wenn eine KI-Agenten-Umgebung erkannt wird. Bei manueller Ausführung in einem Terminal ist PAO komplett deaktiviert, und die reguläre Ausgabe bleibt erhalten.

Unterstützte KI-Agenten

PAO erkennt folgende KI-Agenten automatisch.
AgentErkennung
GitHub CopilotUmgebungsvariablen wie COPILOT_MODEL
Claude CodeCLAUDECODE oder CLAUDE_CODE
CursorCURSOR_AGENT
Gemini CLIGEMINI_CLI
DevinDatei /opt/.devin
CodexUmgebungsvariablen wie CODEX_SANDBOX

Before / After

Testausgabe (PHPUnit / Pest)

Eine Test-Suite mit 1.000 Tests wird wie folgt transformiert. Before (ohne 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)
After (mit PAO)
{
  "tool": "phpunit",
  "result": "passed",
  "tests": 1002,
  "passed": 1002,
  "duration_ms": 321
}
Die Ausgabe hat unabhängig von der Testanzahl stets die gleiche Größe. Bei Fehlschlägen werden Dateipfad, Zeilennummer und Fehlermeldung ergänzt.

Ausgabe von Coverage- und anderen Plugins

Zusätzliche Ausgaben von Pest-Plugins wie --coverage oder --profile werden von ANSI-Codes und Dekoration befreit und in einem raw-Array beigefügt.
{
  "tool": "pest",
  "result": "passed",
  "tests": 1002,
  "passed": 1002,
  "duration_ms": 1520,
  "raw": [
    "Http/Controllers/Controller 100.0%",
    "Models/User 0.0%",
    "Total: 33.3 %"
  ]
}

PHPStan-Ausgabe

{
  "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"
      }
    ]
  }
}

Laravel Artisan-Ausgabe

Aus Ausgaben wie php artisan about werden ANSI-Codes, Rahmenzeichen, Punkte-Trenner und Leerraum entfernt. Before (ohne PAO) – 2.111 Zeichen
  Environment ................................................................
  Application Name ................................................... Laravel
  Laravel Version ..................................................... 13.3.0
  PHP Version .......................................................... 8.5.4
  Debug Mode ......................................................... ENABLED
After (mit PAO) – 535 Zeichen
 Environment ..
 Application Name .. Laravel
 Laravel Version .. 13.3.0
 PHP Version .. 8.5.4
 Debug Mode .. ENABLED
Bei Kommandos wie about, db:show und migrate:status ist mit bis zu 75 % Token-Reduktion zu rechnen.

Integration in die Laravel-Starterkits

PAO soll als Standard-Abhängigkeit in die Laravel-Starterkits einziehen. Wird ein neues Projekt erstellt, wird es automatisch installiert; die Entwicklung mit KI-Agenten kann direkt mit reduzierten Token-Kosten beginnen.

Fazit

laravel/pao läuft direkt nach der Installation und ist nur in KI-Agent-Umgebungen aktiv, sodass es bestehende Entwicklungs-Workflows in keiner Weise beeinträchtigt. Es lohnt sich, den Einsatz in jedem PHP-/Laravel-Projekt zu erwägen, das die Kosten für die Entwicklung mit KI-Agenten senken möchte.

Repository laravel/pao

Quellcode sowie aktuelle Liste unterstützter Werkzeuge und Agenten finden Sie hier.
Zuletzt geändert am 13. Juli 2026