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

# Subagentes

> Delegue tarefas a subagentes independentes que trabalham em primeiro ou em segundo plano

Os subagentes permitem que o agente principal crie agentes independentes para lidar com subtarefas. Um subagente compartilha as ferramentas e o contexto da base de código com o agente pai, mas opera em sua própria linha de conversa -- ele não herda o histórico de conversa do agente pai. Isso é útil para tarefas que se beneficiam de um trabalho focado e independente -- como explorar uma base de código, executar testes ou implementar uma funcionalidade em paralelo.

Você pode pedir explicitamente ao agente para usar subagentes (por exemplo, "pesquise como a autenticação funciona em um subagente"), ou o agente pode decidir delegar por conta própria quando determinar que uma tarefa se beneficiaria de trabalho independente.

Em nossas medições, **subagentes** **tanto** **melhoram o desempenho geral na programação** **quanto** **reduzem o custo**.

***

<div id="how-subagents-work">
  ## Como os subagentes funcionam
</div>

Quando o agente cria um subagente, ele seleciona um dos **perfis de subagente** disponíveis e escolhe se o subagente deve ser executado em primeiro plano ou em segundo plano. Os subagentes podem ser executados em dois modos:

<CardGroup cols={2}>
  <Card title="Primeiro plano" icon="display">
    É executado inline na sua sessão. O agente principal pausa e espera o subagente terminar antes de continuar. Você pode aprovar ou negar chamadas de ferramenta à medida que elas aparecem.
  </Card>

  <Card title="Segundo plano" icon="clock">
    É executado em paralelo enquanto o agente principal continua trabalhando. O agente principal é notificado automaticamente quando o subagente é concluído. Chamadas de ferramenta não aprovadas são negadas automaticamente.
  </Card>
</CardGroup>

<Note>
  Você não vê diretamente a saída bruta do subagente. Quando um subagente termina, o agente principal lê o resultado e resume para você os principais resultados e ações.
</Note>

<div id="subagent-cost">
  ### Custo dos subagentes
</div>

Os subagentes funcionam como suas próprias sessões de agente, cada um com sua própria janela de contexto e chamadas de inferência, portanto geram custos independentemente do agente principal. O gasto do agente principal cobre apenas o próprio trabalho; cada subagente que ele cria adiciona seu próprio uso além disso.

<Note>
  Nos planos baseados em prompt, cada subagente consome créditos adicionais, assim como uma mensagem do usuário. O número de créditos depende do modelo que o subagente utiliza, portanto tarefas que geram vários subagentes (ou os [aninham](/pt-BR/cli/subagents#nesting-depth)) consomem mais créditos.
</Note>

Como o custo aumenta com o número de subagentes, tarefas que se desdobram em muitos subagentes (ou os [aninham](#nesting-depth)) custam mais. Use subagentes de forma intencional quando o paralelismo ou um contexto mais focado justificarem o gasto adicional.

<div id="enterprise-controls">
  ### Controles do Enterprise
</div>

Os administradores podem controlar qual modelo os subagentes usam — e se os subagentes serão executados ou não — por meio da configuração **Modelo padrão de subagente** nas configurações da org/do Enterprise.

<Frame>
  <img src="https://mintcdn.com/cognitionai/d7_AE5155dfGCsnK/images/cli/default-subagent-model-setting.png?fit=max&auto=format&n=d7_AE5155dfGCsnK&q=85&s=e924249f64bf6ac6e0ffcf59b289aeb3" alt="Configuração de modelo padrão de subagente" width="1024" height="114" data-path="images/cli/default-subagent-model-setting.png" />
</Frame>

A configuração controla o modelo usado nas sessões de subagente iniciadas pelo Devin, com três opções:

| Opção                              | Comportamento                                                                                                            |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **Roteador de subagente (padrão)** | O Devin escolhe um modelo automaticamente usando o roteamento padrão com base na tarefa e no modelo do agente principal. |
| **Um modelo específico**           | Fixa cada subagente no modelo selecionado, independentemente da tarefa ou do modelo do agente principal.                 |
| **Nenhum**                         | Desativa totalmente os subagentes — o Devin não criará nenhum subagente.                                                 |

***

<div id="subagent-profiles">
  ## Perfis de subagente
</div>

Cada subagente usa um perfil específico que determina suas capacidades. Há dois perfis nativos:

| Perfil             | Descrição                                                       | Acesso às ferramentas                                                                                                                                                                                    |
| ------------------ | --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `subagent_explore` | Exploração e pesquisa da base de código em modo somente leitura | Ferramentas da base de código em modo somente leitura, além de pesquisa na web; não pode editar arquivos nem acessar URLs arbitrárias (independentemente de estar em primeiro plano ou em segundo plano) |
| `subagent_general` | Tarefas de uso geral, incluindo alterações no código            | Acesso total às ferramentas (primeiro plano) ou apenas às ferramentas pré-aprovadas (segundo plano)                                                                                                      |

<Note>
  O agente escolhe automaticamente o perfil adequado com base na tarefa. Os subagentes de exploração são ideais para pesquisa e compreensão, enquanto os subagentes gerais podem fazer alterações.
</Note>

Você também pode definir seus próprios perfis personalizados de subagente — veja [Subagentes personalizados](#custom-subagents) abaixo.

***

<div id="tool-permissions">
  ## Permissões de ferramentas
</div>

O funcionamento das permissões de ferramentas depende de o subagente estar sendo executado em primeiro plano ou em segundo plano:

* **Subagentes em primeiro plano** se comportam como o agente principal -- você recebe solicitações para aprovar ou negar chamadas de ferramentas, como de costume.
* **Subagentes em segundo plano** herdam todas as permissões de ferramentas que você já concedeu durante a sessão atual. Qualquer ferramenta que não tenha sido pré-aprovada é negada automaticamente. Subagentes em segundo plano não podem solicitar novas permissões.

<Tip>
  Se um subagente em segundo plano falhar porque uma ferramenta obrigatória foi negada, você pode retomá-lo em primeiro plano para aprovar as permissões necessárias. Veja [Retomando subagentes](#resuming-subagents) abaixo.
</Tip>

***

<div id="monitoring-subagents">
  ## Monitoramento de subagentes
</div>

<div id="subagent-indicator">
  ### Indicador de subagente
</div>

Quando houver subagentes em segundo plano em execução, um indicador aparecerá abaixo do campo de entrada mostrando o status deles. Você pode ir até o indicador pressionando <kbd>↓</kbd> no campo de entrada e, em seguida, <kbd>Enter</kbd> para abrir o painel de subagentes.

Quando um subagente em primeiro plano estiver em execução, o indicador giratório exibirá **"Subagente em execução · Ctrl+B para executar em segundo plano"**.

<div id="subagent-panel">
  ### Painel de subagentes
</div>

O painel de subagentes permite visualizar e gerenciar todos os subagentes ativos e concluídos. Ele mostra o perfil, o título, o status, o tempo transcorrido e o número de chamadas de ferramenta de cada subagente.

***

<div id="foreground-background-switching">
  ## Alternar entre primeiro plano e segundo plano
</div>

Você pode mover subagentes entre primeiro plano e segundo plano enquanto eles estão em execução:

* **Mover um subagente em primeiro plano para segundo plano:** Pressione <kbd>Ctrl</kbd>+<kbd>B</kbd> enquanto um subagente em primeiro plano estiver em execução. O subagente continua trabalhando em segundo plano, e o agente pai é retomado.
* **Trazer um subagente em segundo plano para primeiro plano:** Abra o painel de subagentes e pressione <kbd>f</kbd> em um subagente em segundo plano que esteja em execução. A saída do subagente será exibida inline.

<Note>
  Quando você move um subagente para segundo plano, a chamada de ferramenta do agente pai já retornou, então o agente pai continua de forma independente. O resultado do subagente não volta para o pipeline atual do agente pai, mas você será notificado quando ele for concluído.
</Note>

***

<div id="cancelling-subagents">
  ## Cancelando subagentes
</div>

Você pode cancelar um subagente em execução de duas maneiras:

1. **No painel de subagentes:** Abra o painel e pressione <kbd>x</kbd> no subagente em execução.
2. **Subagente em primeiro plano:** Pressione <kbd>Ctrl</kbd>+<kbd>C</kbd> ou <kbd>Esc</kbd> para cancelar o subagente em primeiro plano que está em execução.

***

<div id="resuming-subagents">
  ## Retomando subagentes
</div>

Subagentes cancelados, que falharam ou já concluídos podem ser retomados com um novo prompt. Você pode pedir ao agente para retomar um subagente, e ele continuará de onde parou. Subagentes retomados sempre são executados em **primeiro plano**, para que você possa aprovar quaisquer chamadas de ferramentas que tenham sido negadas anteriormente.

Isso é especialmente útil quando:

* Um subagente em segundo plano falhou porque o uso de uma ferramenta obrigatória foi negado — retome-o em primeiro plano para conceder as permissões necessárias.
* Um subagente foi concluído, mas você quer que ele faça um trabalho complementar com base em seus resultados.
* Um subagente foi cancelado prematuramente e você quer que ele continue.

***

<div id="nesting-depth">
  ## Profundidade de aninhamento
</div>

Por padrão, subagentes não podem criar seus próprios subagentes — apenas o agente raiz pode. As ferramentas de subagente (`run_subagent` e `read_subagent`) ficam desativadas dentro de um subagente para evitar aninhamento sem limites.

No entanto, **perfis personalizados de subagente** podem optar por permitir criação aninhada definindo o campo `max-nesting` no frontmatter. Esse valor faz override da profundidade máxima padrão, permitindo que subagentes criem filhos desde que a árvore permaneça dentro desse limite.

Por exemplo, `max-nesting: 3` permite a seguinte cadeia:

```
Root agent (depth 0)
└── Custom subagent (depth 1) — pode criar filhos
    └── Child subagent (depth 2) — pode criar filhos
        └── Grandchild subagent (depth 3) — não pode criar filhos (limite de profundidade atingido)
```

<Warning>
  Subagentes aninhados podem aumentar significativamente o custo. Cada nível de aninhamento gera agentes adicionais com suas próprias janelas de contexto e chamadas de inferência. Use esse recurso com critério.
</Warning>

***

<div id="custom-subagents">
  ## Subagentes personalizados
</div>

<Warning>
  Os subagentes personalizados são **experimentais**. O formato, o comportamento e as opções de configuração podem mudar em versões futuras.
</Warning>

Além dos perfis nativos `subagent_explore` e `subagent_general`, você pode definir seus próprios perfis de subagente personalizados. Os subagentes personalizados permitem criar agentes especializados com seus próprios prompts de sistema, restrições de ferramentas, overrides de modelo e permissões — adaptados a tarefas específicas no seu fluxo de trabalho.

<div id="creating-a-custom-subagent">
  ### Criando um subagente personalizado
</div>

Subagentes personalizados são definidos como arquivos `AGENT.md` dentro de um diretório nomeado em `agents/`. O nome do diretório se torna o identificador do perfil.

<Tabs>
  <Tab title="Específico do projeto">
    ```text theme={null}
    .devin/agents/
    └── reviewer/
        └── AGENT.md
    ```

    Também é compatível com:

    ```text theme={null}
    .agents/agents/
    └── reviewer/
        └── AGENT.md
    ```
  </Tab>

  <Tab title="Global">
    ```text theme={null}
    # Linux/macOS
    ~/.config/devin/agents/
    └── reviewer/
        └── AGENT.md

    # Windows
    %APPDATA%\devin\agents\
    └── reviewer\
        └── AGENT.md
    ```
  </Tab>
</Tabs>

<div id="agentmd-format">
  ### Formato do AGENT.md
</div>

Um arquivo `AGENT.md` usa o mesmo frontmatter YAML das skills, seguido do prompt de sistema do subagente:

```markdown theme={null}
---
name: reviewer
description: Reviews code changes for correctness and style
model: sonnet
allowed-tools:
  - read
  - grep
  - glob
  - exec
permissions:
  allow:
    - Exec(git diff)
    - Exec(git log)
  deny:
    - write
    - edit
---

You are a code review subagent. Your job is to review code changes
thoroughly and report findings back to the parent agent.

Focus on:
1. Correctness — logic errors, edge cases, off-by-one mistakes
2. Security — potential vulnerabilities
3. Style — consistency with the rest of the codebase
4. Performance — obvious inefficiencies

Always cite specific file paths and line numbers in your findings.
```

<div id="frontmatter-fields">
  ### Campos do frontmatter
</div>

| Campo           | Tipo    | Padrão                     | Descrição                                                                                                                   |
| --------------- | ------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `name`          | string  | nome do diretório          | Identificador do perfil (não deve entrar em conflito com perfis nativos)                                                    |
| `description`   | string  | nenhum                     | Exibido ao agente ao selecionar um perfil                                                                                   |
| `model`         | string  | modelo padrão do subagente | Substitui o modelo usado por este subagente                                                                                 |
| `allowed-tools` | lista   | todas as ferramentas       | Restringe quais ferramentas o subagente pode usar. Não pode conceder `ask_user_question`, que é sempre negado a subagentes. |
| `permissions`   | objeto  | herdado                    | Overrides de permissão (`allow`, `deny`, `ask`)                                                                             |
| `max-nesting`   | inteiro | nenhum                     | Substitui a profundidade máxima de aninhamento, permitindo que este subagente crie seus próprios subagentes                 |

<div id="how-custom-subagents-are-used">
  ### Como os subagentes personalizados são usados
</div>

Depois de definidos, os perfis de subagente personalizados aparecem ao lado dos perfis nativos. O agente vê uma descrição de cada perfil disponível e escolhe o mais apropriado ao iniciar um subagente. Você também pode pedir ao agente para usar um perfil específico pelo nome (por exemplo, "faça a revisão deste código usando o subagente reviewer").

Perfis de subagente personalizados que entram em conflito com o nome de um perfil nativo (por exemplo, `subagent_explore`, `subagent_general`) são ignorados, com um aviso.

<div id="importing-from-other-tools">
  ### Importação de Outras Ferramentas
</div>

Subagentes personalizados também podem ser importados do formato de agente do Claude Code:

| Origem                | Padrão de arquivo                                  |
| --------------------- | -------------------------------------------------- |
| `.claude/agents/*.md` | Cada arquivo `.md` se torna um perfil de subagente |

<Note>
  Os arquivos de agente do Claude Code usam `tools` em vez de `allowed-tools` no frontmatter. Ambos os formatos têm suporte automático.
</Note>

<div id="examples">
  ### Exemplos
</div>

<div id="read-only-research-agent">
  #### Agente de Pesquisa em Modo Somente Leitura
</div>

```markdown theme={null}
---
name: researcher
description: Deep codebase research and architecture analysis
model: sonnet
allowed-tools:
  - read
  - grep
  - glob
---

You are a research subagent specializing in codebase exploration.

Your job is to thoroughly investigate a topic and report back with:
- Relevant files and their purposes
- Architecture patterns and dependencies
- Code flow traces with specific line references

Be exhaustive — search broadly and follow references.
```

<div id="test-runner-agent">
  #### Agente de execução de testes
</div>

```markdown theme={null}
---
name: test-runner
description: Runs tests and reports results
allowed-tools:
  - read
  - grep
  - glob
  - exec
permissions:
  allow:
    - Exec(npm run test)
    - Exec(cargo nextest)
    - Exec(pytest)
---

You are a test runner subagent. Run the relevant test suites and report:
- Which tests passed and failed
- Failure messages and stack traces
- Suggestions for fixing failures
```
