Hermes Agent · Parte 3

Trabajos cron de Hermes para operaciones de agentes: informes programados, resúmenes y mensajería proactiva

Una guía práctica de trabajos programados para agentes de Hermes: resúmenes diarios, monitores silenciosos, destinos de entrega, gobernanza de tokens y por qué los mensajes proactivos de cron por WhatsApp chocan con la ventana de 24 horas de Meta.

13 min de lectura

En resumen

  • Hermes cron ejecuta el mismo harness de AIAgent de la Parte 1 según una programación: cada trabajo se activa en una sesión nueva, ejecuta un prompt independiente (opcionalmente con skills adjuntas) y entrega la respuesta final a través del gateway (Telegram, Discord, Slack, correo electrónico, archivos locales y más).
  • Tres formas de crear trabajos: mediante lenguaje natural en el chat del gateway (herramienta cronjob), la CLI hermes cron y /api/jobs en el servidor API. Los trabajos se guardan en ~/.hermes/cron/jobs.json.
  • El gateway debe estar en ejecución para que funcione el programador integrado de 60 segundos (hermes gateway install). Las operaciones desatendidas no se resuelven solo con la CLI.
  • Mejores canales para resúmenes proactivos: Telegram y Discord como primera opción. Los mensajes proactivos de cron por WhatsApp Cloud fallan fuera de la ventana de atención al cliente de 24 horas de Meta (error de Graph 131047) hasta que Hermes incorpore soporte para plantillas.
  • Controles de costos: trabajos de script no_agent (cero tokens de LLM), scripts que deciden si activar el agente mediante wakeAgent, [SILENT] cuando no hay cambios, modelos más económicos fijados explícitamente y enabled_toolsets por trabajo.

Qué aprenderás aquí

  • Cómo encaja Hermes cron en el harness del agente y en qué se diferencia de cron del sistema operativo + curl
  • Cómo crear resúmenes programados, monitores y pipelines de varias etapas
  • Destinos de entrega, asignación de skills y selección fija de proveedor y modelo
  • Restricciones de la mensajería proactiva, especialmente WhatsApp frente a Telegram
  • Gobernanza de tokens y riesgos de write_approval para trabajos desatendidos
  • Una lista de verificación operativa y los fallos más comunes

Esta es la Parte 3 de la serie sobre Hermes Agent. La Parte 1 cubre la arquitectura del harness; la Parte 2 cubre la atención reactiva por WhatsApp. La Parte 3 incorpora operaciones salientes programadas.

Cómo encaja cron en el harness

En la Parte 1 describimos Hermes como un harness de agente de ejecución continua. Cron permite ejecutar ese harness sin intervención humana:

                    ┌─────────────────────────────────────────┐
                    │           Job authoring surfaces         │
                    │  Gateway chat → cronjob tool              │
                    │  CLI → /cron + hermes cron                │
                    │  API → /api/jobs                          │
                    └────────────────────┬────────────────────┘
                                         │ create/update
                                         ▼
                              ┌──────────────────────┐
                              │ ~/.hermes/cron/      │
                              │   jobs.json          │
                              └──────────┬───────────┘
                                         │
     ┌───────────────────────────────────┼───────────────────────────────────┐
     │                          Hermes Gateway                             │
     │  CronScheduler ──► tick every 60s ──► due jobs + file lock            │
     │           │                                                          │
     │           ▼ per job                                                  │
     │  optional pre-run script (wakeAgent gate)                            │
     │           │                                                          │
     │           ▼                                                          │
     │  Fresh AIAgent session (skills injected, cronjob tool DISABLED)      │
     │           │                                                          │
     │           ▼                                                          │
     │  Delivery router → Telegram / Discord / Slack / WhatsApp* / local    │
     └──────────────────────────────────────────────────────────────────────┘

     * proactive WhatsApp Cloud delivery fails outside 24h window (131047)

Criterio editorial: Cron no es un producto independiente. Es la ejecución programada del mismo runtime que procesa los turnos de la CLI, el gateway y el servidor API. El gateway se encarga de la entrega; el agente no invoca directamente las herramientas de mensajería.

Creación de trabajos programados

Formatos de programación

Según la documentación de tareas programadas (cron):

TipoEjemplosRepetición predeterminada
Ejecución única relativa30m, 2h, 1duna vez
Intervaloevery 30m, every 2hindefinidamente
Expresión cron0 9 * * *, 0 9 * * 1-5indefinidamente
Marca de tiempo ISO2026-03-15T09:00:00una vez

El lenguaje natural como “daily at 9am” no se interpreta como una cadena de programación en la CLI, la Jobs API ni la herramienta cronjob: usa 0 9 * * *. En el chat del gateway (Telegram, Discord, etc.), sí puedes describir la programación en lenguaje natural; Hermes la traduce internamente a una llamada de creación de cronjob.

Opción A: Chat del gateway (lenguaje natural)

En Telegram, Discord u otro canal conectado:

Every morning at 9am, search the web for top AI agent news from the past 24 hours
and send me a summary on Telegram.

Hermes llama internamente a la herramienta cronjob. El comando /cron solo está disponible en la CLI, no en los canales del gateway (referencia de comandos de barra).

Opción B: CLI hermes cron

Instala y verifica el programador:

hermes gateway install
hermes cron status    # gateway PID, ticker heartbeat, next run

Crea un resumen diario:

hermes cron create "0 8 * * *" \
  "Search the web for top AI agent news from the past 24 hours. Summarize the 3 most important stories: headline, 2-sentence summary, source URL. Use emoji bullets." \
  --name "Morning AI digest" \
  --deliver telegram

Flags comunes (referencia de comandos de la CLI):

FlagPropósito
--nameNombre descriptivo del trabajo
--delivertelegram, discord, local, origin, telegram:CHAT_ID, etc.
--skill (se puede repetir)Adjunta skills en orden
--scriptScript previo a la ejecución ubicado en ~/.hermes/scripts/
--no-agentSolo ejecuta el script; cero tokens de LLM
--workdirInyecta AGENTS.md y archivos de contexto del proyecto

Prueba el trabajo antes de esperar a la ejecución programada:

hermes cron list
hermes cron run <job_id>

Opción C: Jobs API

Con API_SERVER_ENABLED=true y el gateway en ejecución:

curl -X POST http://127.0.0.1:8642/api/jobs \
  -H "Authorization: Bearer $API_SERVER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "schedule": "0 9 * * 1",
    "prompt": "Weekly AI digest: top 5 stories with links, under 500 words.",
    "name": "Weekly AI digest",
    "deliver": "telegram"
  }'

Consulta Servidor API — Jobs API.

Fijar el proveedor y el modelo para trabajos desatendidos

Los trabajos sin un modelo fijado guardan el valor predeterminado global en el momento de su creación. Si después cambias hermes model, esos trabajos se bloquean por seguridad y te avisan para que fijes un modelo explícitamente. Esto evita cambios inesperados de costo o comportamiento.

Para resúmenes en producción, fija un modelo más económico mediante la herramienta cronjob o la Jobs API:

cronjob(
    action="update",
    job_id="morning-ai-digest",
    model={"provider": "openrouter", "model": "google/gemini-3-flash-preview"},
)

Destinos de entrega

El agente escribe su respuesta como respuesta final. Hermes se encarga de entregarla: no le indiques al agente que invoque las herramientas de Telegram o WhatsApp para enviar el resultado de cron.

DestinoSignificado
originCanal donde se creó el trabajo (predeterminado en mensajería)
localSolo ~/.hermes/cron/output/ (predeterminado en la CLI)
telegram, discord, slack, email, …Canal principal de la plataforma
telegram:123456ID de un chat específico
allDistribución a todos los canales principales conectados

Configura los canales principales mediante variables de entorno como TELEGRAM_HOME_CHANNEL, DISCORD_HOME_CHANNEL y WHATSAPP_CLOUD_HOME_CHANNEL (variables de entorno).

Opciones adicionales de entrega:

  • [SILENT] en la respuesta del agente suprime la entrega en ejecuciones exitosas que no requieren acción (trabajos de monitoreo).
  • cron.wrap_response: false en config.yaml envía el resultado sin encabezado ni pie de página.
  • Trabajos que permiten continuar la conversación (attach_to_session=True o cron.mirror_delivery: true) permiten a los usuarios responder al informe en las plataformas compatibles.

Patrones de implementación

Patrón A: Informe diario (LLM + web)

Tutorial oficial: Bot de informe diario

hermes cron create "0 8 * * *" \
  "Search the web for latest AI agent and open-source LLM news from the past 24 hours. Summarize top 3: headline, 2-sentence summary, URL." \
  --name "Morning AI digest" \
  --deliver telegram

Patrón B: Monitor silencioso (alerta solo cuando hay cambios)

En la sesión interactiva de la CLI de Hermes (no en Telegram/Discord: /cron solo está disponible en la CLI):

/cron add "every 1h" \
  "If script output says CHANGE DETECTED, summarize what changed. If NO_CHANGE, respond with only [SILENT]." \
  --script watch-pricing.sh \
  --name "Pricing monitor" \
  --deliver telegram

El script se encuentra en ~/.hermes/scripts/. Hermes rechaza las rutas fuera de ese directorio.

Patrón C: Aviso de métricas sin tokens (no_agent)

cat > ~/.hermes/scripts/memory-watchdog.sh <<'EOF'
#!/usr/bin/env bash
ram_pct=$(free | awk '/^Mem:/ {printf "%d", $3 * 100 / $2}')
if [ "$ram_pct" -ge 85 ]; then
  echo "RAM ${ram_pct}% on $(hostname)"
fi
EOF
chmod +x ~/.hermes/scripts/memory-watchdog.sh

hermes cron create "every 5m" \
  --no-agent --script memory-watchdog.sh \
  --deliver telegram --name "memory-watchdog"

Patrón D: Pipeline de varias etapas (context_from)

Encadena trabajos de recopilación → clasificación → entrega. Cada etapa lee la salida de la etapa anterior mediante context_from en la herramienta cronjob (guía de automatización con cron):

07:00  Collector  → raw brief file
07:30  Triage     → ranked brief (context_from: collector)
08:00  Deliver    → formatted digest to Telegram (context_from: triage)

Patrón E: Resumen con skills adjuntas

hermes cron create "0 8 * * *" \
  "Search arXiv for 3 best 'language model reasoning' papers from the past day." \
  --skill arxiv --skill obsidian \
  --name "Paper digest" \
  --deliver local

Las skills se inyectan en orden; usa el prompt de cron para describir la tarea, no para copiar el contenido de la skill.

Patrón F: Ejecución única desde CI (hermes send)

Para notificaciones de deploy sin el programador de Hermes:

echo "Deploy finished: $(git rev-parse --short HEAD)" | hermes send --to telegram

Usa cron del sistema operativo o CI para activar la ejecución; hermes send omite por completo el LLM.

Mensajería proactiva y WhatsApp

En la Parte 2 implementamos atención reactiva por WhatsApp (mensaje del cliente → respuesta del bot). Cron incorpora operaciones salientes proactivas, donde las políticas de la plataforma son importantes.

CanalResúmenes proactivos con cronNotas
Telegram✅ RecomendadoUsa TELEGRAM_CRON_THREAD_ID para aislar cron en un tema de foro
Discord / Slack✅Canales con nombre e hilos
Correo electrónico / SMS✅Diferentes políticas aplicables
WhatsApp Cloud⚠️ Solo dentro de la ventana de 24hError de Graph 131047 fuera de la ventana

Según la documentación de Hermes para WhatsApp Cloud, los mensajes de formato libre requieren que el usuario haya enviado un mensaje en las últimas 24 horas. Hermes aún no implementa soporte para mensajes de plantilla en cron (a julio de 2026). Para los resúmenes matutinos, usa Telegram o correo electrónico; reserva cron por WhatsApp para usuarios con una sesión activa.

Gobernanza de tokens y riesgos de aprendizaje

Las sesiones de cron siguen asumiendo el costo base del harness —prompt de sistema por niveles, índice de skills y snapshots acotados de memoria (Parte 1)— incluso para prompts cortos. Tenlo en cuenta en tu presupuesto.

ControlEfecto
no_agent=TrueCero tokens de LLM
Script + {"wakeAgent": false}Omite el agente cuando no hay cambios
[SILENT]Suprime la entrega (el agente aún puede ejecutarse si no se controla su activación)
enabled_toolsets por trabajoEsquemas de herramientas más pequeños para trabajos frecuentes
Modelo más económico fijadoCosto predecible por resumen
Evitar el navegador y la delegación en trabajos por horaEvita gastos descontrolados

Gobernanza: memory.write_approval y skills.write_approval tienen el valor predeterminado false. Si los habilitas, los trabajos cron desatendidos pueden dejar operaciones de escritura pendientes que nunca se aprueben. Para resúmenes operativos, usa prompts de solo lectura o mantén desactivados los controles de aprobación, a menos que una persona revise /memory pending y /skills pending con regularidad (Memoria persistente).

Cron también deshabilita la herramienta cronjob durante sus ejecuciones para evitar bucles recursivos de programación.

Lista de verificación operativa

[ ] Gateway installed and running (hermes gateway install && hermes cron status)
[ ] Provider/model credentials valid; per-job model pinned for unattended jobs
[ ] Prompt is fully self-contained (URLs, format rules, [SILENT] when applicable)
[ ] Delivery target configured (HOME_CHANNEL env vars or explicit chat ID)
[ ] Minimal toolsets for digest jobs (hermes tools → cron platform)
[ ] Test with hermes cron run <job_id> before relying on schedule
[ ] For WhatsApp proactive: confirm 24h window or use Telegram/email instead
[ ] Backup jobs.json before bulk edits
[ ] Review ~/.hermes/cron/output/ for audit trail

Fallos comunes

SíntomaCausa probableSolución
Los trabajos nunca se ejecutanEl gateway no está en ejecuciónhermes gateway install; hermes cron status
Se omite el trabajo y se genera una alertaCambió el modelo globalFija el proveedor y el modelo en el trabajo
No se entrega ningún resultadoEl agente devolvió [SILENT]Es lo esperado para monitores; revisa el directorio de salida de cron
last_delivery_errorID de chat incorrecto o canal no descubiertoUsa los IDs sin modificar; asegúrate de que el gateway haya detectado el canal
WhatsApp 131047Fuera de la ventana de 24hEl usuario debe enviar primero un mensaje directo; usa Telegram para los resúmenes
Gasto descontrolado de tokensConjuntos completos de herramientas en trabajos frecuentesenabled_toolsets, monitores no_agent
El prompt se bloquea al crear el trabajoSe activó el escáner de seguridadReformula el prompt; evita patrones de exfiltración

Conclusión

Hermes cron convierte el harness en una capa de operaciones: razonamiento programado, skills adjuntas y entrega mediante el gateway, sin un producto de automatización independiente. Los detalles de implementación que importan en producción son la disponibilidad del gateway, los prompts independientes, los modelos fijados y la elección del canal adecuado para la mensajería proactiva.

Telegram y Discord son las opciones más sencillas para los resúmenes. WhatsApp es el punto delicado donde las capacidades del harness se encuentran con las políticas de Meta: la misma lección de la Parte 2, aplicada a los mensajes salientes programados.

Fuentes

Fuentes principales consultadas el 3 de julio de 2026:

  1. Hermes Agent — Tareas programadas (cron) — modelo de trabajos, programaciones, entrega, skills, [SILENT]. hermes-agent.nousresearch.com/docs/user-guide/features/cron
  2. Hermes Agent — Automatiza cualquier cosa con cron — cinco patrones de trabajos, incluidos pipelines. hermes-agent.nousresearch.com/docs/guides/automate-with-cron
  3. Hermes Agent — Cron solo con scripts (sin LLM) — no_agent, entrega desde scripts. hermes-agent.nousresearch.com/docs/guides/cron-script-only
  4. Hermes Agent — Bot de informe diario — tutorial de resumen de principio a fin. hermes-agent.nousresearch.com/docs/guides/daily-briefing-bot
  5. Hermes Agent — Funcionamiento interno de cron — programador, modelo de entrega, proveedor Chronos. hermes-agent.nousresearch.com/docs/developer-guide/cron-internals
  6. Hermes Agent — Comandos de la CLI — hermes cron, hermes send. hermes-agent.nousresearch.com/docs/reference/cli-commands
  7. Hermes Agent — Comandos de barra — /cron solo en la CLI. hermes-agent.nousresearch.com/docs/reference/slash-commands
  8. Hermes Agent — Referencia de herramientas — conjunto de herramientas cronjob. hermes-agent.nousresearch.com/docs/reference/tools-reference
  9. Hermes Agent — Servidor API — operaciones CRUD de la Jobs API. hermes-agent.nousresearch.com/docs/user-guide/features/api-server
  10. Hermes Agent — Proveedores de respaldo — cron hereda la cadena de conmutación por error. hermes-agent.nousresearch.com/docs/user-guide/features/fallback-providers
  11. Hermes Agent — Variables de entorno — variables de entorno para los canales principales. hermes-agent.nousresearch.com/docs/reference/environment-variables
  12. Hermes Agent — WhatsApp Cloud — ventana de 24h, 131047, falta de soporte para plantillas. hermes-agent.nousresearch.com/docs/user-guide/messaging/whatsapp-cloud
  13. Hermes Agent — Memoria persistente — write_approval, revisión en segundo plano. hermes-agent.nousresearch.com/docs/user-guide/features/memory
  14. Nous Research — Hermes Agent en GitHub — cron/jobs.py, hermes_cli/subcommands/cron.py. github.com/NousResearch/hermes-agent

Serie:

  1. Parte 1: Arquitectura de Hermes Agent y lecciones de RAG
  2. Parte 2: Agente de WhatsApp con Cloud API, Chatwoot, Hermes y OpenAI
  3. Parte 4: Creación de un copiloto de soporte con Hermes