Zum Hauptinhalt springen

Steering und Queueing

Im normalen Ablauf einer Laravel-Anwendung besteht selten Bedarf, Steering direkt einzusetzen. Da synchrone Ausführungsmuster in Laravel wenig davon profitieren, ist grundsätzlich die Standardnutzung mit Queueing angemessen.
Für das Senden von Nachrichten, während der Agent noch verarbeitet, gibt es zwei Muster: Steering und Queueing.

Überblick

Alle Methoden send() / sendAndWait() / sendAndStream() / Copilot::run() verfügen über den Parameter $mode.
ModusVerhalten
"enqueue" (Standard)Wird nach Abschluss des aktuellen Turns aus der Queue verarbeitet
"immediate" (Steering)Unterbricht den aktuell laufenden Turn und wird sofort eingespeist

Steering ("immediate")

Speist die Nachricht direkt in den vom Agenten gerade bearbeiteten Turn ein. Der Agent empfängt sie in Echtzeit und passt die Antwort an. Nutzen Sie dies, um die Richtung zu korrigieren, ohne die laufende Arbeit abzubrechen.
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Contracts\CopilotSession;

Copilot::start(function (CopilotSession $session) {
    // Langlaufende Aufgabe starten
    $messageId = $session->send(prompt: 'Refactor the authentication module to use sessions');

    // Während der Agent verarbeitet, die Richtung korrigieren
    $session->send(
        prompt: 'Actually, use JWT tokens instead of sessions',
        mode: 'immediate',
    );

    // Warten, bis der Agent idle wird
    $response = $session->sendAndWait(prompt: 'Summarize what you did');
});
Steering ist Best-Effort. Wenn der Agent bereits einen Tool-Aufruf initiiert hat, wird die Nachricht erst nach Abschluss dieses Tool-Aufrufs wirksam, jedoch weiterhin innerhalb desselben Turns. Trifft die Steering-Nachricht erst nach Abschluss des Turns ein, wird sie automatisch in die Queue verschoben.

Queueing ("enqueue")

Fügt die Nachricht einer Queue hinzu und verarbeitet sie nach Ende des aktuellen Turns nacheinander. Jede gequeuete Nachricht wird als eigenständiger Turn ausgeführt. Dies ist das Standardverhalten, wenn $mode weggelassen wird.
Copilot::start(function (CopilotSession $session) {
    // Erste Aufgabe starten
    $session->send(prompt: 'Set up the project structure');

    // Während der Agent verarbeitet, weitere Aufgaben in die Queue legen
    $session->send(prompt: 'Add unit tests for the auth module', mode: 'enqueue');
    $session->send(prompt: 'Update the README with setup instructions', mode: 'enqueue');

    // Warten, bis die Queue geleert ist
});

Praktische Überlegungen für Laravel

In Laravel überwiegen synchrone Muster mit Copilot::run() oder sendAndWait(). Diese senden eine Nachricht und warten, bis der Agent idle wird. Daher gibt es keine Gelegenheit, den laufenden Prozess zu unterbrechen, und $mode ist praktisch bedeutungslos.
// Da Copilot::run() intern sendAndWait() aufruft,
// hat die Angabe von mode keine Wirkung

$response = Copilot::run(prompt: 'Tell me something about Laravel.');

// Auch innerhalb einer Session ist es unnötig, wenn Sie nur sendAndWait() nacheinander aufrufen
Copilot::start(function (CopilotSession $session) {
    $r1 = $session->sendAndWait(prompt: 'First task');
    $r2 = $session->sendAndWait(prompt: 'Second task');
});
Steering ("immediate") entfaltet seinen Nutzen, wenn Sie mit send() Nachrichten asynchron versenden und parallel dazu über eine weitere Nachricht in den laufenden Turn eingreifen können. In Laravels synchronem Fluss ist es schwierig, diese Gelegenheit herzustellen. Grundsätzlich ist es daher angebracht, $mode nicht zu setzen und beim Standard zu bleiben.

Welchen sollten Sie wählen?

SituationMuster
Der Agent geht in die falsche RichtungSteering ("immediate")
Ihnen ist die nächste Aufgabe eingefallenQueueing ("enqueue")
Mehrere Aufgaben nacheinander ausführenQueueing ("enqueue")
Normale Laravel-AnwendungStandard ($mode nicht nötig)

Best Practices

  • Standard ist Queueing – In den meisten Fällen ist es sinnvoll, $mode wegzulassen (oder "enqueue" anzugeben). Das Verhalten ist vorhersagbar.
  • Steering nur zur Korrektur – Verwenden Sie "immediate" nur, wenn der Agent offensichtlich etwas Falsches tut.
  • Steering-Nachrichten kurz halten – Wählen Sie kurze Nachrichten, die im aktuellen Kontext verständlich sind. Lange, komplexe Steering-Nachrichten stiften eher Verwirrung.
  • Aufeinanderfolgendes Steering vermeiden – Mehrere Steering-Nachrichten in kurzer Folge können die Qualität des Turns mindern. Bei größerer Richtungsänderung kann es geeigneter sein, den Turn abzubrechen und neu zu beginnen.

Referenzen

Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 13. Juli 2026