Pular para o conteúdo
← artigos
Hermes AgentHarness EngineeringClaude CodeAI Agents

Hermes Agent para programar? Até o Hermes passa o repositório para o Claude Code

Um time com quem eu trabalho programa por um Hermes compartilhado no Slack. O código do próprio Hermes explica por que isso dói: o modo de coding e o gate de verificação ficam desligados no chat, e ele já vem com skills que passam o código para o Claude Code, o Codex e o OpenCode.

O Hermes Agent escreve código? Escreve. O seu time deveria programar por ele? Não. E o argumento mais forte contra isso nem é meu. Está no código-fonte do próprio Hermes.

O Hermes tem um modo de coding com instruções de engenheiro sênior, e os autores deixam esse modo desligado de propósito quando o agente fala com você pelo Slack, pelo Telegram ou pelo WhatsApp. Ele também já vem com skills, instaladas por padrão, cuja descrição de uma linha é “Delegate coding to Claude Code CLI”. Quem construiu o harness traçou a linha. Um time com quem eu trabalho passou por cima dela, e o que aconteceu depois virou uma aula de harness que vale registrar.

Um time que programa por um Hermes compartilhado

Um time com quem eu trabalho rodava o fluxo agêntico inteiro pelo Hermes. Uma instância, no notebook de uma pessoa, na chave de API dessa pessoa, ligada 24 horas. O squad mandava prompt num canal compartilhado do Slack, e do outro lado saíam rascunhos e diffs. Logo ninguém mais conseguia ler a thread.

A culpa não é do time. Eles foram mais longe do que a maioria dos times com quem eu converso: skills no repositório, um AGENTS.md só, um juiz que dá nota para cada PRD com uma rubrica antes de um humano ler, um board que os próprios agentes movimentam. Essa parte é boa engenharia, e ela vai junto para qualquer harness. O harness é a parte que vai doer.

Eles já estão tirando a instância do notebook e levando para um pod no cluster Kubernetes da empresa. Isso resolve a chave e o notebook. Não resolve a superfície.

O Hermes Agent programa? O próprio código diz onde

Três coisas no código resolvem a discussão.

O modo de coding. Em agent/coding_context.py, o Hermes decide uma vez por sessão se está programando. Quando está, ele carrega um brief que começa com “You are a coding agent pairing with the user inside their codebase. Operate like a careful senior engineer.” O brief manda o modelo ler antes de editar, mudar arquivo pelas tools em vez de colar código no chat, e rodar os testes, o linter e o build e confirmar que passam antes de dizer que terminou. É um bom brief. Ele carrega no CLI, na TUI, no app desktop e em editores via ACP, e só quando o diretório de trabalho tem cara de projeto de código. O comentário em cima dessa lista de superfícies diz com todas as letras: “messaging platforms are deliberately absent” (as plataformas de mensagem ficaram de fora de propósito). O padrão, agent.coding_context: auto, segue essa regra. Dá para forçar com on. Os autores escolheram não deixar isso como padrão.

O gate de verificação. O Hermes também consegue obrigar o agente a verificar depois de editar código sem prova recente de que os testes passam. A configuração é agent.verify_on_stop, e ela vem desligada. Se você liga, escolhe entre true, que roda em todo lugar, e auto, o modo que olha a superfície: ligado no CLI, na TUI e no desktop, desligado no Slack, no Telegram, no WhatsApp e em qualquer outra plataforma de chat, “where the verification summary would reach a human as chat noise” (onde o resumo da verificação chegaria a um humano como ruído de chat). Leia essa frase pensando no canal do seu time. No chat, rodar os testes é ruído. Numa sessão de código, é o ponto principal.

A passagem de bastão. Em skills/autonomous-ai-agents/, instaladas por padrão, o Hermes traz skills para três harnesses de código. As descrições: “Delegate coding to Claude Code CLI (features, PRs).” “Delegate coding to OpenAI Codex CLI (features, PRs).” “Delegate coding to OpenCode CLI (features, PR review).” A skill do Claude Code prefere o print mode, uma execução única de claude -p no diretório do projeto, com uma lista de tools liberadas e um limite de turnos. E ela diz que o modo sem confirmação só é aceitável “only in a throwaway worktree or isolated container” (num worktree descartável ou num container isolado). Para modelos da OpenAI existe um runtime opcional que vai além: o Codex roda o loop de tools e a sandbox, e o Hermes “becomes the shell around it”, vira só a casca em volta.

O mesmo Hermes, duas superfícies

Mesmo binário, mesmo modelo. O harness muda com a superfície, e os autores do Hermes afinaram o lado de código para a coluna da esquerda.
Na v0.21.5CLI, TUI, desktop, editor via ACPSlack, Telegram, WhatsApp
Modo de coding (auto)Ligado num workspace de códigoDesligado de propósito
Gate de verificação (opcional, modo auto)LigadoDesligado: o resumo seria ruído de chat
Diretório de trabalhohermes -w dá um git worktree próprio para cada sessãoUm diretório só, o terminal.cwd do config
Quem lê a saídaA pessoa no tecladoUm canal
Mesmo binário, mesmo modelo. O harness muda com a superfície, e os autores do Hermes afinaram o lado de código para a coluna da esquerda.

O harness é a descrição do cargo

Harness é todo o código em volta do modelo que transforma ele em agente, e todo harness tem quatro partes: o loop, as tools, o contexto e os controles. Um harness de código afina as quatro para um trabalho: um repositório, um diff, uma rodada de testes, uma pessoa aprovando o merge. Um harness de assistente afina as quatro para outro trabalho: uma agenda, um canal, uma memória que dura semanas. O Hermes é principalmente do segundo tipo. O modo de coding é os autores recortando um pedaço do primeiro tipo lá dentro e cercando esse pedaço para ele não chegar no chat.

Então, quando um squad programa pelo Slack, ele recebe o contexto e os controles do assistente aplicados a um trabalho de código. Sem brief de engenheiro sênior. Sem gate de verificação. Um diretório de trabalho só. A chave de uma pessoa. Nada dessa lista é problema de modelo. Coloque um modelo melhor e ele herda cada item. É o argumento inteiro de harness engineering: o modelo virou commodity, e é o harness que decide que trabalho o agente consegue fazer de verdade.

A thread ilegível era a spec

Quando a thread ficou comprida demais para ler, alguém do time levantou a solução óbvia: deixar o agente menos verboso. Eu defendi o contrário. A thread estava comprida porque estava guardando o contexto. Cada correção, cada “não, o outro endpoint”, cada decisão sobre o PRD estava lá. Isso é spec, morando no único lugar que ninguém lê duas vezes.

Calibrar o agente para falar menos ia deixar ele mais quieto e mais errado. A correção é antes. O contexto vai para o PRD, para o ticket e para o repositório antes de o agente começar. Quando o agente erra, a correção vai no ticket, onde ela pode virar aprendizado no repositório, e não mais uma resposta perdida no canal. É o trabalho que uma spec faz, e o chat tira esse trabalho dela sem ninguém perceber.

Eu falei isso numa revisão com o time: ficar conversando com o Hermes o dia todo, por si só, não faz ninguém entregar mais rápido nem melhor. Depende do que a conversa está substituindo.

O Kubernetes resolve a chave, não a superfície

O setup no notebook tem os problemas de governança que você imagina, e eu apontei cada um. A conta de tokens cai numa pessoa só. O agente roda fora do perímetro da empresa, sem sandbox e sem isolamento de rede. E quando essa pessoa sai de férias, o agente do squad vai junto.

Levar o Hermes para um pod resolve os três. A empresa paga, o pod é isolado, o agente sobrevive às férias. É o movimento certo, e ele não muda nada na tabela lá de cima. Entra Slack, sai código, modo de coding desligado. A correção de governança e a correção de harness são duas correções diferentes, e só uma delas está em andamento.

O Hermes despacha, um harness de código constrói

Fique com o Hermes. Dê para ele o trabalho para o qual ele foi feito, o loop de fora, e deixe um harness de código rodar o loop de dentro.

Loop de fora, loop de dentro

Entrada

Uma mensagem no Slack, um áudio no Telegram, um cron

  1. loop de foraHermes

    Lê o pedido, puxa contexto via MCP e registra a tarefa num lugar que o time enxerga: um ticket, um arquivo de spec, uma issue.

  2. loop de dentroHarness de código

    Claude Code, Codex, OpenCode ou pi, num worktree novo ou num container, lendo o AGENTS.md do repositório. As skills que vêm com o Hermes já fazem essa passagem.

  3. gateChecks

    Testes, lint e build rodam no CI, não como um resumo colado no chat.

  4. humanoReview

    Uma pessoa lê o diff no merge request e decide.

Saída

O canal recebe o link do merge request, não o diff.

Loop de fora, loop de dentro: fluxo de 4 etapas a partir de “Uma mensagem no Slack, um áudio no Telegram, um cron”, resultando em “O canal recebe o link do merge request, não o diff.”.

O meu próprio arranjo funciona assim. O Hermes roda na minha VPS. Eu mando um áudio no Telegram e ele abre uma issue no meu board de agentes via MCP. O código é escrito no Claude Code, no OpenCode ou no pi, num repositório, comigo lendo o diff. Eu não entrego uma feature branch para o Hermes.

Faça o Hermes delegar em vez de editar

  1. 01

    Peça uma execução delegada num worktree próprio, e um link de volta.

    O Hermes fica com a conversa e a memória. O harness de código fica com o repositório, os testes e as permissões dele. O canal recebe uma linha em vez de um diff.

    Digite isto

    Use a skill claude-code: num git worktree novo do repositório de billing, rode em print mode no ticket BILL-142, rode os testes, abra um merge request e me responda aqui com o link.
Faça o Hermes delegar em vez de editar: 1 regra, cada uma com o que digitar.

Se o seu time já programa pelo Hermes

  • Obrigatório:
    Mantenha o que é portátilSkills no repositório, um AGENTS.md, o repositório como fonte da verdade, o juiz no PRD. Hermes, Claude Code, Codex e OpenCode leem AGENTS.md, então nada disso se perde.
  • Obrigatório:
    Tire a spec da threadO contexto vai para o PRD e para o ticket antes da execução. Correção vai no ticket, não no canal.
  • Obrigatório:
    Coloque o código numa superfície de códigoUm harness de código num worktree ou num container. Não o gateway de mensagens.
  • Obrigatório:
    Transforme o Hermes no despachanteAs skills claude-code, codex e opencode que vêm com ele são a passagem de bastão. O Hermes volta com um link.
  • Obrigatório:
    Chave da empresa, máquina isoladaO pod resolve a conta, o perímetro e o problema das férias. Faça, e não confunda com a correção de harness.
  • Obrigatório:
    Ponha o gate no merge, não no chatTestes no CI e uma pessoa no merge request. O chat só fica sabendo do resultado.
Nessa ordem. O primeiro item é o que você mantém; o resto é o que você muda de lugar.

Hermes Agent para programar, respostas rápidas

O Hermes Agent programa?

Programa. Ele edita arquivos, roda shell e carrega um modo de coding com instruções de engenheiro sênior no CLI, na TUI, no app desktop e em editores via ACP, além de um gate opcional que obriga o agente a verificar o que editou. De propósito, esse modo fica desligado em superfícies de mensagem como Slack, Telegram e WhatsApp.

O Hermes Agent é um agente de código?

Não principalmente. O Hermes é um agente self-hosted que você deixa rodando, com cron, gateways de mensagem e memória entre sessões. Ele tem um modo de coding para as superfícies interativas e já vem com skills que delegam código para o Claude Code, o Codex e o OpenCode.

Hermes Agent ou Claude Code para programar?

Claude Code, ou outro harness de código como Codex, OpenCode ou pi. Use o Hermes para o trabalho em volta do código: ler canais, registrar a tarefa, despachar a execução e avisar o resultado.

O que é harness em IA?

É todo o código em volta do modelo que transforma ele em agente: o loop que chama o modelo, as tools que ele usa, o contexto que ele vê a cada turno e os controles do que ele pode fazer sem pedir. Claude Code, Codex, OpenCode, pi e Hermes são harnesses diferentes para o mesmo tipo de modelo.

O Hermes Agent consegue rodar o Claude Code?

Consegue. A skill claude-code que vem com ele controla o CLI do Claude Code e prefere uma execução única em print mode (claude -p) no diretório do projeto. Existem skills equivalentes para o Codex e o OpenCode, além de um runtime opcional do Codex app-server para modelos da OpenAI.

Como deixar o Hermes mais seguro se ele mexe em código?

Rode no CLI com hermes -w para cada sessão ganhar um git worktree próprio, ligue os checkpoints com --checkpoints, aponte o terminal para um backend de container em vez do local padrão e adicione um shell hook pre_tool_call: exit code 2 bloqueia a chamada.