Encadenar agentes con transferencias para tareas de varios pasos

Completado

Los agentes personalizados individuales son eficaces por sí mismos, pero su potencial completo surge al conectarlos en secuencia para controlar tareas complejas de desarrollo en varios pasos. Las transferencias permiten a un agente sugerir el siguiente paso con otro agente, llevar el contexto de la conversación y proporcionar una transición fluida entre diferentes roles especializados.

¿Qué son las transferencias?

Un traspaso es un mecanismo que permite a un agente personalizado proponer una transición a otro agente después de completar su parte de una tarea. Cuando un agente finaliza su respuesta, puede presentar un botón de entrega (una "siguiente acción" sugerida) que, cuando se selecciona, cambia el chat a un agente de destino y, opcionalmente, rellena un mensaje para continuar el flujo de trabajo.

Por ejemplo, un agente de Planner podría generar un plan de implementación detallado y, a continuación, mostrar un botón "Iniciar implementación". Cuando el desarrollador selecciona este botón, GitHub Copilot Chat cambia a un agente de Implementador que recibe el plan como contexto junto con un mensaje como "Ahora implementa el plan sugerido". El desarrollador revisa el plan antes de seleccionar el botón, manteniendo el control sobre el flujo de trabajo mientras los agentes controlan el trabajo especializado.

Este enfoque crea un flujo de trabajo de varios agentes estructurado en el que cada agente controla una fase específica del proceso de desarrollo. El desarrollador supervisa cada transición, lo que garantiza la calidad y la corrección en cada paso. Las transferencias no se ejecutan automáticamente por defecto; requieren que el desarrollador seleccione el botón de transferencia, lo que mantiene a una persona en el proceso.

Configuración de transferencias

Para configurar una transferencia, agregue una sección handoffs al texto preliminar de YAML del archivo .agent.md del agente personalizado. Cada entrada de entrega especifica la conexión entre el agente actual y el agente de destino.

Una entrada de entrega incluye los siguientes campos:

  • etiqueta: el texto que se muestra en el botón de entrega (por ejemplo, "Iniciar implementación" o "Ejecutar pruebas").

  • agent: nombre o identificador del agente de destino al que se va a cambiar. Este nombre debe coincidir con el nombre de archivo (sin la .agent.md extensión) o el name campo del agente de destino.

  • prompt: mensaje opcional que se va a enviar al siguiente agente. Este mensaje proporciona contexto o instrucciones para el agente de destino, como "Ahora implemente el plan sugerido" o "Revise los cambios de código realizados en el paso anterior".

  • send: valor booleano que controla si el mensaje se envía automáticamente. Cuando se establece false en (valor predeterminado), el mensaje se rellena previamente en la entrada de chat para que el desarrollador revise y edite antes de enviar. Cuando se establece en true, el mensaje se envía de inmediato y el agente de destino empieza a trabajar de inmediato.

  • model: campo opcional que especifica un modelo de IA determinado que se va a usar cuando se ejecuta la entrega. El formato es Model Name (vendor), como GPT-4.1 (OpenAI) o Claude Sonnet 4 (Anthropic). Este campo es útil cuando diferentes fases de un flujo de trabajo se benefician de diferentes funcionalidades del modelo, por ejemplo, mediante un modelo de razonamiento para planear y un modelo más rápido para la implementación.

El siguiente fragmento de código YAML muestra un agente Planificador configurado con una transferencia a un agente Implementador.

---
description: Generates high-level implementation plans without writing code
tools: ['search', 'read', 'fetch']
handoffs:
  - label: Start Implementation
    agent: implementer
    prompt: Now implement the plan outlined above.
    send: false
---

Cuando el agente de Planner completa su respuesta, aparece un botón "Iniciar implementación" en el chat. Al seleccionar este botón, se cambia al agente Implementador, se pasa el historial de conversaciones (incluido el plan) y se rellena previamente el texto de la solicitud para que el desarrollador lo revise.

Un agente puede definir varias transferencias para ofrecer diferentes pasos siguientes. Por ejemplo, un agente de Planner puede ofrecer los botones "Iniciar implementación" y "Escribir pruebas primero", lo que permite al desarrollador elegir la ruta de acceso adecuada en función de la situación.

Revisión y aceptación de transferencias

Las entregas siempre implican una acción explícita del usuario ( al seleccionar el botón de entrega), a menos que el send campo esté establecido en true. Este diseño garantiza que el desarrollador mantenga el control del flujo de trabajo y pueda revisar la salida de cada agente antes de pasar al paso siguiente.

Cada agente de una cadena funciona dentro de su propio conjunto de herramientas definido y conjunto de instrucciones. Este entorno proporciona límites de protección en cada paso del flujo de trabajo. Por ejemplo:

  • Un agente de planificación con solo read y search herramientas puede recopilar información y proponer planes, pero no puede modificar accidentalmente el código.
  • Un agente de implementación con readlas herramientas , edity terminal puede escribir código y ejecutar comandos de compilación, pero sigue las directrices de codificación específicas en sus instrucciones.
  • Un agente de revisión con solo read y search herramientas puede analizar el código generado, pero no puede modificarlo, lo que garantiza que su revisión sea puramente asesora.

Estas restricciones específicas de roles hacen que los procesos de varios pasos sean más confiables evitando acciones no deseadas en cada fase. El desarrollador revisa la salida en cada punto de entrega y solo continúa cuando está satisfecho con el resultado.

Flujos de trabajo de varios pasos comunes

En los escenarios siguientes se muestra cómo encadenar agentes personalizados pueden mejorar la productividad en diferentes actividades de desarrollo.

Planificación → Implementación

Use un agente de Planner para analizar los requisitos y generar un plan de implementación detallado para una nueva característica. El plan identifica qué archivos necesitan cambios, describe los pasos de implementación y resalta los posibles riesgos. A continuación, una transferencia cambia a un agente Implementador que escribe el código según el plan, siguiendo los archivos de instrucciones personalizados del proyecto para los estándares de codificación.

Este flujo de trabajo refleja cómo los ingenieros senior planifican el trabajo antes de que comience la implementación, utilizando IA en ambas etapas con el desarrollador manteniendo el control de la transición.

Implementación → Revisión de código

Una vez generado el código, ya sea por un desarrollador humano o un agente de IA, la transferencia puede cambiar a un agente de revisión de código. El agente de revisión evalúa la calidad del nuevo código, comprobando errores, problemas de seguridad, infracciones de estilo y casos límite que faltan. Después, el agente de revisión puede proporcionar comentarios sobre correcciones manuales o entregar a un agente "Fixer" que aplique correcciones, sujeto a la aprobación del desarrollador.

Escribiendo pruebas fallidas → Escribiendo código para pasar

Aplique Test-Driven Development (TDD) mediante una cadena de dos agentes. En primer lugar, un agente del generador de pruebas crea pruebas unitarias con errores para un requisito especificado. El desarrollador revisa las pruebas para confirmar que capturan el comportamiento previsto. A continuación, la transferencia cambia a un agente Implementador que escribe el código mínimo necesario para aprobar esas pruebas. Esta cadena impone un ciclo de pruebas rojo-verde con asistencia de inteligencia artificial, produciendo tanto las pruebas como la implementación.

Depuración y aplicación de revisiones

Para escenarios de corrección de errores, un agente de depuración lee los registros de errores, examina las pruebas con errores y analiza el código pertinente para plantear la causa del problema. Una vez completado el diagnóstico, la transferencia cambia a un agente de aplicación de revisiones con permisos para editar y aplicar la corrección. Una entrega final podría invocar a un agente de pruebas para ejecutar el conjunto de pruebas y comprobar que se ha resuelto el problema.

Refactorización o actualización

Use un agente de planeación para analizar un código base existente y describir un plan de refactorización o migración; por ejemplo, actualizar un proyecto de C# desde una versión anterior de .NET a .NET 8. El plan identifica qué archivos, API y patrones deben cambiar. La transferencia cambia a un agente de actualización que realiza las modificaciones de código en los archivos según el plan. Una entrega final a un agente de revisión comprueba el código actualizado en busca de problemas introducidos durante la migración.

Nota:

Estos flujos de trabajo reflejan cómo los equipos de desarrollo pueden delegar una secuencia de tareas (plan, código, prueba, revisión) a diferentes asistentes especializados de inteligencia artificial mientras supervisan cada paso. El resultado es un flujo de trabajo más eficaz en el que la inteligencia artificial controla tareas repetitivas o complejas, lo que libera al desarrollador para centrarse en la toma de decisiones y la verificación.

Entornos de ejecución del agente

De forma predeterminada, los agentes personalizados se ejecutan en el cliente (dentro de Visual Studio Code). Sin embargo, los agentes también se pueden configurar para que se ejecuten en la nube estableciendo target: cloud en el frontmatter YAML del agente. Los agentes en la nube se ejecutan remotamente y son más adecuados para tareas de larga duración, como el desarrollo de una funcionalidad completa o la ejecución de un conjunto de pruebas completo, que, de lo contrario, mantendría ocupada la instancia local de Visual Studio Code. Los agentes en segundo plano son un concepto relacionado: se ejecutan de forma independiente sin bloquear la interfaz de chat, lo que le permite seguir trabajando mientras el agente procesa una tarea.

Ganchos de GitHub Copilot

Los enlaces de Copilot de GitHub permiten ejecutar comandos de shell personalizados en puntos estratégicos del flujo de trabajo de un agente. Los enlaces se definen en la configuración de Visual Studio Code (no en los archivos del agente) y se desencadenan antes o después de eventos específicos, como antes de que GitHub Copilot guarde un archivo o después de ejecutar un comando de terminal. Por ejemplo, puede configurar un enlace para ejecutar un linter automáticamente después de que GitHub Copilot edite un archivo, asegurándose de que el código generado por IA siempre cumple los estándares de formato antes de guardarse.

Los enlaces amplían las funcionalidades de automatización de los flujos de trabajo de varios agentes mediante la adición de acciones basadas en el ciclo de vida que complementan las propias instrucciones y herramientas del agente.

Nota:

Los hooks son una característica de vista previa y su formato de configuración puede cambiar. Se configuran en la configuración de Visual Studio Code en github.copilot.chat.hooks y admiten eventos como postSaveFile, preRunTerminalCommandy postRunTerminalCommand.

Resumen

Las transferencias conectan varios agentes personalizados a flujos de trabajo secuenciales guiados, lo que permite tareas de desarrollo en varios pasos en las que cada agente gestiona una fase específica. Mediante la configuración de transferencias en el texto preliminar de YAML de los archivos de los agentes, puede crear cadenas que pasen de planificación a implementación, de implementación a revisión, o cualquier otra secuencia que coincida con el proceso de desarrollo del equipo. Cada entrega mantiene al desarrollador en control, con la opción de revisar y aprobar antes de continuar con el paso siguiente. Otras funcionalidades, como los agentes en la nube, la ejecución en segundo plano y los enlaces de GitHub Copilot amplían estos flujos de trabajo con procesamiento remoto y automatización del ciclo de vida.