Documentação oficial desta página · v0.20.6
Resolver problemas de cron
Quando uma tarefa de cron não se comporta como você esperava, siga estas verificações na ordem. A maioria dos problemas cai em uma de quatro categorias: horário, entrega, permissões ou carga de skills.
Tarefas que não disparam
Verificação 1: confirme que a tarefa existe e está ativa
hermes cron list
Procure a tarefa e confirme que o estado dela é [active] (e não [paused] ou [completed]). Se aparecer [completed], a contagem de repetições pode ter se esgotado — edite a tarefa para reiniciá-la.
Verificação 2: confirme que o agendamento está correto
Um agendamento mal formatado vira uma execução única em silêncio ou é rejeitado por completo. Teste a sua expressão:
| Sua expressão | Deve significar |
|---|---|
0 9 * * * | 9:00 todos os dias |
0 9 * * 1 | 9:00 de toda segunda-feira |
every 2h | A cada 2 horas a partir de agora |
30m | Daqui a 30 minutos |
2025-06-01T09:00:00 | 1º de junho de 2025 às 9:00 UTC |
Se a tarefa dispara uma vez e some da lista, o agendamento é de execução única (30m, 1d ou um carimbo de tempo ISO) — comportamento esperado.
Verificação 3: o gateway está rodando?
As tarefas de cron são disparadas pela thread de tique em segundo plano do gateway, que tica a cada 60 segundos. Uma sessão comum de conversa na CLI não dispara tarefas de cron automaticamente.
Se você espera que as tarefas disparem sozinhas, precisa de um gateway rodando (hermes gateway em primeiro plano, ou hermes gateway start para o serviço instalado). Para depuração pontual, você pode acionar um tique manualmente com hermes cron tick.
Aplicativo desktop: o backend principal do desktop tem o próprio tique, e ele tica o armazenamento de cron de todos os perfis locais — então as tarefas de um perfil secundário continuam disparando mesmo enquanto o backend daquele perfil está dormindo (o desktop coloca para dormir os backends de perfis ociosos depois de uns 10 minutos). Você não precisa deixar um perfil aberto para as tarefas agendadas dele rodarem.
Verificação 4: confira o relógio e o fuso horário do sistema
As tarefas usam o fuso horário local. Se o relógio da sua máquina estiver errado ou num fuso diferente do esperado, as tarefas vão disparar na hora errada. Verifique:
date
hermes cron list # Compare os horários de next_run com a hora local
Falhas de entrega
Verificação 1: confirme que o destino de entrega está correto
Os destinos de entrega diferenciam maiúsculas de minúsculas e exigem a plataforma certa configurada. Um destino mal configurado descarta a resposta em silêncio.
| Destino | Exige |
|---|---|
telegram | TELEGRAM_BOT_TOKEN em ~/.hermes/.env |
discord | DISCORD_BOT_TOKEN em ~/.hermes/.env |
slack | SLACK_BOT_TOKEN em ~/.hermes/.env |
whatsapp | Gateway do WhatsApp configurado |
signal | Gateway do Signal configurado |
matrix | Homeserver Matrix configurado |
email | SMTP configurado no config.yaml |
sms | Provedor de SMS configurado |
local | Permissão de escrita em ~/.hermes/cron/output/ |
origin | Entrega na conversa onde a tarefa foi criada |
Outras plataformas suportadas incluem mattermost, homeassistant, dingtalk, feishu, wecom, weixin, bluebubbles, qqbot e webhook. Você também pode mirar uma conversa específica com a sintaxe platform:chat_id (por exemplo, telegram:-1001234567890).
Se a entrega falha, a tarefa mesmo assim roda — ela só não envia para lugar nenhum. Confira no hermes cron list o campo last_error atualizado (quando disponível).
Verificação 2: confira o uso de [SILENT]
Se a sua tarefa de cron não produz saída, a entrega é suprimida. Se a resposta do agente inclui o marcador de silêncio do cron [SILENT], a entrega também é suprimida. Isso é intencional para tarefas de monitoramento — mas confira se o seu prompt não está suprimindo tudo sem querer.
Use prompts como "responda apenas [SILENT] se nada mudou". Evite pedir que o agente inclua [SILENT] dentro de uma explicação mais longa, porque o cron trata esse marcador como sinal de supressão.
Verificação 3: permissões do token da plataforma
Cada bot de plataforma de mensagens precisa de permissões específicas para receber mensagens. Se a entrega falha em silêncio:
- Telegram: o bot precisa ser administrador do grupo/canal de destino
- Discord: o bot precisa de permissão para enviar no canal de destino
- Slack: o bot precisa estar adicionado ao workspace e ter o escopo
chat:write
Verificação 4: empacotamento da resposta
Por padrão, as respostas do cron vêm embrulhadas com cabeçalho e rodapé (cron.wrap_response: true no config.yaml). Algumas plataformas ou integrações podem não lidar bem com isso. Para desligar:
cron:
wrap_response: false
Verificação 5: plataformas atrás de relay (Hermes Cloud / Team Gateway)
Quando a credencial de uma plataforma mora no conector de relay (por exemplo, Slack ou Discord atrás de um Team Gateway) em vez de estar no seu .env local, o único remetente é o adaptador de relay vivo do gateway em execução — não existe um caminho de entrega independente.
- Os disparos agendados funcionam enquanto o gateway estiver rodando: o tique dele é o dono da entrega atrás de relay.
- Um
hermes cron run <id>independente encaminha a execução para o gateway automaticamente pelo api_server (POST /api/jobs/{id}/run). Isso exige que a plataformaapi_serveresteja habilitada com umaAPI_SERVER_KEY(16 caracteres ou mais). Um contexto--prompt/cronjob(action='run', prompt=...)é encaminhado junto e vale só para aquele disparo. - Se o gateway não estiver acessível, a execução falha com um erro do tipo "relay-fronted … start the gateway" em vez do enganoso
platform 'slack' not configured/enabled. Suba o gateway e tente de novo.
Falhas na carga de skills
Verificação 1: confirme que as skills estão instaladas
hermes skills list
As skills precisam estar instaladas antes de serem anexadas a tarefas de cron. Se faltar alguma skill, instale primeiro com hermes skills install <skill-name> ou pelo /skills na CLI.
Verificação 2: compare o nome da skill com o nome da pasta
Nomes de skill diferenciam maiúsculas de minúsculas e precisam bater com o nome da pasta da skill instalada. Se a sua tarefa aponta para ai-funding-report mas a pasta da skill é ai-funding-daily-report, confirme o nome exato no hermes skills list.
Verificação 3: skills que exigem ferramentas interativas
As tarefas de cron rodam com os conjuntos de ferramentas cronjob, messaging e clarify desabilitados. Isso evita criação recursiva de cron, envio direto de mensagens (a entrega fica a cargo do agendador) e perguntas interativas. Se uma skill depende desses conjuntos de ferramentas, ela não vai funcionar num contexto de cron.
Confira a documentação da skill para confirmar que ela funciona em modo não interativo (headless).
Verificação 4: ordem entre várias skills
Quando você usa várias skills, elas carregam na ordem indicada. Se a Skill A depende do contexto da Skill B, garanta que B carregue primeiro:
/cron add "0 9 * * *" "..." --skill context-skill --skill target-skill
Neste exemplo, context-skill carrega antes de target-skill.
Erros e falhas nas tarefas
Verificação 1: revise a saída recente da tarefa
Se uma tarefa rodou e falhou, você pode achar o contexto do erro em:
- A conversa em que a tarefa entrega (se a entrega deu certo)
~/.hermes/logs/agent.log, para as mensagens do agendador (ouerrors.log, para os avisos)- Os metadados de
last_runda tarefa, viahermes cron list
Verificação 2: padrões comuns de erro
"No such file or directory" em scripts
O caminho de script precisa ser absoluto (ou relativo ao diretório de configuração do Hermes). Verifique:
ls ~/.hermes/scripts/seu-script.py # Precisa existir
hermes cron edit <job_id> --script ~/.hermes/scripts/seu-script.py
"Skill not found" na hora de executar a tarefa
A skill precisa estar instalada na máquina que roda o agendador. Se você troca de máquina, as skills não sincronizam sozinhas — reinstale com hermes skills install <skill-name>.
A tarefa roda mas não entrega nada
Provavelmente é problema de destino de entrega (veja Falhas de entrega, acima), ausência de saída, ou uma resposta contendo o marcador de silêncio do cron [SILENT].
A tarefa trava ou estoura o tempo
O agendador usa um tempo limite baseado em inatividade (padrão de 600s, configurável pela variável de ambiente HERMES_CRON_TIMEOUT, com 0 para ilimitado). O agente pode rodar o tempo que for, desde que esteja chamando ferramentas ativamente — o cronômetro só dispara depois de inatividade prolongada. Tarefas demoradas devem usar scripts para coletar os dados e entregar só o resultado.
Verificação 3: disputa de trava
O agendador usa trava em arquivo para evitar tiques sobrepostos. Se duas instâncias do gateway estiverem rodando (ou se uma sessão de CLI conflitar com um gateway), as tarefas podem atrasar ou ser puladas.
Encerre os processos de gateway duplicados:
ps aux | grep hermes
# Encerre os processos duplicados, mantenha só um
Verificação 4: permissões do jobs.json
As tarefas ficam guardadas em ~/.hermes/cron/jobs.json. Se o seu usuário não puder ler e escrever nesse arquivo, o agendador vai falhar em silêncio:
ls -la ~/.hermes/cron/jobs.json
chmod 600 ~/.hermes/cron/jobs.json # O arquivo deve pertencer ao seu usuário
Problemas de desempenho
Subida lenta da tarefa
Cada tarefa de cron cria uma sessão nova de AIAgent, o que pode envolver autenticação no provedor e carga do modelo. Para agendamentos sensíveis ao horário, deixe uma folga (por exemplo, 0 8 * * * em vez de 0 9 * * *).
Tarefas demais se sobrepondo
O agendador executa as tarefas em sequência dentro de cada tique. Se várias tarefas vencem ao mesmo tempo, elas rodam uma depois da outra. Considere escalonar os agendamentos (por exemplo, 0 9 * * * e 5 9 * * * em vez de as duas em 0 9 * * *) para evitar atrasos.
Saída de script grande demais
Scripts que despejam megabytes de saída deixam o agente lento e podem estourar os limites de token. Filtre ou resuma no nível do script — emita só o que o agente precisa para raciocinar.
Comandos de diagnóstico
hermes cron list # Mostra todas as tarefas, estados e horários de next_run
hermes cron run <job_id> # Agenda para o próximo tique (para testar)
hermes cron edit <job_id> # Corrige problemas de configuração
hermes logs # Vê os logs recentes do Hermes
hermes skills list # Confere as skills instaladas
Buscar mais ajuda
Se você passou por este guia e o problema continua:
- Rode a tarefa com
hermes cron run <job_id>(dispara no próximo tique do gateway) e observe os erros na saída da conversa - Confira
~/.hermes/logs/agent.logpara as mensagens do agendador e~/.hermes/logs/errors.logpara os avisos - Abra uma issue em github.com/NousResearch/hermes-agent com:
- O ID e o agendamento da tarefa
- O destino de entrega
- O que você esperava e o que aconteceu
- As mensagens de erro relevantes dos logs
Para a referência completa de cron, veja Automatize qualquer coisa com cron e Tarefas agendadas (cron).