Funk-lab/admin/ia/hermes-souls.md
alkatrazz e17396a150 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>
2026-05-14 22:22:56 +02:00

7.3 KiB

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 :

# É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é

# 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

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