Aula 1 · 12 min
Do chat à fila: por que guardar as tarefas
No chat, o agente faz uma coisa por vez e só enquanto a janela está aberta. Uma fila durável guarda cada pedido, executa um de cada vez, retoma depois de uma queda e separa o que deu certo do que falhou.
Começar a aula
Nesta aula você vai
- 1O limite do chat: você precisa estar olhando
- 2As quatro garantias de uma fila durável
- 3Os estados de uma tarefa, do pedido ao resultado
- 4Onde o inemaccbot entra no degrau 3
Objetivo: explicar as quatro garantias de uma fila durável e por que elas deixam você sair de perto.
01Chat × fila
O mesmo pedido, em dois lugares diferentes.
Role a página: cada etapa abaixo acende a sua parte do diagrama.
- 1/5
Chat
No chat você digita, espera, copia e cola. Se fechar a janela ou o computador desligar, o trabalho em andamento some. Dez tarefas = dez esperas com você na frente.
- 2/5
Fila durável
O pedido é gravado antes de rodar. No inemaccbot, a fila é um banco SQLite no disco; na fila caseira, um arquivo por tarefa numa pasta. Desligou? A tarefa continua lá.
- 3/5
Trabalhador
Um trabalhador (worker) pega uma tarefa, entrega ao agente e espera. Se o processo cair no meio, na próxima subida ele recupera o que estava em voo antes de aceitar trabalho novo.
- 4/5
Resultado
Cada tarefa termina num estado claro: deu certo (com o arquivo ou texto) ou falhou (com o motivo). É isso que você confere de manhã.
- 5/5
Por que isso deixa você sair de perto
Guardar antes de rodar, uma por vez, retomar depois de uma queda e separar feito de falhou: com essas quatro garantias, desligar a tela não custa trabalho.
No inemaccbot o pedido chega pelo Telegram; na fila caseira da aula 3, é um arquivo .md numa pasta. A ideia é a mesma.
02As quatro garantias
O que você deve esperar de qualquer fila, caseira ou não.
1. Guardar antes de rodar
O pedido vira registro em disco no momento em que chega. Não depende de uma janela aberta nem da memória do programa.
No inemaccbot, cada pedido vira um job numa tabela do banco. Ele tem número (j13), fila, situação e quantas tentativas sobram.
Você manda o pedido pelo celular, o computador reinicia, e o pedido continua na lista.
2. Uma por vez (por fila)
Cada trabalhador pega uma tarefa, termina e só então pega a próxima. Isso evita dois trabalhos brigando pela mesma máquina.
No inemaccbot há cinco filas com limites diferentes: a de renderização roda uma por vez de propósito, porque usa a placa de vídeo; a de rede aceita dez.
3. Retomar depois de uma queda
Se o processo cai no meio, a tarefa não fica perdida nem pela metade para sempre. Na próxima subida, o que estava em andamento volta para a fila.
O inemaccbot faz isso antes de aceitar trabalho novo e escreve no log: boot: recuperação de leases — requeued=N failed=M. Requeued é o que voltou para a fila; failed é o que já tinha gastado todas as tentativas.
4. Separar feito de falhou
Tarefa que deu erro não some e não trava a fila: ela vai para o lado das falhas, com o motivo escrito, e a fila segue.
Os prompts do inemaccbot exigem que o agente termine com RESULT: <caminho> ou ERRO: <motivo curto>. É esse contrato que permite saber, sem abrir nada, como cada tarefa terminou.
03Os estados de uma tarefa
Os nomes mudam de uma fila para outra; a ideia é a mesma.
fila/ entrada/ # pedidos esperando a vez rodando/ # a tarefa que está com o agente agora feito/ # pedido + resposta falhou/ # pedido + ERRO e o motivo
queued # na fila, esperando a vez running # um trabalhador pegou e está executando done # terminou com resultado failed # esgotou as tentativas, com o motivo canceled # você cancelou (/cancelar)
- Fila caseira: ao rodar de novo, o que estiver em
rodando/volta paraentrada/. - inemaccbot: o trabalhador renova um "aluguel" (lease) da tarefa enquanto trabalha. Se o aluguel vence porque o processo caiu, a tarefa volta para
queuedenquanto houver tentativas.
Na fila caseira: resposta vazia ou código de erro do agente. No inemaccbot: o agente não terminou com RESULT:, o prazo (timeout) estourou ou as tentativas (max_tentativas, 2 a 4 nas skills do catálogo) acabaram.
04O degrau 3 em vídeo
A fila durável do inemaccbot e o portão de aprovação, em um minuto e meio.
05Teste o que aprendeu
A explicação aparece depois da sua resposta.
Pergunta 1 de 3
Qual é a diferença essencial entre pedir no chat e mandar para uma fila durável?competência
Pergunta 2 de 3
O log do bot mostrou requeued=2 failed=1 ao subir. O que aconteceu?
Pergunta 3 de 3
Uma tarefa falhou às 3 h da manhã. O que uma boa fila faz?
Escolha uma alternativa. A explicação aparece depois da sua tentativa.