All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 7s
- Add brainstorm feature with collaborative canvas, AI idea generation, live cursors, playback, and export - Add PDF upload/extraction/ingestion pipeline with pgvector document search (RAG) - Add document Q&A overlay with streaming chat and PDF preview - Add note attachments UI with status polling, grid layout, and auto-scroll - Add task extraction AI tool and agent executor improvements - Fix NoteEmbedding missing updatedAt column, re-index 66 notes with 1536-dim embeddings - Fix brainstorm 'Create Note' button: add success toast and redirect to created note - Fix memory echo notification infinite polling - Fix chat route to always include document_search tool - Add brainstorm i18n keys across all 14 locales - Add socket server for real-time brainstorm collaboration - Add hierarchical notebook selector and organize notebook dialog improvements - Add sidebar brainstorm section with session management - Update prisma schema with brainstorm tables, attachments, and document chunks
254 lines
8.4 KiB
Markdown
254 lines
8.4 KiB
Markdown
# Fonctionnalités IA — Momento
|
|
|
|
## Architecture
|
|
|
|
Trois fournisseurs IA indépendants, chacun configurable séparément :
|
|
|
|
| Tier | Usage | Variables |
|
|
|---|---|---|
|
|
| **Tags** | Tags, labels, reformulation, suggestions de titre | `AI_PROVIDER_TAGS`, `AI_MODEL_TAGS` |
|
|
| **Embedding** | Recherche sémantique, Memory Echo, similarité | `AI_PROVIDER_EMBEDDING`, `AI_MODEL_EMBEDDING` |
|
|
| **Chat** | Chat RAG, agents, résumés, vision, brainstorm | `AI_PROVIDER_CHAT`, `AI_MODEL_CHAT` |
|
|
|
|
**13 fournisseurs supportés** : OpenAI, Google Gemini, Anthropic, DeepSeek, OpenRouter, Mistral, Ollama, ZAI, LM Studio, Custom OpenAI, MiniMax, GLM, Anthropic Custom.
|
|
|
|
Hiérarchie de fallback : Config spécifique → Tags → Embedding → Général → Env.
|
|
|
|
---
|
|
|
|
## 1. Notes — Écriture intelligente
|
|
|
|
### Suggestions de titre
|
|
- 3 propositions (Direct, Question, Créatif) en 3-8 mots
|
|
- Détection automatique de la langue du contenu
|
|
- Toggle utilisateur `titleSuggestions`
|
|
|
|
### Tags contextuels automatiques (IA2)
|
|
- Suggestions parmi les labels existants du carnet OU création de nouveaux
|
|
- Confiance > 0.5 (labels existants), > 0.3 (nouveaux)
|
|
- Toggle utilisateur `autoLabeling`
|
|
|
|
### Création auto de labels (IA4)
|
|
- Analyse un carnet (15+ notes) et détecte les thèmes récurrents
|
|
- Un thème doit apparaître dans 5+ notes, confiance > 0.60
|
|
- Max 5 suggestions, labels marqués `type='ai'`
|
|
|
|
### Reformulation de paragraphe — 6 modes
|
|
- **Clarifier** : élimine l'ambiguïté
|
|
- **Raccourcir** : condense 30-50%
|
|
- **Améliorer le style** : vocabulaire, structure
|
|
- **Corriger la grammaire** : corrections minimales
|
|
- **Traduire** : vers langue cible
|
|
- **Améliorer tous les modes** : les 3 principaux en un appel
|
|
|
|
### Traduction
|
|
- Traduction vers n'importe quelle langue cible
|
|
|
|
### Description d'images (Vision)
|
|
- Mode **description** : décrit le contenu (max 100 mots)
|
|
- Mode **titre** : 3 titres descriptifs de 3-7 mots
|
|
- Supporte images locales et distantes
|
|
|
|
### Suggestion de carnet
|
|
- Suggère le carnet le plus approprié lors de la création d'une note
|
|
- Analyse contenu + labels existants
|
|
|
|
---
|
|
|
|
## 2. Recherche sémantique
|
|
|
|
### Recherche hybride (FTS + Vectorielle)
|
|
- **Phase 1** : PostgreSQL FTS (`tsvector` / `plainto_ts_query`, index GIN) → 50 candidats
|
|
- **Phase 2** : pgvector recherche cosinus-distance (index HNSW) → 50 candidats, seuil 0.3
|
|
- **Phase 3** : Reciprocal Rank Fusion (RRF, k=60) pour le classement final
|
|
- Filtrage par carnet optionnel
|
|
- Fallback FTS-only si vectorielle échoue
|
|
|
|
### Embeddings
|
|
- pgvector(1536) dans PostgreSQL
|
|
- Régénération automatique après 7 jours
|
|
- Génération par lot avec `Promise.all`
|
|
|
|
---
|
|
|
|
## 3. Memory Echo — Connexions proactives
|
|
|
|
### Insights automatiques
|
|
- Détecte les connexions sémantiques entre notes via similarité cosinus
|
|
- Seuil de similarité : 0.75 (normal), 0.50 (démo)
|
|
- Génère une explication en 1 phrase (max 15 mots) via IA
|
|
- Fréquence configurable : daily / weekly / custom (3/jour)
|
|
|
|
### Feedback adaptatif
|
|
- **Thumbs up** → baisse le seuil de 0.05 (plus de suggestions)
|
|
- **Thumbs down** → monte le seuil de 0.15 (moins de suggestions)
|
|
|
|
### Fusion de notes
|
|
- Fusion intelligente de plusieurs notes en une seule structurée
|
|
- Consolidation, suppression des doublons, organisation logique
|
|
|
|
### Connexions par note
|
|
- Liste toutes les connexions sémantiques pour une note avec pagination
|
|
|
|
---
|
|
|
|
## 4. Chat IA — RAG avec outils
|
|
|
|
### Chat contextuel (streaming)
|
|
- Retrieval-Augmented Generation avec notes de l'utilisateur
|
|
- Recherche sémantique (seuil 0.5, 0.3 pour carnet spécifique)
|
|
- Prompt système en français
|
|
- **Outils disponibles** : `note_search`, `note_read`, `web_search`, `web_scrape`
|
|
- Max 5 steps d'outils
|
|
- Supporte contexte de carnet, contexte Copilot (note en cours), images (vision)
|
|
- Conversations persistées, historique 10 derniers messages
|
|
- Prompts localisés (en, fr, fa, es)
|
|
|
|
### Insights de chat
|
|
- Résumé synthétique ou 3 insights à partir des 5 notes les plus récentes
|
|
|
|
---
|
|
|
|
## 5. Organisation automatique
|
|
|
|
### Organisation par lot (IA3)
|
|
- Classe les notes sans carnet dans les carnets existants
|
|
- Guide de classification thématique (sport → Personnel, travail → Travail, etc.)
|
|
- Confiance > 0.60, max 50 notes analysées
|
|
- Prompts localisés en 12 langues
|
|
|
|
### Résumé de carnet (IA6)
|
|
- 5 sections : Thèmes Principaux, Statistiques, Éléments Temporels, Points d'Attention, Insights Clés
|
|
- Analyse jusqu'à 100 notes récentes
|
|
- Prompts localisés en 5 langues
|
|
|
|
---
|
|
|
|
## 6. Agents IA — 6 types
|
|
|
|
### Scraper
|
|
- Scrape des URLs (Jina Reader), détecte et parse les flux RSS
|
|
- Synthèse IA, extraction d'images (Cheerio + Sharp)
|
|
- Placement intelligent d'images via IA
|
|
- Titre généré par IA, notification par email
|
|
|
|
### Researcher
|
|
- Génère des requêtes de recherche, scrape les sources
|
|
- Crée une note de recherche structurée
|
|
|
|
### Monitor
|
|
- Analyse les notes récentes d'un carnet
|
|
- Produit des insights et connexions récurrents
|
|
|
|
### Custom
|
|
- Rôle personnalisé libre avec URLs source optionnelles
|
|
|
|
### Slide Generator
|
|
- Crée des présentations via `pptx_create` (PowerPoint) ou `slides_create` (HTML Reveal.js)
|
|
|
|
### Excalidraw Generator
|
|
- Crée des diagrammes Excalidraw à partir d'un format simplifié
|
|
- 7 types : flowchart, mindmap, architecture-cloud, org-chart, timeline, process-map, auto
|
|
- Auto-layout via Dagre
|
|
|
|
### Ordonnancement
|
|
- Fréquences : manual, hourly, daily, weekly, monthly
|
|
- Fuseaux horaires IANA supportés
|
|
|
|
---
|
|
|
|
## 7. Génération de contenu
|
|
|
|
### PowerPoint (PptxGenJS)
|
|
- 20 thèmes de couleur, 4 styles (sharp/soft/rounded/pill)
|
|
- 15 layouts de slides
|
|
- Pré-fetch d'images en base64
|
|
|
|
### Slides HTML (Reveal.js)
|
|
- Mêmes thèmes et layouts que PPTX
|
|
- Interactif, speaker notes, cadre décoratif optionnel
|
|
|
|
### Excalidraw
|
|
- Format simplifié (nodes + edges) → auto-layout Dagre
|
|
- Calcul de qualité (overlaps, croisements)
|
|
- Sauvegarde en DB
|
|
|
|
---
|
|
|
|
## 8. Brainstorm — Vagues de pensée
|
|
|
|
### Génération de vagues IA
|
|
- 3 vagues successives : Variations → Analogies → Disruptions
|
|
- Chaque vague enrichie avec contexte des notes existantes
|
|
- Connexions aux notes existantes via embeddings (derived_from, opposes, extends, synthesizes, transposes)
|
|
|
|
### Enrichissement d'idées manuelles
|
|
- LLM enrichit titre, description, connectionToSeed, noveltyScore
|
|
- Placement sémantique auto : embedding → similarité cosinus → meilleur parent
|
|
|
|
### Canvas D3 interactif
|
|
- Graphe radial avec 3 anneaux (vagues 1-2-3)
|
|
- Drag & drop, zoom, sélection, création inline
|
|
- Curseur fantôme AI pendant la génération
|
|
|
|
### Collaboration temps réel
|
|
- Socket.io : curseurs live, déplacement de nœuds, activité
|
|
- Partage via modèle NoteShare (email → notification → accepter/refuser)
|
|
- Avatars avec présence émeraude
|
|
|
|
### Export → Note
|
|
- Crée une note structurée avec résumé, vagues, connexions, notes sollicitées
|
|
- Ouvre directement la note créée
|
|
|
|
---
|
|
|
|
## 9. Outils disponibles pour les agents
|
|
|
|
| Outil | Description |
|
|
|---|---|
|
|
| `web_search` | Recherche web via SearXNG ou Brave Search |
|
|
| `web_scrape` | Scraping via Jina Reader (markdown) + RSS auto-détection |
|
|
| `note_search` | Recherche hybride dans les notes (sémantique + mots-clés) |
|
|
| `note_read` | Lit une note par ID |
|
|
| `note_create` | Crée une note (markdown, images optionnelles) |
|
|
| `note_update` | Modifie titre/contenu d'une note |
|
|
| `url_fetch` | Fetch d'URL avec parsing JSON/CSV/texte |
|
|
| `memory_search` | Recherche dans l'historique des exécutions d'agent |
|
|
| `pptx_create` | Génère un PowerPoint |
|
|
| `slides_create` | Génère des slides HTML Reveal.js |
|
|
| `excalidraw_create` | Génère un diagramme Excalidraw |
|
|
|
|
---
|
|
|
|
## 10. Détection de langue
|
|
|
|
- Hybride : TinyLD pour notes courtes (<50 mots, ~8ms), IA pour notes longues
|
|
- Mapping TinyLD → ISO 639-1, 62 langues dont le persan
|
|
- 19 codes explicitement mappés + fallback
|
|
|
|
---
|
|
|
|
## Toggles utilisateur (UserAISettings)
|
|
|
|
| Toggle | Fonctionnalité |
|
|
|---|---|
|
|
| `autoLabeling` | Tags contextuels automatiques |
|
|
| `paragraphRefactor` | Reformulation de paragraphe |
|
|
| `titleSuggestions` | Suggestions de titre |
|
|
| `memoryEcho` | Memory Echo proactif |
|
|
| `memoryEchoFrequency` | daily / weekly / custom |
|
|
| `demoMode` | Seuils abaissés pour démo |
|
|
| `preferredLanguage` | Langue préférée pour les agents |
|
|
|
|
---
|
|
|
|
## Chiffres
|
|
|
|
- **46 fichiers IA**
|
|
- **~10 500+ lignes de code**
|
|
- **26 routes API IA**
|
|
- **12 outils enregistrés**
|
|
- **6 types d'agents**
|
|
- **13 fournisseurs supportés**
|
|
- **Prompts localisés** : fr, en, fa, es, de, it, pt, nl, pl, ru, ja, ko, zh, ar, hi
|