Hermes Agent v0.20.5
Visão Geral
v0.20.5 — The Housekeeping Release. Lançada em 19 de agosto de 2026. ~323 PRs mesclados · ~746 commits · ~1.250 arquivos alterados (+111.500 / −20.701) desde a v0.20.4.
Esta janela não tem um único recurso de destaque — ela conclui uma pilha de coisas que estavam pendentes há muito tempo. A principal novidade é que os group chats do Bot Mode finalmente aceitam arquivos: PDFs, imagens e anexos diversos via drag & drop, vistos por todos os bots que respondem ao turno; conversas mais antigas são dobradas em resumos de uma linha para que as salas parem de rolar infinitamente; e os avatares se tornam rostos blob determinísticos, desenhados a partir do nome do agente, com quatro novas silhuetas. Para o desenvolvimento do dia a dia, hermes worktree list/prune dá aos fluxos multi-agente um canal seguro e supervisionado para recuperar worktrees acumulados e branches mesclados; hermes update --plan e recibos de atualização estruturados tornam “o que realmente aconteceu durante a atualização” auditável pela primeira vez; os cron jobs ganham memória persistente como qualquer outro agente e esforço de raciocínio por job; e opencode-free se torna um modelo gratuito genuinamente sem chave — sem variável de ambiente, sem conta, aparecendo direto em /model e no seletor do desktop.
Esta é uma patch release, então as notas oficiais são breves e a documentação curada completa chega com a v0.21.0. Esta página cobre as partes mais valiosas da janela.
Destaques
1. Group chats do Bot Mode: arquivos dentro, mensagens antigas dobradas
Os group chats costumavam ser apenas texto; agora arquivos são cidadãos de primeira classe: as salas aceitam PDFs, arquivos e drag & drop, e todo bot que responde ao turno vê os anexos (#97b41f8cf, #b359db72e). Salas longas param de rolar para sempre — conversas mais antigas são dobradas automaticamente em resumos de uma linha (“▸ API design … 14 respostas · há 2h”) enquanto a conversa mais recente permanece totalmente aberta (#8505559fa).
Os avatares também ganharam cara nova: os avatares do Bot Mode agora usam por padrão rostos blob desenhados deterministicamente a partir do nome do agente (mesmo nome, mesmo rosto, sempre), com quatro novas silhuetas do blobatar 2.0.0 (#a77ee88ce, #cb0fd836a).
2. hermes worktree list/prune — recuperação segura de worktrees acumulados
Fluxos multi-agente (hermes -w / /worktree new) acumulam dezenas de trees e centenas de branches mesclados em .worktrees/ com o tempo. O pruner silencioso de inicialização só toca em trees limpas e totalmente mescladas; todo o resto fica para sempre. Agora existe uma recuperação explícita, com dry-run primeiro:
hermes worktree list # audit: one row per tree — age, size, verdict, reason
hermes worktree prune --dry-run # show the plan, change nothing
hermes worktree prune # reclaim safe trees + merged branches
As invariantes de segurança são idênticas às do pruner de inicialização: modificações rastreadas nunca são excluídas, em qualquer idade, commits únicos não enviados nunca são excluídos (a equivalência de patch do git cherry decide o que é “único”), trees com lock ativo ficam intocadas, um branch só é excluído depois que a remoção do worktree teve sucesso, e rascunhos apenas não-rastreados são arquivados em ~/.hermes/archive/worktree-prune/ antes que a tree seja eliminada — lixo sai, trabalho vivo fica (#f309f92d3).
3. hermes update --plan + recibos estruturados — atualizações auditáveis
O updater agora prova seu resultado em vez de presumi-lo (#0aecadc17, #1d74833d8):
hermes update --plan: somente leitura. Lista o tipo de instalação (git/docker/nix), cada serviço Hermes em execução em todos os profiles com seu supervisor e a versão do código em execução, e como cada um será reiniciado. Seguro de rodar em uma frota ativa.- Recibos estruturados: todo
hermes updategrava um registro JSON legível por máquina — o que descobriu, fez, pulou (e por quê) — em<HERMES_HOME>/logs/update_receipts/. Após a fase de reinício, ele lê ogateway_state.jsonde cada profile, compara ocode_shade cada gateway ativo com o HEAD do checkout recém-atualizado e imprime uma matriz de versões da frota — frotas com versões mistas (a classe #88654) viram um relatório alto e acionável em vez de um estado latente.
4. Cron jobs têm memória — e esforço de raciocínio por job
Os cron jobs costumavam ser criados com skip_memory=True e uma negação dura do memory toolset, então MEMORY.md/USER.md nunca eram carregados e a ferramenta de memória era removida até dos enabled_toolsets por job. Os agentes de cron agora rodam com memória persistente habilitada como qualquer outro agente (#ef04d846e): os jobs podem ler — e atualizar — sua memória persistente.
Cada job também pode fixar seu próprio esforço de raciocínio, independente do agent.reasoning_effort global e dos reasoning_overrides por modelo (#4e1dd1a74):
# heavy scheduled analysis at high, cheap recurring job at minimal — global default untouched
hermes cron create "0 7 * * *" --reasoning-effort high --prompt "Deep weekly repo-trend analysis"
hermes cron create "every 5m" --reasoning-effort minimal --prompt "Health check and report"
Níveis: none/minimal/low/medium/high/xhigh/max/ultra. Níveis que um modelo não suporta são limitados pelo provider no momento da requisição (fixar xhigh em um modelo que limita em high roda em high). Passe uma string vazia ao editar para limpar a fixação.
5. opencode-free: um modelo gratuito verdadeiramente sem chave
opencode-free agora é totalmente sem chave — sem variável de ambiente, sem conta, wire anônimo (#ca06b8768) — e a sincronização de drift do catálogo puxa os modelos gratuitos ao vivo do OpenRouter para a lista enquanto remove slugs mortos (#624723130). Providers sem chave contam como autenticados em todo lugar: opencode-free aparece em /model e nos seletores do desktop sem configuração alguma (#2a2307e68).
hermes model # pick opencode-free — no key required
6. Disciplina de execução e proteções contra travamentos em runtime
Um lote de endurecimento de “disciplina de execução” vindo dos achados da avaliação Composio: o cancelamento de background-review é sincronizado com a prioridade correta de foreground (#37da0d4d5, #b883756b7), o esforço de raciocínio Ox Alpha chega ao wire limitado entre os providers zen e free (#d4d04098a), e a decoração de cache-control do prompt-caching é idempotente (#0fc52b055). Nada chamativo para demonstrar — mas tarefas de longa duração travam menos e gastam tokens de forma mais previsível.
Melhorias
- Performance do desktop: hidratação do Bot Mode paint-first, spinners do compositor, React Compiler nos dois renderers — o desktop fica mais rápido e mais responsivo.
- Edição de mensagens em sessões antigas não falha mais (profile DB + ordinal relativo à janela, #02e270a47).
- Rascunhos de DM no Telegram mantêm a formatação rica após o streaming (também para envios persistentes novos, #790c85014, #216c98aae).
- O bootstrap do Docker stage2
API_SERVER_KEYnão depende mais da existência de.env(#7a17a1b8a). - Bot Mode: turnos longos de membros em group chats não são mais perdidos (#88885 follow-ups), o roteamento de grupos entre máquinas sobrevive a trocas de conexão (#88921), e um bot pode ficar em vários group chats ao mesmo tempo (#88980).
Correções
- A compactação nativa preserva as mensagens de resumo de compressão durante a poda pré-checkpoint (#fb27614ad).
- Cron jobs agendados não enfiam mais MEMORY.md no prompt do job (semântica final: jobs podem ler/gravar a memória persistente, mas o lado do agendador não faz injeção extra; #fc9cbc872).
- Sincronização de drift do catálogo: slugs gratuitos mortos removidos, modelos gratuitos do OpenRouter ativos puxados (#624723130).
- Gateway: a exclusão do serviço orphan-reaper foi ampliada para toda a frota launchd; flags ps compatíveis com BSD + descoberta de pid launchd em todos os profiles (#42bd567a8, #d8047c303).
- O adaptador OpenAI tolera objetos de resposta esparsos; o relay desenrola streams concluídos de forma lazy e usa nomes canônicos de operações gerenciadas (#85581, #85579, #85582).
Atualização
hermes update
Após atualizar, rode hermes doctor para verificar a instalação e reinicie o gateway (hermes gateway) para que as mudanças de plataforma entrem em vigor. Para ver o que a próxima atualização vai tocar antes de rodá-la: hermes update --plan.