Vai al contenuto principale

Fleet Mode

Fleet Mode è una funzionalità sperimentale di orchestrazione che consente di eseguire in parallelo più sotto-agenti a partire da una singola sessione parent. Se il lavoro può essere diviso in unità indipendenti, la sessione parent assegna le porzioni di competenza e aggrega i risultati di ciascun sotto-agente. Nella versione Laravel puoi chiamare session.fleet.start tramite il typed RPC layer.

Casi d’uso indicati

  • Refactoring divisibile per file, package o SDK di linguaggio
  • Task di analisi che ispezionano separatamente più moduli
  • Review a livello di diff, alert o pagina di documentazione
  • Task di migrazione, dove ciascuna porzione può essere verificata indipendentemente
Al contrario, non è indicato per elaborazioni in cui il risultato concreto di uno step è necessario allo step successivo, dove più worker modificano lo stesso file, o per piccoli task one-off.

Avviare Fleet Mode

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: 'Ispeziona indipendentemente ciascuna pagina in docs/it e segnala solo gli aggiornamenti necessari',
        ),
    );

    if ($result->started) {
        info('Fleet mode started');
    }
});
Puoi specificarlo anche come array.
$result = $session->rpc()->fleet()->start([
    'prompt' => 'Rivedi indipendentemente ciascun package e alla fine riassumi i rischi',
]);
prompt è opzionale. Se omesso, si avvia solo con le istruzioni Fleet Mode lato runtime.

Avviare da Plan Mode

Se stai gestendo autonomamente l’UI di Plan Mode, selezionando autopilot_fleet in onExitPlanModeRequest puoi passare da un piano approvato a Fleet Mode.
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',
        );
    },
);
Usa autopilot per un singolo worker autonomo, interactive quando l’utente è coinvolto continuativamente, e autopilot_fleet per portare avanti in parallelo unità di lavoro indipendenti.

Coordinamento dei sotto-agenti

Fleet Mode coordina tramite unità di lavoro esplicite anziché memoria condivisa implicita. La sessione parent suddivide i task, ogni sotto-agente elabora solo la propria porzione e restituisce completamento o stato bloccato. Quando progetti le unità di lavoro, chiarisci quanto segue.
  • Il perimetro di competenza di ciascun worker
  • I file o le directory che quel worker può modificare
  • I deliverable o i risultati di verifica da restituire al completamento
  • Le dipendenze rispetto agli altri task

Considerazioni

  • Il Fleet RPC è una funzionalità sperimentale del layer RPC generato. Se lo usi, allinea le versioni di Copilot CLI e SDK
  • Evita modifiche a file soggette a conflitti e distingui chiaramente i perimetri di competenza
  • Poiché la sessione parent aggregherà i risultati, è più semplice se includi nel prompt il formato con cui ciascun worker deve riportare

Riferimenti

Per le informazioni più recenti fai riferimento al repository GitHub.
Ultima modifica il 13 luglio 2026