À propos du projet

Hippo est une couche de mémoire pour les agents de codage IA, distribuée sous forme de paquet npm `hippo-memory`. Son principe affiché est qu'une bonne mémoire consiste à savoir quoi oublier : les souvenirs qui se sont révélés faux, qui ont été remplacés ou qui n'ont jamais été utilisés devraient être moins bien classés ou disparaître entièrement du rappel. Il est sous licence MIT et nécessite Node.js 22.16+. Stockage et récupération Les souvenirs résident dans une base de données SQLite locale à `.hippo/hippo.db`, avec des miroirs markdown écrits après chaque modification afin que le magasin soit lisible par l'humain et traçable par git. La recherche utilise BM25 par défaut, sans modèle ni appel réseau ; les embeddings sont une installation optionnelle (Transformers.js local, ou embedders API opt-in d'OpenAI, Voyage ou Cohere). Le projet indique zéro dépendance d'exécution. Un serveur MCP et une API HTTP exposent le magasin à tout client compatible. Apprentissage à partir des résultats Deux mécanismes sont décrits comme mesurés : marquer un souvenir rappelé comme erroné abaisse son classement, et un usage répété renforce un souvenir. `hippo supersede` retire un fait remplacé du rappel. Les souvenirs étiquetés comme erreurs reçoivent deux fois la demi-vie des souvenirs ordinaires. La demi-vie par défaut est de 365 jours ; le README mentionne une évaluation pré-enregistrée où 7 jours perdaient la version actuelle d'un fait bien plus souvent, tandis que 730 jours et la désactivation de la décroissance étaient à égalité avec 365. La décroissance, le stockage à trois couches et la consolidation par le sommeil sont décrits comme inspirés de l'hippocampe, et le README indique que dans leurs tests, la décroissance était à égalité avec la décroissance désactivée et que le sommeil réduisait le rappel. Configuration et intégrations `hippo init` exécuté dans un projet crée le magasin `.hippo/`, ajoute un bloc marqué à un `CLAUDE.md` ou `AGENTS.md` existant, installe des hooks pour les agents détectés (paramètres de Claude Code, un plugin OpenCode, des entrées `hooks.json` de Codex qui nécessitent une approbation unique), et planifie une exécution quotidienne à 6h15. `hippo init --scan <folder>` trouve les dépôts git jusqu'à trois niveaux de profondeur et initialise chacun à partir des 365 derniers jours de commits. Les options `--no-hooks`, `--no-schedule` et `--no-learn` sautent des parties individuelles. `hippo doctor` vérifie la configuration. Fonctionnalités Les importateurs couvrent les exports ChatGPT, CLAUDE.md, les règles Cursor, le markdown et le texte brut, avec essai à blanc et détection des doublons. La capture de conversation extrait les décisions, règles, erreurs et préférences à l'aide d'heuristiques de motifs plutôt que d'un LLM. Les connecteurs webhook Slack et GitHub ingèrent les événements comme souvenirs bruts avec provenance et gestion des suppressions. Des commandes supplémentaires couvrent les instantanés de tâches actives, les traces d'événements de session, les transferts, un bloc-notes de mémoire de travail borné, les niveaux de confiance (vérifié, observé, inféré, obsolète), le suivi des conflits, l'invalidation lors des commits de migration, et le rappel explicable via `hippo recall --why`. Notes de confidentialité Le rappel n'effectue aucun appel réseau par défaut. Le README divulgue que `hippo sleep` envoie le texte des souvenirs à Anthropic pour l'extraction de faits lorsque `ANTHROPIC_API_KEY` est défini, et que cela peut être désactivé dans `.hippo/config.json`. Le reranker hébergé TypeSafe Jev est opt-in et désactivé par défaut. Preuves et réserves Le README relie chaque affirmation à un benchmark ou un test, notamment un benchmark d'apprentissage séquentiel, un résultat de split oracle LongMemEval (R@5 = 74,0 % avec BM25 uniquement), une évaluation privée de reranker sur 300 requêtes, et un corpus Slack échelonné. Il indique également qu'une affirmation d'ampleur antérieure a été rétractée, et que le mécanisme de supersede n'a pas été mesuré. Le projet rapporte plus de 3 500 tests contre une base de données réelle sans mocks de modules.