feat(stt): recherche web (SearXNG in-cluster) + fix cluster_status (#49)

Phase 2 d'Asa agentique : nouvel outil web_search adossé à un SearXNG
self-host in-cluster, + correction du faux positif de cluster_status.

- SearXNG (k8s/apps/searxng/) : Deployment + Service + ConfigMap settings.yml
  + IngressRoute searxng.lab.local, Application ArgoCD. Namespace ai, interne
  (l'outil tape http://searxng:8080). use_default_settings + search.formats
  inclut json (sinon API JSON 403) ; limiter/image_proxy off ; image pinnée ;
  conf copiée dans un emptyDir via initContainer (contourne le mount RO) ;
  PodSecurity restricted.
- Outil web_search (tools._web_search) ajouté au contexte asa + STT_SEARXNG_URL.
- fix(cluster_status) : les pods de CronJob TERMINÉS (Succeeded/Failed, ex.
  sacrifice-assign-renfort) comptaient comme « non prêts » → fausse alarme.
  Join kube_pod_status_phase{phase=~"Running |Pending"} (3 faux positifs → 0,
  validé in-cluster).
- Serveur 0.8.0 ; doc stt.md + journal mis à jour.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ALI YESILKAYA 2026-06-22 22:10:59 +02:00 committed by GitHub
parent c9e89c91b9
commit 73b52cde2c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 270 additions and 16 deletions

View file

@ -83,9 +83,24 @@ appeler, puis répond à partir des résultats.
la boucle (hors-ligne). (PR `feat/asa-tool-loop`.)
- **Choix** : web search = **SearXNG in-cluster** (Phase 2) ; modèle = **local uniquement**.
### Validation prod (#48 mergé) + Phase 2
- ✅ **Déployé et testé en prod** : « gpu-01 tourne bien ? » → outil `host_health` → *« en ligne,
charge 0.08, 48 % RAM, llama-server actif »*. « le cluster va bien ? » → `cluster_status`.
(Rollout : ArgoCD s'était calé sur le commit de merge ; un `refresh=hard` l'a fait rouler vers
l'image CI `sha-7cafc06`.)
- 🐛 **Fix `cluster_status`** : les pods de CronJob **terminés** (`sacrifice-assign-renfort`,
Succeeded) comptaient comme « non prêts » → fausse alarme. Join `kube_pod_status_phase{phase=~
"Running|Pending"}` → 3 faux positifs → 0 (validé in-cluster).
- ✅ **Phase 2 — recherche web** : SearXNG self-host (`k8s/apps/searxng/`, Application ArgoCD,
ns `ai`, interne) + outil `web_search` (`STT_SEARXNG_URL`). Gotcha clé : `search.formats` doit
inclure `json`. Image pinnée, conf via initContainer→emptyDir (mount RO contourné), PodSecurity
restricted. (PR `feat/asa-web-search`, serveur 0.8.0.)
## Prochaines étapes
- **Phase 2** — outil `web_search` (SearXNG self-host in-cluster, namespace `ai`, ArgoCD).
- **Vérifier SearXNG au déploiement** : pod Ready + `web_search` renvoie des résultats réels
(test end-to-end comme pour #48). Ajuster les moteurs SearXNG si bruyant.
- **Phase 3** — outil `admin_action` (écriture) : brancher `hermes-exec` comme outil piloté par le
LLM, avec le handshake de confirmation vocale existant.
- Enrichir `host_health`/`cluster_status` (GPU via `rocm_scraper`, fs, températures) si utile.