Verificando acesso...

Início / Trilha 3 / Módulo 3.5
MÓDULO 3.5

🛡️ Resiliência — Fallbacks e recuperação de erros

Fallbacks de provedor, limites de retry, checkpoints e testes ativos — projetando o sistema para falhar bem e se recuperar rapidamente.

7
Tópicos
~50
Minutos
Avançado
Nível
Engenharia
Tipo
1

💥 O que acontece quando um modelo falha ou fica lento

O que é

Aceitar que falhas vão acontecer — e projetar o sistema para lidar com elas — é o que diferencia um protótipo de um sistema de produção. A questão não é se vai falhar, mas quando e como recuperar.

Por que aprender

Indisponibilidade de provedor

Ocorre algumas vezes por mês em qualquer provedor. Pode durar minutos ou horas.

Estratégia: Fallback para modelo alternativo via OpenRouter.

Sobrecarga de servidor

Latências de 30–60s em horários de pico. O modelo responde, mas devagar.

Estratégia: Timeout com fallback para provedor menos carregado.

Rate limit excedido (429)

Muitas chamadas em pouco tempo. O provedor bloqueia temporariamente.

Estratégia: Retry com backoff exponencial ou BYOK com limites mais altos.

Resposta truncada ou sem sentido

Modelo retorna output incompleto ou incoerente sem indicar erro.

Estratégia: Validação de output antes de passar ao próximo estágio do pipeline.

Conceitos-chave

Falha como dado estatístico

Cada provedor tem uma taxa de falha — planejar com base na taxa, não na esperança de 100% de uptime

Design para recuperação

O sistema deve assumir que vai falhar e ter uma estratégia para cada tipo de falha

Quatro tipos de falha

Indisponibilidade, sobrecarga, rate limit e qualidade — cada um com estratégia diferente

Protótipo vs produção

A diferença é o design para falha — protótipo ignora, produção trata explicitamente

2

🔀 Configurando fallbacks no OpenRouter

O que é

Fallbacks no OpenRouter são a forma mais simples de resiliência — uma linha de configuração que protege contra indisponibilidade de provedor sem nenhuma mudança no código do Hermes.

Por que aprender

⚙️ Configuração de fallback para o Worker

{

"model": "deepseek/deepseek-chat",

"route": "fallback",

"models": [

"deepseek/deepseek-chat",

"mistral/mistral-large",

"meta-llama/llama-3.1-70b-instruct"

]

}

Se o modelo primário (deepseek) retornar erro ou timeout, o OpenRouter tenta automaticamente o próximo na lista. O Hermes vê apenas um resultado — o fallback é transparente.

💡 Escolhendo os modelos de fallback

Para o Worker: escolha modelos com capacidade de raciocínio similar ao primário e custo comparável. O fallback deve produzir output utilizável, não apenas evitar o erro. Para o Crítico: o fallback deve ter o mesmo rigor — um Crítico mais permissivo vai aprovar outputs que o primário reprovaria.

Conceitos-chave

Array de fallback

Lista de modelos em ordem de preferência — o primeiro disponível é usado

Transparência para o Hermes

O Hermes não sabe qual modelo foi usado — vê apenas o resultado final

Fallback para mesmo papel

Worker fallback deve ser outro modelo capaz de executar trabalho de Worker, não um modelo genérico

Configuração única

Uma linha de configuração no OpenRouter — sem mudança no código do Hermes ou nos prompts

3

📝 Fallbacks no prompt — instruções defensivas para o Worker

O que é

Instruções defensivas tornam falhas visíveis e nomeadas. PARTIAL_DELIVERY e BRIEFING_CONFLICT são muito mais fáceis de diagnosticar do que um output silenciosamente incompleto.

Por que aprender

📋 Sinais defensivos para o Worker

PARTIAL_DELIVERY

Quando o Worker atingir o limite de contexto antes de completar todos os ângulos:

PARTIAL_DELIVERY: 2 de 4 ângulos completos. Ângulos 3 e 4 não iniciados.

BRIEFING_CONFLICT

Quando o briefing contiver informações contraditórias que impedem a execução:

BRIEFING_CONFLICT: O objetivo requer [X] mas a restrição impede [Y]. Esclarecer antes de prosseguir.

MISSING_CONTEXT

Quando o briefing referenciar dados ou informações não fornecidas:

MISSING_CONTEXT: O briefing menciona [Z] mas os dados de [Z] não foram fornecidos.

Conceitos-chave

PARTIAL_DELIVERY

Falha de contexto nomeada — permite retomada parcial sem reiniciar do zero

BRIEFING_CONFLICT

Contradição no briefing identificada antes de executar trabalho inútil

Ângulo incompleto vs ausente

Um ângulo ausente é recuperável. Um ângulo truncado no meio é trabalho perdido e confuso

Falha nomeada vs silenciosa

Um sinal explícito permite diagnóstico e recuperação — silêncio não permite nenhum dos dois

4

⛔ Limites de retry — quantas vezes tentar antes de parar

O que é

Limites de retry são o freio de segurança do sistema. Sem eles, um loop mal configurado pode rodar por horas sem progressão — consumindo créditos sem produzir resultado.

Por que aprender

📋 Dois tipos de limite de retry

Loop Worker-Crítico (qualidade)

Se o Crítico retornar REVISE com o mesmo problema pela terceira vez consecutiva, o Worker sinaliza STUCK e escala para o Condutor.

Limite: 3 reprovações consecutivas com mesmo motivo

Falha de API (infraestrutura)

Para erros 429, 500, ou timeout: retry automático máximo 3 vezes com backoff exponencial antes de escalar.

Backoff: 1s → 2s → 4s → desistir

⚙️ Backoff exponencial — por que funciona

1sPrimeira tentativa. Rate limit pode ser temporário — uma pausa curta pode resolver.
2sSegunda tentativa. Dá tempo para o servidor recuperar sem sobrecarregar ainda mais.
4sTerceira tentativa. Pausa suficiente para a maioria dos rate limits temporários resetarem.
Se ainda falhar após 3 tentativas, o problema provavelmente não é temporário — escalar para o Condutor ou acionar fallback de modelo.

Conceitos-chave

Três tentativas como limite

O padrão da indústria para falhas transitórias — equilibra persistência e custo

STUCK como sinal de escalada

O Worker não tenta resolver sozinho indefinidamente — escala quando preso

Backoff exponencial

Cada retry com espera maior — evita bombardear um servidor já sobrecarregado

Loop sem progressão

O sinal que indica que o problema não é de execução mas de configuração — escalar, não persistir

5

💾 Checkpoints — salvando estado parcial em tarefas longas

O que é

Checkpoints transformam falhas de tarefa longa de catástrofe em inconveniência. Sem eles, qualquer interrupção joga fora todo o trabalho feito.

Por que aprender

📋 Instrução de checkpoint para o Worker

"A cada 5 ângulos completados:

1. Escreva o seguinte antes de continuar:

CHECKPOINT: [X] de [Total] ângulos completos

2. Inclua os ângulos completos até agora

3. Então continue com o próximo lote

Se a tarefa for interrompida após um checkpoint,

o trabalho pode ser retomado a partir desse ponto."

💡 Quando usar checkpoints

Use checkpoints quando a tarefa tiver: mais de 30 minutos de execução esperada, mais de 20 iterações do loop, ou mais de 10 ângulos para explorar. Para tarefas menores, o overhead de checkpoint não vale o benefício.

Conceitos-chave

CHECKPOINT como protocolo

Formato padronizado que permite ao Condutor retomar de onde parou

A cada 5 ângulos

Frequência de checkpoint que equilibra overhead e granularidade de recuperação

Retomada parcial

Com checkpoint, uma interrupção perde no máximo 5 ângulos — não o trabalho inteiro

Catástrofe vs inconveniência

A diferença entre reiniciar do zero vs retomar do checkpoint

6

🔧 Recuperação manual — como retomar uma tarefa interrompida

O que é

Saber recuperar uma tarefa interrompida salva o trabalho já feito e o custo já consumido. Sem esse processo, toda interrupção resulta em desperdício.

Por que aprender

1

Verificar o último estado nos logs do Hermes

hermes logs --last 20 — qual foi o último evento antes da interrupção? Qual modelo estava respondendo? O que estava fazendo?

2

Identificar o último checkpoint no output parcial

Procurar por CHECKPOINT: no output parcial. Esse é o ponto de retomada — todo trabalho anterior ao checkpoint está completo e válido.

3

Construir o prompt de continuação

Incluir: o briefing original, os ângulos já completos do checkpoint, e a instrução "continue a partir do ângulo X — os anteriores já foram completados e estão incluídos acima".

4

Avaliar custo consumido antes de reiniciar

Quanto já foi gasto na tarefa? Se o custo já consumido supera o valor esperado do resultado, avaliar se vale retomar ou abandonar.

Conceitos-chave

Log como fonte de estado

O log do Hermes é a fonte de verdade sobre o que aconteceu antes da interrupção

Prompt de continuação

Um prompt que inclui o contexto do checkpoint e instrui a continuar de onde parou

Custo consumido vs valor recuperável

A decisão de retomar ou abandonar baseada em custo já gasto vs valor esperado

Abandonar vs recomeçar

Às vezes é mais eficiente reiniciar com um briefing melhorado do que retomar um checkpoint antigo

7

🧪 Testando resiliência — simulando falhas

O que é

Testar resiliência em condição controlada revela problemas antes de eles aparecerem em produção. É a diferença entre descobrir que o fallback não funciona durante um teste vs durante uma tarefa crítica às 3h da manhã.

Por que aprender

1

Simular falha de modelo

Configure o modelo primário como um modelo inexistente (ex: test/modelo-inexistente). Verifique se o fallback é acionado automaticamente e qual modelo é usado no lugar.

2

Testar BRIEFING_CONFLICT

Envie um briefing com instruções contraditorias deliberadas ("faça X" e "não faça X" no mesmo briefing). Verifique se o Worker sinaliza BRIEFING_CONFLICT antes de executar.

3

Forçar STUCK

Envie um briefing impossível de satisfazer (ex: "produza uma análise usando dados que são secretos e não estão disponíveis"). Verifique se o Worker escala para o Condutor com STUCK após 3 tentativas.

4

Testar recuperação de tarefa interrompida

Inicie uma tarefa longa com checkpoints, interrompa manualmente no meio, e siga o processo de recuperação. Verifique se a retomada a partir do checkpoint funciona corretamente.

💡 Quando fazer esses testes

Antes de confiar o sistema para qualquer tarefa crítica overnight. Um conjunto de 4 testes leva cerca de 30 minutos e pode economizar horas de diagnóstico posterior. Refaça os testes sempre que mudar a configuração de modelos ou fallbacks.

Conceitos-chave

Modelo inexistente como teste

A forma mais simples de simular falha de provedor e verificar se fallback funciona

Briefing contraditório

Testa se o Worker detecta problemas antes de executar trabalho inútil

STUCK forçado

Verifica se o mecanismo de escalada funciona antes de depender dele em produção

Validação antes de produção crítica

O momento certo de descobrir problemas — antes, não durante uma tarefa crítica

Resumo do Módulo

Quatro tipos de falha — indisponibilidade, sobrecarga, rate limit e qualidade — cada um com estratégia diferente
Array de fallback no OpenRouter — uma linha de configuração que protege contra indisponibilidade de provedor
PARTIAL_DELIVERY e BRIEFING_CONFLICT — sinais nomeados que tornam falhas visíveis e recuperáveis
3 retries com backoff exponencial — 1s, 2s, 4s — o padrão para falhas transitórias de API
CHECKPOINT a cada 5 ângulos — transforma interrupção de catástrofe em inconveniência recuperável
4 testes de resiliência — verificar fallback, BRIEFING_CONFLICT, STUCK e recuperação antes de confiar em produção crítica

Próximo Módulo:

3.6 — Expandindo o Pantheon — Novas personas e skills