⏰Tâches planifiées (Crons)
La page Crons exécute des tâches selon un calendrier : une commande shell ou un prompt Harness dans un sujet. Chaque exécution est enregistrée (statut, durée, sortie) et peut être signalée sur Telegram.
Créer une tâche
Cliquez sur Nouvelle tâche et remplissez :
| Champ | Signification |
|---|---|
| Nom | libellé court |
| Planification | expression cron ; l'éditeur la traduit en mots et liste les prochaines exécutions |
| Type | Shell (une commande exécutée avec bash) ou Claude (un prompt envoyé à une session dans un sujet) |
| Commande | shell : par ex. /root/maxxing/projects/acme/scripts/report.sh |
| Sujet, prompt, modèle | Claude : où la session s'exécute, ce qu'elle doit faire, quel modèle utiliser |
| Réutiliser la session | Claude : conserver une même session d'une exécution à l'autre (elle accumule du contexte) au lieu d'une nouvelle session à chaque fois |
| Notifier | Rapport Telegram : jamais, en cas d'échec (par défaut), toujours |
| Délai maximal | durée maximale (1 heure par défaut) |
Exécuter maintenant lance une tâche immédiatement. L'historique affiche les dernières exécutions avec la fin de leur sortie ; pour les tâches Claude, un lien ouvre la session.
Syntaxe de la planification
Cinq champs : minute heure jour-du-mois mois jour-de-la-semaine.
| Expression | S'exécute |
|---|---|
0 7 * * * |
tous les jours à 07h00 |
*/15 * * * * |
toutes les 15 minutes |
30 8 * * 1-5 |
en semaine à 08h30 |
0 9 1 * * |
le 1er de chaque mois à 09h00 |
0 */6 * * * |
toutes les 6 heures |
@daily, @hourly, @weekly, @monthly, @reboot |
raccourcis |
Fuseau horaire
Le démon cron déclenche les tâches dans le fuseau horaire système du serveur, alors que l'interface (aperçu de la planification, prochaines exécutions, historique) utilise le fuseau horaire de Paramètres -> Général. Les deux doivent être identiques, sinon une tâche affichée « à 07h00 » s'exécute à une autre heure. Sur un serveur neuf, le fuseau que vous choisissez lors de la prise en main (ou dans Paramètres -> Général) devient aussi le fuseau système ; maxxing doctor vous avertit s'ils diffèrent.
Sur un serveur déjà utilisé (autres tâches planifiées, autres services), l'installateur conserve l'horloge du serveur (system_clock = keep dans la configuration) : Harness Maxxing écrit alors la ligne crontab de chaque tâche pour qu'elle se déclenche toutes les heures à ses minutes, et maxxing cron run <id> --if-due vérifie la planification dans votre fuseau avant d'exécuter - ainsi les tâches s'exécutent bien aux heures que vous voyez, heure d'été comprise, et les autres programmes gardent leur horloge. Changez de mode avec maxxing init --system-clock keep|follow.
Pour changer le fuseau système à la main (mode follow) :
timedatectl set-timezone Europe/Paris && systemctl restart cron
maxxing init --timezone Europe/Paris && systemctl restart claude-maxxing
Tâches intégrées
- Compactage de la mémoire – tous les jours à 05h00, tâche Claude utilisant la skill
memory-compaction(créée à l'installation, activée quand vous terminez la prise en main avec Claude connecté - elle n'échoue donc jamais avant que Claude soit connecté ; si vous avez sauté cette étape, activez-la sur la page Crons ; vous pouvez la modifier, la désactiver ou la supprimer). - Sauvegarde de la mémoire – créée quand vous configurez la Sauvegarde (04h40 par défaut).
- Recherche de mises à jour – le lundi à 09h00, tâche shell
maxxing update --check --notify: quand une nouvelle version existe, un message Telegram vous invite à ouvrir le sujetsystem/harness(system/updatesur les serveurs installés avant la 2.0.0a33) et à dire « update ». Elle ne met jamais à jour d'elle-même. Sur un serveur sans dépôt git ni licence (une copie locale), elle est créée désactivée (rien à vérifier) ;maxxing update --checkrépond alors « updates unavailable (no git remote) ». - Tâches du matin (désactivée) – tous les jours à 08h00, tâche Claude dans
general/inbox(system/tasksavant la 2.0.0a33) : tâches en retard et du jour, envoyées sur Telegram. Activez-la sur la page Crons. - Rappel de renouvellement – créée quand vous demandez des rappels d'abonnements (le lundi à 09h30, dans le sujet qui contient
accounts.md) ; les serveurs installés avant la 2.0.0a33 l'ont désactivée danssystem/accounts. - Les Projets de démarrage ajoutent leurs propres tâches, créées désactivées.
Les tâches intégrées sont créées une seule fois, à l'installation (ou par la mise à jour qui les a introduites) ; une tâche que vous supprimez n'est jamais recréée. Avec la notification « toujours », le rapport inclut la sortie de la tâche (la réponse d'une tâche Claude), si bien qu'un rappel arrive sous forme de message lisible.
Comment ça marche
Chaque tâche activée devient une ligne dans la crontab de root, à l'intérieur d'un bloc géré par 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 <<<
Les lignes en dehors du bloc sont à vous et ne sont jamais touchées ; elles sont listées en lecture seule comme tâches « externes ». Si la ligne de fermeture du bloc est supprimée à la main, seules les lignes maxxing cron run sont considérées comme gérées : vos propres lignes situées après sont conservées.
Depuis un terminal : maxxing cron list, maxxing cron run <id> (l'exécute dans votre terminal et attend), maxxing cron sync (réécrit le bloc), maxxing cron deleted (les tâches supprimées conservées) et maxxing cron restore <id> (en remet une en place). Deux exécutions d'une même tâche ne se chevauchent jamais.
Mémoire et limites de temps
Une exécution planifiée démarre exactement comme Exécuter maintenant : dans sa propre unité systemd (maxxing-cron-<id>, voir journalctl -u maxxing-cron-<id>), de sorte qu'une tâche gourmande ne peut pas faire tomber tout le serveur pendant la nuit :
- chaque tâche peut utiliser au maximum
unit_memory_maxde la RAM (75 % par défaut, le même plafond qu'une session) ; - toutes les tâches qui s'exécutent en même temps se partagent un seul budget,
jobs_memory_max(75 % de la RAM par défaut, l'unitémaxxing-jobs.slice). Pour le modifier, définissezjobs_memory_maxdans/var/lib/claude-maxxing/config.json("3G","50%", ou""pour aucune limite), puis lancezmaxxing init; - une fois son délai dépassé, une tâche shell reçoit un signal d'arrêt, puis 5 secondes plus tard tout ce qu'elle a lancé est tué, même un programme qui ignore le signal d'arrêt.
Quand la tâche se termine, les programmes qu'elle a laissés tourner en arrière-plan s'arrêtent avec elle. Pour lancer un programme qui doit continuer à tourner (un serveur, un bot), faites-en plutôt un service systemd qu'une tâche cron (demandez à Claude). Les installations faites avant la 2.0.0-alpha.70 gardent l'ancien comportement : leurs tâches planifiées s'exécutent dans le processus cron comme avant, donc les programmes qu'elles laissent en arrière-plan continuent de tourner, sans les plafonds mémoire ci-dessus ("cron_keep_background": true dans config.json ; mettez false pour obtenir les unités de tâche). Même chose pour les protections des sessions et des tâches ("unit_hardening": false ; true les active).
Sur un serveur sans systemd (certains conteneurs), la tâche s'exécute dans le processus cron : le délai maximal s'applique toujours, mais pas les limites de mémoire.
Les secrets marqués « expose » dans Paramètres -> Clés sont disponibles comme variables d'environnement pour les tâches shell et les sessions Claude.
Une tâche shell s'exécute avec la même configuration Claude que vos sessions (le dossier Claude Code de Harness et le compte Claude connecté dans Harness), de sorte qu'un script peut lui-même appeler claude -p "..." - par exemple un script qui prépare des données, demande un texte à Claude, puis le publie.
Conseils pour les tâches Claude
Rédigez le prompt comme une instruction complète : ce qu'il faut produire, où l'écrire, quelle skill utiliser. La tâche n'a aucune conversation précédente, sauf si « Réutiliser la session » est activé.