Zum Hauptinhalt springen

Fleet Mode

Fleet Mode ist eine experimentelle Orchestrierungsfunktion, um aus einer einzelnen Parent-Session mehrere Sub-Agenten parallel auszuführen. Wenn sich die Arbeit in unabhängige Einheiten teilen lässt, weist die Parent-Session die jeweiligen Zuständigkeiten zu und aggregiert die Ergebnisse der einzelnen Sub-Agenten. In der Laravel-Version können Sie über den typed RPC-Layer session.fleet.start aufrufen.

Geeignete Anwendungsfälle

  • Refactorings, die sich nach Dateien, Paketen oder Sprach-SDKs aufteilen lassen
  • Analyseaufgaben, bei denen mehrere Module getrennt untersucht werden
  • Reviews auf Ebene von Diffs, Alerts oder Doku-Seiten
  • Migrationsarbeiten, bei denen jede Zuständigkeit unabhängig validiert werden kann
Ungeeignet sind hingegen Verarbeitungen, bei denen konkrete Ergebnisse eines vorangegangenen Schritts für den nächsten unerlässlich sind, mehrere Worker dieselbe Datei bearbeiten oder kleine Einzelaufgaben anstehen.

Fleet Mode starten

use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\Rpc\FleetStartRequest;

Copilot::start(function (CopilotSession $session): void {
    $result = $session->rpc()->fleet()->start(
        new FleetStartRequest(
            prompt: 'docs/jpの各ページを独立して確認し、必要な更新だけ報告して',
        ),
    );

    if ($result->started) {
        info('Fleet mode started');
    }
});
Die Angabe als Array ist ebenfalls möglich.
$result = $session->rpc()->fleet()->start([
    'prompt' => '各パッケージを独立してレビューし、最後にリスクをまとめて',
]);
prompt ist optional. Wird er weggelassen, beginnt die Ausführung ausschließlich mit den Fleet-Mode-Anweisungen der Runtime.

Start aus dem Plan Mode

Wenn Sie die UI des Plan Mode selbst handhaben, können Sie in onExitPlanModeRequest autopilot_fleet wählen, um vom genehmigten Plan aus in den Fleet Mode überzugehen.
use Revolution\Copilot\Types\ExitPlanModeRequest;
use Revolution\Copilot\Types\ExitPlanModeResult;
use Revolution\Copilot\Types\SessionConfig;

$config = new SessionConfig(
    onExitPlanModeRequest: function (ExitPlanModeRequest $request): ExitPlanModeResult {
        return new ExitPlanModeResult(
            approved: true,
            selectedAction: 'autopilot_fleet',
        );
    },
);
autopilot steht für einen einzelnen autonomen Worker, interactive für einen Betrieb mit fortlaufender Nutzerbeteiligung und autopilot_fleet für einen Betrieb, in dem unabhängige Arbeitseinheiten parallel voranschreiten.

Kooperation der Sub-Agenten

Fleet Mode koordiniert nicht über impliziten gemeinsamen Speicher, sondern über explizite Arbeitseinheiten. Die Parent-Session zerlegt die Aufgabe, jeder Sub-Agent verarbeitet nur seinen Zuständigkeitsbereich und meldet den Abschluss oder eine Blockierung zurück. Klären Sie beim Entwurf der Arbeitseinheiten Folgendes:
  • Zuständigkeitsbereich pro Worker
  • Dateien oder Verzeichnisse, die dieser Worker bearbeiten darf
  • Ergebnisse oder Validierungen, die bei Abschluss zurückgegeben werden sollen
  • Abhängigkeiten zu anderen Aufgaben

Hinweise

  • Fleet RPC ist eine experimentelle Funktion des generierten RPC-Layers. Achten Sie bei der Nutzung darauf, dass die Versionen von Copilot CLI und SDK zueinander passen
  • Vermeiden Sie konfliktanfällige Dateibearbeitungen und trennen Sie Zuständigkeitsbereiche klar
  • Da die Parent-Session die Ergebnisse aggregieren soll, ist es hilfreich, das erwartete Berichtsformat jedes Workers im Prompt festzulegen

Referenzen

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