MÓDULO 6.4

🧠 A rotina que aprende

Você já sabe que a tarefa agendada (6.2) começa do zero a cada execução, e que o loop (6.3) tem memória mas expira rápido. Este módulo resolve o meio-termo: como fazer uma tarefa agendada "lembrar" o suficiente para melhorar de execução em execução, sem virar um arquivo gigante e ilegível.

6
Tópicos
30
Minutos
Intermediário
Nível
Prático
Tipo
0 de 60%
1

😶 O problema da amnésia

Lembra do módulo 6.2: uma tarefa agendada abre uma sessão nova a cada disparo — funcionário novo todo dia, sem lembrar do dia anterior. Isso é ótimo pra confiabilidade (ninguém carrega mal-entendido de uma execução pra outra), mas cria um problema real: e se a tarefa precisa saber o que já fez? "Manda um resumo só das notícias novas desde ontem" não funciona se o agente não sabe o que já mandou ontem.

A tentação óbvia é pedir pro agente "lembrar" de tudo — mas ele não guarda nada entre execuções por conta própria; cada sessão nasce e morre em branco. A solução não é dar memória à sessão (isso é o loop, do módulo 6.3, e expira rápido) — é dar memória ao disco: um arquivo pequeno que sobrevive de uma execução pra outra, e que a tarefa lê no começo e reescreve no fim.

💡 Conceito Principal

  • Sessão não lembra sozinha — precisa de um lugar fora dela pra guardar o essencial.
  • Esse lugar é um arquivo simples no disco, não a "cabeça" do agente.
Zero
Memória entre execuções
Disco
Onde guardar de verdade
1 arquivo
Tamanho da solução
Ler + escrever
As duas pontas do ciclo
2

📄 O arquivo de status

Novo aqui? Um arquivo de status é um arquivo de texto pequeno, dedicado a uma única tarefa agendada, que guarda só o que importa pra próxima vez: a última data verificada, o último item processado, um contador — nunca o histórico inteiro. É a "ficha" da tarefa, não o diário dela.

Na prática: a tarefa agendada, no começo de cada execução, abre esse arquivo e lê o que está lá. Decide o que fazer com base nisso. No fim, reescreve o arquivo inteiro com a informação atualizada — sobrescrevendo, não somando ao que já tinha. Por isso ele nunca cresce: o conteúdo de hoje substitui o de ontem.

🔍 Por dentro

  • O que guardar: só o mínimo pra decidir o próximo passo (uma data, um id, um número).
  • O que NÃO guardar: texto completo do que já foi feito, histórico de todas as execuções, coisas "que podem ser úteis um dia".
Exemplo de arquivo de status
ultima_verificacao: 2026-08-04T07:00:00
ultimo_id_processado: 4821
proxima_acao: nenhuma pendencia
3

📈 Por que não um log infinito

A outra tentação é ir somando uma linha a cada execução — um log (registro cronológico de tudo que aconteceu). Parece mais seguro ("nada se perde"), mas na prática vira um problema: o arquivo cresce sem parar, fica caro e lento de reler a cada execução, e depois de alguns meses ninguém — nem o agente — consegue achar o que importa no meio de milhares de linhas.

tamanho do arquivo execuções ao longo do tempo → log (cresce sempre) status (estável)

Legenda: a linha rosa sobe sem parar — o log ganha uma linha a cada execução e nunca encolhe. A linha ciano fica reta e baixa — o arquivo de status é reescrito, não somado, então mantém sempre o mesmo tamanho pequeno.

✓ Arquivo de status

  • Tamanho sempre pequeno — reescrito, não somado
  • Rápido e barato de ler a cada execução
  • Fácil de entender de relance, até por você

✗ Log infinito

  • Cresce pra sempre, sem limite natural
  • Cada execução fica mais lenta e cara de reler
  • Depois de meses, vira ruído — ninguém acha o que importa
4

🔄 O ciclo do arquivo de status, passo a passo

Este é o diagrama central do módulo: como uma execução se conecta com a próxima, sem sessão viva e sem log — só um arquivo pequeno passando o bastão adiante.

1. Início execução dispara 2. Lê o status abre o arquivo 3. Decide com base no que leu 4. Executa faz a tarefa de verdade 5. Reescreve o status sobrescreve, não soma 6. Fim execução encerra próxima execução agendada

Legenda: seis passos em círculo — início, lê o status, decide, executa, reescreve o status, fim — e a seta pontilhada mostra que a próxima execução agendada volta pro passo 1, agora lendo o status que a execução anterior deixou pronto.

🔍 Por dentro

O passo que mais gente esquece é o 5 (reescrever). Se a tarefa executa mas não atualiza o status, a próxima execução vai ler informação velha e repetir trabalho já feito — é o erro mais comum do tópico 6.

5

⚙️ Monte sua rotina que aprende

Vamos criar uma tarefa agendada que usa exatamente o ciclo do tópico 4. Peça pro agente configurar os dois lados: a tarefa em si e o arquivo de status que ela lê e reescreve. Ajuste o que estiver entre <isto voce troca>.

Objetivo

Criar uma tarefa agendada que lê um arquivo de status no início, decide com base nele, executa, e reescreve o status no fim — sem log crescente.

Bloco copiável
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.

Como verificar: depois da primeira execução, abra o arquivo de status e confira se os valores mudaram. Rode (ou espere) a execução seguinte e confirme que ela agiu de forma diferente da primeira — sinal de que ela realmente leu e usou o que a anterior deixou escrito.

💡 Dica Prática

Comece com um formato de arquivo bem simples (poucas linhas, tipo "chave: valor"). Formato complicado demais é mais um jeito de esconder um bug — quanto mais simples o status, mais fácil você mesmo confere se está certo, sem depender só do agente.

6

⚠️ Erros comuns

Três formas de estragar uma rotina que aprende — todas fáceis de evitar depois que você sabe olhar pra elas:

Execução 1 tudo é novo Execução 2 só o que mudou Execução 3 rápida e enxuta Execução 4 estabilizou

Legenda: cada barra representa o trabalho feito naquela execução. Elas diminuem porque a rotina, guiada pelo status, foca só no que é novo — não reprocessa o que já fez antes.

✗ Não fazer

  • Esquecer de reescrever o status no fim (a tarefa nunca "avança")
  • Deixar o arquivo crescer (virar log escondido dentro do "status")
  • Guardar informação demais "por via das dúvidas"

✓ Fazer

  • Deixar a reescrita do status como o último passo obrigatório da tarefa
  • Sobrescrever o arquivo inteiro, nunca acrescentar linhas
  • Guardar só o mínimo pra tomar a próxima decisão

Checklist antes de publicar a rotina

  • A tarefa lê o arquivo de status ANTES de decidir o que fazer?
  • Ela reescreve (não acrescenta) o arquivo no final, sempre?
  • O arquivo guarda só o essencial, não um histórico completo?

Checagem rápida (opcional): por que o arquivo de status não cresce com o tempo?

Resumo do Módulo

O problema: tarefa agendada não lembra de nada sozinha — cada execução nasce em branco.
A solução: um arquivo de status pequeno, lido no início e reescrito no fim.
Nunca um log: sobrescrever mantém o arquivo estável; somar linhas o transforma num problema.
O ciclo: início → lê status → decide → executa → reescreve status → fim → repete.

Próximo módulo:

6.5 — Determinismo: por que a mesma tarefa deve se comportar de forma previsível todo dia