🚀 Reativo → proativo: sessão fresh por execução
Cron é o que transforma o Hermes em assistente proativo. Sem cron, ele só responde quando você fala. Com cron, ele dispara em horários definidos, abre sessão fresh de AIAgent, executa o prompt e entrega o resultado.
⚙️Como cada tick funciona
- Carrega jobs de
~/.hermes/cron/jobs.json - Verifica
next_run_atvs horário atual - Inicia sessão fresh de AIAgent pra cada job vencido
- Injeta skills anexadas (--skill)
- Executa o prompt até conclusão
- Entrega a resposta final no destino (--deliver)
- Atualiza metadados e próximo horário agendado
⚠️Sessão fresh = prompt auto-contido
A sessão é nova a cada disparo. Não há histórico de conversa anterior. SOUL.md, USER.md e MEMORY.md ficam carregados, mas qualquer contexto além disso precisa estar no prompt do cron. "Continua o que estava fazendo" não funciona — não tem o que continuar.
🔒File lock previne double-run
O scheduler escreve em ~/.hermes/cron/.tick.lock a cada tick. Se um tick demora mais que o intervalo, o próximo NÃO dispara em paralelo — espera. Isso evita rodar a mesma tarefa duas vezes ao mesmo tempo (clássico em integração).
💬 Sintaxe natural via chat
O caminho mais rápido pra criar cron é direto pelo chat (Telegram, Discord, terminal). Comando /cron add aceita expressões em linguagem natural.
📝 Exemplos prontos
/cron add 30m "Remind me to check the build"
/cron add "every 2h" "Check server status"
/cron add "every 1h" "Summarize new feed items" --skill blogwatcher
/cron add "every 1h" "Use both skills" --skill blogwatcher --skill maps
/cron add "every 1d at 09:00" "Resumo do dia + agenda"
Durações relativas
30m,2h,1d→ daqui a X tempo- Útil pra lembretes pontuais
Recorrência natural
"every 2h"→ recorrência"every 1d at 09:00"→ diário com horário- Útil pra rotinas
💡Comandos úteis
- •
/cron list— vê crons ativos - •
/cron remove <id>— remove cron - •
/cron pause <id>//cron resume <id>
🖥️ CLI standalone: hermes cron create
Mesma capacidade via terminal. Útil pra scripts de provisionamento (infra-as-code) que recriam todos os crons numa máquina nova de uma vez.
📝 Exemplo CLI
hermes cron create "every 1d at 09:00" \
"Audit open PRs, summarize CI health, and post to #eng" \
--workdir /home/me/projects/acme
📦setup-crons.sh versionado
Crie um script setup-crons.sh no seu repo de infra. Cada cron vira uma linha. Migrar pra novo VPS = rodar o script. Reproduzível, auditável, sem clique.
#!/usr/bin/env bash
hermes cron create "every 1d at 09:00" "Resumo diário" --deliver telegram
hermes cron create "every 6h" "Backup S3" --workdir ~/projetos/site
hermes cron create "every 5m" --no-agent --script ./watchdog.sh \
--deliver telegram --name "memory-watchdog"
📁Onde fica
Definições persistem em ~/.hermes/cron/jobs.json. Você pode versionar esse arquivo também — backup natural sem precisar refazer setup. Subcomandos: hermes cron list, hermes cron remove <id>.
📂 Flag --workdir <path>
Define o diretório de trabalho da sessão fresh. O scheduler faz cd pra lá antes de rodar e detecta os arquivos de contexto do projeto. Equivalente cron tradicional: WORKDIR.
📚Ordem de prioridade do contexto de projeto
.hermes.mdouHERMES.md(sobe até git root)AGENTS.md(walk recursivo de subdiretórios)CLAUDE.md(CWD apenas).cursorrules(CWD apenas)
Apenas UM tipo é carregado por sessão. SOUL.md sempre é carregado independentemente.
⚠️Sem --workdir, ele roda em ~
Cron pra projeto específico precisa do contexto desse projeto. Sem --workdir, o scheduler roda em ~ (home) e não acha .hermes.md/AGENTS.md/CLAUDE.md do projeto. Resultado: agente perdido, sem convenções de código nem instruções específicas.
📝Exemplo prático
hermes cron create "every 1d at 18:00" \
"Audit changed files today, propose changelog entry" \
--workdir /home/me/projetos/api-clientes \
--deliver telegram
A sessão lê o AGENTS.md do projeto e segue as convenções específicas (formato de changelog, branch policy etc.).
🔇 Flag --no-agent (NOAGENT mode)
Modo que pula o LLM completamente. O cron roda só um script .sh/.bash/.py. Saída vazia = silêncio. Saída não-zero = alerta entregue. Ideal pra watchdogs que não precisam de raciocínio.
📝 Watchdog de memória
hermes cron create "every 5m" \
--no-agent \
--script memory-watchdog.sh \
--deliver telegram \
--name "memory-watchdog"
stdout vazio
Tick silencioso, sem entrega. Ambiente está OK.
stdout não vazio
Conteúdo é entregue como alerta no destino configurado.
exit não-zero
Mesma coisa: alerta de erro vai pro destino. Bom pra detectar falha do próprio script.
⚙️Como o script é executado
- • Scripts
.sh/.bashrodam sob/bin/bash - • Outros (Python etc.) rodam no Python interpreter do Hermes
- • Funciona com qualquer linguagem que produza stdout/exit code padrão
💰Por que NOAGENT
Watchdog de memória/disco roda a cada 5min. Se passasse pelo LLM, gastaria token sem necessidade. NOAGENT mantém custo zero pra esse tipo de tarefa enquanto preserva entrega na plataforma de mensagem.
📡 Flags --deliver e --skill
Duas flags que completam o quadro: --deliver <plataforma> escolhe destino. --skill <name> injeta skill no início da sessão fresh, garantindo que o procedimento esteja disponível mesmo sem histórico.
--deliver <plataforma>
telegram— manda no chat principal Telegramdiscord— canal Discord configuradoall— todas as plataformas ativasorigin— onde o cron foi criado
--skill <name>
- Carrega skill no início da sessão fresh
- Pode passar múltiplas:
--skill A --skill B - Garante procedimento disponível sem depender da descoberta automática
📝 Exemplo combinando tudo
hermes cron create "every 1h" \
"Summarize new feed items and post the digest" \
--workdir /home/me/projetos/blog \
--skill blogwatcher \
--skill maps \
--deliver telegram
🎯Resumo das flags
| Flag | Equivalente cron | Função |
|---|---|---|
--workdir <path> | WORKDIR | Diretório de trabalho + contexto de projeto |
--no-agent | NOAGENT | Script-only, pula LLM |
--deliver <plat> | CONTEXTFROM | Plataforma de entrega |
--skill <name> | skill injection | Injeta skill na sessão fresh |
🎯Resumo do módulo
/cron add 30m "...", /cron add "every 2h" "...".hermes cron create em scripts reproduzíveis.Próximo módulo:
3.5 - 🔄 Loop de Auto-Aperfeiçoamento