À propos du projet
claude-code-rlm est un hook pour Claude Code qui effectue une pré-recherche sur une codebase avant que le modèle principal ne traite un prompt. Au lieu de laisser le modèle principal (Opus ou Sonnet) utiliser ses premiers appels d'outils pour s'orienter, le hook dépêche d'abord le modèle Haiku, plus rapide et moins coûteux, pour explorer le dépôt et transmet les résultats au modèle principal sous forme de contexte injecté.
Fonctionnement
1. Claude Code invoque rlm-hook.mjs via le hook UserPromptSubmit, en passant un JSON sur stdin avec des champs tels que prompt, cwd et transcript_path.
2. Les entrées triviales sont immédiatement ignorées : les prompts inférieurs à une longueur minimale configurée, les commandes shell simples (ls, pwd, cat, echo, git status, npm, yarn), les affirmations d'un seul mot, les commandes slash telles que /help, /clear et /compact, et les collages riches en code où plus de la moitié de l'entrée est composée de blocs de code.
3. Un hachage SHA-256 du prompt et du répertoire de travail est vérifié par rapport à un cache de fichiers avec un TTL par défaut d'une heure.
4. En cas d'échec du cache, le CLI Claude est lancé avec le modèle Haiku configuré, limité aux outils Read, Glob, Grep et git Bash, et reçoit un prompt système l'instruisant d'explorer la codebase dans un nombre configurable d'appels d'outils.
5. Haiku écrit ses conclusions dans un fichier JSON temporaire ; le hook les formate en un bloc rlm_preresearch structuré contenant l'intention, le résumé, les fichiers pertinents, les modèles existants, les changements récents, l'approche suggérée, les tâches et les avertissements, puis l'imprime sur stdout pour que Claude Code l'injecte avant le prompt de l'utilisateur.
6. Tout échec, y compris les délais d'attente, les erreurs API et les erreurs d'analyse JSON, se termine sans sortie, afin que le hook ne bloque ni ne corrompe une conversation.
Modes et configuration
Tout est configuré via des variables d'environnement. Le mode Agentic (par défaut) active l'exploration basée sur des outils et est décrit comme prenant environ 20 secondes en cas d'échec du cache ; le mode fast effectue une analyse concise sans appels d'outils en environ 4 secondes. D'autres paramètres couvrent le nom du modèle, le délai d'attente total, le TTL du cache, les longueurs d'entrée minimale et maximale, le nombre maximum de tours d'outils, les chemins de cache et de log, ainsi qu'un fichier de métriques. Un mode SDK-Direct optionnel utilise le SDK Anthropic avec une clé API au lieu d'un sous-processus.
Les fonctionnalités supplémentaires décrites dans le README incluent un cache sémantique optionnel qui compare les embeddings par rapport à un seuil de similarité cosinus configurable, la réutilisation du contexte qui examine les blocs RLM récents pour éviter de réanalyser la même intention ou les mêmes fichiers, et un log de métriques JSONL avec un tableau de bord intégré (servi localement sur le port 9876) affichant la distribution de la latence, le taux de succès du cache, les performances par mode et le coût estimé de Haiku.
Chiffres de latence rapportés : environ 27 ms lors d'une omission, environ 37 ms lors d'un succès du cache, environ 20 s en mode agentic en cas d'échec, et environ 4 s en mode fast.
Configuration et installation : Node.js 18 ou plus récent et le CLI Claude Code dans le PATH. Le script d'installation fourni copie le hook dans le répertoire des hooks de Claude et le rend exécutable ; une entrée de hook avec une commande et un délai d'attente doit être ajoutée au fichier de paramètres de Claude Code. Les tests et le benchmarking sont exécutés via des scripts npm, et les tests d'intégration nécessitent un binaire claude actif. Le projet est publié sous licence MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.