diff --git a/PROGRESS.md b/PROGRESS.md index 2f8fed2..8b73537 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -6,3 +6,5 @@ | [2026-05-10](progress/2026-05-10.md) | dnsmasq, ROCm, LM Studio (GLIBCXX fix), NFS + RAID5, modèles partagés sur NFS | | [2026-05-10b](progress/2026-05-10b.md) | Rôle hermes_agent — installation, config, service systemd sur storage-01 | | [2026-05-11](progress/2026-05-11.md) | Hermes opérationnel (matin) — llama-server ROCm 7.x ×4 perf (après-midi) — LiteLLM proxy + Claude API, switch modèle sans restart Hermes (soir) | +| [2026-05-12](progress/2026-05-12.md) | Flannel fix, MetalLB + Traefik + DNS wildcard *.lab.local, architecture multi-modèles gpu-01, 5 profils Hermes, docs admin/install/ | +| [2026-05-13](progress/2026-05-13.md) | Stabilisation multi-modèles — OOM fixes, Qwen3-1.7B sur 14 CPUs (21 tok/s), profils system/monitor finalisés, funk-ai par défaut | diff --git a/admin/hermes.md b/admin/hermes.md index 3aea8d7..0b4c923 100644 --- a/admin/hermes.md +++ b/admin/hermes.md @@ -12,16 +12,67 @@ Les données persistantes sont sur le RAID5 : `/srv/data/hermes`. ## Architecture ``` -hermes chat / hermes -z / http://192.168.1.200:9119 +funk-ai / brain / system / monitor (alias → profil) │ ▼ LM_BASE_URL=http://127.0.0.1:4000/v1 LiteLLM Proxy (:4000) - ├── hermes-default → qwen3-8b → llama-server gpu-01 (défaut) - └── hermes-default → claude-sonnet-4-6 → api.anthropic.com (switch) + ├── qwen3-8b → llama-server gpu-01 :1234 (GPU RX 6700XT) + ├── qwen3-1.7b-system → llama-server gpu-01 :1236 (CPU 14 threads) + ├── qwen3-1.7b-monitor → llama-server gpu-01 :1237 (CPU 14 threads) + ├── claude-sonnet-4-6 → api.anthropic.com + └── claude-opus-4-7 → api.anthropic.com ``` --- +## Profils + +Hermes supporte plusieurs profils isolés — chacun a son propre `config.yaml`, ses +mémoires, sessions et modèle. Tous stockés dans `$HERMES_HOME/profiles//`. + +### Tableau des profils + +| Profil | Alias CLI | Modèle | Usage | +|---|---|---|---| +| `funk-ai` ◆ | `funk-ai` | qwen3-8b (GPU, ~35 tok/s) | Principal — par défaut | +| `brain` | `brain` | claude-sonnet-4-6 (API) | Analyse complexe, coûteux | +| `system` | `system` | qwen3-1.7b-system (CPU, ~21 tok/s) | Appels rapides | +| `monitor` | `monitor` | qwen3-1.7b-monitor (CPU, ~21 tok/s) | Appels rapides | + +`◆` = profil actif par défaut + +### Utilisation + +```bash +# Lancer un profil (nouvelle session TUI) +funk-ai # Qwen3-8B GPU +brain # Claude Sonnet +system # Qwen3-1.7B CPU +monitor # Qwen3-1.7B CPU + +# Oneshot +sudo -i -u hermes bash -c 'HERMES_HOME=/srv/data/hermes hermes --profile system -z "ta question"' + +# Changer le profil par défaut +sudo -i -u hermes bash -c 'HERMES_HOME=/srv/data/hermes hermes profile use funk-ai' + +# Lister les profils +sudo -i -u hermes bash -c 'HERMES_HOME=/srv/data/hermes hermes profile list' +``` + +> Il n'y a pas de changement de profil à chaud dans le TUI — ouvrir une nouvelle session. + +### Points d'attention profils + +| Sujet | Détail | +|---|---| +| `HERMES_HOME` | Toujours préfixer les commandes avec `HERMES_HOME=/srv/data/hermes` | +| `context_length` | Hermes exige 64k minimum — override via `model.context_length: 65536` dans config.yaml | +| GPU vs CPU | system/monitor : Qwen3-1.7B sur 14 CPUs (5950X) — pour appels courts et rapides | +| brain | Facturé à l'API Anthropic — réserver aux tâches complexes | + +--- + ## Dashboard Web Accessible depuis le poste admin uniquement (`192.168.1.10`) : @@ -87,19 +138,9 @@ hermes doctor --- -## Switcher le modèle - -```bash -sudo /usr/local/bin/hermes-switch qwen # Qwen3-8B local (gratuit) -sudo /usr/local/bin/hermes-switch claude # Claude Sonnet 4.6 (API Anthropic ~1$/session) -sudo /usr/local/bin/hermes-switch status # Modèle actif -``` - ---- - ## Configuration -### config.yaml (`/srv/data/hermes/config.yaml`) +### config.yaml (profil par défaut : `/srv/data/hermes/config.yaml`) ```yaml model: @@ -158,16 +199,21 @@ sudo -u hermes /srv/data/hermes/hermes-agent/venv/bin/pip install "qdrant-client ``` /srv/data/hermes/ -├── config.yaml → configuration principale (géré Ansible) +├── config.yaml → configuration profil par défaut (géré Ansible) ├── .env → LM_BASE_URL, LM_API_KEY (géré Ansible) ├── hermes-agent/ → installation (venv Python, binaire, frontend web) │ └── web/ → source frontend dashboard (compilé via npm) ├── node/ → Node.js local (pour compiler le frontend) -├── memories/ → mémoire persistante (MEMORY.md auto-chargé) -├── sessions/ → historique des sessions +├── memories/ → mémoire persistante profil par défaut +├── sessions/ → historique sessions profil par défaut ├── logs/ → logs ├── skills/ → skills installées -└── state.db → base SQLite état agent +├── state.db → base SQLite état agent +└── profiles/ → profils isolés + ├── funk-ai/ → config.yaml, memories/, sessions/, state.db + ├── brain/ + ├── system/ + └── monitor/ ``` --- @@ -215,7 +261,8 @@ sudo systemctl restart hermes-dashboard | Données sur RAID5 | `HERMES_HOME=/srv/data/hermes` — jamais sur le SSD OS | | LiteLLM requis | litellm.service doit tourner avant hermes-agent | | `LM_API_KEY` | Doit valoir `lm-studio` exactement | -| Contexte | Qwen3-8B : 32768 tokens, system prompt ~15k → ~17k tokens dispo | +| Contexte | GPU (funk-ai) : 32768 tokens réels, override Hermes à 65536 via config.yaml | +| Contexte CPU | system/monitor : 32768 tokens réels, idem override | | path `hermes -z` | Toujours lancer depuis `/srv/data/hermes` (cherche .git en remontant) | | Gemma 4 | Interdit — crash ROCm sur prompts >800 tokens | | SELinux | Fichiers sur RAID5 ont contexte `unlabeled_t` — exécuter via binaire dans `/opt/hermes/.local/bin/` |