Parcours · administrateur de la plateforme
Choisir les actions qu'Alfred pourra appeler, lui confier un relevé quotidien des certificats, le régler, puis le suivre au cockpit et dans l'historique.
Claire Martin veut savoir chaque matin quels certificats TLS du Hub d'Exemplia arrivent à
échéance. Elle confie ce relevé à Alfred, l'agent du Hub : un prompt, confié à un modèle de
langage, qui appelle des actions du Hub pour y répondre. Il vous faut un compte SUPERADMIN : tous
les écrans d'Alfred sont sous /hub/**.
Rejouer tout le parcours dans le Hub
Alfred agit par les actions des workers du Hub. Chaque run reçoit un profil (une whitelist) : le modèle ne voit que les actions de ce profil, les autres ne lui sont même pas proposées.
Trois profils sont livrés avec le Hub et ne se suppriment pas :
| Profil | Contenu |
|---|---|
readonly |
toutes les actions en lecture seule ; profil par défaut |
mail |
lecture seule, lecture et envoi de courrier, appel des applications |
apps |
lecture seule, démarrage et redémarrage d'applications |
Lister des certificats est une lecture : readonly suffit. Choisissez toujours le plus étroit.
Un profil sur mesure se crée avec + Whitelist custom, en nommant les actions au format
worker__action, séparées par des virgules ; @readonly y ajoute toute la lecture seule.
À droite, la deny-list globale : delete_*, drop_*, purge_*, revoke_*, arrêts,
restaurations, écritures de secrets… Aucun profil ne peut accorder ces actions, même en les
nommant. Elle est écrite dans le code.
⚠ Un nom d'action mal écrit est ignoré sans message, à la création du profil comme au
lancement d'un run. Vérifiez le nom exact dans la liste des outils MCP
(tools/list) ou dans MCPagger.
Faire cette étape dans le Hub → Pour aller plus loin : alfred.whitelists.ecran alfred.whitelists.creer.actions alfred.whitelists.denylist alfred.whitelists.profil.seede
Une tâche dit à Alfred quoi faire, quand, avec quels droits et dans quelles limites : un
prompt, un déclencheur (CRON, EVENT, MANUAL), une whitelist et des
budgets.
L'écran Tâches ne crée pas de tâche. La création passe par l'action
alfred_admin.create_task, par MCP ou par REST :
{ "name": "alfred_admin__create_task",
"arguments": { "task_name": "Relevé quotidien des certificats",
"prompt": "Liste les certificats TLS gérés par le Hub et signale ceux qui expirent dans moins de 21 jours.",
"trigger_type": "CRON", "cron_expr": "0 7 * * *", "whitelist": "readonly" } }
Une tâche CRON exige une expression valide. La tâche apparaît aussitôt dans cet écran, en
carte : c'est la première, « Relevé quotidien des certificats ».
⚠ Aucun bouton « Exécuter maintenant » : pour un premier essai sans attendre 7 h, appelez
alfred_admin.run_now avec le numéro de la tâche (task).
Action du Hub : alfred_admin.create_task
Faire cette étape dans le Hub → Pour aller plus loin : alfred.tasks.ecran alfred.tasks.declencheur
Éditer déplie le formulaire de la carte. On y écrit le prompt comme à un collègue : ce qu'il faut vérifier, sous quelle forme rendre le résultat. Le prompt n'élargit jamais les droits : une action hors de la whitelist reste inaccessible, quoi qu'il dise.
Le CRON s'écrit en cinq champs, à l'heure de Paris : 0 7 * * *, tous les jours à 7 h.
Les budgets bornent chaque run ; à 0, ils prennent leur valeur par défaut :
| Champ | À 0 | Au-delà |
|---|---|---|
max_steps |
15 étapes | le run s'arrête |
budget_tokens |
100 000 tokens | budget_exceeded |
timeout_seconds |
300 s | timeout |
max_runs_per_hour |
sans limite | déclenchement refusé |
Enregistrer : le prochain run applique les changements ; un run en cours garde les anciens.
⚠ Choisir « (défaut readonly) » dans Whitelist ne change rien : la tâche garde son ancien
profil. Choisissez readonly explicitement. ⚠ La case Tâche activée est toujours envoyée :
enregistrer avec la case décochée désactive la tâche. ⚠ La définition publiée de
update_task n'annonce pas les budgets ; le code les accepte pourtant.
Action du Hub : alfred_admin.update_task
Faire cette étape dans le Hub → Pour aller plus loin : alfred.tasks.form.prompt alfred.tasks.form.cron_expr alfred.tasks.form.whitelist alfred.tasks.form.budget_tokens alfred.tasks.form.enabled alfred.tasks.form.enregistrer
Le cockpit réunit ce qu'Alfred fait en ce moment (Runs en cours, étapes en direct), ce qu'il vient de faire (Derniers runs, les huit derniers) et ce qu'il fera ensuite (Prochaines exécutions, les tâches CRON actives).
La ligne du relevé affiche 2026-10-29T06:00:00Z : c'est bien 7 h à Paris, l'heure d'hiver
étant décalée d'une heure. Les heures du cockpit sont en UTC.
Deux boutons par tâche :
En haut, le kill-switch suspend tout Alfred d'un clic : plus aucun déclenchement, et les runs en cours s'arrêtent à leur prochaine étape.
⚠ Sur le Hub 3.77.0, le message de ⏸ et de ⏭ s'affiche même si l'action a échoué : sur une
tâche sans CRON, l'écran annonce « sautée » alors que rien n'a changé. ⚠ La pause du
kill-switch vit en mémoire : un redémarrage du Hub la lève. ⚠ Les runs queued
n'apparaissent pas dans « Runs en cours ».
Action du Hub : alfred_admin.skip_next
Faire cette étape dans le Hub → Pour aller plus loin : alfred.cockpit.ecran alfred.cockpit.col.prochaine alfred.cockpit.sauter alfred.cockpit.pause_tache alfred.cockpit.kill_switch
L'historique répond à « qu'a fait Alfred, et pourquoi ? ». Chaque run y figure avec son
statut, sa tâche, ses tokens, ses étapes et sa durée. Le run #1040 est le relevé du
28 octobre : success, quatre étapes.
Un clic l'ouvre à droite, en entier : le déclencheur, le prompt effectif (figé au
départ du run : modifier la tâche ne le change pas), l'erreur s'il y en a une, la
synthèse finale, puis chaque étape : un tour du modèle (llm) ou une action appelée
(tool), avec ses paramètres et sa réponse.
Le détail ouvert à droite est celui d'un autre run, #1041, né d'un mail : la page du relevé est la même, avec ses propres étapes.
⚠ La liste s'arrête à 200 runs, sans pagination : filtrez par statut. Les heures sont en UTC.
Action du Hub : alfred_admin.get_run
Faire cette étape dans le Hub → Pour aller plus loin : alfred.history.ecran alfred.history.run alfred.history.detail.prompt alfred.history.detail.steps
Le run #1039, d'une autre tâche (« Contrôle des quotas des tenants »), s'est arrêté au
statut budget_exceeded : ses tokens, entrée et sortie additionnées, ont atteint le
plafond de sa tâche, 100 000 par défaut. Le budget a fait son travail : la consommation est
bornée.
Ouvrez le run pour voir où partent les tokens : un prompt trop large, une action qui rend
beaucoup de données. Resserrez la consigne, ou relevez budget_tokens dans Tâches si la
tâche en a vraiment besoin.
Le filtre statut isole ces runs : error, timeout, budget_exceeded, aborted,
rejected… Au-dessus de toutes les tâches, le budget journalier global (2 000 000 tokens par
défaut) reste appliqué.
⚠ Le statut stuck (run coupé par le garde-fou anti-boucle) existe, mais le filtre ne le
propose pas : ces runs ne s'isolent pas depuis l'écran.
Faire cette étape dans le Hub → Pour aller plus loin : alfred.history.filtre.status alfred.tasks.form.budget_tokens alfred.tasks.budget_note
readonly et des budgets bornés ;Alfred lit, il n'écrit pas : la whitelist et la deny-list l'en empêchent, quoi que dise le prompt.
alfred_admin.create_task, par MCP ou REST.readonly.