Hermes v0.20.1: 18 Plataformas e 13 Ganhos de Eficiência Ocultos que Você Provavelmente Perdeu

Ontem você rodou hermes update, o terminal imprimiu “Atualizado para v0.20.1”, e foi só isso. Faz sentido — o v0.20.1 é um patch release discreto: as notas oficiais têm poucas linhas, dizendo que a documentação completa “chegará com o v0.21.0”.
Mas por trás desse silêncio estão 656 PRs mesclados, 1.444 commits e 481 issues fechadas. Escondidos ali estão 13 ganhos de eficiência que as notas de versão nunca divulgam — coisas que economizam seu tempo e dinheiro todos os dias. Vamos desenterrar todos eles.
A mudança de destaque: a lista de plataformas cresceu para 18
Ao longo da janela do v0.20.x, a documentação oficial de mensageria passou a cobrir 18 plataformas, todas servidas por um único processo de gateway:
Telegram, Discord, Slack, WhatsApp (pessoal + Cloud API), Signal, Email, Matrix, IRC, QQ, Yuanbao, Feishu, Weixin, iMessage (BlueBubbles), LINE, DingTalk, Google Chat e SMS.
Não importa em qual plataforma você esteja, o hermes gateway executa um único processo e as conversas fluem perfeitamente entre elas.
Os 13 ganhos de eficiência ocultos
A. Instalações mais rápidas e confiáveis (2)
1. A instalação no Windows não trava mais para sempre (#85529 / #85539 / #81390)
O estágio “Installing Node.js dependencies” do instalador do Windows podia travar indefinidamente — o npm install e o download do Chromium não tinham limite de tempo, e um usuário o deixou rodando a noite inteira (um timer de estágio marcando 744:38). Agora: cada etapa tem timeout, falhas falham alto em vez de fingir sucesso, “Already up to date” não pula mais o reparo de dependências quebradas, e o instalador consegue se recuperar após uma queda.
2. A atualização do catálogo de modelos não bloqueia mais caminhos críticos (#85555)
A atualização do models.dev agora usa GETs condicionais com ETag: ela só baixa de novo quando o conteúdo realmente mudou, e um caminho quente sem rede mantém a inicialização e a troca de modelos livres de espera pela rede.
B. Economize tokens, economize dinheiro (2)
3. O prompt caching da Anthropic voltou silenciosamente (#85554)
Se você usa um endpoint customizado compatível com Anthropic (api_mode: anthropic_messages), o prompt caching pode ter sido perdido silenciosamente durante a janela do v0.20.0 — agora cada modelo pode declarar prompt_caching: true|false, e até aliases simples (ex.: fable → claude-fable-5) voltam a receber breakpoints de cache_control. Conversas longas têm economia imediata de tokens.
4. O cache de context_length não pode mais ser “envenenado” (#85507 / #85509 / #85506)
Uma entrada de cache corrompida (context_length: 0) costumava envenenar toda a cadeia de resolução, entregando um 0 permanente ao compressor e a todas as exibições. Agora: valores não positivos são recusados na escrita, o cache é gravado atomicamente, e subnotificações antigas de 32K (a classe MiniMax/Kimi) são descartadas e re-resolvidas. Seus números de janela de contexto voltaram a ser confiáveis.
C. Retomada de sessão (1)
5. Retomar uma sessão restaura o modelo que você realmente usou (#85261 / #85558)
O hermes --resume ou /resume costumava cair silenciosamente no padrão da config — você podia estar no Grok ontem à noite e retomar em outra coisa sem notar. Agora o modelo, o provedor e o endpoint reais da sessão são restaurados, e as trocas do /model persistem a rota completa na linha da sessão.
D. Experiência de entrada CLI / desktop (3)
6. Entrada CLI congelada agora se auto-repara (#85630)
Quando o terminal voltava a derivar para o cooked mode, a CLI “parava de aceitar entrada” — antes, apenas um resgate externo com stty funcionava. Agora a CLI detecta o desvio e se auto-repara.
7. Suggestion pills, três correções de profundidade (#85661 / #85698 / #85091)
- As pills agora esperam você terminar uma palavra antes de disparar (sem mais “usar skill: hermes-agent” aparecendo só porque você mencionou um repositório);
- O diretório de conexão do MCP mais que dobrou (antes cobria apenas 8 fornecedores);
- O fantasma do “clicou uma vez e o botão morreu” sumiu.
8. Digitação durante prompts bloqueantes não é mais perdida (#85045 / #84971)
No desktop, mensagens digitadas enquanto um diálogo de confirmação está aberto agora rodam como o próximo turno, e prompts enfileirados se fundem ao turno ativo — sem mais “eu com certeza digitei isso, por que nada aconteceu?”
E. Gateway / plataformas (3)
9. Alertas de cron começaram a dizer a verdade (#85536 / #85508)
Falhas em script jobs costumavam ser reportadas como “erros de provedor” (e 429s perdidos eram atribuídos errado). Agora, falhas de no_agent e de scripts, timeouts, cadeias de fallback e desvios são reportados honestamente; alertas de desvio disparam uma vez por job, em vez de uma vez por tick.
10. Voz/wake não trava mais o gateway inteiro (#85438)
voice.toggle / record / tts e wake.start / status agora são roteados por pool — uma instalação preguiçosa síncrona de STT (faster-whisper, ~50MB, timeout de 300s) não consegue mais bloquear envios WebSocket. Comandos de voz e respostas do modelo param de brigar pela mesma thread.
11. Live cards nativos no Slack (#85476)
Respostas no Slack agora transmitem como mensagens nativas de live-typing, com cards opcionais de progresso de plano/tarefa — você pode ver no que o agente está pensando e o quanto ele já avançou, direto no Slack.
F. Ferramentas e segurança de dados (2)
12. Geração de imagens não ignora mais seu provedor (#85520)
O handler WebSocket do image.generate costumava chamar a leaf do FAL embutida diretamente, ignorando silenciosamente provedores de imagem registrados por plugins e o roteamento do Krea — um usuário de plugin recebeu resultados errados por causa disso. Agora ele passa pelo dispatcher de provedores, então quem você configurou é quem é usado.
13. state.db se auto-repara: sobrevive até a uma troca do arquivo do banco (#84885 / #84886 / #84881)
- Se o arquivo do banco subjacente for substituído sob uma conexão ativa, um reconnect one-shot de auto-reparo com limite entra em ação em vez de travar até o restart;
- Erros EIO transitórios são repetidos 4×;
- O
hermes sessions recover --allow-partialagora recupera linhas finais que eram descartadas silenciosamente, com uma trilha lost_and_found como último recurso; - Checkpoints de WAL são uniformemente PASSIVE, nunca TRUNCATE.
(Isso dá continuidade ao endurecimento do incidente de amnésia de 798 mensagens — mais uma camada de defesa no nível do banco de dados.)
Como atualizar
hermes update
Após atualizar, rode hermes doctor para confirmar que está tudo saudável e reinicie o gateway (hermes gateway) para que as mudanças de plataforma tenham efeito.
Para encerrar
O v0.20.1 é o release do “cavalo de batalha silencioso”: sem alarde, mas 656 PRs exatamente com as correções que você vai precisar uma hora. Dezoito plataformas, mais esses 13 ganhos de eficiência — este é um release em que todo usuário de longo prazo deveria estar.
Quer se aprofundar? Veja as referências de comando do hermes update, hermes sessions, hermes cron e hermes model; o release principal anterior está coberto nas notas do v0.20.0.