Pular para o conteúdo principal

Documentação oficial desta página · v0.20.6

Heartbeat de sessão (/heartbeat)

O /heartbeat dá à sessão atual uma instrução recorrente. Sempre que a sessão está ociosa e o intervalo se cumpre, o prompt dispara como um turno normal do usuário — mesma conversa, mesmo contexto, mesmo cache de prompt.

/heartbeat every 10m Confira o deploy e me avise se algo relevante mudou

Inspirado no /heartbeat do Prime-Agent. A adaptação do Hermes mantém as garantias do fluxo de mensagens: o batimento é injetado só entre turnos (nunca no meio de uma execução), como uma mensagem comum de usuário.

Heartbeat ou cron?​

Parecem a mesma coisa, mas servem a trabalhos diferentes:

/heartbeathermes cron
Roda emEsta conversa — contexto completo, com memória da discussãoUma sessão isolada nova a cada disparo
Sobrevive a reinício do processoO estado sobrevive (SessionDB); o disparo volta quando a sessão for usada de novoSim — agendador totalmente durável
QuantosUm por sessãoTarefas ilimitadas
Melhor para"Fique de olho em X nesta conversa enquanto trabalhamos"Tarefas permanentes, relatórios, vigias, entregas

Regra prática: se o prompt recorrente precisa do contexto da conversa, use /heartbeat. Se é uma tarefa autocontida, use cron.

Comandos​

ComandoO que faz
/heartbeat every <intervalo> <prompt>Define (ou substitui) o batimento da sessão. Intervalos: 90s, 10m, 2h, 1d (mínimo de 60s).
/heartbeat ou /heartbeat statusMostra o batimento, o intervalo e quanto falta para o próximo.
/heartbeat pausePara de disparar, sem apagar.
/heartbeat resumeRetoma (reancorando o cronômetro — sem disparo atrasado na hora).
/heartbeat clearRemove o batimento.

/hb é apelido. Funciona na CLI e nas plataformas de gateway (no Slack, use /hermes heartbeat …).

Detalhes de comportamento​

  • Só quando ocioso. Um batimento nunca interrompe um turno em andamento. Se o agente estiver ocupado na hora, ele dispara na próxima verificação de ociosidade.
  • Disparos perdidos se juntam. Se a sessão ficou ocupada (ou o processo não estava rodando) por vários intervalos, você recebe um turno de batimento, não uma fila. O cronômetro reancora a cada disparo.
  • Mensagem do usuário tem prioridade. Uma mensagem na fila sempre vem primeiro; o batimento espera a fila esvaziar.
  • Seguro para o cache. O prompt injetado é uma mensagem comum de usuário. Sem alterar o prompt de sistema, sem trocar conjunto de ferramentas.
  • Persistência. O estado fica em SessionDB.state_meta, sob a chave heartbeat:<id_da_sessão> — sobrevive ao /resume e acompanha as rotações de sessão por compressão de contexto. Para disparar, o processo dono (a sessão de CLI ou o gateway) precisa estar rodando; para agendamentos que precisam sobreviver a tudo, use cron.
  • Proteção contra inventar trabalho. O prompt injetado diz ao agente para responder curto e parar quando nada relevante mudou, para um batimento ocioso não gerar tarefa à toa.

Exemplo​

Você: /heartbeat every 15m Veja se o CI do PR #1234 terminou; resuma o resultado quando terminar

♥ Heartbeat set (every 15m): Veja se o CI do PR #1234 terminou; ...

[15 minutos com você fazendo outras coisas na mesma sessão]

Hermes: [Heartbeat — recurring instruction, fires every 15m]
💻 gh pr checks 1234 (1.2s)
O CI ainda está rodando (14 de 37 checagens concluídas). Nada a relatar por enquanto.

Quando a resposta parar de mudar, limpe com /heartbeat clear — ou deixe montando guarda.