{"meta":{"title":"Modo de frota","intro":"Fleet mode é o padrão de orquestração paralela do Copilot para tarefas que podem ser divididas entre subagentes independentes. Nas notas de pesquisa do runtime, o modo frota é descrito como \"o padrão integrado do runtime para despachar vários subagentes em paralelo por meio da ferramenta task com tarefas SQL como estado de coordenação compartilhado\". Use-o quando uma sessão principal precisar coordenar vários workers, coletar seus resultados e continuar a conversa com o contexto combinado.","product":"GitHub Copilot","breadcrumbs":[{"href":"/pt/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/pt/enterprise-cloud@latest/copilot/how-tos","title":"Instruções"},{"href":"/pt/enterprise-cloud@latest/copilot/how-tos/copilot-sdk","title":"SDK do Copilot"},{"href":"/pt/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features","title":"Features"},{"href":"/pt/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features/fleet-mode","title":"Modo Frota"}],"documentType":"article"},"body":"# Modo de frota\n\nFleet mode é o padrão de orquestração paralela do Copilot para tarefas que podem ser divididas entre subagentes independentes. Nas notas de pesquisa do runtime, o modo frota é descrito como \"o padrão integrado do runtime para despachar vários subagentes em paralelo por meio da ferramenta task com tarefas SQL como estado de coordenação compartilhado\". Use-o quando uma sessão principal precisar coordenar vários workers, coletar seus resultados e continuar a conversa com o contexto combinado.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n## Quando usar o modo de frota\n\nO modo frota é útil quando o trabalho pode ser decomposto antes da execução e cada unidade pode ser executada sem esperar pelas outras.\n\nOs bons ajustes incluem:\n\n* Refatorações em vários arquivos, em que cada agente fica responsável por um arquivo, pacote ou SDK de linguagem.\n* Revisões em lote em que cada revisor verifica um diff, módulo ou grupo de alertas separado.\n* Busca paralela em repositórios, serviços ou áreas de funcionalidade independentes.\n* Atualizações da documentação em que cada colaborador é responsável por uma página ou tópico.\n* Tarefas de migração em que cada worker pode validar sua própria fatia e reportar.\n\nEvite o modo de frota para:\n\n* Tarefas sequenciais em que a etapa 2 precisa da saída concreta da etapa 1.\n* Edições fortemente acopladas, em que os colaboradores concorreriam pelos mesmos arquivos.\n* Pequenas tarefas que um subagente síncrono ou o agente pai podem concluir rapidamente.\n* Tarefas que exigem raciocínio compartilhado contínuo em vez de responsabilidade claramente definida.\n\nO modo de frota funciona melhor quando a sessão principal pode criar unidades de trabalho claras, atribuir um responsável a cada unidade e definir o que cada trabalhador deve retornar.\n\n## Iniciando o modo de frota\n\nO SDK expõe o modo de frota por meio do namespace RPC de sessão em vários idiomas. A vinculação é experimental na superfície RPC gerada; fixe o SDK e o runtime da CLI do Copilot se seu aplicativo depender disso.\n\n### De dentro de uma sessão\n\nO método de conexão é `session.fleet.start`. O `prompt` opcional é combinado com as instruções de orquestração de frota do runtime.\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nconst result = await session.rpc.fleet.start({\n    prompt: \"Refactor each SDK package independently, then summarize the changes.\",\n});\n\nif (result.started) {\n    console.log(\"Fleet mode started\");\n}\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nfrom copilot.rpc import FleetStartRequest\n\nresult = await session.rpc.fleet.start(\n    FleetStartRequest(\n        prompt=\"Review each service independently, then summarize the risks.\"\n    )\n)\n\nif result.started:\n    print(\"Fleet mode started\")\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n```golang\nprompt := \"Update each package independently, then report validation results.\"\nresult, err := session.RPC.Fleet.Start(ctx, &rpc.FleetStartRequest{\n    Prompt: &prompt,\n})\nif err != nil {\n    return err\n}\nif result.Started {\n    fmt.Println(\"Fleet mode started\")\n}\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nvar result = await session.Rpc.Fleet.StartAsync(\n    \"Audit each project independently, then summarize the findings.\");\n\nif (result.Started)\n{\n    Console.WriteLine(\"Fleet mode started\");\n}\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"rust\" data-label=\"Rust\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Rust</div>\n\n```rust\nuse github_copilot_sdk::rpc::FleetStartRequest;\n\nlet result = session\n    .rpc()\n    .fleet()\n    .start(FleetStartRequest {\n        prompt: Some(\"Research each crate independently, then summarize the plan.\".into()),\n    })\n    .await?;\n\nif result.started {\n    println!(\"Fleet mode started\");\n}\n```\n\n</div>\n\n</div>\n\nAssociações tipadas nativas para o modo de frota foram verificadas em Node.js/TypeScript, Python, Go, .NET e Rust. Uma vinculação Java não foi encontrada em `java/src/main/java` nesta ramificação, portanto, os exemplos em Java são omitidos até que essa superfície esteja disponível.\n\n### A partir do modo de planejamento\n\nAs interfaces de usuário do modo de planejamento podem iniciar a implantação da frota retornando a ação de saída `autopilot_fleet`. Os tipos de evento de sessão gerados descrevem-no como:\n\n```typescript\ntype ExitPlanModeAction =\n  | \"exit_only\"\n  | \"interactive\"\n  | \"autopilot\"\n  /** Exit plan mode and continue with parallel autonomous workers. */\n  | \"autopilot_fleet\";\n```\n\nUse isto quando um usuário aprova um plano que já contém itens de trabalho independentes. Use `autopilot` para um único agente autônomo e `interactive` quando o usuário deve continuar envolvido no processo.\n\n## Como os sub-agentes são coordenados\n\nO modo de frota depende do estado de coordenação explícita em vez da memória compartilhada implícita. O agente principal decompõe o trabalho em tarefas (todos), cada subagente é responsável por uma tarefa e o orquestrador despacha os trabalhadores cujas dependências já foram concluídas.\n\nO esquema canônico é:\n\n```sql\nCREATE TABLE todos (\n    id TEXT PRIMARY KEY,\n    title TEXT NOT NULL,\n    description TEXT,\n    status TEXT DEFAULT 'pending'\n);\n\nCREATE TABLE todo_deps (\n    todo_id TEXT,\n    depends_on TEXT,\n    PRIMARY KEY (todo_id, depends_on)\n);\n```\n\nCada tarefa passa por uma pequena máquina de estados:\n\n```text\npending -> in_progress -> done\n                       \\-> blocked\n```\n\nUm subagente deve:\n\n1. Reivindique exatamente uma tarefa pronta definindo `status = 'in_progress'`.\n2. Trabalhe apenas no escopo dessa tarefa.\n3. Armazene seu resultado na conversa ou na saída da tarefa relevante.\n4. Defina `status = 'done'` quando estiver concluído.\n5. Defina `status = 'blocked'` quando não puder continuar e inclua o motivo.\n\nO orquestrador pode encontrar trabalhos cujas dependências foram satisfeitas com uma consulta como:\n\n```sql\nSELECT t.*\nFROM todos t\nWHERE t.status = 'pending'\n  AND NOT EXISTS (\n      SELECT 1\n      FROM todo_deps td\n      JOIN todos dep ON td.depends_on = dep.id\n      WHERE td.todo_id = t.id\n        AND dep.status != 'done'\n  );\n```\n\nEsse padrão atribui um proprietário claro a cada trabalhador e permite que a sessão principal raciocine sobre o que está pronto, em execução, concluído ou bloqueado.\n\n## Ganchos do ciclo de vida\n\nO modo de frota invoca sub-agentes por meio do mecanismo de tarefa do runtime. O ambiente de execução emite atividade de gancho para chamadas de ferramentas de subagentes: o changelog do ambiente de execução 1.0.52 observa que `preToolUse`, `postToolUse`, `subagentStart` e `subagentStop` são disparados corretamente para chamadas de ferramentas de subagentes.\n\nNão foi encontrado um retorno de chamada de gancho de SDK dedicado para `subagentStart` ou `subagentStop` na superfície pública do SDK nesta ramificação. Os consumidores do SDK podem observar a atividade do subagente por meio do fluxo de eventos de sessão genérica, que inclui eventos como `subagent.started`, , `subagent.completed`, `subagent.failed``subagent.selected`e `subagent.deselected`.\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nsession.on((event) => {\n    if (event.type === \"subagent.started\") {\n        console.log(`Started ${event.data.agentDisplayName}`);\n    }\n\n    if (event.type === \"subagent.completed\") {\n        console.log(`Completed ${event.data.agentDisplayName}`);\n    }\n});\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\ndef handle_event(event):\n    if event.type == \"subagent.started\":\n        print(f\"Started {event.data.agent_display_name}\")\n    elif event.type == \"subagent.completed\":\n        print(f\"Completed {event.data.agent_display_name}\")\n\nunsubscribe = session.on(handle_event)\n```\n\n</div>\n\n</div>\n\nPara a configuração de gancho que já está exposta na camada do SDK, consulte [Trabalhando com ganchos](/pt/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features/hooks). Para payloads de eventos de subagentes, consulte [Agentes personalizados e orquestração de subagentes](/pt/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features/custom-agents).\n\n## Subagentes de plug-in\n\nO ambiente de execução pode carregar plug-ins com `--plugin-dir`. Plug-ins carregados dessa forma podem registrar seus agentes como tipos de subagentes `task(agent_type=...)` disponíveis no modo de prompt, o que significa que o modo de frota pode despachar para esses tipos de trabalhadores fornecidos pelo plug-in.\n\nAtualmente, esse é um padrão de configuração em nível de runtime em vez de uma API de registro no nível do SDK documentada. Configure o runtime da CLI Copilot com o diretório do plug-in e conecte o cliente do SDK a esse runtime. Funções auxiliares nativas do SDK para registrar tipos de subagente de plugin poderão ser adicionadas futuramente.\n\nConceitualmente, um prompt de frota pode então solicitar um tipo de trabalhador específico:\n\n```text\nUse task(agent_type=\"security-review\") for each independent package.\nRun the workers in parallel and summarize only high-confidence findings.\n```\n\nMantenha os tipos de sub-agente fornecidos pelo plug-in estreitos e descritivos para que o orquestrador possa escolhê-los de forma confiável.\n\n## Práticas recomendadas\n\n* Decompor o trabalho em unidades independentes antes de iniciar o modo de frota.\n* Minimizar dependências entre tarefas; as dependências reduzem o paralelismo.\n* Atribua a cada tarefa um ID permanente, um título claro e uma descrição completa.\n* Faça com que cada subagente seja responsável por exatamente uma tarefa por vez.\n* Use subagentes em segundo plano para realizar trabalho realmente em paralelo.\n* Use chamadas de subagente síncronas para etapas serializadas ou portões de validação.\n* Forneça a cada subagente o contexto completo; os subagentes não mantêm estado entre as chamadas.\n* Inclua caminhos de arquivo, comandos, saídas esperadas e restrições em cada prompt de trabalho.\n* Não despache um único subagente em segundo plano; prefira uma chamada síncrona ou agrupar vários trabalhadores em paralelo.\n* Evite atribuir arquivos sobrepostos a diferentes trabalhadores, a menos que o agente pai resolva os conflitos explicitamente.\n* Exigir que todo colaborador relate o que mudou, como validou a mudança e o que ainda permanece bloqueado.\n* Faça com que o agente pai verifique o resultado combinado após a conclusão dos trabalhadores.\n\n## Limitações e perguntas abertas\n\n* O modo frota é exposto por meio de vinculações RPC de sessão geradas e está marcado como experimental em vários SDKs.\n* O padrão de tarefas SQL é o modelo de coordenação canônico nas diretrizes de tempo de execução, mas se ele é um contrato de extensibilidade estável para consumidores do SDK ainda é uma questão em aberto.\n* `subagentStart` e `subagentStop` são nomes de ganchos de tempo de execução; este ramo expõe o ciclo de vida do subagente para consumidores do SDK por meio do fluxo de eventos de sessão genérico, não por retornos de chamada de gancho dedicados.\n* O registro do subagente do plug-in é configurado na camada de tempo de execução por meio de `--plugin-dir`; Nenhuma função auxiliar de registro de plug-in em nível de SDK foi verificada nesta ramificação.\n* Não foram encontradas associações tipadas nativas do Java para `session.fleet.start` no código-fonte do SDK Java nesta ramificação.\n* O modo frota não elimina a necessidade de revisão pelo agente pai. Os trabalhadores paralelos podem produzir pressupostos inconsistentes que o orquestrador precisa conciliar.\n\n## Consulte também\n\n* [Agentes personalizados e orquestração de subagentes](/pt/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features/custom-agents)\n* [Trabalhando com ganchos](/pt/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features/hooks)"}