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¶
- shared/architecture/claude-et-hermes-workspace — architecture générale
- shared/architecture/hermes-acces-vps-hetzner — interfaces Hermes sur VPS
/home/kanmaber/.hermes/SOUL.md— règles Hermes (délégation @claude, wiki)/home/kanmaber/CLAUDE.md— contexte global Claude Code