mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 05:24:43 +02:00
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:
parent
dc7a2093ae
commit
3ea4c3c706
9 changed files with 163 additions and 28 deletions
|
|
@ -108,8 +108,16 @@ présélection — ex. « gpu-01 tourne bien ? » → l'outil `host_health` est
|
|||
Prometheus), `cluster_status` (nœuds/pods), `prometheus_query(expr)` (PromQL arbitraire), et
|
||||
**`web_search(query)`** (recherche INTERNET via SearXNG, **Phase 2**). Modèle **local** Qwen3-8B
|
||||
(le tool-calling natif de llama.cpp fonctionne, **même avec `/no_think`** — vérifié). Le `trace`
|
||||
des outils appelés est renvoyé dans `context` → visualiseur HUD (un bloc par appel). L'écriture
|
||||
(agir) reste au contexte `agent` ci-dessous (Phase 3 : la brancher comme outil).
|
||||
des outils appelés est renvoyé dans `context` → visualiseur HUD (un bloc par appel).
|
||||
|
||||
**Outil d'écriture `admin_action` (Phase 3)** : pour une demande explicite d'AGIR, le LLM appelle
|
||||
`admin_action(description)` qui **n'exécute rien** — la boucle s'arrête (`confirm_tools` dans
|
||||
`ask_with_tools`), Asa **propose** l'action et stocke un `pending` par session. Le tour suivant,
|
||||
si l'utilisateur dit « confirme » (mots de `agent.is_confirmation`), `_handle_agentic` exécute via
|
||||
`agent.run_action` → **hermes-exec** (`hermes -z --yolo`) ; « annule » l'oublie. Réutilise le
|
||||
handshake + le jeton du contexte `agent`. **Exposé seulement si `_actions_available()`** (opt-in
|
||||
`STT_ACTIONS_ENABLED` + jeton) : sinon `admin_action` est retiré des schémas. La confirmation
|
||||
protège des erreurs de transcription ; le jeton, des déclenchements non autorisés.
|
||||
|
||||
> **`cluster_status`** filtre les pods **terminés** (CronJob Succeeded/Failed) via un join
|
||||
> `kube_pod_status_phase` → ne signale comme « non prêts » que les pods réellement actifs (sinon
|
||||
|
|
@ -121,7 +129,7 @@ des outils appelés est renvoyé dans `context` → visualiseur HUD (un bloc par
|
|||
`http://searxng:8080`). Points clés : `use_default_settings: true` (hérite des moteurs),
|
||||
**`search.formats` inclut `json`** (sinon l'API JSON renvoie 403), `limiter:false`/`image_proxy:false`
|
||||
(usage interne), image **pinnée**, conf copiée dans un emptyDir via initContainer (évite le mount RO).
|
||||
Outil = `STT_SEARXNG_URL` (`tools._web_search`). Actions admin pilotées par le LLM = **Phase 3**.
|
||||
Outil = `STT_SEARXNG_URL` (`tools._web_search`).
|
||||
|
||||
La réponse `/v1/ask` renvoie le **contexte assemblé** (`context`: system prompt + blocs live +
|
||||
extraits RAG + mémoire) → alimente le **visualiseur** du HUD (« voir ce qu'on envoie à Asa »).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue