Harness MaxxingDocumentação
📚 Todas as páginas

💬 Usar o Harness Maxxing · 6 min de leitura

⏰Tarefas agendadas (Crons)

A página Crons executa tarefas de forma agendada: um comando shell ou um prompt do Harness em um tópico. Cada execução é registrada (status, duração, saída) e pode ser reportada no Telegram.

Criando uma tarefa

Clique em Nova tarefa e preencha:

Campo Significado
Nome rótulo curto
Agendamento expressão cron; o editor mostra a expressão em palavras e lista as próximas execuções
Tipo Shell (um comando executado com bash) ou Claude (um prompt enviado a uma sessão em um tópico)
Comando shell: por exemplo /root/maxxing/projects/acme/scripts/report.sh
Tópico, prompt, modelo Claude: onde a sessão é executada, o que fazer, qual modelo usar
Reutilizar sessão Claude: mantém uma única sessão entre as execuções (ela acumula contexto) em vez de criar uma nova sessão a cada vez
Notificar Relatório no Telegram: nunca, em caso de falha (padrão), sempre
Tempo limite duração máxima (padrão: 1 hora)

Executar agora inicia uma tarefa imediatamente. O histórico mostra as últimas execuções com o final da saída; para as tarefas Claude, um link abre a sessão.

Sintaxe de agendamento

Cinco campos: minute hour day-of-month month day-of-week.

Expressão Executa
0 7 * * * todos os dias às 07:00
*/15 * * * * a cada 15 minutos
30 8 * * 1-5 em dias úteis às 08:30
0 9 1 * * no dia 1º de cada mês às 09:00
0 */6 * * * a cada 6 horas
@daily, @hourly, @weekly, @monthly, @reboot atalhos

Fuso horário

O daemon do cron dispara as tarefas no fuso horário do sistema do servidor, enquanto a interface (prévia do agendamento, próximas execuções, histórico) usa o fuso horário de Settings -> General. Os dois precisam ser iguais; caso contrário, uma tarefa exibida "às 07:00" é executada em outro horário. Em um servidor novo, o fuso que você escolhe no onboarding (ou em Settings -> General) também passa a ser o fuso do sistema; o maxxing doctor avisa se eles forem diferentes.

Em um servidor que já está em uso (outras tarefas agendadas, outros serviços), o instalador mantém o relógio do servidor (system_clock = keep na configuração): o Harness Maxxing então escreve a linha de crontab de cada tarefa para disparar toda hora nos minutos indicados, e maxxing cron run <id> --if-due verifica o agendamento no seu fuso antes de executar - assim as tarefas continuam rodando nos horários que você vê, inclusive com o horário de verão, e os outros programas mantêm o relógio deles. Alterne com maxxing init --system-clock keep|follow.

Para mudar o fuso do sistema manualmente (modo follow):

timedatectl set-timezone Europe/Paris && systemctl restart cron
maxxing init --timezone Europe/Paris && systemctl restart claude-maxxing

Tarefas integradas

  • Compactação de memória – diariamente às 05:00, tarefa Claude que usa a skill memory-compaction (criada na instalação e ativada quando você conclui o onboarding com o Claude conectado - assim ela nunca falha antes de o Claude estar conectado; se você pulou essa etapa, ative-a na página Crons; você pode editá-la, desativá-la ou excluí-la).
  • Backup da memória – criado quando você configura o Backup (padrão: 04:40).
  • Verificação de atualizações – às segundas-feiras às 09:00, tarefa shell maxxing update --check --notify: quando existe uma nova versão, uma mensagem no Telegram avisa para você abrir o tópico system/harness (system/update em servidores instalados antes da 2.0.0a33) e dizer "update". Ela nunca atualiza sozinha. Em um servidor sem repositório git remoto nem licença (uma cópia local), ela é criada desativada (não há nada para verificar); nesse caso, maxxing update --check responde "updates unavailable (no git remote)".
  • Tarefas da manhã (desativada) – diariamente às 08:00, tarefa Claude em general/inbox (system/tasks antes da 2.0.0a33): tarefas atrasadas e as de hoje, enviadas pelo Telegram. Ative-a na página Crons.
  • Lembrete de renovação – criado quando você pede lembretes de assinaturas (segundas-feiras às 09:30, no tópico que guarda o accounts.md); em servidores instalados antes da 2.0.0a33, ele fica desativado em system/accounts.
  • Os projetos iniciais adicionam suas próprias tarefas, criadas desativadas.

As tarefas integradas são criadas uma única vez, na instalação (ou pela atualização que as introduziu); uma tarefa que você exclui nunca é recriada. Com a notificação em "sempre", o relatório inclui a saída da tarefa (a resposta de uma tarefa Claude), de modo que um lembrete chega como uma mensagem legível.

Como funciona

Cada tarefa ativada vira uma linha no crontab do root, dentro de um bloco gerenciado pelo Harness Maxxing:

# >>> claude-maxxing (managed) >>>
0 5 * * * MAXXING_CRON_DETACH=1 /usr/local/bin/maxxing cron run c_3fa91c >/dev/null 2>&1
# <<< claude-maxxing <<<

As linhas fora do bloco são suas e nunca são alteradas; elas aparecem somente para leitura como tarefas "externas". Se a linha de fechamento do bloco for apagada manualmente, apenas as linhas maxxing cron run são tratadas como gerenciadas: as suas próprias linhas depois dela são mantidas. Em um terminal: maxxing cron list, maxxing cron run <id> (executa no seu terminal e espera terminar), maxxing cron sync (reescreve o bloco), maxxing cron deleted (as tarefas removidas que foram guardadas) e maxxing cron restore <id> (traz uma de volta). Duas execuções da mesma tarefa nunca se sobrepõem.

Memória e limites de tempo

Uma execução agendada começa exatamente como Executar agora: em sua própria unidade systemd (maxxing-cron-<id>, veja journalctl -u maxxing-cron-<id>), de modo que uma tarefa gulosa não consiga derrubar o servidor inteiro durante a noite:

  • cada tarefa pode usar no máximo unit_memory_max da RAM (padrão: 75 %, o mesmo limite de uma sessão);
  • todas as tarefas em execução ao mesmo tempo dividem um único orçamento, jobs_memory_max (padrão: 75 % da RAM, a unidade maxxing-jobs.slice). Para alterá-lo, defina jobs_memory_max em /var/lib/claude-maxxing/config.json ("3G", "50%" ou "" para nenhum limite) e depois execute maxxing init;
  • ao ultrapassar o tempo limite, uma tarefa shell recebe um sinal de parada e, 5 segundos depois, tudo o que ela iniciou é encerrado à força, até mesmo um programa que ignore o sinal de parada.

Quando a tarefa termina, os programas que ela deixou rodando em segundo plano terminam junto com ela. Para iniciar um programa que precisa continuar rodando (um servidor, um bot), transforme-o em um serviço systemd em vez de uma tarefa cron (peça ao Claude). As instalações feitas antes da 2.0.0-alpha.70 mantêm o comportamento antigo: suas tarefas agendadas são executadas no processo do cron como antes, então os programas que elas deixam em segundo plano continuam rodando, sem os limites de memória acima ("cron_keep_background": true no config.json; defina como false para obter as unidades de tarefa). O mesmo vale para as proteções de sessões e tarefas ("unit_hardening": false ali; true as ativa).

Em um servidor sem systemd (alguns contêineres), a tarefa é executada dentro do processo do cron: o tempo limite continua valendo, mas os limites de memória não.

Os segredos marcados como "expose" em Settings -> Keys ficam disponíveis como variáveis de ambiente para as tarefas shell e as sessões do Claude.

Uma tarefa shell é executada com a mesma configuração do Claude das suas sessões (a pasta do Claude Code do Harness e a conta do Claude conectada no Harness), então um script pode chamar claude -p "..." por conta própria - por exemplo, um script que prepara dados, pede um texto ao Claude e depois o publica.

Dicas para tarefas Claude

Escreva o prompt como uma instrução completa: o que produzir, onde gravar, qual skill usar. A tarefa não tem nenhuma conversa anterior, a menos que "Reutilizar sessão" esteja ativado.

💡 Travou? Abra uma sessão no topic system › help e pergunte com suas palavras: o Claude lê esta documentação no seu servidor e responde.✏️ Melhorar esta página