Les adaptateurs
Un adaptateur mémoire est un composant permettant de gérer la persistance et la récupération des données de l'agent en fonction du moteur sous-jacent.
Qu’est-ce qu’un adaptateur mémoire ?
Un adaptateur mémoire est un composant permettant de gérer la persistance et la récupération des données de l'agent en fonction du moteur sous-jacent.
Il sert d'interface entre le système et le stockage, en encapsulant les spécificités d’un moteur (base de données, cache, indexation…).
Grâce aux adaptateurs, le système peut changer de moteur de stockage sans modifier son code.
Fonctionnement des adaptateurs mémoire
Tous les adaptateurs doivent implémenter une interface commune IMemoryAdapter, garantissant une API standardisée.
Méthodes essentielles d’un adaptateur
init(roomId: string)
Initialise le stockage pour une salle donnée
createMemory(input: CreateMemoryInput)
Stocke une nouvelle mémoire
getMemoryById(id: string, roomId: string)
Récupère une mémoire spécifique
getMemoryByIndex(query: string, options: { roomId: string; limit?: number })
Recherche des mémoires par indexation
getAllMemories(roomId: string)
Récupère toutes les mémoires d’une salle
clearMemoryById(id: string, roomId: string)
Supprime une mémoire spécifique
clearAllMemories()
Vide toutes les mémoires
Ainsi, un adaptateur peut être changé ou ajouté dynamiquement, sans modifier l'agent.
Adaptateurs intégrés (par défaut)
Le framework propose plusieurs adaptateurs intégrés :
InMemoryAdapter
RAM (non persistant)
Cache rapide, temporaire
MeilisearchAdapter
Moteur de recherche
Recherche avancée et indexation
RedisAdapter
Stockage clé-valeur
Cache persistant avec TTL
Créer un nouvel adaptateur : Exemple avec SQLite
Si on veut utiliser SQLite comme moteur de stockage mémoire, on doit créer un nouvel adaptateur.
1. Installer la dépendance
On utilise BetterSQLite3 pour des accès rapides et synchrones.
2. Implémenter l’adaptateur
On crée un fichier BetterSQLiteAdapter.ts qui respecte l’interface IMemoryAdapter.
Intégrer le nouvel adaptateur
Une fois le nouvel adaptateur implémenté, on peut l’intégrer dans l’agent :
Mis à jour