Skip to main content

Agentes personalizados

Al definir agentes personalizados puedes crear configuraciones de subagentes que se reparten roles según el caso de uso.
En la versión Laravel se configuran mediante customAgents de SessionConfig.
Para la orquestación que ejecuta varios subagentes en paralelo, consulta Fleet Mode.

Uso básico

También puedes indicarlo como array:

Opciones de configuración

Cuanto más concreta escribas description, mayor será la precisión de la selección automática.

Hooks declarativos por agente

En hooks de un agente personalizado puedes indicar el nombre del evento como clave y un array de acciones declarativas como valor. Las acciones se pasan al CLI junto con la definición del agente correspondiente y solo tienen efecto en ese agente. Resulta útil, por ejemplo, cuando quieres restringir la ejecución de herramientas solo en un agente concreto.
customAgents[*].hooks son acciones declarativas que se pasan al CLI. Indica el contenido de las acciones en el formato que acepta Copilot CLI.
  • hooks en el nivel superior de SessionConfig es una función distinta que registra callbacks de PHP y se aplica a toda la sesión. Para más detalles, consulta Hooks de sesión.
  • La carga de hooks basados en archivos de .github/hooks/ se controla por separado con enableFileHooks.

Elegir un agente concreto al iniciar la sesión

Si indicas agent, puedes habilitar un agente personalizado concreto desde el primer turn.

Desactivar la selección automática (infer: false)

Para los agentes que realizan operaciones de alto riesgo es más seguro desactivar la selección automática y usarlos de forma explícita.

Ocultar herramientas al agente por defecto

Con defaultAgent.excludedTools puedes ocultar herramientas concretas solo al agente principal.
Así resulta más fácil delegar en un agente personalizado que sí pueda usarlas.

Monitorizar eventos de subagentes

Mientras se ejecuta un subagente se emiten eventos subagent.*.
Puedes monitorizarlos con onEvent o con $session->on().

Buenas prácticas

  • Separa researcher (centrado en lectura) y editor (encargado de los cambios)
  • Deja tools en lo mínimo imprescindible y restringe permisos
  • Escribe description de forma concreta para mejorar la precisión de la delegación automática
  • Captura subagent.failed y prepara una estrategia de reintentos o fallback

Referencias

Última modificación el 19 de octubre de 2026