Aller au contenu
TYPENouvelle primitive
ÉTAPEProduction
DIFFICULTÉModéré
MÉTIERAutomatiser une tâche
POURCréateurs d'IA
POURDevs backend
SERVICESCron
SERVICESAgent
POURQUOI HOODYIA-natif
POURQUOI HOODYHTTP-natif
TYPENouvelle primitive
ÉTAPEProduction
DIFFICULTÉModéré
MÉTIERAutomatiser une tâche
POURCréateurs d'IA
POURDevs backend
SERVICESCron
SERVICESAgent
POURQUOI HOODYIA-natif
POURQUOI HOODYHTTP-natif
TYPENouvelle primitive
ÉTAPEProduction
DIFFICULTÉModéré
MÉTIERAutomatiser une tâche
POURCréateurs d'IA
POURDevs backend
SERVICESCron
SERVICESAgent
POURQUOI HOODYIA-natif
POURQUOI HOODYHTTP-natif
TYPENouvelle primitive
ÉTAPEProduction
DIFFICULTÉModéré
MÉTIERAutomatiser une tâche
POURCréateurs d'IA
POURDevs backend
SERVICESCron
SERVICESAgent
POURQUOI HOODYIA-natif
POURQUOI HOODYHTTP-natif
CRON · AGENT · 0 7 * * *

Planifie l'agent, pas le script

Une ligne cron traditionnelle lance reconcile.sh à 2h. Une ligne cron Hoody POST un prompt à hoody-agent. Le schedule est fixe. Le travail ne l'est pas. Les cas particuliers cessent d'être des branches que vous maintenez — ils deviennent du contexte que l'agent raisonne.

Lire la doc cron + agent

Deux URLs, un prompt

Hoody Cron est un crontab managé sur chaque container. Hoody Agent est un agent autonome intégré sur le même container. L'entrée cron curl l'agent. L'agent lit la date, lit les données, et décide ce que la journée demande. Les deux surfaces sont HTTP — le cron vit à /users/me/entries, l'agent à /api/v1/agent/tasks. Aucun glue code entre les deux.

cron-1.containers.hoody.com · entry
POST · cron/users/me/entries
# POST /api/v1/cron/users/me/entries
{
  "schedule": "0 7 * * *",
  "command": "curl -X POST $AGENT/api/v1/agent/tasks \
     -d @prompt.json",
  "comment": "morning-reports"
}
agent-1.containers.hoody.com · task
POST · agent/tasks
# prompt.json — the body of the POST
{
  "description": "Réconcilie les commandes d'hier. Remappe si le schéma a dérivé. Arrête et alerte l'astreinte si le score d'anomalie > 3. Si aujourd'hui est le dernier jour du mois, inclus la clôture mensuelle sur le ledger ajusté fiscalement.",
  "mode": "code"
}

Deux POST et vous avez terminé. La ligne crontab ne change plus jamais — le seul fichier que vous maintenez est le prompt. Nouveau cas particulier ? Ajoute une phrase. Nouvelle règle d'anomalie ? Ajoute une phrase. Le schedule continue de se déclencher ; l'agent comprend ce que chaque déclenchement signifie.

Trois choses qu'un prompt fait qu'un script ne peut pas

La forme du travail que l'agent reçoit est toujours la même — une date, un dataset, un objectif. Ce qui change, c'est ce que l'agent décide d'en faire.

RAISONNEMENT

Lit la date, lit les données, décide

L'agent tourne après le déclenchement du cron. Il vérifie le calendrier — fin de mois, jour férié, clôture fiscale. Il échantillonne le dataset — schéma, volume, score d'anomalie. Il choisit l'action suivante avec ce contexte, pas depuis un if-tree statique que vous avez écrit il y a six mois.

ADAPTATION

Nouvelles colonnes ? Nouvelles devises ? Même prompt.

Quand l'export d'hier ajoute une colonne refund_reason, un script casse et vous paie. L'agent lit le schéma, le mappe au champ legacy, et note le changement dans le résumé du run. La ligne crontab n'a jamais eu à le savoir.

OBSERVABILITÉ

Chaque run est un paragraphe, pas un return code

Chaque run renvoie ce que l'agent a décidé et pourquoi. L'historique est en français — « skipped: pas de nouvelles données », « adapted: colonne refund ajoutée », « anomaly: pic de refunds +412%, astreinte alertée » — pas exit code 0 / exit code 1. Les logs du cron deviennent un journal.

Du schedule à la décision

Trois étapes — le cron se déclenche, l'agent raisonne, la décision atterrit. L'étape du milieu est celle que vous écriviez avant vous-même dans un script shell de 400 lignes avec dix-sept branches de cas particuliers. Maintenant c'est un prompt.

Boucle quotidienne en trois étapesUN PROMPT · INFINIS CAS PARTICULIERS
07:00

Le cron se déclenche

Hoody Cron lance l'entrée. La ligne crontab est un curl : POST /api/v1/agent/tasks avec le corps du prompt. Pas de retries écrits par vous, pas de plomberie de logging — le service cron injecte l'entrée dans le crontab système et suit le run.

07:00 + ε

L'agent raisonne

L'agent reçoit la description, ouvre ses outils — terminal, files, sqlite, browser, exec — et choisit un plan d'action. Il peut exécuter, skip, adapter ou alerter. Les choix changent chaque jour. Les instructions, non.

07:00 — 07:04

La décision atterrit

Le run se termine. L'agent renvoie une ligne de résumé : rapports régénérés, skipped car pas de nouvelles données, arrêté sur anomalie. vous le lis sur votre téléphone au petit-déjeuner.

Le schedule n'a pas changé. Le script n'a pas changé. Ce qui a changé, c'est si vous, l'humain, deviez vous lever pour vous en occuper. Avec l'agent dans la boucle, la réponse est presque toujours non — et l'historique de runs vous dit pourquoi.

Ce que vous obtenez du couple cron + agent

Hoody Cron et Hoody Agent sont deux services sur le même conteneur, tous deux joignables en HTTP. Les chiffres viennent des surfaces documentées — pas de benchmarks inventés.

  1. TAILLE CRONTAB1 ligne

    Un curl dans le crontab, à l'infini. Le corps du prompt est la seule chose que vous réécris — et vous le fais dans un fichier JSON, pas en lançant crontab -e.

  2. ENDPOINTS AGENT100+

    hoody-agent expose la surface complète — terminal exec, lecture/écriture de fichiers, requêtes sqlite, automation navigateur, contrôle de daemon — à la task de l'agent comme appels HTTP simples.

  3. LIGNES DE GLUE0

    Aucun SDK entre le cron et l'agent. POST une URL, lit une autre. Les deux services vivent sur le même conteneur, donc l'appel est rapide en réseau local.

Hoody Cron supporte les expressions standards à 5 champs (* * * * *) et les macros (@hourly, @daily, @weekly, @monthly, @yearly). La création de task Hoody Agent est un POST /api/v1/agent/tasks ; les updates live streament sur /api/v1/agent/ws.

L'entrée cron ne lance pas le job — elle demande à un agent de comprendre le job.

avant · script à branchesaprès · prompt à branches
VERS QUOI POINTAIT L'ANCIEN CRON0 2 * * * /usr/local/bin/reconcile.sh # 412 lignes · 17 cas particulierschaque nouvelle règle de fin de mois voulait dire éditer le script et prier
VERS QUOI IL POINTE MAINTENANT0 7 * * * curl POST agent/tasks -d @prompt.jsonune ligne, à l'infini — le prompt est le seul artéfact que vous maintenez
Lire la spec agent task

Ce que ça remplace

L'ensemble des choses que vous écriviez dans reconcile.sh parce que cron savait seulement lancer des fichiers. Chacune est une branche, un flag, une config — dont le schedule n'a en réalité pas besoin de connaître. L'agent lit le jour et décide.

  • jobs cron scriptés fragilesBranches bash qui crashent quand une colonne d'entrée bouge
  • maintenance manuelle pour les schémas qui changentÉditer reconcile.sh chaque fois que l'export upstream gagne un champ
  • scripts ETL écrits à la mainUn dossier de fichiers .sh qu'une seule personne de l'équipe comprend
  • logique cron if X then Y else ZFin de mois, jour férié, anomalie — trois flags câblés dans un script
  • scripts de polling-de-changementsUn cron séparé qui surveille la sortie du premier cron et décide
  • schedulers if-else codés à la mainUn dispatcher de 200 lignes dont le seul boulot est de choisir quel script lancer

Arrêtez de maintenir des scripts cron. Commencez à maintenir des prompts. Le schedule se déclenche ; l'agent comprend.

Lire la doc cron + agent

Lis les autres