Porta il Tuo Gioco con Cron a un Nuovo Livello: 5 Pattern di Automazione da Usare Subito
Cron Troubleshooting Guide — easy-to-understand guide based on official docs
Porta il Tuo Gioco con Cron a un Nuovo Livello: 5 Pattern di Automazione da Usare Subito
Hai configurato il tuo primo job cron con Hermes Agent e sei già dipendente. Ma sapevi che puoi fare molto di più? Il tutorial del bot per il briefing quotidiano è solo l’inizio. Esploriamo cinque pattern di automazione reali che ti semplificheranno la vita.
La Regola d’Oro: Prompt Autocontenuti
Prima di addentrarci, ecco la cosa più importante da ricordare: i job cron vengono eseguiti in sessioni agente nuove di zecca. Il tuo agente non ha alcuna memoria della chat corrente. Quindi ogni prompt deve essere completamente autocontenuto — includi tutto ciò di cui l’agente ha bisogno, dal contesto ai comandi esatti.
Salta l’LLM Quando Non Ti Serve
Non ogni automazione ha bisogno di un modello linguistico. Hai due opzioni a zero token:
- Watchdog ricorrente: Se il tuo script produce già il messaggio esatto (come avvisi di memoria o heartbeat), usa i job cron solo-script. Basta chiedere a Hermes in chat — lo strumento
cronjobsa quando usareno_agent=Truee scrive lo script per te. - One-shot da uno script in esecuzione: Per step di CI o hook di deploy, usa
hermes sendper inviare l’output direttamente a Telegram o Discord senza alcuna configurazione cron.
Pattern 1: Monitoraggio Modifiche Sito Web
Vuoi sapere quando cambia una pagina prezzi o quando un concorrente aggiorna il proprio sito? Questo pattern usa uno script Python per il lavoro meccanico, e l’agente gestisce il ragionamento.
Per prima cosa, crea il tuo script di monitoraggio:
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")
# Fetch current content
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()
# Load previous state
prev_hash = None
if os.path.exists(STATE_FILE):
with open(STATE_FILE) as f:
prev_hash = json.load(f).get("hash")
# Save current state
with open(STATE_FILE, "w") as f:
json.dump({"hash": current_hash, "url": URL}, f)
# Output for the agent
if prev_hash and prev_hash != current_hash:
print(f"CHANGE DETECTED on {URL}")
print(f"Previous hash: {prev_hash}")
print(f"Current hash: {current_hash}")
print(f"\nCurrent content (first 2000 chars):\n{content[:2000]}")
else:
print("NO_CHANGE")
Ora configura il job cron:
/cron add "every 1h" "If the script output says CHANGE DETECTED, summarize what changed on the page and why it might matter. If it says NO_CHANGE, respond with just [SILENT]." --script ~/.hermes/scripts/watch-site.py --name "Pricing monitor" --deliver telegram
Consiglio da pro: Il trucco [SILENT] è oro puro. Quando non è cambiato nulla, l’agente risponde solo con [SILENT], e la consegna cron lo tratta come marcatore di silenzio. Ricevi notifiche solo quando qualcosa succede davvero — niente spam nelle ore tranquille.
Pattern 2: Report Settimanale
Compila informazioni da più fonti in un riepilogo formattato. Questo viene eseguito ogni lunedì alle 9:00:
/cron add "0 9 * * 1" "Generate a weekly report covering:
1. Search the web for the top 5 AI news stories from the past week
2. Search GitHub for trending repositories in the 'machine-learning' topic
3. Check Hacker News for the most discussed AI/ML posts
Format as a clean summary with sections for each source. Include links.
Keep it under 500 words — highlight only what matters." --name "Weekly AI digest" --deliver telegram
Dalla CLI, appare così:
hermes cron create "0 9 * * 1" \
"Generate a weekly report covering the top AI news, trending ML GitHub repos, and most-discussed HN posts. Format with sections, include links, keep under 500 words." \
--name "Weekly AI digest" \
--deliver telegram
Il 0 9 * * 1 è un’espressione cron standard: le 9:00 di ogni lunedì.
Pattern 3: Osservatore Repository GitHub
Tieni d’occhio qualsiasi repo per nuove issue, PR o release:
/cron add "every 6h" "Check the GitHub repository NousResearch/hermes-agent for:
- New issues opened in the last 6 hours
- New PRs opened or merged in the last 6 hours
- Any new releases
Use the terminal to run gh commands:
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
Filter to only items from the last 6 hours. If nothing new, respond with [SILENT].
Otherwise, provide a concise summary of the activity." --name "Repo watcher" --deliver discord
Attenzione: Noti come il prompt includa i comandi gh esatti? È intenzionale. L’agente cron non ha alcuna cronologia di conversazione — scrivi tutto per esteso. (La memoria persistente viene caricata, quindi le preferenze durature salvate in MEMORY.md vengono ereditate, ma non fare affidamento su questo per dettagli critici del job.)
Pattern 4: Pipeline di Raccolta Dati
Raccogli dati a intervalli regolari, salvali in file e rileva tendenze nel tempo. Questo combina uno script per la raccolta con l’agente per l’analisi:
import json, os, urllib.request
from datetime import datetime
DATA_DIR = os.path.expanduser("~/.hermes/data/prices")
os.makedirs(DATA_DIR, exist_ok=True)
# Fetch current data (example: crypto prices)
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())
# Append to history file
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"Collected prices at {entry['timestamp']}: BTC ${data['bitcoin']['usd']}, ETH ${data['ethereum']['usd']}")
Poi configura un job cron che esegue lo script e chiede all’agente di analizzare i dati raccolti per individuare tendenze.
Pattern 5: Il Watchdog Solo-Script
Per avvisi in cui lo script produce già il messaggio esatto, salta completamente l’LLM:
/cron add "every 5m" --script ~/.hermes/scripts/check-disk.py --no-agent --deliver slack
Lo strumento cronjob seleziona automaticamente no_agent=True quando ha senso, e scrive lo script per te.
Pronto ad Automatizzare?
Questi pattern sono solo punti di partenza. Mescolali e abbinali — usa gli script per il lavoro meccanico, gli agenti per il ragionamento e [SILENT] per mantenere pulite le notifiche. Per il riferimento completo alle funzionalità, consulta la documentazione su Attività Pianificate (Cron). Buona automazione!
📖 Documentazione ufficiale
この記事は Hermes Agent のDocumentazione ufficialeに基づいています:Documentazione ufficiale › guides/automate-with-cron