O contexto
No post anterior, falei sobre como o Juiz de estrutura impediu a IA de entregar respostas prontas. Mas barrar a saída era apenas metade do problema. A outra metade era: como o sistema sabe o que o aluno deve aprender em seguida?
Depender do aluno para dizer "vamos para a próxima lição" ou esperar que a IA lembrasse do currículo era pedir para o sistema quebrar. Precisávamos de uma Máquina de Estados sólida, algo que funcionasse como a "Diretoria" da escola, decidindo o currículo enquanto a IA atua apenas como o professor em sala.
O silêncio dos Hooks
Para resolver isso, mergulhei nos Hooks de Lifecycle do ambiente. Criei o hook after-model.js. O papel dele é ser um interceptador: ele lê a saída do Gemini antes mesmo dela chegar ao terminal do aluno.
O fluxo funciona assim: a IA gera a explicação. O hook captura essa string, analisa o contexto e consulta um arquivo de metadados chamado fila-ensino.json. Esse arquivo é a fonte da verdade. Ele contém o roadmap completo e o progresso atual.
A Fila de Ensino
Imagine que a próxima lição seja sobre process.argv. O script expandir-roadmap.js faz uma verificação de sanidade. Ele percebe: "Espera, o aluno ainda não passou pelo módulo de Arrays". No mundo normal, a IA talvez tentasse explicar process.argv do zero, ignorando que arrays são a base para entender os argumentos de linha de comando.
Com o hook, o processo é automatizado:
- O hook intercepta a intenção de ensinar
process.argv. - O script valida as dependências no
fila-ensino.json. - Se falta uma base, o hook silenciosamente injeta uma lição de Arrays antes do planejado.
// Exemplo conceitual do after-model.js
const ensinoAtual = carregarFila();
if (resumoIA.contem("process.argv") && !ensinoAtual.aprendeu("arrays")) {
ensinoAtual.pausar("process.argv");
ensinoAtual.injetar("arrays");
salvarFila(ensinoAtual);
}
Essa "manipulação" acontece nos bastidores. Para o aluno, parece que o professor é extremamente atento e percebeu que ele precisava reforçar a base antes de avançar. Para mim, é apenas o Node.js garantindo que a lógica de backend seja respeitada.
A IA virou funcionária
O que esse sistema mudou na minha percepção foi o papel da IA no desenvolvimento. Antes, eu via o Gemini como o motor principal. Agora, ele é apenas uma peça de interface. A inteligência do currículo, a ordem das lições e a validação do progresso são todas feitas por scripts locais.
A IA parou de ser a dona do currículo. Ela virou uma prestadora de serviços que recebe ordens claras: "O aluno está no estado X, ensine o conceito Y usando a analogia Z. Não saia disso".
O que fica
Automatizar o estado com hooks tirou o peso da "memória" da IA. LLMs perdem o contexto em conversas longas, mas arquivos JSON e scripts de validação não. Se o sistema cair ou o aluno fechar o terminal, o fila-ensino.json garante que voltaremos exatamente de onde paramos, com o rigor que um ambiente de ensino exige. No próximo post, vou mostrar como blindamos a comunicação entre esses scripts e a IA usando System Tags.
Referências
- Gemini CLI: Hooks Reference (AfterModel) — Guia técnico sobre o hook AfterModel, usado para interceptar e modificar a resposta do modelo em tempo real.
- Node.js Events (EventEmitter) — Documentação oficial do Node.js sobre o padrão de eventos, essencial para construir interceptadores e hooks customizados.
- JSON Schema — usado para validar a estrutura do
fila-ensino.json.