Hermes Agent: Tarefas Agendadas

Última atualização: 2026-08-31

Tarefas agendadas transformam o Hermes Agent em seu assistente de plantão automático — resumo de notícias toda manhã, relatório semanal toda sexta, sem precisar acionar manualmente.

💡 Dica: O sistema Cron do Hermes é embutido, não precisa de agendador externo (como crontab). Definições de tarefas ficam diretamente na configuração, profundamente integradas com habilidades e memória.

📋 Pré-requisitos: Lição 7 — Sistema de Habilidades

1. O Que Você Vai Aprender

# Conteúdo
Sintaxe de agendamento Cron
Criação e configuração de tarefas
Habilidades acionadas por timer
Monitoramento e logs de tarefas
Tratamento de erros e retentativas

2. História

(1) Problema: Operações Repetitivas Diárias

Bob gasta 15 minutos toda manhã: checar email, ver status Git, navegar notícias técnicas. Toda sexta ainda precisa escrever relatório manualmente.

(2) Solução: Agent em Plantão Automático

Alice configurou tarefas agendadas, o Agent completa automaticamente:

BASH
# Toda manhã às 9:00
⏰ 09:00 Agent: Bom dia! Resumo de hoje:
   - 3 emails não lidos (1 urgente)
   - 2 PRs pendentes de revisão
   - Destaque: React 19 lançamento oficial

# Toda sexta às 17:00
⏰ Sex 17:00 Agent: Relatório semanal gerado:
   - 12 commits completados
   - 5 bugs corrigidos
   - 2 PRs merged
   [Relatório enviado para seu email]

3. Sintaxe de Agendamento Cron

(1) Sintaxe Básica

┌───────────── minuto (0-59)
│ ┌───────────── hora (0-23)
│ │ ┌───────────── dia (1-31)
│ │ │ ┌───────────── mês (1-12)
│ │ │ │ ┌───────────── dia da semana (0-6, 0=domingo)
│ │ │ │ │
* * * * *

(2) Expressões Comuns

Expressão Significado
0 9 * * * Todo dia às 9:00
0 9 * * 1-5 Dias úteis às 9:00
0 17 * * 5 Toda sexta às 17:00
*/30 * * * * A cada 30 minutos
0 9,12,18 * * * Todo dia às 9:00, 12:00, 18:00
0 0 1 * * Dia 1 de cada mês à meia-noite

4. Criação e Configuração de Tarefas

(1) Via Arquivo de Configuração

YAML
cron:
  enabled: true
  timezone: "America/Sao_Paulo"
  
  tasks:
    - name: "daily-briefing"
      schedule: "0 9 * * 1-5"
      description: "Resumo matinal de dias úteis"
      skill: "daily-briefing"
      notify:
        platform: "telegram"
        chat_id: 123456789
      
    - name: "weekly-report"
      schedule: "0 17 * * 5"
      description: "Relatório semanal de sexta"
      actions:
        - type: "tool"
          name: "code_shell"
          command: "git log --since='1 week ago' --oneline"
        - type: "skill"
          name: "report-generator"
        - type: "tool"
          name: "email_send"
          to: "alice@company.com"
          subject: "Relatório de trabalho semanal"
      
    - name: "code-quality-check"
      schedule: "0 2 * * *"
      actions:
        - type: "tool"
          name: "code_shell"
          command: "cd ~/projects/myapp && npm run lint"
        - type: "tool"
          name: "code_shell"
          command: "cd ~/projects/myapp && npm test"
      on_failure:
        notify: "telegram"
        message: "⚠️ Verificação de qualidade de código falhou"

(2) Via Linha de Comando

BASH
hermes cron add \
  --name "morning-briefing" \
  --schedule "0 9 * * 1-5" \
  --skill "daily-briefing" \
  --notify telegram

hermes cron list
hermes cron run morning-briefing
hermes cron pause morning-briefing
hermes cron resume morning-briefing
hermes cron delete morning-briefing

(3) Via Conversa

BASH
me: Todo dia às 9 da manhã me mande um resumo de notícias técnicas
Agent: Vou criar a tarefa agendada:
  Nome: tech-news-digest
  Agendamento: 0 9 * * *
  Ações: web_search → summarize → notify
  
  Confirmar criação? (y/n)
me: y
Agent: ✅ Tarefa agendada "tech-news-digest" criada!

5. Habilidades Acionadas por Timer

(1) Combinação Habilidade + Cron

YAML
name: "daily-briefing"
description: "Resumo diário de trabalho"
type: "cron-triggered"

actions:
  - type: "tool"
    name: "email_check"
    params:
      folder: "inbox"
      unread_only: true
      
  - type: "tool"
    name: "code_shell"
    command: "git -C ~/projects log --since='1 day ago' --oneline"
    
  - type: "tool"
    name: "web_search"
    query: "notícias técnicas IA desenvolvimento"
    
  - type: "generate"
    template: |
      📋 Resumo de Hoje ({{ date }})
      
      📧 Emails não lidos: {{ email_count }}
      🔨 Git Commits: {{ commit_count }}
      📰 Destaques:
      {{#each news}}
      - {{this.title}}
      {{/each}}

(2) Execução Condicional

YAML
cron:
  tasks:
    - name: "pr-review-reminder"
      schedule: "0 10 * * 1-5"
      condition: "pending_prs > 0"
      actions:
        - type: "tool"
          name: "github_api"
          endpoint: "/repos/{owner}/{repo}/pulls"
          params:
            state: "open"
        - type: "notify"
          platform: "slack"
          message: "Há {{count}} PRs pendentes de revisão"

6. Monitoramento e Logs de Tarefas

(1) Histórico de Execuções

BASH
hermes cron history

# ┌──────────────────┬──────────┬─────────┬────────┬──────────┐
# │ Task             │ Schedule │ Status  │ Duration│ Last Run │
# ├──────────────────┼──────────┼─────────┼────────┼──────────┤
# │ daily-briefing   │ 0 9 * *  │ ✅ OK   │ 12s    │ 09:00    │
# │ weekly-report    │ 0 17 * 5 │ ✅ OK   │ 45s    │ Sex 17:00│
# │ code-quality     │ 0 2 * *  │ ❌ FAIL │ 3s     │ 02:00    │
# └──────────────────┴──────────┴─────────┴────────┴──────────┘

(2) Logs de Execução

BASH
hermes cron logs daily-briefing --last

# [09:00:01] Task "daily-briefing" started
# [09:00:02] → tool: email_check → 3 unread
# [09:00:05] → tool: code_shell → 5 commits
# [09:00:08] → tool: web_search → 4 results
# [09:00:10] → generate: summary
# [09:00:12] → notify: telegram → sent
# [09:00:12] Task "daily-briefing" completed (12s)

7. Tratamento de Erros e Retentativas

(1) Estratégia de Retentativa

YAML
cron:
  tasks:
    - name: "api-health-check"
      schedule: "*/5 * * * *"
      actions:
        - type: "tool"
          name: "web_api"
          url: "https://api.example.com/health"
      retry:
        max_attempts: 3
        backoff: "exponential"
        initial_delay: 5
        max_delay: 60
      on_failure:
        notify: "telegram"
        message: "⚠️ Verificação de saúde da API falhou após 3 retentativas"
        escalate_after: 3

(2) Timeout e Degradação

YAML
cron:
  tasks:
    - name: "daily-briefing"
      schedule: "0 9 * * 1-5"
      timeout: 120
      on_timeout:
        action: "notify"
        message: "⚠️ Geração do resumo matinal excedeu tempo, usando versão simplificada"
        fallback_skill: "daily-briefing-simple"

❓ Perguntas Frequentes

P: Tarefas agendadas são precisas? R: Precisas ao minuto. Podem ter alguns segundos de variação por carga do sistema, não adequadas para precisão sub-segundo.

P: O que acontece com tarefas quando o computador desliga? R: Tarefas no período desligado são puladas. Opcional: run_on_startup: true para executar tarefas perdidas ao ligar.

P: Pode agendar habilidades e ferramentas? R: Sim. Cron pode acionar qualquer habilidade, cadeia de ferramentas, comando Shell ou chamada de API.

P: Como configurar fuso horário? R: cron.timezone na configuração, padrão segue o fuso do sistema. Suporta todos os nomes IANA.

P: Quanto recurso as tarefas agendadas consomem? R: Ociosas quase zero. Execução depende do conteúdo, geralmente <1% CPU.

P: Como depurar tarefas agendadas? R: hermes cron run <name> para acionar manualmente e ver logs completos, sem esperar o timer.


📖 Resumo


📝 Exercícios

  1. Básico (⭐): Crie uma tarefa agendada para todo dia às 9h, enviando "Bom Dia" ao Telegram.
  2. Intermediário (⭐⭐): Crie uma tarefa combinando habilidade e ferramentas, resumindo commits Git diariamente e enviando por email.
  3. Avançado (⭐⭐⭐): Desenhe um sistema completo de agenda automatizada (resumo matinal + lembrete no almoço + balanço noturno + relatório semanal), incluindo tratamento de erros e estratégia de degradação.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%