Memory Assistant
CLI qui confie à Claude la gestion de mémoires stockées dans un dépôt git
Outil CLIjuin 2026TypeScriptNode.jsClaude Agent SDKMCPwhisper.cppsimple-git
Petit outil en ligne de commande : une requête écrite ou dictée au micro est confiée à Claude, qui lit et modifie des fichiers de mémoire dans un dépôt git via un serveur MCP embarqué. Un second outil importe en masse des fichiers existants sous forme de mémoires structurées.
But du projet
Gérer une collection personnelle de « mémoires » (notes, personnes, lieux, listes, questions, checklists) en langage naturel, par texte ou par la voix. Les mémoires sont de simples fichiers Markdown versionnés dans un dépôt git : l’assistant, une application web et un humain qui édite les fichiers à la main partagent exactement le même format.
Fonctionnalités
- Requête texte :
npm start -- "add a person memory for Alice, who lives in Paris". - Requête vocale : sans argument, l’outil écoute le micro ; sans parole pendant environ 10 secondes, il s’arrête sans rien faire.
- Outils MCP exposés à Claude :
list_folders,list_memories,read_memory,search_memories,create_memory,update_memory,delete_memory,create_folder. - Commit et push automatiques après chaque modification.
- Mode lecture seule (
MEMORY_READONLY=1) qui ne fournit à Claude que les outils de consultation. - Import en masse (
npm run import) : chaque fichier d’un dossier est transformé par Claude en mémoire du type suggéré, avec une option--dry-run.
Fonctionnement
src/mcp.tsdéclare un serveur MCP en mémoire aveccreateSdkMcpServerdu Claude Agent SDK.src/memoryStore.tslit et écrit les fichiers : un dossier par répertoire avec un.folder.json, une mémoire par fichier Markdown avec un en-tête de métadonnées et des sections## Champ.src/gitRepo.tsclone un dépôt distant (MEMORY_REPO_URL) ou ouvre une copie locale (MEMORY_REPO_DIR).src/assistant.tspilote Claude avecquery()et n’autorise que les outilsmemory.*viaallowedTools.src/voice.tsenregistre avecsox(ouarecord) et transcrit avec whisper.cpp. Enregistreur et transcripteur sont injectables, ce qui permet de tester le délai de silence sans matériel audio.
Installation
Prérequis : Node.js, une clé API Anthropic et un dépôt de mémoires (URL de clonage authentifiée ou dossier local). Pour le mode vocal : sox ou arecord, plus whisper-cli (whisper.cpp) et un modèle.
npm install
cp .env.example .env # ANTHROPIC_API_KEY + MEMORY_REPO_URL ou MEMORY_REPO_DIR
npm start -- "add a person memory for Alice, who lives in Paris"
npm start # écoute le micro
npm run import -- ./contacts People person --dry-runTests et vérification des types :
npm test
npm run typecheck