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.: fableclaude-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-partial agora 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.