Eleve Seu Jogo com Cron: 5 Padrões de Automação para Usar Hoje
Cron Troubleshooting Guide — easy-to-understand guide based on official docs
Eleve Seu Jogo com Cron: 5 Padrões de Automação para Usar Hoje
Então você configurou seu primeiro job cron com o Hermes Agent e já está viciado. Mas sabia que dá para fazer muito mais? O tutorial do bot de briefing diário é só o começo. Vamos explorar cinco padrões de automação do mundo real que vão facilitar sua vida.
A Regra de Ouro: Prompts Autossuficientes
Antes de mergulharmos, aqui está a coisa mais importante para lembrar: jobs cron rodam em sessões de agente novas. Seu agente não tem memória do seu chat atual. Então, todo prompt deve ser completamente autossuficiente — inclua tudo o que o agente precisa saber, desde o contexto até comandos exatos.
Pule o LLM Quando Não Precisar Dele
Nem toda automação precisa de um modelo de linguagem. Você tem duas opções de zero tokens:
- Watchdog recorrente: Se o seu script já produz a mensagem exata (como alertas de memória ou heartbeats), use jobs cron somente com script. Basta pedir ao Hermes no chat — a ferramenta
cronjobsabe quando usarno_agent=Truee escreve o script para você. - Disparo único a partir de um script em execução: Para etapas de CI ou hooks de deploy, use
hermes sendpara enviar a saída direto para o Telegram ou Discord, sem precisar configurar cron.
Padrão 1: Monitor de Mudanças em Sites
Quer saber quando uma página de preços muda ou quando um concorrente atualiza o site? Este padrão usa um script Python para o trabalho mecânico, e o agente cuida do raciocínio.
Primeiro, crie seu script de monitoramento:
mkdir -p ~/.hermes/scripts
import hashlib, json, os, urllib.request
URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-site-state.json")
# Busca o conteúdo atual
req = urllib.request.Request(URL, headers={"User-Agent": "Hermes-Monitor/1.0"})
content = urllib.request.urlopen(req, timeout=30).read().decode()
current_hash = hashlib.sha256(content.encode()).hexdigest()
# Carrega o estado anterior
prev_hash = None
if os.path.exists(STATE_FILE):
with open(STATE_FILE) as f:
prev_hash = json.load(f).get("hash")
# Salva o estado atual
with open(STATE_FILE, "w") as f:
json.dump({"hash": current_hash, "url": URL}, f)
# Saída para o agente
if prev_hash and prev_hash != current_hash:
print(f"MUDANCA DETECTADA em {URL}")
print(f"Hash anterior: {prev_hash}")
print(f"Hash atual: {current_hash}")
print(f"\nConteúdo atual (primeiros 2000 caracteres):\n{content[:2000]}")
else:
print("SEM_MUDANCA")
Agora configure o job cron:
/cron add "every 1h" "Se a saída do script disser MUDANCA DETECTADA, resuma o que mudou na página e por que isso pode importar. Se disser SEM_MUDANCA, responda apenas com [SILENT]." --script ~/.hermes/scripts/watch-site.py --name "Monitor de preços" --deliver telegram
Dica de pro: O truque do [SILENT] é ouro. Quando nada mudou, o agente responde apenas com [SILENT], e a entrega do cron trata isso como marcador de silêncio. Você só é notificado quando algo realmente acontece — sem spam nos horários tranquilos.
Padrão 2: Relatório Semanal
Compile informações de várias fontes em um resumo formatado. Isso roda toda segunda-feira às 9h:
/cron add "0 9 * * 1" "Gere um relatório semanal cobrindo:
1. Pesquise na web as 5 principais notícias de IA da última semana
2. Pesquise no GitHub repositórios em alta no tópico 'machine-learning'
3. Verifique o Hacker News para os posts de IA/ML mais discutidos
Formate como um resumo limpo com seções para cada fonte. Inclua links.
Mantenha abaixo de 500 palavras — destaque apenas o que importa." --name "Resumo semanal de IA" --deliver telegram
Pela CLI, fica assim:
hermes cron create "0 9 * * 1" \
"Gere um relatório semanal cobrindo as principais notícias de IA, repositórios ML em alta no GitHub e posts mais discutidos no HN. Formate com seções, inclua links, mantenha abaixo de 500 palavras." \
--name "Resumo semanal de IA" \
--deliver telegram
O 0 9 * * 1 é uma expressão cron padrão: 9h00 toda segunda-feira.
Padrão 3: Observador de Repositório GitHub
Fique de olho em qualquer repositório para novas issues, PRs ou releases:
/cron add "every 6h" "Verifique o repositório GitHub NousResearch/hermes-agent para:
- Novas issues abertas nas últimas 6 horas
- Novos PRs abertos ou mesclados nas últimas 6 horas
- Quaisquer novos releases
Use o terminal para rodar comandos gh:
gh issue list --repo NousResearch/hermes-agent --state open --json number,title,author,createdAt --limit 10
gh pr list --repo NousResearch/hermes-agent --state all --json number,title,author,createdAt,mergedAt --limit 10
Filtre apenas itens das últimas 6 horas. Se não houver nada novo, responda com [SILENT].
Caso contrário, forneça um resumo conciso da atividade." --name "Observador de repo" --deliver discord
Aviso: Repare como o prompt inclui os comandos gh exatos? Isso é intencional. O agente do cron não tem histórico de conversa — escreva tudo explicitamente. (A memória persistente é carregada, então preferências duráveis salvas no MEMORY.md são mantidas, mas não confie nela para detalhes críticos do job.)
Padrão 4: Pipeline de Coleta de Dados
Colete dados em intervalos regulares, salve em arquivos e detecte tendências ao longo do tempo. Isso combina um script para coleta com o agente para análise:
import json, os, urllib.request
from datetime import datetime
DATA_DIR = os.path.expanduser("~/.hermes/data/prices")
os.makedirs(DATA_DIR, exist_ok=True)
# Busca dados atuais (exemplo: preços de criptomoedas)
url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum&vs_currencies=usd"
data = json.loads(urllib.request.urlopen(url, timeout=30).read())
# Adiciona ao arquivo de histórico
entry = {"timestamp": datetime.now().isoformat(), "prices": data}
history_file = os.path.join(DATA_DIR, "history.jsonl")
with open(history_file, "a") as f:
f.write(json.dumps(entry) + "\n")
print(f"Preços coletados em {entry['timestamp']}: BTC ${data['bitcoin']['usd']}, ETH ${data['ethereum']['usd']}")
Depois, configure um job cron que roda o script e pede ao agente para analisar os dados coletados em busca de tendências.
Padrão 5: O Watchdog Somente com Script
Para alertas onde o script já produz a mensagem exata, pule o LLM completamente:
/cron add "every 5m" --script ~/.hermes/scripts/check-disk.py --no-agent --deliver slack
A ferramenta cronjob automaticamente escolhe no_agent=True quando faz sentido, e escreve o script para você.
Pronto para Automatizar?
Esses padrões são apenas pontos de partida. Misture e combine — use scripts para trabalho mecânico, agentes para raciocínio, e [SILENT] para manter suas notificações limpas. Para a referência completa de recursos, confira a documentação de Tarefas Agendadas (Cron). Boa automação!
📖 Documentação oficial
この記事は Hermes Agent のDocumentação oficialに基づいています:Documentação oficial › guides/automate-with-cron