docs: passe de cohérence documentaire (STT, Ghostfolio, embeddings, Qdrant)

Aligne la documentation sur l'état réel du cluster au 2026-06-18 :

- Qdrant : crash-loop résolu le 17/06 (statut « HS / EN COURS » corrigé dans
  CLAUDE.md, README, admin/ia/rag.md, admin/incidents.md, admin/ia/stt.md).
  Précision : collection funk-docs supprimée lors de la réparation → re-ingest
  RAG encore à faire (pas de surévaluation du statut).
- STT (assistant vocal « Jarvis ») : ajouté partout (était déployé mais non documenté).
- Ghostfolio : ajouté partout (était déployé mais non documenté).
- Embeddings dédiés nomic-embed-text :1238 : marqués opérationnels (roadmap
  README disait encore « TODO »).
- llama-server : ×3 → ×4 (instance embeddings) ; gap IaC précisé (embeddings géré
  par le rôle, seules les 2 instances CPU restent manuelles).
- Structure k8s/ corrigée dans CLAUDE.md : ajout stt/ + ghostfolio/, suppression
  des sous-dossiers traefik/ + metallb/ inexistants (installés via helm au bootstrap).
- Namespaces et liste des secrets Vault (vault_pg_ghostfolio_password) complétés.
- admin/README.md : index complété (~10 docs manquants : email, n8n, open-webui,
  ghostfolio, k9s, stt, rag, hermes-voice/souls/auto-improve, alertmanager-webhook).
- Funk/ (conception d'origine : LM Studio + agents Goose, obsolète) déplacé sous
  archive/ avec bandeau « obsolète » + archive/README.md (historique git préservé).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa
This commit is contained in:
Claude 2026-06-18 09:02:15 +00:00
parent e1ec26d546
commit 1f2d970398
No known key found for this signature in database
17 changed files with 102 additions and 31 deletions

View file

@ -8,6 +8,8 @@
| Déployer quelque chose sur k8s | [k8s/argocd.md](k8s/argocd.md) |
| Débugger l'inférence LLM | [ia/llama_server.md](ia/llama_server.md) · [ia/rocm.md](ia/rocm.md) |
| Débugger Hermes / ask-agent | [ia/hermes.md](ia/hermes.md) |
| Assistant vocal (STT / « Jarvis ») | [ia/stt.md](ia/stt.md) · [ia/hermes-voice.md](ia/hermes-voice.md) |
| RAG / recherche dans la doc | [ia/rag.md](ia/rag.md) |
| Voir les métriques / alertes | [k8s/monitoring.md](k8s/monitoring.md) |
| Problème réseau / nftables | [infra/reseau.md](infra/reseau.md) |
| Problème NFS / stockage | [infra/nfs.md](infra/nfs.md) |
@ -43,6 +45,7 @@
| [infra/nfs.md](infra/nfs.md) | NFS + RAID5 — exports, montages, automount, ajout de partages |
| [infra/dnsmasq.md](infra/dnsmasq.md) | DNS local `lab.local` — résolution, logs, ajout d'entrées |
| [infra/ssh.md](infra/ssh.md) | Connexions SSH — alias, jump host, transfert de fichiers |
| [infra/email.md](infra/email.md) | Postfix relay — SMTP sortant via Gmail (App Password) |
---
@ -53,6 +56,10 @@
| [k8s/talos.md](k8s/talos.md) | Talos Linux — talhelper, nœuds, upgrades, backup etcd |
| [k8s/argocd.md](k8s/argocd.md) | ArgoCD GitOps — App of Apps, déploiement, dépannage |
| [k8s/monitoring.md](k8s/monitoring.md) | Grafana · Prometheus · AlertManager — métriques, dashboards, alertes |
| [k8s/n8n.md](k8s/n8n.md) | n8n — automatisation, workflows actifs, credentials |
| [k8s/open-webui.md](k8s/open-webui.md) | Open WebUI — chat web, backend LiteLLM |
| [k8s/ghostfolio.md](k8s/ghostfolio.md) | Ghostfolio — suivi de portefeuille (PostgreSQL s01 + Redis) |
| [k8s/k9s.md](k8s/k9s.md) | k9s — TUI de gestion du cluster |
---
@ -60,10 +67,16 @@
| Fichier | Contenu |
|---|---|
| [ia/llama_server.md](ia/llama_server.md) | llama-server — 3 instances (GPU+CPU), métriques, build, modèles |
| [ia/llama_server.md](ia/llama_server.md) | llama-server — 4 instances (GPU + 2× CPU + embeddings :1238), métriques, build, modèles |
| [ia/rocm.md](ia/rocm.md) | GPU RX 6700XT — ROCm, `HSA_OVERRIDE_GFX_VERSION`, debug |
| [ia/litellm.md](ia/litellm.md) | LiteLLM Proxy — routage Qwen local + Claude API, config, validation |
| [ia/hermes.md](ia/hermes.md) | Hermes Agent + ask-agent — profils, skills, SOUL.md, délégation |
| [ia/hermes-souls.md](ia/hermes-souls.md) | Prompts système (souls) par profil Hermes |
| [ia/hermes-auto-improve.md](ia/hermes-auto-improve.md) | Worker d'analyse quotidienne de la doc par Hermes (trigger :9095) |
| [ia/hermes-voice.md](ia/hermes-voice.md) | Client vocal Hermes (CLI : faster-whisper + Piper + wake word) |
| [ia/stt.md](ia/stt.md) | STT — assistant vocal « Jarvis » (client `stt` + STT-server in-cluster + mémoire) |
| [ia/rag.md](ia/rag.md) | RAG — `rag-query`/`rag-ingest`, Qdrant `funk-docs`, embeddings |
| [ia/alertmanager-webhook.md](ia/alertmanager-webhook.md) | Pont AlertManager → ask-agent (analyse LLM des alertes) |
---

View file

@ -207,12 +207,12 @@ sudo systemctl restart llama-server
## ⚠️ Gap IaC — instances CPU non couvertes par Ansible
Le rôle `ansible/roles/llama_server/` ne déploie que l'instance **GPU** (`llama-server.service` sur :1234).
Le rôle `ansible/roles/llama_server/` déploie l'instance **GPU** (`llama-server.service` :1234) et l'instance **embeddings** (`llama-embed` :1238, activée par `llama_embed_enabled`).
Les instances CPU (`llama-server-system` :1236 et `llama-server-monitor` :1237) ont été créées **manuellement** et ne sont pas encore dans le code Ansible.
Conséquence : un `make apply-gpu` complet sur un hôte vierge ne déploierait PAS les instances CPU.
**Axe d'amélioration** : étendre le rôle `llama_server` pour déployer les 3 instances via une boucle (`with_items` ou `loop` Ansible), avec des variables dédiées dans `host_vars/gpu-01/vars.yml`.
**Axe d'amélioration** : étendre le rôle `llama_server` pour déployer aussi les 2 instances CPU via une boucle (`with_items` ou `loop` Ansible), avec des variables dédiées dans `host_vars/gpu-01/vars.yml`.
---

View file

@ -1,7 +1,9 @@
# RAG — Documentation Funk
> ⚠️ **HS depuis 2026-06-05** — Qdrant en crash-loop (segment `funk-docs` corrompu).
> Procédure de réparation dans `admin/incidents.md` (entrée 2026-06-05).
> ⚠️ **À re-ingérer** — Qdrant a été réparé le **2026-06-17** (fin du crash-loop), mais la
> réparation a **supprimé la collection `funk-docs`** : `rag-query` ne retourne rien tant que
> `rag-ingest` n'a pas reconstruit l'index (reconstructible depuis `admin/`).
> Détails de l'incident : `admin/incidents.md` (entrée 2026-06-05).
Le RAG (Retrieval-Augmented Generation) permet à Hermes de répondre en s'appuyant
sur la documentation du repo (`admin/`) plutôt que sur sa seule mémoire de modèle.
@ -38,7 +40,7 @@ Hermes formule sa réponse en citant les sources
| `rag-query` | `/usr/local/bin/rag-query` | Interroge Qdrant depuis la ligne de commande |
| Skill `rag-docs` | Profil `funk-ai` Hermes | Enseigne à Hermes comment utiliser `rag-query` |
| Docs indexées | `/srv/data/rag/docs/` (NVMe) | Copie locale du dossier `admin/` |
| Collection Qdrant | `funk-docs` | 339 chunks — dimension 4096 (Cosine) |
| Collection Qdrant | `funk-docs` | supprimée le 2026-06-17 → **à re-ingérer** (≈339 chunks, dim 4096 Cosine) |
---

View file

@ -27,7 +27,7 @@ Objectif ultérieur : « agir sur le homelab » via les outils de Hermes (phase
| Agir sur le homelab | Hermes Agent (`:8080`, profils funk-ai/system/monitor/brain) | ✅ opérationnel |
| Voix (STT + TTS + wake word) | `tools/hermes-voice/` — faster-whisper + Piper + webrtcvad | ✅ existe (CLI only) |
| Démarrage auto au boot | pattern `systemd --user` (`tools/hermes-voice/install-service.sh`) | ✅ éprouvé |
| Mémoire sémantique | Qdrant `:6333` + RAG (`rag-query`/`rag-ingest`) sur s01 | ⚠️ **HS depuis 05/06** |
| Mémoire sémantique | Qdrant `:6333` + RAG (`rag-query`/`rag-ingest`) sur s01 | ✅ Qdrant réparé 17/06 (RAG `funk-docs` à re-ingérer) |
Maillon réellement manquant : **l'interface graphique HUD** + le packaging + la mémoire perso.

View file

@ -1,6 +1,6 @@
# Incidents — Historique et résolutions
## 2026-06-05 — Qdrant en crash-loop : segment funk-docs corrompu (EN COURS)
## 2026-06-05 — Qdrant en crash-loop : segment funk-docs corrompu (RÉSOLU 2026-06-17)
### Symptômes
@ -20,7 +20,7 @@ error: unexpected character 'D' while parsing minor version number
Le fichier `version.info` du segment contient `0.D\0` au lieu d'un numéro de version — corruption de données (première occurrence le 2026-06-05 à 21h10).
### Résolution (à appliquer)
### Résolution (crash-loop résolu le 2026-06-17 ; re-ingest encore à faire)
La collection `funk-docs` est entièrement reconstructible depuis `admin/` :
@ -32,6 +32,12 @@ curl -s http://127.0.0.1:6333/collections # doit répondre
/usr/local/bin/rag-ingest # ré-indexe /srv/data/rag/docs
```
> **État au 2026-06-17** : les 3 premières étapes (stop + drop `funk-docs` + start) ont été
> appliquées sur s01 pour sortir Qdrant du crash-loop (cf. `admin/ia/stt.md`, jalon 5c). Le
> service Qdrant et la mémoire STT (`stt-memory`) sont donc opérationnels, **mais** `rag-ingest`
> n'a pas encore été relancé : la collection `funk-docs` est vide → `rag-query` reste muet
> tant que l'index n'est pas reconstruit.
### Prévention
- Ajouter une alerte Prometheus sur les unités systemd en `activating` prolongé (`node_systemd_unit_state`) — un crash-loop n'apparaît ni dans `failed` ni dans les alertes actuelles
@ -42,7 +48,7 @@ curl -s http://127.0.0.1:6333/collections # doit répondre
| Date | Composant | Résumé | Sévérité |
|---|---|---|---|
| 2026-06-05 | Qdrant | **EN COURS** — crash-loop : segment `funk-docs` corrompu, RAG HS | Important |
| 2026-06-05 | Qdrant | **Résolu 2026-06-17** — crash-loop corrigé (drop `funk-docs`) ; RAG à re-ingérer | Important |
| 2026-05-29 | RAID5 / sdb + storage-01 | sdb ATA bus errors sous I/O — migration /srv/data du RAID vers NVMe | Important |
| 2026-05-27 | RAID5 / sdd | Disque sdd défaillant (44 secteurs morts) — corruptions multiples en cascade | Critique |
| 2026-05-14 | Grafana | OOMKilled — limite 256Mi trop serrée pour Grafana 13 | Warning |