> ## 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，從單一父 session 並行執行多個 sub-agent。

## Fleet Mode

Fleet Mode 是一項實驗性協作功能，可從單一父 session 並行執行多個 sub-agent。當工作可切分為獨立單位時，由父 session 分配負責範圍，並彙整各 sub-agent 的結果。

Laravel 版可透過 typed RPC layer 呼叫 `session.fleet.start`。

## 適用場景

* 依檔案、套件、語言 SDK 切分的重構
* 分頭調查多個模組的研究任務
* 以 diff、alert、文件頁為單位的審查
* 遷移作業等，可將各負責範圍獨立驗證的任務

反之，若下一步強烈依賴上一步的具體結果、多個 worker 需編輯同一檔案、或是小型的單次任務，就不適合。

## 啟動 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` 為單一自主 worker，`interactive` 為使用者持續參與的模式，`autopilot_fleet` 則為並行推進獨立作業單位的模式。

## Sub-agent 的協作

Fleet Mode 不是隱式的共享記憶，而是以明確的作業單位協作。父 session 拆分任務，各 sub-agent 只處理自己負責的範圍，並回報完成或阻塞狀態。

設計作業單位時，請明確以下事項。

* 1 個 worker 負責的範圍
* 該 worker 允許編輯的檔案或目錄
* 完成時應回傳的成果或驗證結果
* 與其他任務的相依關係

## 注意事項

* Fleet RPC 屬於生成 RPC 層的實驗功能。使用時請對齊 Copilot CLI 與 SDK 版本
* 避免會產生衝突的檔案編輯，明確劃分負責範圍
* 以父 session 端彙整結果為前提，將各 worker 的回報格式寫入 prompt 中更易管理

## 參考

* [自訂 Agent](/zh-TW/packages/laravel-copilot-sdk/custom-agents)
* [RPC](/zh-TW/packages/laravel-copilot-sdk/rpc)
* [串流事件](/zh-TW/packages/laravel-copilot-sdk/streaming-events)

<Info>
  最新資訊請參考 [GitHub 儲存庫](https://github.com/invokable/laravel-copilot-sdk)。
</Info>


## Related topics

- [自訂 Agent](/zh-TW/packages/laravel-copilot-sdk/custom-agents.md)
- [Eloquent 集合](/zh-TW/eloquent-collections.md)
- [Laravel Fetch Metadata](/zh-TW/packages/laravel-fetch-metadata.md)
- [Streaming Events](/zh-TW/packages/laravel-copilot-sdk/streaming-events.md)
- [Laravel Passport（OAuth2 伺服器實作）](/zh-TW/passport.md)
