Mejora tu Juego con Cron: 5 Patrones de Automatización que Puedes Usar Hoy
Cron Troubleshooting Guide — easy-to-understand guide based on official docs
Mejora tu Juego con Cron: 5 Patrones de Automatización que Puedes Usar Hoy
Así que ya configuraste tu primer trabajo cron con Hermes Agent y estás enganchado. ¿Pero sabías que hay mucho más que puedes hacer? El tutorial del bot de briefing diario es solo el comienzo. Vamos a explorar cinco patrones de automatización del mundo real que te harán la vida más fácil.
La Regla de Oro: Prompts Autocontenidos
Antes de sumergirnos, esto es lo más importante que debes recordar: los trabajos cron se ejecutan en sesiones de agente nuevas. Tu agente no tiene memoria de tu chat actual. Así que cada prompt debe ser completamente autocontenido — incluye todo lo que el agente necesita saber, desde el contexto hasta los comandos exactos.
Omite el LLM Cuando No lo Necesitas
No toda automatización necesita un modelo de lenguaje. Tienes dos opciones de cero tokens:
- Watchdog recurrente: Si tu script ya produce el mensaje exacto (como alertas de memoria o latidos), usa trabajos cron solo con script. Solo pídele a Hermes en el chat — la herramienta
cronjobsabe cuándo usarno_agent=Truey escribe el script por ti. - Disparo único desde un script en ejecución: Para pasos de CI o hooks de despliegue, usa
hermes sendpara enviar la salida directamente a Telegram o Discord sin necesidad de configurar cron.
Patrón 1: Monitor de Cambios en Sitios Web
¿Quieres saber cuándo cambia una página de precios o un competidor actualiza su sitio? Este patrón usa un script de Python para el trabajo mecánico, y el agente se encarga del razonamiento.
Primero, crea tu script de monitoreo:
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")
Ahora configura el trabajo 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
Consejo profesional: El truco de [SILENT] es oro puro. Cuando no cambia nada, el agente responde solo con [SILENT], y la entrega de cron lo trata como el marcador de silencio. Solo recibes notificaciones cuando algo realmente sucede — nada de spam en horas tranquilas.
Patrón 2: Informe Semanal
Compila información de múltiples fuentes en un resumen formateado. Esto se ejecuta cada lunes a las 9 AM:
/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
Desde la CLI, se ve así:
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
El 0 9 * * 1 es una expresión cron estándar: 9:00 AM cada lunes.
Patrón 3: Vigilante de Repositorios de GitHub
Mantén un ojo en cualquier repo para nuevos issues, PRs o lanzamientos:
/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
Advertencia: ¿Notas cómo el prompt incluye los comandos gh exactos? Eso es intencional. El agente de cron no tiene historial de conversación — especifícalo todo. (La memoria persistente sí se carga, así que las preferencias duraderas guardadas en MEMORY.md se transfieren, pero no dependas de eso para detalles críticos del trabajo.)
Patrón 4: Pipeline de Recolección de Datos
Extrae datos a intervalos regulares, guárdalos en archivos y detecta tendencias con el tiempo. Esto combina un script para la recolección con el agente para el análisis:
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']}")
Luego configura un trabajo cron que ejecute el script y le pida al agente analizar los datos recopilados para detectar tendencias.
Patrón 5: El Watchdog Solo con Script
Para alertas donde el script ya produce el mensaje exacto, omite el LLM por completo:
/cron add "every 5m" --script ~/.hermes/scripts/check-disk.py --no-agent --deliver slack
La herramienta cronjob automáticamente elige no_agent=True cuando tiene sentido, y escribe el script por ti.
¿Listo para Automatizar?
Estos patrones son solo puntos de partida. Mézclalos y combínalos — usa scripts para el trabajo mecánico, agentes para el razonamiento, y [SILENT] para mantener tus notificaciones limpias. Para la referencia completa de funciones, consulta la documentación de Tareas Programadas (Cron). ¡Feliz automatización!
📖 Documentación oficial
Este artículo se basa en la documentación oficial de Hermes Agent :Docs oficiales › guides/automate-with-cron