Kuti: la tarea del navegador que repites cada semana, escrita en un archivo que puedes leer

Narras la tarea una vez y Theus la deja escrita como un guion: un archivo de texto que abres con cualquier editor, corriges a mano y le pasas a tu equipo sin copiar ninguna contraseña. Que Theus la ejecute después por ti —el comando /reproducir— necesita además la extensión de navegador, y esa extensión todavía no se consigue por un canal público. Eso es lo que falta, y lo decimos aquí arriba.

Va dentro de Theus CLI 1.2.1Los guiones son archivos de texto en tu discoGrabar y reproducir necesitan la extensión de navegador, que hoy no viaja en el instalador

¿Para quién es Kuti?

Quien repite a mano la misma tarea web cada semana —entrar a un panel, sacar el mismo reporte, cargar el mismo formulario— y el equipo donde ese «cómo se hace acá» vive en una sola cabeza.

El problema, tal cual lo cuentan

«Cada semana hago los mismos quince clics en el mismo panel para sacar el mismo reporte. Y cuando lo hace otro sale distinto.»

¿Qué hace Kuti?

Lo grabado se lee antes de ponerlo a correr

Un guion es un archivo de texto de unas veinticinco líneas que describe cada paso por su intención, no por coordenadas de pantalla. Lo abres, lo lees y lo editas a mano.

Frena solo ante lo irreversible

Si un paso pide confirmación, exige una persona —un captcha, un segundo factor— o su texto habla de pagar, enviar, borrar, transferir o firmar, se detiene y te espera.

Se comparte sin copiar la contraseña

Exportas el guion a un archivo portátil que tu equipo importa viendo primero un resumen. Los secretos nunca se escriben dentro: se leen de una variable de entorno.

¿Qué puedes usar hoy y qué te falta?

Kuti tiene dos mitades. La mitad del archivo funciona solo con el CLI. La mitad del navegador —mirar la página mientras grabas, capturar tus clics y reproducir el guion— pasa entera por la extensión de navegador de Theus, que viaja dentro del programa desde la versión 1.2.2. Si tienes una anterior, theus update te la trae.

Lo que ya funciona con solo tener Theus CLI:

Lo que necesita la extensión de navegador:

Y la extensión, sin rodeos: viaja con el programa desde la versión 1.2.2, en los cuatro canales. Lo que todavía no está es publicada en una tienda de extensiones, así que se carga descomprimida activando el modo de desarrollador del navegador: dos clicks que el comando /chrome te deja preparados — instala el conector, te abre la pantalla exacta y te copia la ruta al portapapeles. Preferimos que lo leas aquí, antes de instalar, y no después de perder una tarde.

¿Cómo se graba una tarea con Kuti?

Con tres comandos dentro de Theus: /grabar para capturar la tarea, /reproducir para repetirla y /guiones para ver, exportar y borrar lo que tienes guardado. Lo grabado queda como archivo en .theus/guiones/ dentro de tu proyecto, o en ~/.theus/guiones/ si lo quieres en todas partes.

¿Qué hay dentro de un guion?

Un archivo YAML que empieza por kuti: 1 y una lista de pasos, cada uno con su intención escrita en castellano. Cabe en pantalla, lo abres con cualquier editor y lo corriges a mano antes de ponerlo a correr: no hay nada que desempaquetar ni ninguna grabación binaria que mirar de lejos. Este es un guion de ejemplo, con el formato real:

cat .theus/guiones/reporte.guion.yaml
kuti: 1
nombre: reporte
descripcion: Entra al panel y saca el total del día.
parametros:
  usuario:
    descripcion: correo con el que entras al panel
  clave:
    descripcion: contraseña del panel
    secreto: true
pasos:
  - tipo: navegar
    url: https://panel.miempresa.pe/entrar
    intencion: abrir la pantalla de acceso
  - tipo: escribir
    objetivo: { rol: textbox, nombre: Correo, css: "#email" }
    valor: "{{usuario}}"
  - tipo: escribir
    objetivo: { rol: textbox, nombre: Contraseña }
    valor: "{{clave}}"
  - tipo: clic
    objetivo: { rol: button, nombre: Entrar, texto: Entrar }
    intencion: entrar al panel
  - tipo: esperar
    condicion: la tabla de pedidos termina de cargar
  - tipo: verificar
    espera: la página contiene "Pedidos del día"
  - tipo: extraer
    objetivo: { rol: cell, nombre: Total, css: td.total }
    guardar_en: total_del_dia

# La contraseña no está aquí. Su valor se lee al reproducir, de
# la variable THEUS_GUION_REPORTE_CLAVE.

Cada paso se describe por lo que pretende, no por dónde estaba el ratón. Un grabador de coordenadas se rompe en cuanto la página mueve un botón catorce píxeles; aquí lo que se guarda es qué elemento buscar y para qué, y eso se vuelve a resolver sobre la página de hoy. La escalera va de lo más estable a lo menos:

Un paso esperar tampoco lleva un temporizador: lleva una condición escrita en castellano —«hasta que aparezca este elemento», «hasta que la URL sea esta», «hasta que el texto esté en la página», «hasta que no queden peticiones en vuelo»— y Theus la traduce a cómo comprobarla. Un temporizador de tres segundos falla el día que la red va lenta y actúa sobre una pantalla que aún no está; una condición, no. Dicho como es: eso es la instrucción que sigue el reproductor, no un cronómetro que se lo impida.

Y un paso extraer guarda lo que leyó bajo un nombre —total_del_dia— que los pasos siguientes pueden usar; si no logra extraerlo, la instrucción es parar y decirlo, no seguir con lo que dependía de él.

¿Cuándo se detiene a preguntarte?

Siempre antes de empezar, y otra vez ante cualquier paso sin vuelta atrás. Lo primero que hace /reproducir es imprimirte el plan completo numerado y esperar tu aprobación; a partir de ahí se para en tres casos, decididos por un módulo de lógica pura que comparten el plan y el reproductor:

Ese freno solo puede dispararlo un paso que actúe sobre la página —un clic, una tecla, algo que se escribe—; leer, esperar o verificar no mueve nada. Y si un objetivo no casa después de agotar la escalera, la instrucción es abortar limpio y decirte en qué paso se quedó, en lugar de improvisar el siguiente.

Las contraseñas no se escriben nunca dentro del guion. Un parámetro marcado secreto: true viaja sin valor —ni al guardar en tu disco ni al exportar—, y al reproducir el valor se lee de una variable de entorno, THEUS_GUION_<GUION>_<PARAMETRO>, que el plan enmascara al imprimirlo. El matiz completo, porque a medias no sirve: ese valor ya resuelto sí transita la conversación de esa sesión, porque el agente tiene que teclearlo en la página.

¿Cómo comparto un guion con mi equipo?

Con /guiones exportar reporte, que deja un archivo .kuti autocontenido y legible. Quien lo recibe lo abre y lo lee antes de ejecutar nada, y al importarlo Theus le enseña primero un resumen y no guarda hasta que confirma. Esta parte va sobre disco: funciona tengas o no la extensión de navegador.

Esto es lo que resuelve la mitad aburrida del problema: que el «cómo se hace esto acá» deje de vivir en una sola cabeza y de salir distinto según quién lo haga.

¿Qué no hace Kuti todavía?

Los límites, dichos antes de que los descubras

La mitad del navegador —grabar mirando la página, capturar tus clics y reproducir— necesita la extensión de Theus, que viaja dentro del programa desde la versión 1.2.2. Todavía no está en ninguna tienda de extensiones, así que se carga descomprimida con dos clicks que el propio CLI te deja preparados. Y si la página se rediseña entera, un paso puede romperse.

Preguntas frecuentes sobre Kuti

¿Qué es Kuti?

Kuti es la parte de Theus que deja escrita una tarea del navegador como un guion, y que después la repite. Narras la tarea una vez, Theus la escribe contigo y queda un archivo de texto que puedes leer, corregir y pasarle a tu equipo. Repetirla —el comando «/reproducir»— necesita además la extensión de navegador de Theus, que viaja dentro del programa desde la versión 1.2.2. Kuti viaja dentro de Theus CLI: no se instala ni se compra por separado.

¿Necesito instalar algo en el navegador?

Sí, para todo lo que toque el navegador. Grabar mirando la página, capturar tus clics en automático y reproducir el guion pasan los tres por la extensión de navegador de Theus: el reproductor trabaja únicamente con esas herramientas y, si el navegador no está conectado, se detiene y te lo dice. Esa extensión viaja dentro del programa desde la versión 1.2.2, en los cuatro canales; si tienes una anterior, «theus update» te la trae. Lo que todavía no está es publicada en una tienda de extensiones, así que se carga descomprimida activando el modo de desarrollador: dos clicks que el comando «/chrome» te deja preparados. Lo que funciona solo con el CLI, sin navegador de por medio, es el guion como archivo: leerlo, corregirlo, exportarlo, importar el de un compañero y publicarlo como skill.

¿Necesito saber programar para usarlo?

No. Narras la tarea en castellano y Theus escribe el guion contigo. Lo que sí necesitas es tener Theus CLI en tu terminal, porque los tres comandos viven ahí. El guion que sale es texto plano con la intención de cada paso escrita en castellano, así que también se corrige sin programar: abres el archivo, cambias la línea que ya no encaja y lo guardas.

¿Qué pasa si la página cambia de diseño?

Un cambio pequeño no lo tumba: el guion no guarda coordenadas de pantalla, guarda qué elemento buscar —rol y nombre accesible, texto visible, selector CSS— y qué pretendía el paso, y eso se resuelve otra vez sobre la página de hoy. Un rediseño grande sí puede romper un paso. Cuando ningún candidato encaja, la instrucción del reproductor es detenerse y decirte en qué paso se quedó y por qué, en vez de seguir a ciegas con los siguientes.

¿Puede hacer un pago o borrar algo sin avisarme?

No sin preguntarte antes. Lo primero que hace es imprimirte el plan completo numerado y esperar tu aprobación explícita, y además se detiene paso a paso en tres casos: si el guion marca ese paso como de confirmación, si el paso lo tiene que hacer una persona —un captcha, un segundo factor— o si su texto habla de pagar, enviar, borrar, transferir, publicar o firmar. Esa lista de raíces vive en un módulo de lógica pura que comparten el plan y el reproductor, y está escrita de más a propósito: un falso positivo solo añade una pregunta, un falso negativo haría algo sin vuelta atrás.

¿Dónde quedan mis contraseñas?

Fuera del guion. Un parámetro marcado como secreto viaja sin valor: no se escribe ni al guardar en tu disco ni al exportar el archivo para tu equipo, y el único punto que serializa el archivo lo descarta. Al reproducir, el valor se lee de una variable de entorno (THEUS_GUION_<GUION>_<PARAMETRO>) y el plan lo enmascara. Dicho entero: ese valor ya resuelto sí transita la conversación de esa sesión, porque el agente tiene que teclearlo en la página.

¿Puedo pasarle un guion a un compañero?

Sí. «/guiones exportar <nombre>» deja un archivo .kuti que es YAML legible, así que tu compañero lo lee antes de nada —es código de automatización de un tercero que va a moverse por su navegador, y por eso se audita a ojo—. Al importarlo, Theus le enseña primero un resumen y no guarda hasta que confirma, y nunca sobrescribe en silencio un guion suyo que se llame igual. Los parámetros secretos viajan sin valor: cada uno pone el suyo en su máquina.

¿Kuti se paga aparte?

No. Los tres comandos viajan en toda versión publicada de Theus CLI, sin interruptor ni bandera que encender, así que ya los tienes si tienes el CLI. Lo que se paga es el plan de Theus, que está en soles con IGV incluido y tiene un carril gratuito para probar.

El «cómo se hace esto acá» deja de vivir en una sola cabeza.