PTENES
MÓDULO 6.4

🧠 La rutina que aprende

Ya sabes que la tarea programada (6.2) empieza desde cero en cada ejecución, y que el loop (6.3) tiene memoria, pero expira rápido. Este módulo resuelve el punto medio: cómo hacer que una tarea programada «recuerde» lo suficiente para mejorar de una ejecución a otra, sin convertirse en un archivo gigante e ilegible.

6
Temas
30
Minutos
Intermedio
Nivel
Práctico
Tipo
0 de 60%
1

😶 El problema de la amnesia

Recuerda el módulo 6.2: una tarea programada abre una sesión nueva en cada ejecución: un empleado nuevo cada día, sin recordar el día anterior. Esto es excelente para la confiabilidad (nadie arrastra malentendidos de una ejecución a otra), pero crea un problema real: ¿y si la tarea necesita ¿saber qué ya hizo? «Manda un resumen solo de las noticias nuevas desde ayer» no funciona si el agente no sabe qué mandó ayer.

La tentación obvia es pedirle al agente que «recuerde» todo, pero no guarda nada entre ejecuciones por cuenta propia; cada sesión nace y muere en blanco. La solución no es darle memoria a la sesión (ese es el loop, del módulo 6.3, y caduca rápido), sino darle memoria al disco: un archivo pequeño que sobrevive de una ejecución a otra, y que la tarea lee al principio y vuelve a escribir al final.

💡 Concepto principal

  • •La sesión no recuerda por sí sola: necesita un lugar fuera de ella para guardar lo esencial.
  • •Ese lugar es un archivo simple en el disco, no la «cabeza» del agente.
Cero
Memoria entre ejecuciones
Disco
Dónde guardar de verdad
1 archivo
Tamaño de la solución
Leer + escribir
Los dos extremos del ciclo
2

📄 El archivo de estado

¿Eres nuevo aquí? Uno archivo de estado es un archivo de texto pequeño, dedicado a una sola tarea programada, que guarda solo lo importante para la próxima vez: la última fecha verificada, el último elemento procesado, un contador; nunca todo el historial. Es la «ficha» de la tarea, no su diario.

En la práctica: al comienzo de cada ejecución, la tarea programada abre este archivo y lee lo que contiene. Decide qué hacer en función de eso. Al final, reescribe el archivo completo con la información actualizada, sobrescribiendo lo anterior en vez de sumarlo. Por eso nunca crece: el contenido de hoy reemplaza al de ayer.

🔍 Por dentro

  • Qué guardar: solo lo mínimo para decidir el siguiente paso (una fecha, un id, un número).
  • Qué NO guardar: texto completo de lo que ya se hizo, historial de todas las ejecuciones, cosas «que podrían ser útiles algún día».
Ejemplo de archivo de estado
ultima_verificacao: 2026-08-04T07:00:00
ultimo_id_processado: 4821
proxima_acao: nenhuma pendencia
3

📈 Por qué no usar un registro infinito

La otra tentación es ir sumando una línea por cada ejecución: un log (registro cronológico de todo lo que pasó). Parece más seguro (“nada se pierde”), pero en la práctica se vuelve un problema: el archivo crece sin parar, cuesta más y tarda más en releerse en cada ejecución, y después de algunos meses nadie — ni siquiera el agente — consigue encontrar lo importante entre miles de líneas.

tamaño del archivo ejecuciones a lo largo del tiempo → log (siempre crece) estado (estable)

Leyenda: la línea rosa sube sin parar — el log suma una línea en cada ejecución y nunca se reduce. La línea cian se mantiene recta y baja — el archivo de estado se sobrescribe, no se acumula, así que siempre conserva el mismo tamaño pequeño.

✓ Archivo de estado

  • ✓Tamaño siempre pequeño — reescrito, no sumado
  • ✓Rápido y barato de leer en cada ejecución
  • ✓Fácil de entender de un vistazo, incluso para ti

✗ Registro infinito

  • ✗Crece para siempre, sin límite natural
  • ✗Cada ejecución se vuelve más lenta y costosa de releer
  • ✗Después de meses, se convierte en ruido: nadie encuentra lo que importa
4

🔄 El ciclo del archivo de estado, paso a paso

Este es el diagrama central del módulo: cómo una ejecución se conecta con la siguiente, sin una sesión activa ni registro; solo un archivo pequeño que pasa la posta.

1. Inicio se dispara la ejecución 2. Lee el estado abre el archivo 3. Decide con base en lo que leíste 4. Ejecuta hace la tarea de verdad 5. Reescribe el estado sobrescribe, no suma 6. Fin finaliza la ejecución próxima ejecución programada

Leyenda: seis pasos en círculo —inicio, leer el estado, decidir, ejecutar, volver a escribir el estado, fin— y la flecha punteada muestra que la siguiente ejecución programada vuelve al paso 1, ahora leyendo el estado que dejó lista la ejecución anterior.

🔍 Por dentro

El paso que más gente olvida es el 5 (reescribir). Si la tarea se ejecuta pero no actualiza el estado, la siguiente ejecución leerá información vieja y repetirá trabajo ya hecho — es el error más común del tema 6.

5

⚙️ Crea tu rutina que aprende

Vamos a crear una tarea programada que use exactamente el ciclo del tema 4. Pídele al agente que configure ambos lados: la tarea en sí y el archivo de estado que lee y vuelve a escribir. Ajusta lo que esté entre <isto voce troca>.

Objetivo

Crear una tarea programada que lea un archivo de estado al inicio, decida en función de él, se ejecute y reescriba el estado al final, sin un registro creciente.

Bloque para copiar
Crie uma tarefa agendada que roda <todo dia às 7h> e faz o seguinte:
1. Leia o arquivo <caminho/do/status.txt>. Se ele ainda não existir, crie um
   com valores iniciais vazios.
2. Com base no que estiver nesse arquivo, decida o que precisa ser feito
   agora: <descreva a regra de decisão, ex: "só processar itens novos
   desde a última_verificacao">.
3. Execute <a tarefa em si, ex: "verificar novidades e me enviar um
   resumo">.
4. No final, reescreva o arquivo <status.txt> inteiro (não acrescente
   linhas) com os valores atualizados: data desta execução e o que for
   necessário pra próxima decisão.
Nunca deixe o arquivo de status crescer — ele deve ter sempre o mesmo
tamanho pequeno, com só os campos essenciais.

Cómo verificar: después de la primera ejecución, abre el archivo de estado y comprueba si los valores cambiaron. Ejecuta (o espera) la siguiente ejecución y confirma que actuó de forma diferente a la primera: señal de que realmente leyó y usó lo que la anterior dejó escrito.

💡 Consejo práctico

Empieza con un formato de archivo muy sencillo (pocas líneas, tipo «clave: valor»). Un formato demasiado complicado es otra forma de ocultar un bug —cuanto más sencillo sea el estado, más fácil te resultará comprobar que es correcto, sin depender solo del agente.

6

⚠️ Errores comunes

Tres formas de arruinar una rutina que aprende, todas fáciles de evitar una vez que sabes reconocerlas :

Ejecución 1 todo es nuevo Ejecución 2 solo lo que cambió Ejecución 3 rápida y sencilla Ejecución 4 se estabilizó

Leyenda: cada barra representa el trabajo realizado en esa ejecución. Disminuyen porque la rutina, guiada por el estado, se enfoca solo en lo nuevo: no vuelve a procesar lo que ya hizo antes.

✗ No hacer

  • ✗Olvidar reescribir el estado al final (la tarea nunca «avanza»)
  • ✗Dejar que el archivo crezca (que se convierta en un registro oculto dentro del «estado»)
  • ✗Guardar demasiada información "por si acaso"

✓ Hacer

  • ✓Dejar la reescritura del estado como último paso obligatorio de la tarea
  • ✓Sobrescribir todo el archivo, nunca agregar líneas
  • ✓Guardar solo lo mínimo para tomar la siguiente decisión

✅ Lista de verificación antes de publicar la rutina

  • •¿La tarea lee el archivo de estado ANTES de decidir qué hacer?
  • •¿Reescribe (no añade contenido al) archivo al final, siempre?
  • •¿El archivo guarda solo lo esencial, no un historial completo?

Verificación rápida (opcional): ¿por qué el archivo de estado no crece con el tiempo?

✅ Resumen del módulo

✓
El problema: una tarea programada no recuerda nada por sí sola: cada ejecución empieza en blanco.
✓
La solución: un archivo de estado pequeño, que se lee al inicio y se vuelve a escribir al final.
✓
Nunca un registro: sobrescribir mantiene el archivo estable; sumar líneas lo convierte en un problema.
✓
El ciclo: inicio → lee el estado → decide → ejecuta → reescribe el estado → fin → repite.

Próximo módulo:

6.5 — Determinismo: por qué la misma tarea debe comportarse de forma predecible todos los días