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

Méthode
Description

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 :

Adaptateur
Type de stockage
Cas d’usage

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