Inspiration Les assistants IA actuels oublient tout entre deux conversations : on doit répéter ses préférences de vol, ses restrictions alimentaires, son fuseau horaire à chaque nouvelle session. Le track MemoryAgent nous a donné l'occasion d'attaquer un vrai problème d'ingénierie plutôt qu'un gadget de démo : comment stocker efficacement des souvenirs, savoir quand les oublier, et les rappeler dans une fenêtre de contexte limitée — sans jamais transformer la mémoire en un historique brut qui explose à chaque session.
What it does Aria est un concierge personnel (voyages, réunions, tâches) qui retient les faits durables sur l'utilisateur — préférences, contraintes, objectifs — et les réutilise sans qu'on ait à se répéter, y compris dans une session totalement nouvelle sans historique de chat. À chaque tour, Aria extrait les faits saillants de l'échange via Qwen, les stocke sous forme de mémoires atomiques (texte + embedding + importance), et n'injecte dans le prompt que les 5 souvenirs les plus pertinents (similarité + récence + importance), jamais tout l'historique. Deux mécanismes d'oubli coexistent : une contradiction détectée remplace immédiatement l'ancien fait, et les souvenirs jamais réutilisés voient leur importance décroître jusqu'à archivage. L'UI de démo rend ce mécanisme visible : un panneau "mémoires actives", un bouton "nouvelle session" pour prouver la persistance cross-session, et un bouton "simuler le temps qui passe" pour montrer l'oubli en direct.
How we built it Backend FastAPI, appels à Qwen Cloud (API compatible OpenAI de DashScope) : qwen-plus pour le chat et l'extraction de faits, text-embedding-v3 pour les embeddings. Plutôt qu'une base vectorielle managée, on a choisi SQLite + similarité cosinus calculée en numpy — suffisant à l'échelle d'un hackathon et beaucoup plus rapide à mettre en place. L'extraction de mémoire est un appel LLM dédié qui renvoie un JSON de faits candidats (contenu, catégorie, importance) ; un second appel LLM, minimal, tranche si un nouveau fait doit remplacer un ancien similaire. Frontend en JS vanilla (pas de framework) pour aller vite. Déploiement Dockerisé sur une instance Alibaba Cloud ECS, avec sauvegarde de la base mémoire vers Alibaba Cloud OSS via le SDK oss2.
Challenges we ran into Calibrer la formule de score (similarité/récence/importance) pour que le rappel reste pertinent sans privilégier uniquement les faits récents. Éviter la duplication de mémoires quasi-identiques sans pour autant bloquer les vraies mises à jour — résolu avec un double seuil (similarité cosinus puis confirmation LLM de contradiction). Garder le contexte borné sans perdre les faits anciens mais toujours valides — d'où le top-k plutôt qu'un historique complet. Rendre la persistance cross-session visible pour une vidéo de 3 minutes : invisible par défaut, d'où l'ajout explicite du bouton "nouvelle session" dans l'UI. Robustesse du parsing JSON : le LLM renvoie parfois une extraction mal formée, il a fallu un parsing défensif plutôt qu'un json.loads naïf. Accomplishments that we're proud of Une boucle mémoire complète et fonctionnelle (extraction → embedding → scoring → rappel → injection) démontrable de bout en bout dans les délais du hackathon. Deux mécanismes d'oubli complémentaires et indépendants (contradiction immédiate vs décroissance temporelle) plutôt qu'une simple suppression. Une stack volontairement minimale (SQLite + numpy) qui reste assez réactive pour un chat en temps réel, sans dépendance lourde. Un panneau mémoire réellement observable : les juges voient le mécanisme fonctionner en direct, pas juste une affirmation sur slide. What we learned Des appels LLM petits et mono-tâche (extraction, puis contradiction) sont plus fiables qu'un unique gros prompt qui essaie de tout faire. Une bonne mémoire a besoin à la fois de similarité sémantique et de conscience temporelle — la similarité seule remonte des faits obsolètes. Concevoir l'oubli est aussi important que concevoir le rappel : sans ça, la "mémoire long terme" devient juste un prompt de plus en plus bruyant. What's next for Aria Remplacer la recherche cosinus en boucle par un index vectoriel dès que le volume de mémoires dépasse l'échelle d'une démo mono-utilisateur. Mémoires multimodales (documents, images joints). Permettre à l'utilisateur d'inspecter/éditer/supprimer lui-même ses souvenirs (transparence et contrôle). Étendre vers des workflows type Autopilot (réserver réellement, pas seulement recommander). Authentification réelle pour scoper la mémoire par compte utilisateur plutôt que par user_id libre.
Log in or sign up for Devpost to join the conversation.