Agentes

Qué son los Agentes

Un Agente es una automatización de navegador que describes en lenguaje natural en lugar de programarla. Le das una misión y una URL de inicio; abre un navegador real en la nube, recorre el sitio (navega, llena formularios, hace clic, lee, descarga) y devuelve datos que coinciden con el esquema de salida que definiste.

La diferencia con un scraper está en el mantenimiento. Un scraper es una lista de selectores CSS que se rompe cuando rediseñan el sitio. Un Agente lee la página en la que está y decide qué hacer, así que un botón que cambió de lugar o un campo con otro nombre no requiere cambiar código.

Usa un Flow cuando los datos están en un documento que recibiste. Usa un Agente cuando los datos viven en un sitio web, o cuando hay que hacer algo en un sitio web con datos que ya tienes.

¿No ves Agentes en tu barra lateral?

Los Agentes se habilitan por organización, a pedido. Si la sección no aparece en tu barra lateral, contacta a soporte para que la activen en tu organización.

Crear un Agente

Los Agentes están en Agentes, en la barra lateral. Puedes empezar con un Agente en blanco o construirlo a partir de un Flow existente, para que los campos de salida del Flow lleguen ya configurados como variables de entrada.

BotónQué obtienes
Crear AgenteUn Agente en blanco, solo con nombre. Configuras todo en la siguiente pantalla.
Nuevo desde FlowEliges un Flow y haces clic en Construir Agente. El nuevo Agente recibe una variable de entrada por cada campo de salida del Flow, cada una configurada para leer ese campo del Run del Flow.
  1. 1Haz clic en Crear Agente (o Nuevo desde Flow) y ponle nombre al Agente.
  2. 2En la pestaña Configuración del Agente, escribe la Misión y la URL de inicio.
  3. 3Agrega las Variables que necesita la misión y las Capturas que quieres de vuelta.
  4. 4Haz clic en Guardar, luego en Run de prueba, y mira el Run en vivo.
  5. 5Cuando el resultado sea correcto, configura la Entrega y activa el Agente con el interruptor de la barra superior.

Un Agente nuevo empieza como borrador. El interruptor de activación de la barra superior controla si se ejecuta según su programación. Al duplicar un Agente se copia su configuración, pero no los valores secretos ni la programación, así que una copia nunca se pone a ejecutarse sola.

Anatomía de un Agente

Un Agente se configura con cinco piezas: qué hacer, dónde empezar, qué sabe de antemano, qué debe traer de vuelta y a dónde va eso.

ParteQué esEjemplo
MisiónUna instrucción en lenguaje natural. Escríbela como si le explicaras la tarea a un colega, incluido cómo manejar los casos difíciles.“Inicia sesión con las credenciales proporcionadas, abre Pedidos y registra el precio unitario actual de cada número de parte.”
Punto de inicioLa URL que el Agente abre primero. Hoy el único tipo de punto de inicio es Web; Escritorio aparece como Próximamente.https://portal.acme-supply.com/login
VariablesValores a los que la misión puede referirse: valores fijos, secretos o campos tomados del Run de un Flow.part_number
CapturasEl esquema tipado de lo que quieres de vuelta. La respuesta del Agente se valida contra él, así que la salida siempre es estructurada.unit_price
EntregaA dónde va la salida capturada cuando termina el Run. Puedes activar varias a la vez.Email, Webhook, Bucket, Subject
La misión es el producto

Casi todos los Runs decepcionantes de un Agente se deben a una misión vaga. Nombra los botones y los títulos de página exactos, di qué hacer cuando una búsqueda no devuelve nada y di cuándo detenerse. Una misión que se lee como un procedimiento funciona; una que se lee como un deseo, no.

Variables y secretos

Cada variable tiene un nombre, un tipo (text, number, boolean, date, object o list) y un origen. La misión se refiere a las variables por su nombre.

OrigenDe dónde sale el valor
StaticUn valor fijo guardado en el Agente: un usuario del portal, un código de bodega. Las llamadas a la API pueden reemplazar los valores estáticos en cada Run.
From flow runUn campo de la salida del Run del Flow que disparó al Agente. Si el Flow tiene un Cleaner, el valor se toma de la salida limpia, así que las conversiones y las columnas calculadas ya están aplicadas. Estas variables solo reciben valor cuando un Flow (o un Pipeline) dispara al Agente.

Variables secretas. Una variable estática de texto se puede marcar como Secreto, por ejemplo para la contraseña de un portal. Su valor se guarda cifrado y nunca aparece en la configuración del Agente, en las entradas o salidas del Run ni en el registro de pasos.

  • Solo Propietarios y Administradores, los únicos que pueden editar un Agente, pueden definir o borrar un secreto
  • Los secretos deben tener al menos 6 caracteres; una vez guardado, el campo indica que hay un valor sin mostrarlo
  • El Agente escribe el secreto en la página por su nombre, sin ver nunca el valor
  • Un secreto solo se puede escribir en el sitio de la URL de inicio (el mismo host o uno de sus subdominios)
  • Si el valor de un secreto aparece en el texto de la página, se enmascara como *** en los pasos y en la salida

La vista en vivo y la repetición de sesión muestran lo que la página renderice. El navegador solo oculta los campos de tipo contraseña, así que un secreto escrito en un campo de texto normal puede verse ahí.

Capturas: el esquema que el Agente debe llenar

Las capturas declaran la forma del resultado. Cada una tiene un nombre, un tipo y una descripción opcional, y admiten estructuras anidadas, así que un Agente puede devolver una lista de objetos en lugar de un bloque de texto que tengas que procesar después.

Tipo de capturaDevuelveÚsalo para
textUn textoNombres, estados, números de referencia, texto libre
numberUn númeroPrecios, cantidades, tasas
booleanVerdadero o falsoEn stock, aprobado, existe
dateUna fecha como textoFechas de entrega, fechas de vencimiento
objectUn grupo anidado de camposUn registro con varios atributos
listUna estructura que se repiteUna tabla de resultados, una entrada por fila
fileUn archivo descargadoFacturas, estados de cuenta o reportes que el Agente debe traer
Los resultados parciales se conservan

Todas las capturas son opcionales. Si el Agente encuentra cuatro de cinco valores, el Run devuelve los cuatro que encontró en lugar de fallar por completo, así conservas el resultado parcial y ves exactamente qué falta.

Descargar archivos

Dale a un Agente una captura de tipo file y podrá traer documentos además de leerlos: un estado de cuenta detrás de un inicio de sesión, el PDF de una factura en un portal. Puede descargar un archivo desde un enlace, o hacer clic en un botón de descarga y quedarse con el archivo que devuelva el sitio.

LímiteValor
Archivo individual más grande25 MB
Total de archivos por Run100 MB
Dónde quedan los archivosSe guardan con el Run; descárgalos desde la página del Run, en Archivos capturados
Enlaces en las entregasLos payloads de email y webhook llevan un enlace a cada archivo, válido por 7 días

Superar un límite no detiene el Run: al Agente se le avisa que el archivo era demasiado grande y sigue con el resto de la misión. Si un sitio responde a una descarga con una página web en lugar de un archivo (una pantalla de inicio de sesión, por ejemplo), el Agente recibe ese aviso en vez de guardar la página como si fuera el documento.

Buzón: códigos que llegan por correo

Algunos portales envían por correo un código de acceso de un solo uso o un enlace de confirmación. Conecta un buzón y el Agente podrá esperar ese correo, leer el código o el enlace y continuar. Se configura en Ajustes → Buzón (el panel Configuración del grupo Ajustes).

OpciónQué hace
Conectar un buzónActiva la función para este Agente.
Remitente a esperarObligatorio. La dirección (o el nombre) de quien envía el código. Se ignora el correo de cualquier otro remitente.
El asunto contiene (opcional)Afina la coincidencia, por ejemplo código.
Dirección del buzón — desde variableLa variable de entrada que contiene la dirección del buzón.
Contraseña de aplicación — desde variableLa variable de entrada que contiene la contraseña de aplicación del buzón.
Servidor IMAP / Puerto IMAPPor defecto imap.gmail.com y 993. Cámbialos para otros proveedores.
  • El buzón se lee por IMAP en modo de solo lectura; nada se marca como leído ni se modifica
  • Solo cuenta un mensaje que llegue después de iniciado el Run, gana la coincidencia más reciente y cada mensaje se usa una sola vez
  • El Agente espera el correo hasta 5 minutos, revisando cada 10 segundos
  • Si no llega nada, el Agente recibe el aviso y tu misión decide qué hacer (reenviar el código o detenerse)
  • Para Gmail o Google Workspace, activa la verificación en dos pasos y crea una contraseña de aplicación

Dilo también en la misión: “Después de enviar el formulario de acceso, espera el correo de verificación e ingresa el código.”

Encadenar un Flow con un Agente

La configuración más potente es extraer y luego actuar. Un Flow saca campos de un documento y el Agente usa esos campos como entradas, así que el documento que recibiste determina lo que pasa en el sitio web de otro, sin copiar nada a mano.

  1. 1En el Agente, agrega variables con el origen From flow run y elige el campo del Flow que lee cada una (o usa Nuevo desde Flow para crearlas todas de una vez).
  2. 2Abre el Flow y selecciona el panel Agente en su barra lateral.
  3. 3Haz clic en Vincular Agente y elige el Agente.
  4. 4Ejecuta el Flow. Cuando el Run termina, el Agente arranca automáticamente con la salida del Flow como entrada.
  • El Agente recibe la salida limpia cuando el Flow tiene un Cleaner
  • Si el Flow usa Revisión Humana, el Agente se ejecuta solo después de que un revisor aprueba, con los datos aprobados; un Run rechazado nunca llega al Agente
  • Las entregas y los webhooks de un Run de Agente iniciado por un Flow llevan el ID de ese Run del Flow
  • En un Pipeline, un nodo Agente hace lo mismo sobre un lienzo, alimentado por un nodo de Flow

Ejemplo. Llega una orden de compra por correo. El Flow extrae el proveedor y los números de parte, y un Cleaner los normaliza. El Agente vinculado entra al portal del proveedor, busca las partes, captura el precio unitario vigente y el plazo de entrega, y escribe los resultados en un Bucket junto a lo que decía la orden, así la diferencia se ve antes de que alguien la apruebe.

A dónde van los resultados

Un Agente puede entregar cada Run completado a varios destinos a la vez. Activa todas las entregas que necesites en la pestaña Entrega; se ejecutan de forma independiente, así que si una falla las demás siguen. Si no activas ninguna, los resultados quedan en la página del Run para verlos o descargarlos.

EntregaQué llega
EmailLa salida capturada como JSON formateado, a los destinatarios que indiques.
WebhookUn POST a tu URL con la salida capturada y las variables de entrada del Run. Consulta webhooks.
BucketUna fila por Run en un Bucket, con las capturas asignadas a columnas (Asignar capturas → columnas del bucket).
SubjectArchiva los documentos capturados en casos de un Subject: eliges la captura de tipo lista con una fila por caso (o la salida completa como un solo caso), el campo que nombra el caso y un tipo de documento para cada captura de archivo. Volver a ejecutar el Agente nunca crea un caso duplicado; por defecto solo agrega los documentos que le faltan al caso.

Las entregas por Email y Bucket tienen la opción Incluir las variables de entrada en el payload entregado, que hace que una fila del Bucket se explique sola: qué se pidió y qué volvió. El webhook siempre las incluye.

El payload del webhook lleva bot_id, bot_run_id, status, inputs (las variables de entrada resueltas del Run, sin los secretos), output (las capturas, con un enlace por archivo) y, cuando el Run de un Flow disparó al Agente, flow_run_id, para que tu sistema pueda asociar el resultado al documento del que salió.

JSON
{
  "bot_id": "3f2a...",
  "bot_run_id": "9c41...",
  "status": "completed",
  "flow_run_id": "b7e0...",
  "inputs": { "part_number": "AX-2210" },
  "output": { "unit_price": 18.4, "lead_time": "3 weeks" }
}

Si una entrega falla, el Run queda como Completado con advertencias y su página muestra los Errores de entrega. Quien creó el Agente recibe además una notificación en la app.

Ejecutar un Agente

Un Agente puede arrancar de cinco maneras. Arranque como arranque, pasa por los mismos límites y las mismas entregas.

DisparadorCómo
Run de pruebaEl botón Run de prueba del Agente (o Run en la lista de Agentes). Usa las variables estáticas.
ProgramaciónAjustes → Programación, que se describe abajo.
Flow vinculadoCada Run completado de un Flow que tenga este Agente vinculado, como se explicó arriba.
PipelineUn nodo Agente en un Pipeline.
APIUn POST desde tu propio sistema, que se describe abajo.

Programación. Activa Ejecutar de forma programada y elige una frecuencia: Cada hora, Cada día, Días hábiles (lun–vie), Cada semana o Cron personalizado (cinco campos: minuto, hora, día del mes, mes, día de la semana; por ejemplo 30 8 * * 1-5). Las horas están en la zona horaria de tu organización, y el panel muestra el Próximo Run.

  • Los Runs programados usan las variables estáticas y los secretos guardados en el Agente
  • La programación solo se ejecuta mientras el Agente está activo
  • Los Runs arrancan aproximadamente un minuto después de la hora programada, o más tarde si todos los workers están ocupados
  • Una ventana perdida no se repite: tras un retraso, el Agente se ejecuta una vez, no una por cada horario perdido
  • Un Run programado que no puede arrancar (el Run anterior sigue en curso o tu organización no puede iniciar trabajo nuevo en este momento) aparece como un Run fallido que explica el motivo
  • Las fallas de los Runs programados y por API generan una notificación en la app para quien creó el Agente, ya que nadie está mirando la página del Run

Concurrencia: un Run a la vez

Por defecto, los disparadores que se solapan se ejecutan en paralelo. A muchos portales no les gustan dos sesiones del mismo usuario a la vez, así que un Agente se puede configurar para ejecutar un Run a la vez en Ajustes → Concurrencia.

OpciónEfecto
Ejecutar de uno en unoMientras un Run está en cola o en ejecución, los nuevos disparadores esperan su turno y arrancan uno tras otro, el más antiguo primero.
Tiempo mínimo entre Runs (minutos)De 0 a 1440. Se cuenta desde el final de un Run hasta el inicio del siguiente. Es un mínimo: el siguiente Run también espera un worker libre.
  • Un Run que espera su turno muestra el estado En espera; no ocupa un worker
  • Pueden esperar hasta 20 Runs por Agente; a partir de ahí se rechazan los nuevos disparadores (la API responde 429)
  • Un Run que espera más de 24 horas se marca como fallido
  • Solo espera un Run programado a la vez, así que un Agente lento con una programación frecuente no acumula Runs

Seguir un Run

Cada Run transmite sus pasos a medida que ocurren, y puedes abrir una vista en vivo de la sesión del navegador para verlo trabajar. Los Runs terminados guardan una repetición, así ves exactamente qué hizo el Agente en lugar de deducirlo de la salida.

EstadoSignificado
En esperaEn fila detrás de otro Run de un Agente configurado para ejecutar de uno en uno.
En colaAceptado y esperando un worker.
En ejecuciónLa sesión del navegador está abierta.
CompletadoTerminado y entregado. Completado con advertencias significa que una entrega falló.
FallidoEl Run tuvo un error o alcanzó un límite; la página del Run dice cuál.
CanceladoAlguien detuvo el Run.
  • Pasos: un registro de lo que hizo el Agente, en orden
  • Salida capturada y Archivos capturados, con descargas
  • Resumen: duración, llamadas LLM y tokens
  • Ver sesión en vivo mientras se ejecuta y Ver repetición de sesión después
  • Identificadores (ID del Run e ID de Sesión) para las solicitudes de soporte

Cancelar Run detiene un Run en espera, en cola o en ejecución. La sesión del navegador termina en pocos segundos y no se entrega nada.

Depura con la repetición, no con la salida

Cuando un Agente devuelve un valor incorrecto, la repetición suele mostrar el porqué en segundos: entró a la cuenta equivocada, o la búsqueda no dio resultados y adivinó. Corrige la misión, no el esquema.

Límites

Los Runs tienen topes para que una misión que sale mal no se ejecute para siempre. Hay dos límites, ambos configurables por Agente en Ajustes → Límites. Deja un campo vacío para usar el valor predeterminado.

LímitePredeterminadoRangoQué pasa al alcanzarlo
Duración máxima (minutos)10 minutosDe 1 a 20 minutosSe cierra el navegador y el Run se marca como fallido.
Límite de solicitudes LLM25De 5 a 500El Agente se detiene y el Run se marca como fallido. Súbelo para misiones que recorren muchas páginas.

Disparar desde la API

Tus propios sistemas pueden iniciar un Agente y consultar el resultado con tu API key, enviada como X-API-Key a https://run.tavnit.io/api. El ID del Agente está en su panel ID del Agente.

SolicitudQué hace
POST /bots/{agent_id}/runsInicia un Run. El body opcional {"inputs": {...}} reemplaza variables estáticas; los secretos no se pueden enviar. Responde 202 con bot_run_id y un estado queued o waiting.
GET /bot-runs/{bot_run_id}Estado, tiempos, entradas y salida (con enlaces a los archivos).
GET /bots/{agent_id}/runsLos Runs del Agente, del más reciente al más antiguo, con filtro por estado.
POST /bot-runs/{bot_run_id}/cancelCancela un Run en espera, en cola o en ejecución.

Cada llamada a la API inicia un Run nuevo. Un 402 significa que tu organización no puede iniciar trabajo nuevo en este momento; contacta al equipo de Tavnit. Para la referencia completa de solicitudes y respuestas, consulta la página de la API. Si prefieres no llamar al Agente directamente, dispara el Flow vinculado y deja que el Agente lo siga.

Permisos

Solo Propietarios y Administradores pueden crear, editar, duplicar o eliminar un Agente, lo que incluye definir secretos. Los Miembros pueden ejecutar Agentes y ver sus Runs. Los miembros Solo HITL no tienen acceso a los Agentes.

Consulta roles de usuario y permisos para la matriz completa.

Solución de problemas

SíntomaCausa probable y solución
El Run falló con un mensaje de duraciónAlcanzó la Duración máxima. Revisa en la repetición dónde se trabó; ajusta la misión, o sube el límite si la tarea de verdad es larga.
El Run se detuvo a mitad de una lista largaSe agotó el Límite de solicitudes LLM (25 por defecto). Súbelo en Ajustes → Límites.
Una variable From flow run está vacíaEl Run no lo inició un Flow, o el nombre del campo no existe en la salida (limpia) del Flow.
Un secreto no se escribióLa página estaba en un sitio distinto al de la URL de inicio, o el secreto nunca se guardó (aparece Sin definir).
El Agente nunca recibió el código por correoRevisa el remitente, el filtro opcional de asunto y la contraseña de aplicación; el correo debe llegar después de iniciado el Run.
Completado con advertenciasFalló una entrega (una URL de webhook incorrecta, un Bucket que no existe). La página del Run lista los errores de entrega.
El estado se queda En esperaEl Agente ejecuta de uno en uno y tiene delante otro Run, o el tiempo mínimo entre Runs.
Un Run programado aparece como fallido sin haberse ejecutadoEl Run anterior seguía en curso o tu organización no podía iniciar trabajo nuevo en ese momento. El mensaje del Run dice cuál.