Aller au contenu

OS Agentique — Semaine 4 : Orchestration Hermes ↔ Claude Code

Ce qui fonctionne

1. Délégation via mot-clé @claude

Bernard écrit à Hermes sur Telegram :

@claude <description de la tâche> [/chemin/du/projet]

Hermes détecte @claude, extrait la tâche et le répertoire projet, puis lance :

nohup bash /home/kanmaber/projets/orchestrate-mission.sh "description" nom-court [PROJECT_DIR] \
  > /tmp/mission-$(date +%s).log 2>&1 &

Le nohup ... & détache complètement le processus du shell Hermes — la mission survit à la fermeture du terminal.


2. Pipeline d'orchestration

@claude message Hermes
       ↓
orchestrate-mission.sh
  ├── create-mission-prompt.sh   → génère lePrompte.md (Claude réécrit le template)
  ├── execute-mission.sh         → lance run-mission.sh --project-dir + notification finale
  │     └── run-mission.sh       → appelle claude --print < lePrompte.md
  └── monitor-mission.sh         → surveillance en parallèle

Tous les sous-processus sont lancés avec nohup setsid ... & disown → survivent à la mort du parent.


3. Système de missions

Chaque mission crée un dossier PROJECT_DIR/.claude/missions/YYYYMMDD_HHMM_nom/ contenant :

Fichier Rôle
lePrompte.md Prompt XML généré pour Claude Code
checkpoint.md État de la mission (permet reprise si quota épuisé)
synthese.md Résultat final — présence = mission terminée
logs/ Logs horodatés de chaque étape

Logs d'exécution Claude : .claude/logs/MISSION_ID/*.jsonl et *.log


4. Templates de mission

Template Emplacement Usage
Générique /home/kanmaber/projets/MISSION_TEMPLATE.md Tout projet sans template spécifique
PsychoEnLigne /home/kanmaber/projets/PsychoEnLigne/.claude/MISSION_TEMPLATE.md Missions DDD TypeScript (inclut vérifications antipatterns, tsc, jest)

Sélection automatique : projet spécifique > global.

Placeholder PROJET_ROOT remplacé à la génération → missions portables sur tout répertoire.


5. run-mission.sh universel

/home/kanmaber/projets/PsychoEnLigne/.claude/run-mission.sh accepte maintenant --project-dir PATH :

run-mission.sh <MISSION_ID> --project-dir /home/kanmaber/scripts

PROJET_ROOT n'est plus dérivé de l'emplacement du script → utilisable pour tout projet.

Fonctionnalités conservées : - --auto-retry : relance automatique si quota API épuisé (attend le reset, planifie via systemd) - --resume : reprise depuis le checkpoint - Gestion surcharge API 529 (3 tentatives, délai 10 min)


6. Base de connaissance partagée

Les deux agents lisent et écrivent dans /home/kanmaber/second-memory/wiki/ :

  • Hermes → configuré via SOUL.md : consulte le wiki avant les tâches complexes, y écrit les solutions
  • Claude Code → configuré via /home/kanmaber/CLAUDE.md (global, chargé automatiquement) : même comportement

Point d'entrée commun : wiki/index.md


Scripts impliqués

Script Rôle
/home/kanmaber/projets/orchestrate-mission.sh Coordinateur : génère prompt + lance executor
/home/kanmaber/projets/create-mission-prompt.sh Génère lePrompte.md via Claude
/home/kanmaber/projets/execute-mission.sh Lance run-mission.sh + notification finale
/home/kanmaber/projets/monitor-mission.sh Surveillance en parallèle
/home/kanmaber/projets/PsychoEnLigne/.claude/run-mission.sh Exécuteur universel (claude --print)
/home/kanmaber/projets/MISSION_TEMPLATE.md Template générique multi-projets

Tests validés (20260520)

Mission Projet Résultat
fichiers_recents.py — lister fichiers 48h /home/kanmaber/scripts ✅ Script créé et fonctionnel
sante_systeme.sh — CPU/mémoire/disque/syslog /home/kanmaber ✅ Script créé, affichage formaté

Points d'attention

  • Phase 2 de create-mission-prompt.sh : Claude réécrit le template avec de vraies commandes. Si le contexte projet est pauvre (pas de ETAT_PROJET.md), le prompt généré reste générique mais fonctionnel — Claude déduit la tâche du <titre>.
  • PROJECT_DIR par défaut : $(pwd) → si Hermes ne passe pas de répertoire, les missions atterrissent dans /home/kanmaber/.claude/missions/. Acceptable pour les tâches générales.
  • Notifications : Telegram + Hermes à chaque étape clé (préparation, prompt généré, terminé/échoué).

Liens connexes