Ir al contenido

Despachar agentes revisores

Esta guía te muestra cómo despachar agentes revisores para revisar pull requests.

  1. Abre la PR y ve a su pestaña Resumen
  2. Abre el menú de desbordamiento ⋯ y elige Ask AI

Esto inicia el pipeline predefinido pr_review, que abre el espacio de revisión de la PR y despacha los revisores correspondientes al nivel de revisión del espacio de trabajo —tres de forma predeterminada (los agentes predefinidos qa, architect e engineer)— y después hace que el agente líder consolide. Por esta vía no eliges los roles. Para controlar qué roles se ejecutan y qué archivos mira cada uno, usa la herramienta MCP o un paso de pipeline de los que se describen más abajo.

Llámala desde dentro de un espacio de revisión existente:

dispatch_reviewers(
space_id: "...",
workspace_id: "...",
reviewers: [
{role: "reviewer"},
{role: "security", scope: "src/auth/**"}
]
)

space_id, workspace_id y reviewers son obligatorios. Cada especificación de revisor toma un role más un scope opcional de glob de archivos y un prompt_override que sustituye el encargo predeterminado. Un concurrency opcional (1–8) limita los despachos en paralelo; si se omite, se aplica el ajuste review_concurrency del espacio de trabajo (3 de forma predeterminada, se define en Ajustes → Espacio de trabajo → General).

La herramienta devuelve el control de inmediato con las listas dispatched y unmatched. Cada revisor despachado se agrega al espacio como participante, se anuncia con un mensaje de sistema y se despacha con su encargo. Los hallazgos llegan como mensajes review_node a ese espacio.

Abre Ajustes → Espacio de trabajo → Plantillas de pipeline, abre una plantilla y, después:

  1. Agrega un nodo Reviewer (prompt) desde la paleta
  2. Elige el agente que se va a despachar y escribe el prompt del revisor, usando marcadores {{key}} para las salidas de pasos anteriores (por ejemplo {{repo_local_path}}, {{pr_number}})
  3. Define la clave de salida (reviewer_findings de forma predeterminada) para que los pasos posteriores puedan leer los hallazgos

El paso despacha al agente y se suspende hasta que esa ejecución termina. Después, el motor recoge el payload submit_output de la ejecución y lo incorpora al estado del pipeline bajo la clave de salida del nodo. (La descripción de la paleta todavía dice que el paso espera una llamada a complete_task; esa herramienta no existe, ignora el texto.)

Para repartir el trabajo en abanico, conecta varios nodos de revisor al mismo paso anterior y, después, consolida sus salidas con un nodo Consolidate (join).

El editor vuelve a conectar el terminal oculto a todos los sumideros alcanzables, así que un nodo que agregues después del Step predefinido se ejecuta igual. Los nodos en abanico conectados al mismo paso anterior se ejecutan en paralelo.

Para que un pipeline de revisión se active por sí solo:

  1. Abre la plantilla en Ajustes → Espacio de trabajo → Plantillas de pipeline
  2. Arrastra PR publicada o PR externa abierta desde la sección Disparadores de la biblioteca de nodos hasta el lienzo (o elígela desde el mosaico fantasma Añadir un disparador)
  3. Selecciona el nodo nuevo, marca Activado en su inspector y, después, habilita la plantilla

Aquí importan dos eventos, y no son intercambiables:

Evento Se activa cuando Claves del payload
PullRequestPublished Se abre una PR desde Control Center —la superficie de redacción de la PR, o un agente que llama a pr_lifecycle.publish pr_id, workspace_id, repo_owner, repo_name
ExternalPrDetected El servicio de sondeo de PR encuentra una PR abierta directamente en GitHub repo_owner, repo_name, pr_number, pr_title, author

Una PR abierta en github.com nunca emite PullRequestPublished, así que una plantilla conectada solo a ese evento no la verá. Ten en cuenta además que PullRequestPublished no lleva pr_number: un paso cuyo script o prompt haga referencia a {{pr_number}} debe alimentarse desde ExternalPrDetected, o desde una ejecución manual que lo proporcione.

Comprobación: después de habilitarla, abre Pipelines y confirma que aparece una ejecución para la siguiente PR que coincida. Si dejas la plantilla deshabilitada, su disparador no activa nada: el motor rechaza una plantilla deshabilitada y vuelve sin iniciar ninguna ejecución.

dispatch_reviewers puntúa cada agente del espacio de trabajo contra cada etiqueta de rol solicitada, sin distinguir mayúsculas y minúsculas:

Coincidencia Puntuación
Una skill que contiene la etiqueta de rol +3
Un título que contiene la etiqueta de rol +2
Un nombre de agente que contiene la etiqueta de rol +1

Las puntuaciones se acumulan y gana el total más alto (en caso de empate, el primer candidato encontrado). Si ningún candidato puntúa por encima de cero, la especificación vuelve en la lista unmatched de la herramienta en lugar de despacharse; así, un rol con el que no coincide nadie se notifica y nunca se omite en silencio.

Una PR tiene exactamente un espacio de revisión, no uno por revisor. Lo crea de forma idempotente pr.ensureSpace, queda vinculado a la PR mediante un ReviewSpaceAssociation y se aprovisiona contra la ref head de la PR. Cada revisor despachado se une a ese espacio y publica ahí sus hallazgos review_node, que es lo que hace que los hallazgos sean comparables y permite que el agente líder alcance consenso entre ellos.

Cada revisor despachado recibe su propio AgentRunLog. Sigue el progreso en:

  • El espacio de revisión, donde los hallazgos llegan en vivo
  • La pestaña Revisar de la PR, que muestra la barra de estado de la revisión y el veredicto
  • Observabilidad → En vivo (/workspaces/:id/observability), la lista de agentes con el estado de cada ejecución, el tiempo transcurrido en vivo, un cajón de transcripción y un control para detenerla. No tiene atajo de teclado: se llega a ella desde el pie de la barra lateral.