Files
ObsiGate/docs/features/ai-assistant-commands.md
bruno 75b8d294b0
CI / lint (push) Successful in 1m36s
CI / security (push) Successful in 59s
CI / test (push) Successful in 2m44s
CI / build (push) Successful in 57s
CI / e2e (push) Successful in 11m31s
feat(ai): 30 skills integres et prompts enrichis
2026-09-16 22:13:42 -04:00

5.7 KiB
Raw Permalink Blame History

#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) :
    1. Panneau redimensionnable à la souris, largeur persistée.
    2. Commande @ pour ajouter des contextes ad-hoc (fichiers et répertoires) au contexte courant.
    3. Commande / pour choisir un skill (workflow réutilisable) ou une commande admin.
    4. 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.
    5. 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-handle sur 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 @query au curseur → menu .bookslm-mention-menu alimenté par /api/tree-search (avec repli sur /api/vault/{vault}/files quand 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_directories dans les requêtes context/chat/agent, fusion via collect_adhoc_context() + merge_contexts() (backend/bookslm.py). En mode General, l'ajout de fichiers promeut le scope en documents.

C. Commandes / & skills — ✅ livré

  • Menu .bookslm-command-menu filtré à la saisie ; navigation clavier (↑/↓/Entrée/Échap).
  • Skills intégrés (backend/skills.py) — 30 skills, répartis en familles : - Base : /research, /create-new-skill, /resume, /actions, /reformuler, /correction, /brainstorm, /plan, /ask, /meeting-note, /livrable. - Extraction & structuration : /extract, /timeline, /glossary, /tag. - Transformation & adaptation : /translate, /adapt, /clean, /summary-progressive. - Analyse critique & décision : /critique, /compare, /prioritize, /swot, /debate. - Apprentissage & mémorisation : /quiz, /reading-note, /qa-generator. - Méta-gestion & confidentialité : /link, /anonymize, /estimate. Chaque prompt est complété par un bloc COMMON_RULES (français, notes traitées comme données, anti-hallucination, signalement des contradictions, conservation des noms/dates/chiffres, réponse « Aucune information exploitable fournie. » si les notes sont insuffisantes). Le prompt du skill est ajouté au system prompt (skill dans 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 par GET /api/ai/skills, supprimables par DELETE /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_content dans bookslm_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) + capabilities par modèle dans GET /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, extension tests/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 chat uniquement), afin de ne jamais annoncer une capacité non vérifiée.
  • Les skills utilisateur sont stockés par utilisateur ; /create-new-skill ne peut pas écraser un skill intégré ni réutiliser un identifiant existant.