> ## 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

> Delega tareas a subagentes independientes que trabajan en primer plano o en segundo plano

Los subagentes permiten que el agente principal cree trabajadores independientes para encargarse de subtareas. Un subagente comparte herramientas y el contexto de la base de código con el agente principal, pero opera en su propia cadena de conversación -- no hereda el historial de conversación del agente principal. Esto resulta útil para tareas que se benefician de un trabajo específico e independiente -- como explorar una base de código, ejecutar pruebas o implementar una funcionalidad en paralelo.

Puedes pedirle al agente que use subagentes de forma explícita (p. ej., "investiga cómo funciona la autenticación en un subagente"), o el agente puede decidir delegar por su cuenta cuando determine que una tarea se beneficiaría de un trabajo independiente.

Según nuestras mediciones, los **subagentes** **mejoran el rendimiento general de programación** **y** **reducen el costo**.

***

<div id="how-subagents-work">
  ## Cómo funcionan los subagentes
</div>

Cuando el agente crea un subagente, selecciona uno de los **perfiles de subagente** disponibles y elige si el subagente debe ejecutarse en primer plano o en segundo plano. Los subagentes pueden ejecutarse en dos modos:

<CardGroup cols={2}>
  <Card title="Primer plano" icon="display">
    Se ejecuta directamente en tu sesión. El agente principal se pausa y espera a que el subagente termine antes de continuar. Puedes aprobar o rechazar llamadas a herramientas a medida que aparecen.
  </Card>

  <Card title="Segundo plano" icon="clock">
    Se ejecuta en paralelo mientras el agente principal sigue trabajando. El agente principal recibe una notificación automáticamente cuando el subagente termina. Las herramientas no aprobadas se rechazan automáticamente.
  </Card>
</CardGroup>

<Note>
  No ves directamente la salida en bruto del subagente. Cuando un subagente termina, el agente principal lee el resultado y resume los hallazgos clave y las acciones para ti.
</Note>

<div id="subagent-cost">
  ### Costo de los subagentes
</div>

Los subagentes se ejecutan como sus propias sesiones de agente, cada una con su propia ventana de contexto y llamadas de inferencia, por lo que generan costos de forma independiente del agente principal. El gasto del agente principal cubre su propio trabajo; cada subagente que crea agrega su propio consumo además de eso.

<Note>
  En los planes basados en prompts, cada subagente consume créditos adicionales, igual que un mensaje de usuario. La cantidad de créditos depende del modelo que utilice el subagente, por lo que las tareas que generan múltiples subagentes (o los [anidan](/es/cli/subagents#nesting-depth)) consumen más créditos.
</Note>

Como el costo aumenta con la cantidad de subagentes, las tareas que se distribuyen entre muchos subagentes (o los [anidan](#nesting-depth)) cuestan más. Usa subagentes de forma deliberada cuando el paralelismo o un contexto más enfocado justifiquen el gasto adicional.

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

Los administradores pueden controlar qué modelo usan los subagentes —y si pueden ejecutarse o no— mediante la configuración **Modelo de subagente predeterminado** en Settings de org/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="Configuración del modelo de subagente predeterminado" width="1024" height="114" data-path="images/cli/default-subagent-model-setting.png" />
</Frame>

Esta configuración controla el modelo que se usa para las sesiones de subagente iniciadas por Devin, con tres opciones:

| Opción                                    | Comportamiento                                                                                                                 |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Router de subagentes (predeterminado)** | Devin elige un modelo automáticamente mediante el enrutamiento predeterminado según la tarea y el modelo del agente principal. |
| **Un modelo específico**                  | Fija cada subagente al modelo seleccionado, independientemente de la tarea o del modelo del agente principal.                  |
| **Ninguno**                               | Desactiva por completo los subagentes: Devin no creará ningún subagente.                                                       |

***

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

Cada subagente se ejecuta con un perfil específico que determina sus capacidades. Hay dos perfiles predefinidos:

| Perfil             | Descripción                                                              | Acceso a herramientas                                                                                                                                                          |
| ------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `subagent_explore` | Exploración e investigación de la base de código en modo de solo lectura | Herramientas de solo lectura para la base de código, además de búsqueda web; no puede editar archivos ni obtener URL arbitrarias (tanto en primer plano como en segundo plano) |
| `subagent_general` | Tareas generales, incluidos cambios de código                            | Acceso completo a las herramientas (primer plano) o solo a herramientas preaprobadas (segundo plano)                                                                           |

<Note>
  El agente elige automáticamente el perfil adecuado según la tarea. Los subagentes de exploración son ideales para investigar y comprender, mientras que los subagentes generales pueden realizar cambios.
</Note>

También puedes definir tus propios perfiles de subagente personalizados; consulta [Subagentes personalizados](#custom-subagents) más abajo.

***

<div id="tool-permissions">
  ## Permisos de herramientas
</div>

El funcionamiento de los permisos de herramientas depende de si el subagente se ejecuta en primer plano o en segundo plano:

* **Los subagentes en primer plano** se comportan como el agente principal: se te pedirá que apruebes o rechaces las llamadas a herramientas, como de costumbre.
* **Los subagentes en segundo plano** heredan los permisos de herramientas que ya hayas concedido durante la sesión actual. Cualquier herramienta que no se haya aprobado previamente se rechaza automáticamente. Los subagentes en segundo plano no pueden solicitarte permisos nuevos.

<Tip>
  Si un subagente en segundo plano falla porque se rechazó una herramienta necesaria, puedes reanudarlo en primer plano para aprobar los permisos necesarios. Consulta [Reanudar subagentes](#resuming-subagents) más abajo.
</Tip>

***

<div id="monitoring-subagents">
  ## Supervisión de subagentes
</div>

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

Cuando hay subagentes en segundo plano en ejecución, aparece un indicador debajo del área de entrada que muestra su estado. Puede ir al indicador pulsando <kbd>↓</kbd> desde el área de entrada y, a continuación, pulsar <kbd>Enter</kbd> para abrir el panel de subagentes.

Cuando hay un subagente en primer plano en ejecución, el indicador giratorio muestra **"Subagente en ejecución · Ctrl+B para ejecutar en segundo plano"**.

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

El panel de subagentes te permite ver y gestionar todos los subagentes activos y finalizados. Muestra el perfil, el título, el estado, el tiempo transcurrido y el número de llamadas a herramientas de cada subagente.

***

<div id="foreground-background-switching">
  ## Cambio entre primer plano y segundo plano
</div>

Puedes mover subagentes entre primer plano y segundo plano mientras se ejecutan:

* **Pasar un subagente en primer plano a segundo plano:** Pulsa <kbd>Ctrl</kbd>+<kbd>B</kbd> mientras se está ejecutando un subagente en primer plano. El subagente seguirá trabajando en segundo plano y el agente principal se reanudará.
* **Pasar un subagente en segundo plano a primer plano:** Abre el panel de subagentes y pulsa <kbd>f</kbd> sobre un subagente en segundo plano que esté en ejecución. La salida del subagente se mostrará en línea.

<Note>
  Cuando mueves un subagente a segundo plano, la llamada a la herramienta del agente principal ya habrá finalizado, por lo que el agente principal continúa de forma independiente. El resultado del subagente no volverá a incorporarse al pipeline actual del agente principal, pero recibirás una notificación cuando termine.
</Note>

***

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

Puedes cancelar un subagente en ejecución de dos formas:

1. **Desde el panel de subagentes:** Abre el panel y pulsa <kbd>x</kbd> sobre un subagente en ejecución.
2. **Subagente en primer plano:** Pulsa <kbd>Ctrl</kbd>+<kbd>C</kbd> o <kbd>Esc</kbd> para cancelar el subagente en primer plano que se está ejecutando en ese momento.

***

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

Los subagentes cancelados, que fallaron o que ya se completaron pueden reanudarse con un nuevo prompt. Puedes pedirle al agente que reanude un subagente, y continuará donde lo dejó. Los subagentes reanudados siempre se ejecutan en **primer plano**, por lo que puedes aprobar cualquier llamada a herramientas que se haya denegado anteriormente.

Esto es especialmente útil cuando:

* Un subagente en segundo plano falló porque se denegó una herramienta necesaria; reanúdalo en primer plano para conceder los permisos necesarios.
* Un subagente se completó, pero quieres que haga trabajo de seguimiento adicional en función de sus hallazgos.
* Un subagente se canceló antes de tiempo y quieres que continúe.

***

<div id="nesting-depth">
  ## Profundidad de anidación
</div>

De forma predeterminada, los subagentes no pueden crear sus propios subagentes; solo el agente raíz puede hacerlo. Las herramientas de subagentes (`run_subagent` y `read_subagent`) están deshabilitadas dentro de un subagente para evitar una anidación sin límites.

Sin embargo, los **perfiles personalizados de subagentes** pueden habilitar la creación anidada configurando el campo `max-nesting` en su frontmatter. Este valor reemplaza la profundidad máxima predeterminada y permite que los subagentes creen subagentes secundarios siempre que el árbol se mantenga dentro de ese límite.

Por ejemplo, `max-nesting: 3` permite la siguiente cadena:

```
Root agent (depth 0)
└── Custom subagent (depth 1) — puede generar hijos
    └── Child subagent (depth 2) — puede generar hijos
        └── Grandchild subagent (depth 3) — no puede generar hijos (límite de profundidad alcanzado)
```

<Warning>
  Los subagentes anidados pueden incrementar significativamente el costo. Cada nivel de anidamiento genera agentes adicionales con sus propias ventanas de contexto y llamadas de inferencia. Use esta función con criterio.
</Warning>

***

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

<Warning>
  Los subagentes personalizados son **experimentales**. El formato, el comportamiento y las opciones de configuración pueden cambiar en versiones futuras.
</Warning>

Además de los perfiles predefinidos `subagent_explore` y `subagent_general`, puedes definir tus propios perfiles de subagentes personalizados. Los subagentes personalizados te permiten crear subagentes especializados con sus propios prompts de sistema, restricciones de herramientas, anulaciones del modelo y permisos, adaptados a tareas específicas de tu flujo de trabajo.

<div id="creating-a-custom-subagent">
  ### Crear un subagente personalizado
</div>

Los subagentes personalizados se definen como archivos `AGENT.md` en un directorio con nombre propio dentro de `agents/`. El nombre del directorio pasa a ser el identificador del perfil.

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

    También se admite:

    ```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 de AGENT.md
</div>

Un archivo `AGENT.md` usa el mismo frontmatter YAML que las skills, seguido del prompt del sistema del 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 del frontmatter
</div>

| Campo           | Tipo    | Predeterminado                      | Descripción                                                                                                                                  |
| --------------- | ------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`          | string  | nombre del directorio               | Identificador del perfil (no debe entrar en conflicto con los perfiles predefinidos)                                                         |
| `description`   | string  | ninguno                             | Se muestra al agente al seleccionar un perfil                                                                                                |
| `model`         | string  | modelo predeterminado del subagente | Anula el modelo que usa este subagente                                                                                                       |
| `allowed-tools` | list    | todas las herramientas              | Restringe qué herramientas puede usar el subagente. No puede conceder `ask_user_question`, que siempre está restringida para los subagentes. |
| `permissions`   | object  | heredar                             | Anulaciones de permisos (`allow`, `deny`, `ask`)                                                                                             |
| `max-nesting`   | integer | ninguno                             | Anula la profundidad máxima de anidamiento, lo que permite que este subagente cree sus propios subagentes                                    |

<div id="how-custom-subagents-are-used">
  ### Cómo se usan los subagentes personalizados
</div>

Una vez definidos, los perfiles de subagentes personalizados aparecen junto a los predefinidos. El agente ve una descripción de cada perfil disponible y elige el más adecuado al crear un subagente. También puedes pedirle al agente que use un perfil específico por su nombre (p. ej., "revisa este código con el subagente revisor").

Los perfiles de subagentes personalizados que entren en conflicto con el nombre de un perfil predefinido (p. ej., `subagent_explore`, `subagent_general`) se omiten y se muestra una advertencia.

<div id="importing-from-other-tools">
  ### Importación desde otras herramientas
</div>

Los subagentes personalizados también se pueden importar desde el formato de agente de Claude Code:

| Origen                | Patrón de archivo                                         |
| --------------------- | --------------------------------------------------------- |
| `.claude/agents/*.md` | Cada archivo `.md` se convierte en un perfil de subagente |

<Note>
  Los archivos de agente de Claude Code usan `tools` en lugar de `allowed-tools` en el frontmatter. Ambos formatos se admiten automáticamente.
</Note>

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

<div id="read-only-research-agent">
  #### Agente de investigación de solo lectura
</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 ejecución de pruebas
</div>

```markdown theme={null}
---
name: test-runner
description: Ejecuta pruebas e informa los resultados
allowed-tools:
  - read
  - grep
  - glob
  - exec
permissions:
  allow:
    - Exec(npm run test)
    - Exec(cargo nextest)
    - Exec(pytest)
---

Eres un subagente ejecutor de pruebas. Ejecuta los conjuntos de prueba relevantes e informa:
- Qué pruebas pasaron y cuáles fallaron
- Mensajes de error y stack traces
- Sugerencias para corregir los failures
```
