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

# Fleet Mode

> 하나의 부모 세션에서 여러 서브에이전트를 병렬로 실행하는 Fleet Mode의 사용법을 설명합니다.

## Fleet Mode

Fleet Mode는 하나의 부모 세션에서 여러 서브에이전트를 병렬로 실행하기 위한 실험적인 오케스트레이션 기능입니다. 작업을 독립적인 단위로 분할할 수 있는 경우, 부모 세션이 담당 범위를 할당하고 각 서브에이전트의 결과를 집약합니다.

Laravel 버전에서는 typed RPC layer로부터 `session.fleet.start`를 호출할 수 있습니다.

## 적합한 용도

* 파일, 패키지, 언어 SDK별로 나눌 수 있는 리팩터링
* 여러 모듈을 각각 조사하는 조사 태스크
* 차분, 알림, 문서 페이지 단위의 리뷰
* 마이그레이션 작업처럼 각 담당 범위를 독립적으로 검증할 수 있는 태스크

반대로, 이전 단계의 구체적인 결과가 다음 단계에 필수인 처리, 같은 파일을 여러 워커가 편집하는 처리, 작은 단발 태스크에는 적합하지 않습니다.

## Fleet Mode 시작하기

```php theme={null}
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');
    }
});
```

배열로도 지정할 수 있습니다.

```php theme={null}
$result = $session->rpc()->fleet()->start([
    'prompt' => '각 패키지를 독립적으로 리뷰하고, 마지막에 리스크를 정리해줘',
]);
```

`prompt`는 임의입니다. 생략하면 런타임 측의 Fleet Mode 지시만으로 시작합니다.

## Plan Mode에서 시작

Plan Mode UI를 자체적으로 다루는 경우, `onExitPlanModeRequest`에서 `autopilot_fleet`을 선택하면 승인된 플랜에서 Fleet Mode로 진행할 수 있습니다.

```php theme={null}
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`은 단일 자율 워커, `interactive`는 사용자가 지속적으로 관여하는 운영, `autopilot_fleet`은 독립된 작업 단위를 병렬로 진행하는 운영에 사용합니다.

## 서브에이전트의 협조

Fleet Mode는 암묵적인 공유 메모리가 아니라 명시적인 작업 단위로 협조합니다. 부모 세션이 태스크를 분할하고, 각 서브에이전트는 자신의 담당 범위만을 처리하며, 완료 또는 블록 상태를 반환합니다.

작업 단위를 설계할 때는 다음을 명확히 하세요.

* 워커 1개가 담당할 범위
* 해당 워커가 편집해도 되는 파일이나 디렉터리
* 완료 시 반환해야 할 성과물이나 검증 결과
* 다른 태스크와의 의존 관계

## 주의점

* Fleet RPC는 생성 RPC 층의 실험적 기능입니다. 이용할 경우 Copilot CLI와 SDK의 버전을 맞춰 주세요
* 충돌하기 쉬운 파일 편집은 피하고, 담당 범위를 명확히 나누어 주세요
* 부모 세션 측에서 결과를 집약하는 전제로, 각 워커의 보고 형식을 프롬프트에 포함시키면 다루기 쉬워집니다

## 참고

* [커스텀 에이전트](/ko/packages/laravel-copilot-sdk/custom-agents)
* [RPC](/ko/packages/laravel-copilot-sdk/rpc)
* [스트리밍 이벤트](/ko/packages/laravel-copilot-sdk/streaming-events)

<Info>
  최신 정보는 [GitHub 저장소](https://github.com/invokable/laravel-copilot-sdk)를 참고하세요.
</Info>


## Related topics

- [커스텀 에이전트](/ko/packages/laravel-copilot-sdk/custom-agents.md)
- [Eloquent 컬렉션](/ko/eloquent-collections.md)
- [Laravel Fetch Metadata](/ko/packages/laravel-fetch-metadata.md)
- [스트리밍 이벤트](/ko/packages/laravel-copilot-sdk/streaming-events.md)
- [Laravel Telescope](/ko/telescope.md)
