Refonte de la section Fournisseur & modele de l'assistant : capacites regroupees dans une bulle d'information (survol/clic/appui long) au lieu d'une liste permanente, et liste de modeles avec recherche. Correctifs : detection Unicode + filtrage insensible aux accents des commandes / et mentions @, navigation clavier fiable, et prise en compte du contexte ad-hoc en mode General cote backend.
4.9 KiB
4.9 KiB
#81 — Assistant IA — Commandes (@, /), skills, analyse d'images & capacités des modèles
Statut : ✅ Livré Effort : 4-6 jours | Impact : 🟡 Références : Roadmap · Assistant IA #80 · Outils IA #79 · Changelog
- Description : cinq améliorations de l'assistant IA (
frontend/js/bookslm.js,frontend/js/ai.js) :- Panneau redimensionnable à la souris, largeur persistée.
- Commande
@pour ajouter des contextes ad-hoc (fichiers et répertoires) au contexte courant. - Commande
/pour choisir un skill (workflow réutilisable) ou une commande admin. - Analyse d'images : coller une image dans la zone de saisie ou référencer une image d'un
répertoire (
@image.png), avec garde-fou de compatibilité du modèle. - Capacités des modèles affichées à la sélection (Chat, Embeddings, Rerank, Images, Video, Audio Speech, Audio Transcriptions, Vision capable).
A. Panneau redimensionnable — ✅ livré
- Poignée
.bookslm-resize-handlesur le bord gauche, glisser pour ajuster (320–1000 px). - Largeur persistée dans
localStorage['obsigate-bookslm-width']; désactivée en plein écran/mobile.
B. Contexte ad-hoc @ — ✅ livré
- Détection de
@queryau curseur → menu.bookslm-mention-menualimenté par/api/tree-search(avec repli sur/api/vault/{vault}/filesquand la requête est vide). - Sélection : fichier → chip de contexte ; répertoire → chip de contexte ; image → pièce jointe.
- Chips retirables (
.bookslm-attachments), rechargement du contexte (/context). - Backend :
extra_files/extra_directoriesdans les requêtes context/chat/agent, fusion viacollect_adhoc_context()+merge_contexts()(backend/bookslm.py). En mode General, l'ajout de fichiers promeut le scope endocuments.
C. Commandes / & skills — ✅ livré
- Menu
.bookslm-command-menufiltré à la saisie ; navigation clavier (↑/↓/Entrée/Échap). - Skills intégrés (
backend/skills.py) :/research,/create-new-skill,/resume,/actions,/reformuler,/correction,/brainstorm,/plan,/ask,/meeting-note,/livrable. Le prompt du skill est ajouté au system prompt (skilldans la requête chat). - Skills utilisateur persistés (
data/skills.json, par utilisateur) créés via/create-new-skill(modale) →POST /api/ai/skills, listés parGET /api/ai/skills, supprimables parDELETE /api/ai/skills/{id}. - Commandes admin exécutées localement (sans LLM) :
/help,/providers,/provider <nom>,/model <nom>,/keys.
D. Analyse d'images — ✅ livré
- Coller une image dans la zone de saisie (
paste) ou bouton « joindre une image ». - Référencer une image d'un répertoire via
@image.png(chargée côté serveur en data URL). - Backend multimodal :
ai_chat._content_to_gemini_parts(data URL →inlineData), messages OpenAI-compatibles passés tels quels ;_build_user_contentdansbookslm_routes.py. - Garde-fou : requête d'image rejetée (400) si le modèle ne supporte pas la vision ; côté
frontend, toast + blocage de l'envoi. Les images forcent l'endpoint
/chat(pas l'agent).
E. Capacités des modèles — ✅ livré
- Table statique curée
backend/model_capabilities.py(règles par motif de nom + défauts par fournisseur) exposant 8 flags. - Endpoint
GET /api/ai/model-capabilities?provider=&model=(auth) +capabilitiespar modèle dansGET /api/config/ai-models. - Affichage ☑/□ dans le picker de l'assistant (
frontend/js/ai.js) et dans le panneau de configuration (#cfg-ai-default-model-caps,frontend/js/config.js). - #82 — dans le picker de l'assistant, la liste permanente est remplacée par un bouton d'information ⓘ et une bulle au survol/clic/appui long, avec recherche de modèle. Détail : ai-provider-picker.md.
F. Tests & documentation — ✅ livré
- Backend :
tests/test_model_capabilities.py,tests/test_skills.py,tests/test_ai_vision.py, extensiontests/test_ai_models.py(capabilities). - Frontend :
tests/frontend/ai.test.mjs(redimensionnement,@,/, payload, endpoint, vision, capacités, commandes admin). - i18n FR/EN (
ai.cap_*,ai.commands,ai.attach_image,config.ai_capabilities, …). - CHANGELOG + Roadmap + guide utilisateur (aide in-app).
G. Points d'attention
- La table de capacités est statique : un modèle inconnu retombe sur le défaut du fournisseur
(souvent
chatuniquement), afin de ne jamais annoncer une capacité non vérifiée. - Les skills utilisateur sont stockés par utilisateur ;
/create-new-skillne peut pas écraser un skill intégré ni réutiliser un identifiant existant.