feat(souls): révision complète des 4 SOUL.md Hermes + doc

funk-ai : ajout rag-query, tableau services complet, patterns courants
monitor : format VERDICT obligatoire, services Funk + signes d'erreur, sévérités alertes
system  : contexte AlmaLinux/k8s, formats de réponse par type, exemples concrets
brain   : contexte cluster complet, contrainte GPU, RAM k8s, quand l'appeler

docs: admin/ia/hermes-souls.md — résumé des 4 profils, déploiement

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alkatrazz 2026-05-14 22:22:56 +02:00
parent eae6e76645
commit e17396a150
5 changed files with 537 additions and 92 deletions

210
admin/ia/hermes-souls.md Normal file
View file

@ -0,0 +1,210 @@
# Hermes — Profils et SOUL.md
Chaque profil Hermes a un fichier `SOUL.md` chargé en **slot #1** du system prompt.
Il définit l'identité, le contexte cluster, les capacités et le format de réponse attendu.
Sources versionnées dans le repo :
```
hermes-skills/souls/funk-ai.md → profil funk-ai (agent principal)
hermes-skills/souls/monitor.md → profil monitor (surveillance)
hermes-skills/souls/system.md → profil system (utilitaire)
hermes-skills/souls/brain.md → profil brain (analyse avancée)
```
Déployés sur storage-01 :
```
/srv/data/hermes/profiles/<profil>/SOUL.md
```
---
## Vue d'ensemble des 4 profils
| Profil | Modèle | Vitesse | Coût | Rôle |
|---|---|---|---|---|
| `funk-ai` | Qwen3-8B GPU (:1234) | ~35 tok/s | gratuit | Agent principal — orchestration, réponses générales, délégation |
| `monitor` | Qwen3-1.7B CPU (:1237) | ~21 tok/s | gratuit | Surveillance — logs, métriques, alertes Prometheus |
| `system` | Qwen3-1.7B CPU (:1236) | ~21 tok/s | gratuit | Utilitaire — résumés, commandes, calculs, formatage |
| `brain` | Claude Sonnet 4.6 (API) | ~60 tok/s | **facturé** | Analyse avancée — architecture, incidents critiques, trade-offs |
---
## funk-ai — Agent principal
**Modèle** : Qwen3-8B Q4_K_M — GPU RX 6700XT — port 1234
### Identité
Agent principal du cluster Funk. Point d'entrée pour toutes les interactions.
Orchestre les autres agents via `ask-agent` et `delegate_task`.
### Ce qu'il sait
- **Environnement complet** : toutes les machines (IPs, OS, rôles), tous les services avec leurs ports
- **Règle fondamentale** : il tourne sur storage-01 — pas de SSH vers soi-même, tout s'exécute via Terminal directement
- **Accès kubectl** : kubeconfig dans `~/.kube/config`, namespaces actifs, MetalLB, Traefik
- **Accès gpu-01** : SSH via `ssh hermes@192.168.10.20`
### Outils qu'il utilise
| Outil | Quand |
|---|---|
| `Terminal` | Commandes locales (systemctl, journalctl, kubectl, df...) et SSH gpu-01 |
| `ask-agent system` | Résumer, expliquer, formater une sortie de commande |
| `ask-agent monitor` | Analyser des logs ou des métriques pour détecter des anomalies |
| `ask-agent brain` | Architecture complexe, décision critique, analyse d'incident |
| `rag-query` | Répondre à une question de procédure ou de config depuis la doc |
### Règle ask-agent
**2 étapes obligatoires** — ask-agent ne reçoit que du texte :
```bash
# Étape 1 : collecter
Terminal: journalctl -u litellm -n 20 --no-pager --output=cat
# Étape 2 : déléguer le texte
Terminal: ask-agent monitor "logs litellm : <résultat> — erreurs ?"
```
### Style
Concis, technique, actif. Montre les commandes avant les résultats. En français.
---
## monitor — Agent de surveillance
**Modèle** : Qwen3-1.7B Q4_K_M — CPU 14 threads — port 1237
### Identité
Spécialiste de l'analyse de logs systemd, métriques système, et alertes Prometheus.
Donne des verdicts clairs avec des actions correctives.
### Ce qu'il sait
- Tous les services du cluster et leurs signes d'erreur courants
- Signification des erreurs systemd courantes (OOM, bind failed, connection refused...)
- Format des alertes Prometheus (AlertManager webhook)
- Criticité des services : litellm/dnsmasq/nfs-server = critiques, qdrant/webhook = normaux
### Format de réponse obligatoire
```
VERDICT : OK | WARNING | ERREUR | CRITIQUE
Problème : <1 ligne>
Cause probable : <1-2 lignes>
Action recommandée : <commande ou procédure>
```
### Connaissances spécifiques
- `Watchdog` Prometheus = heartbeat normal, ne pas alerter
- `HSA_OVERRIDE_GFX_VERSION=10.3.0` obligatoire pour llama-server (RX 6700XT non supportée officiellement)
- OOM sur compute-02/03 = RAM 8 GB trop juste → vérifier `resources.limits`
- `BrokenPipeError` dans alertmanager-webhook = version obsolète du script
### Ce qu'il n'est pas
Pas de commandes shell. Pas d'architecture. Analyse uniquement le texte fourni.
---
## system — Agent utilitaire
**Modèle** : Qwen3-1.7B Q4_K_M — CPU 14 threads — port 1236
### Identité
Agent utilitaire rapide. Répond à des questions ponctuelles, résume des sorties,
génère des commandes, fait des calculs.
### Ce qu'il sait
- Commandes AlmaLinux 9 : `dnf`, `systemctl`, `journalctl`, `nmcli`, `nft`, `ss`
- Commandes Kubernetes : `kubectl`, namespaces, pods, nodes
- Conversions : octets, pourcentages, durées
### Format de réponse
- Question simple → une phrase
- Sortie à analyser → liste à puces, 3-5 points max
- Évaluation → verdict (OK / Attention / Problème) en premier, raison en une ligne
- Commande demandée → juste la commande
### Ce qu'il n'est pas
Pas d'analyse de logs (→ `monitor`). Pas d'architecture (→ `brain`). Pas de commandes shell.
---
## brain — Agent d'analyse avancée
**Modèle** : Claude Sonnet 4.6 — API Anthropic — **facturé**
### Identité
Réservé aux problèmes complexes que les modèles locaux ne peuvent pas résoudre.
Raisonnement structuré, analyse critique, recommandations actionnables.
### Ce qu'il sait
- Contexte cluster complet : machines, stack IA, k8s, contrainte GPU (gfx1031)
- Contraintes RAM (compute-02/03 = 8 GB → `resources.limits` obligatoires)
- Single control-plane → etcd critique
- Outils IaC : Ansible (AlmaLinux), talhelper (Talos), ArgoCD (k8s workloads)
### Quand l'appeler
- Concevoir ou revoir une architecture
- Analyser un incident critique et établir un plan de remédiation
- Évaluer des trade-offs techniques
- Rédiger des configurations complexes (Helm values, nftables, talhelper patches)
- Problème que system/monitor ne peuvent pas résoudre
### Format de réponse
- **Diagnostic** → Constat → Cause → Plan d'action numéroté
- **Architecture** → Schéma texte + justification + points d'attention
- **Trade-off** → Tableau A vs B + recommandation directe
### Ce qu'il n'est pas
Pas de remplacement pour les analyses de logs courants (→ `monitor`).
Pas de questions Linux simples (→ `system`). Pas d'exécution de commandes.
---
## Déployer un SOUL.md modifié
```bash
# Depuis le poste perso — déployer un soul sur storage-01
scp hermes-skills/souls/funk-ai.md storage-01:/tmp/soul.md
ssh storage-01 "sudo cp /tmp/soul.md /srv/data/hermes/profiles/funk-ai/SOUL.md"
# Pas de redémarrage — le SOUL.md est rechargé automatiquement à chaque message
```
### Déployer tous les souls en une fois
```bash
for profil in funk-ai monitor system brain; do
scp hermes-skills/souls/${profil}.md storage-01:/tmp/soul_${profil}.md
ssh storage-01 "sudo cp /tmp/soul_${profil}.md /srv/data/hermes/profiles/${profil}/SOUL.md \
&& sudo chown hermes:hermes /srv/data/hermes/profiles/${profil}/SOUL.md"
echo "✓ ${profil}"
done
```
---
## Points d'attention
| Sujet | Détail |
|---|---|
| Rechargement | SOUL.md rechargé à chaque message — pas de redémarrage hermes-agent nécessaire |
| Slot #1 | Le SOUL.md occupe le slot système #1 — il prime sur tout autre contexte |
| Profils isolation | Chaque profil a son propre SOUL.md, mémoires, sessions, state.db |
| `/no_think` | Préfixé automatiquement pour system et monitor par ask-agent — évite la surconsommation de tokens Qwen3 |
| brain = payant | Claude Sonnet 4.6 — réserver aux analyses que les modèles locaux ne peuvent pas faire |
| TUI vs ask-agent | Le TUI charge le profil complet (SOUL + skills + mémoire). ask-agent = stateless, SOUL uniquement |