lp177
~/lp177 $ ./memory-assistantTypeScript · Node.js · Claude Agent SDKMemory Assistant

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

Code source

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.ts déclare un serveur MCP en mémoire avec createSdkMcpServer du Claude Agent SDK.
  • src/memoryStore.ts lit 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.ts clone un dépôt distant (MEMORY_REPO_URL) ou ouvre une copie locale (MEMORY_REPO_DIR).
  • src/assistant.ts pilote Claude avec query() et n’autorise que les outils memory.* via allowedTools.
  • src/voice.ts enregistre avec sox (ou arecord) 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-run

Tests et vérification des types :

npm test
npm run typecheck