Despachar agentes revisores
Esta guía explica cómo despachar agentes revisores para que revisen pull requests.
Desde la vista de la PR
Sección titulada «Desde la vista de la PR»- Abre la PR y ve a su pestaña Resumen
- 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 del 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.
Con la herramienta MCP dispatch_reviewers
Sección titulada «Con la herramienta MCP dispatch_reviewers»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 añade 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.
Desde un paso de pipeline
Sección titulada «Desde un paso de pipeline»Abre Ajustes → Espacio de trabajo → Plantillas de pipeline, abre una plantilla y, después:
- Añade un nodo Reviewer (prompt) desde la paleta
- 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}}) - Define la clave de salida (
reviewer_findingsde forma predeterminada) para que los pasos posteriores puedan leer los hallazgos
El paso despacha el 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 añadas después del Step predefinido se ejecuta igualmente. Los nodos en abanico conectados al mismo paso anterior se ejecutan en paralelo.
Despacho automático en una PR nueva
Sección titulada «Despacho automático en una PR nueva»Para que un pipeline de revisión se active por sí solo:
- Abre la plantilla en Ajustes → Espacio de trabajo → Plantillas de pipeline
- Arrastra PR publicada o PR externa abierta desde la sección Disparadores de la biblioteca de nodos hasta el lienzo (o elígelo desde el mosaico fantasma Añadir un disparador)
- 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.
Cómo se empareja un rol con un agente
Sección titulada «Cómo se empareja un rol con un agente»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.
El espacio de revisión
Sección titulada «El espacio de revisión»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.
Supervisar el despacho
Sección titulada «Supervisar el despacho»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.