Bienvenido de Nuevo a la Fiesta de la Automatización
Tutorial 21: Scheduled Tasks (Cron) — easy-to-understand guide based on official docs
Bienvenido de Nuevo a la Fiesta de la Automatización
En el Tutorial 20, construimos un bot de resumen diario que se presenta contigo cada mañana. ¿Bonito, verdad? Bueno, hoy subimos de nivel. El sistema cron de Hermes puede hacer mucho más que solo decir “buenos días”. Hablamos de vigilantes de sitios web, resúmenes semanales, monitores de GitHub e incluso pipelines de datos, todo funcionando en piloto automático.
¿La mejor parte? No necesitas ser programador para configurarlos. Solo necesitas saber qué quieres automatizar, y Hermes se encarga del trabajo pesado.
La Regla de Oro: Prompts Autocontenidos
Antes de sumergirnos en los patrones, hay un concepto que absolutamente necesitas entender: los trabajos cron se ejecutan en sesiones de agente nuevas. Eso significa que tu agente tiene cero memoria de tu chat actual. Nada de “recuerda lo que hablamos ayer” — nada de eso.
Así que cada prompt que escribas debe ser completamente autocontenido. Incluye todo lo que el agente necesita saber: los comandos a ejecutar, las fuentes a revisar, el formato que quieres. Escríbelo todo.
Piénsalo como escribir instrucciones para un pasante muy inteligente que acaba de llegar. No le dirías “haz eso que discutimos”. Le dirías “esto es exactamente lo que tienes que hacer, paso a paso”.
Patrón 1: Monitor de Cambios en Sitios Web
¿Quieres saber el momento exacto en que un competidor cambia su página de precios? ¿O cuando tu blog favorito se actualiza? Este patrón vigila una URL y solo te molesta cuando algo realmente cambia.
El truco es el parámetro --script. Un script de Python se ejecuta antes de cada ejecución, hace el trabajo mecánico (obtener, comparar), y su salida se convierte en contexto para el agente. El agente entonces decide: ¿es este cambio interesante?
Aquí está el script que hace el trabajo pesado:
# ~/.hermes/scripts/watch-site.py
import hashlib, json, os, urllib.request
URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-site-state.json")
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()
prev_hash = None
if os.path.exists(STATE_FILE):
with open(STATE_FILE) as f:
prev_hash = json.load(f).get("hash")
with open(STATE_FILE, "w") as f:
json.dump({"hash": current_hash, "url": URL}, f)
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")
Luego 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: ¿Notas la instrucción [SILENT]? Ese es tu marcador de silencio. Cuando el agente responde solo con [SILENT], Hermes sabe que no debe molestarte. Nada de spam durante tus horas libres.
Patrón 2: Informe Semanal
Este es perfecto para mantenerte al día en tu industria. Se ejecuta cada lunes a las 9 AM y compila un resumen de múltiples fuentes.
/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
El 0 9 * * 1 es sintaxis cron estándar: minuto 0, hora 9, cualquier día del mes, cualquier mes, lunes (1). Fácil una vez que lo sabes.
Patrón 3: Vigilante de Repositorios de GitHub
Mantén un ojo en cualquier repositorio sin tener que refrescar la página cada cinco minutos.
/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
¿Notas cómo el prompt incluye los comandos gh exactos? Eso es la regla de autocontención en acción. El agente no recordará cómo hiciste esto la última vez — tienes que decírselo cada vez.
Patrón 4: Pipeline de Recolección de Datos
Este es para los amantes de los datos. Recopila precios, métricas o cualquier dato de API a intervalos regulares, guárdalos en archivos y deja que el agente detecte tendencias.
El script se encarga de la recolección (sin desperdiciar tokens de LLM en la obtención), y el agente se encarga del análisis. Combínalos para un poderoso sistema de detección de tendencias.
Alternativas de Cero Tokens
¿No necesitas el LLM en absoluto? Dos opciones:
-
Trabajos cron solo con script: Si tu script ya produce el mensaje exacto (alertas de memoria, advertencias de disco, heartbeats), omite el agente por completo. Solo pídele a Hermes que lo configure — la herramienta
cronjobsabe cuándo usarno_agent=True. -
Disparo único desde un script en ejecución: Usa
hermes sendpara enviar stdout o un archivo directamente a Telegram, Discord o Slack. Perfecto para pasos de CI, hooks post-commit o scripts de despliegue.
Conclusión
Ya tienes los patrones. Ahora ve a automatizar algo aburrido. Tu yo del futuro te lo agradecerá.
Para la referencia completa de funciones, consulta la documentación de Tareas Programadas (Cron). Y recuerda: prompts autocontenidos, [SILENT] para el silencio, y scripts para el trabajo mecánico. Ese es todo el juego.
📖 Documentación oficial
Este artículo se basa en la documentación oficial de Hermes Agent :Docs oficiales › guides/automate-with-cron