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.
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ón | Qué obtienes |
|---|---|
| Crear Agente | Un Agente en blanco, solo con nombre. Configuras todo en la siguiente pantalla. |
| Nuevo desde Flow | Eliges 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. |
- 1Haz clic en Crear Agente (o Nuevo desde Flow) y ponle nombre al Agente.
- 2En la pestaña Configuración del Agente, escribe la Misión y la URL de inicio.
- 3Agrega las Variables que necesita la misión y las Capturas que quieres de vuelta.
- 4Haz clic en Guardar, luego en Run de prueba, y mira el Run en vivo.
- 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.
| Parte | Qué es | Ejemplo |
|---|---|---|
| Misión | Una 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 inicio | La 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 |
| Variables | Valores a los que la misión puede referirse: valores fijos, secretos o campos tomados del Run de un Flow. | part_number |
| Capturas | El 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 |
| Entrega | A dónde va la salida capturada cuando termina el Run. Puedes activar varias a la vez. | Email, Webhook, Bucket, Subject |
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.
| Origen | De dónde sale el valor |
|---|---|
| Static | Un 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 run | Un 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 captura | Devuelve | Úsalo para |
|---|---|---|
| text | Un texto | Nombres, estados, números de referencia, texto libre |
| number | Un número | Precios, cantidades, tasas |
| boolean | Verdadero o falso | En stock, aprobado, existe |
| date | Una fecha como texto | Fechas de entrega, fechas de vencimiento |
| object | Un grupo anidado de campos | Un registro con varios atributos |
| list | Una estructura que se repite | Una tabla de resultados, una entrada por fila |
| file | Un archivo descargado | Facturas, estados de cuenta o reportes que el Agente debe traer |
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ímite | Valor |
|---|---|
| Archivo individual más grande | 25 MB |
| Total de archivos por Run | 100 MB |
| Dónde quedan los archivos | Se guardan con el Run; descárgalos desde la página del Run, en Archivos capturados |
| Enlaces en las entregas | Los 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ón | Qué hace |
|---|---|
| Conectar un buzón | Activa la función para este Agente. |
| Remitente a esperar | Obligatorio. 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 variable | La variable de entrada que contiene la dirección del buzón. |
| Contraseña de aplicación — desde variable | La variable de entrada que contiene la contraseña de aplicación del buzón. |
| Servidor IMAP / Puerto IMAP | Por 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.
- 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).
- 2Abre el Flow y selecciona el panel Agente en su barra lateral.
- 3Haz clic en Vincular Agente y elige el Agente.
- 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.
| Entrega | Qué llega |
|---|---|
| La salida capturada como JSON formateado, a los destinatarios que indiques. | |
| Webhook | Un POST a tu URL con la salida capturada y las variables de entrada del Run. Consulta webhooks. |
| Bucket | Una fila por Run en un Bucket, con las capturas asignadas a columnas (Asignar capturas → columnas del bucket). |
| Subject | Archiva 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ó.
{
"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.
| Disparador | Cómo |
|---|---|
| Run de prueba | El botón Run de prueba del Agente (o Run en la lista de Agentes). Usa las variables estáticas. |
| Programación | Ajustes → Programación, que se describe abajo. |
| Flow vinculado | Cada Run completado de un Flow que tenga este Agente vinculado, como se explicó arriba. |
| Pipeline | Un nodo Agente en un Pipeline. |
| API | Un 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ón | Efecto |
|---|---|
| Ejecutar de uno en uno | Mientras 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.
| Estado | Significado |
|---|---|
| En espera | En fila detrás de otro Run de un Agente configurado para ejecutar de uno en uno. |
| En cola | Aceptado y esperando un worker. |
| En ejecución | La sesión del navegador está abierta. |
| Completado | Terminado y entregado. Completado con advertencias significa que una entrega falló. |
| Fallido | El Run tuvo un error o alcanzó un límite; la página del Run dice cuál. |
| Cancelado | Alguien 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.
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ímite | Predeterminado | Rango | Qué pasa al alcanzarlo |
|---|---|---|---|
| Duración máxima (minutos) | 10 minutos | De 1 a 20 minutos | Se cierra el navegador y el Run se marca como fallido. |
| Límite de solicitudes LLM | 25 | De 5 a 500 | El 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.
| Solicitud | Qué hace |
|---|---|
POST /bots/{agent_id}/runs | Inicia 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}/runs | Los Runs del Agente, del más reciente al más antiguo, con filtro por estado. |
POST /bot-runs/{bot_run_id}/cancel | Cancela 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íntoma | Causa probable y solución |
|---|---|
| El Run falló con un mensaje de duración | Alcanzó 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 larga | Se agotó el Límite de solicitudes LLM (25 por defecto). Súbelo en Ajustes → Límites. |
| Una variable From flow run está vacía | El 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 correo | Revisa 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 advertencias | Falló 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 espera | El 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 ejecutado | El 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. |
