😶 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.
📄 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".
ultima_verificacao: 2026-08-04T07:00:00
ultimo_id_processado: 4821
proxima_acao: nenhuma pendencia
📈 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.
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
🔄 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.
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.
⚙️ 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>.
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.
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.
⚠️ Erros comuns
Três formas de estragar uma rotina que aprende — todas fáceis de evitar depois que você sabe olhar pra elas:
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?