Um único comando abre uma sessão inteira: hermes chat -q agora permanece interativo em um TTY

Você é do tipo que gosta do Hermes embutido em todo launcher: aperta um atalho, um terminal abre com um prompt pré-preenchido, dá enter e o trabalho começa. Esse caminho costumava estar bloqueado — hermes chat -q "organize este diretório" respondia obedientemente uma pergunta e saía, e a parte de “continuar perguntando depois da resposta” simplesmente não existia. Querer uma sessão interativa significava rodar -q uma vez para salvar a sessão e depois hermes chat -r para retomá-la — dois passos, frágeis e frequentemente perdendo contexto. A mudança mesclada em 28 de agosto (PR #97121) arranca esse caminho antigo: em um TTY real, o -q agora semeia uma sessão interativa ao vivo, a primeira mensagem entra literalmente, a resposta não encerra a sessão e você continua conversando.
Por que era tão chato antes
-q/--query foi projetado como uma “consulta de uso único”: você passa um prompt, o Hermes responde e sai. Isso o tornava perfeito para scripts e automação — hermes chat -q "resuma os commits de hoje" imprime a saída e termina, sem ocupar terminal.
O custo: para ter “entrar em modo interativo com uma pergunta pré-semeada” (uma experiência que outros agentes de codificação têm há tempos), você precisava montar dois passos na mão:
# Passo um: rode uma vez, capture o arquivo de sessão
hermes chat -q "tidy up this directory" > /tmp/usage.txt
# Passo dois: retome essa sessão para continuar conversando
hermes chat -r /tmp/usage.txt
Chato e frágil: o arquivo intermediário é fácil de perder, e a sessão retomada nem sempre carregava o contexto que você queria. Projetos de terminal agente dirigido por prompt como o Omarchy estavam literalmente prestes a construir um workaround para isso (basecamp/omarchy#8705) — e então a CLI oficial ganhou o padrão embutido.
Novo comportamento: -q semeia uma sessão ao vivo em um TTY
Depois da mudança, em um TTY real:
hermes chat -q "fix this bug in the parser"
A primeira mensagem é enviada literalmente como o turno de abertura da sessão (um sentinela _SeededQueryMessage), e então você cai no loop interativo normal — continue digitando, faça follow-ups, use comandos slash, exatamente como se tivesse aberto hermes chat.
“Literalmente” é a palavra-chave: a mensagem semeada nunca é interpretada. Ela não será tratada como comando slash, não disparará escapes de shell !, não fará substituição de comando $(...), não será tratada como um drop de arquivo. Ela segue a mesma semântica existente do --oneshot: o que você der ao modelo é o que ele recebe, limpo e simples.
Tanto a CLI clássica quanto o caminho TUI suportam isso — o lado TUI passa pelo fluxo de envio STARTUP_QUERY → submitLite, com comportamento idêntico.
Quer o comportamento antigo? --oneshot diz isso explicitamente
Se você realmente quer a semântica de uso único de responder-e-sair, a nova flag hermes chat --oneshot (nome interno oneshot_exit) é o nome oficial do comportamento antigo:
hermes chat --oneshot -q "answer only this one question"
Sem --oneshot:
- TTY real +
-q→ semeia uma sessão interativa (novo comportamento); - não-TTY (pipes, scripts) → degrada automaticamente para responder-e-sair, então a automação nunca trava;
- com
-Q/--quiet→ também responde-e-sai, o modo quiet não é afetado.
Em outras palavras: scripts e automação não são afetados de forma alguma; só quando um humano está sentado num terminal o comportamento muda — que é exatamente o objetivo dessa mudança.
Usos típicos
Launchers / atalhos: associe hermes chat -q "abra a sessão de ontem e continue o que não terminamos" a um atalho — o terminal que abre já é uma sessão interativa pronta para trabalhar.
Fluxos pré-semeados: escreva um script wrapper que recebe um diretório como argumento, monta um prompt e faz exec em hermes chat -q "$PROMPT" — o usuário ganha uma sessão que já sabe o que fazer, em vez de um prompt frio e vazio.
Automação intocada: scripts cron e CI podem continuar usando hermes chat -q ... | grep ... ou -Q exatamente como antes.
Atualizando e verificando
Essa mudança foi mesclada em 28 de agosto e atualmente vive no main upstream — ainda não chegou a uma tag de release. Para usá-la agora, você precisa buildar a partir do código-fonte ou do main. Quando ela sair na próxima release, hermes update resolve.
Verificação fácil: rode hermes chat -q "Quanto é 1+1?" num terminal. Se o prompt permanecer e você puder continuar digitando depois da resposta, o novo comportamento está ativo; se ele sair de volta para o shell, você está numa versão antiga.
Leitura adicional
- Quer a superfície completa de comandos do Hermes chat? Veja nossa referência de comandos hermes-chat;
- Curtiu salvar/retomar/exportar sessões? Leia o guia de exportação de sessões;
- Planejando fluxos de automação? Confira o guia completo de automação cron.