feat(stt): Phase 3 — actions admin pilotées par le LLM (admin_action) (#51)

Asa peut désormais AGIR sur le homelab quand on le demande explicitement, via
un outil de la boucle agentique — mais jamais sans confirmation.

- Outil admin_action(description) (contexte asa) : le LLM PROPOSE une action,
  n'exécute rien. brain.ask_with_tools gagne `confirm_tools` : un tel outil
  arrête la boucle et surface sa réponse (la question de confirmation).
- _handle_agentic : stocke la proposition en pending par session ; au tour
  suivant « confirme » → agent.run_action → hermes-exec (hermes -z --yolo),
  « annule » → oubli. Réutilise le handshake + jeton du contexte agent.
- admin_action n'est exposé que si _actions_available() (STT_ACTIONS_ENABLED
  + jeton) ; sinon retiré des schémas envoyés au modèle.
- Factorisation du ctx_debug du visualiseur. 1 test unitaire (confirm_tools
  arrête la boucle). Serveur 0.9.0 ; doc stt.md + journal.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ALI YESILKAYA 2026-06-22 22:51:11 +02:00 committed by GitHub
parent dc7a2093ae
commit 3ea4c3c706
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 163 additions and 28 deletions

View file

@ -97,12 +97,24 @@ appeler, puis répond à partir des résultats.
inclure `json`. Image pinnée, conf via initContainer→emptyDir (mount RO contourné), PodSecurity
restricted. (PR `feat/asa-web-search`, serveur 0.8.0.)
### Vérif prod #49 + fix SearXNG + Phase 3
- ✅ **`cluster_status` corrigé vérifié en prod** : « le cluster va bien ? » → *« 38 pods prêts, un
seul non prêt : searxng-… »* → ignore bien les pods cron terminés ET pointe le vrai souci.
- 🐛 **SearXNG crashait** (`'tcp://…:8080' is not a valid integer`) : le Service `searxng` faisait
injecter l'env service-link `SEARXNG_PORT=tcp://…`, lu comme port de bind. Fix `enableServiceLinks:
false` + `SEARXNG_PORT`/`SEARXNG_BIND_ADDRESS` explicites (**PR `fix/searxng-port-collision`**).
Vérif end-to-end `web_search` **après merge** de ce fix.
- ✅ **Phase 3 — actions admin pilotées par le LLM** : outil `admin_action(description)` (contexte
`asa`) qui **ne fait que proposer** — la boucle s'arrête (`confirm_tools`), Asa demande confirmation,
le tour suivant « confirme » → `hermes-exec`. Réutilise le handshake + jeton du contexte `agent` ;
exposé seulement si `STT_ACTIONS_ENABLED` + jeton. 1 test unitaire de plus. (PR `feat/asa-admin-actions`,
serveur 0.9.0.)
## Prochaines étapes
- **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.
- **Vérifier au déploiement** : SearXNG Ready + `web_search` réel ; puis un essai `admin_action`
(« redémarre … » → confirme → exécution Hermes).
- Enrichir `host_health`/`cluster_status` (GPU via `rocm_scraper`, fs, températures) si utile.
- Si le wake word « asa » génère des faux positifs/négatifs, ajuster `wake_aliases`.
- **1er test d'action vocale** (#43, contexte 🤖 Agent → `hermes-exec`).