À propos du projet

diffctx est un outil CLI et un serveur MCP qui sélectionne le contexte de code minimal nécessaire à un LLM pour examiner un diff git. Au lieu de coller des fichiers entiers, il construit un graphe de code (imports, co-modifications, références de types) sur plus de 50 types de fichiers, propage la pertinence vers l'extérieur à partir des lignes modifiées, et s'arrête lorsque la pertinence descend sous un seuil ou qu'un plafond de budget de tokens est atteint. Capacités principales : - Mode contexte de diff : accepte une plage git (HEAD~1..HEAD, main..feature) ou une fenêtre de durée (24h, 8d, 90min) qui compare l'arbre de travail au dernier commit avant la fenêtre. Produit du Markdown, JSON ou YAML. - Plusieurs algorithmes de scoring : ego (expansion bornée), PPR (Personalized PageRank), BM25 (récupération lexicale), RRF (fusion par rang réciproque) et PIT (fusion par percentile). - Budgétisation des tokens avec le tokenizer o200k_base ; le budget plafonne l'artefact rendu, la pertinence remplissant l'espace restant après qu'un fragment témoin a été attribué à chaque fichier modifié. - Sous-commande graph : explore directement les graphes de dépendances via une sortie Mermaid, JSON ou GraphML ; inclut des métriques de cycles, de points chauds et de couplage. - Mode d'export complet de la base de code : sortie en arbre Markdown/JSON avec profondeur configurable, motifs d'exclusion et prise en charge du presse-papiers. - Serveur MCP : expose un outil diffctx_context que les assistants IA (Claude Code, Cursor, Windsurf, Codex CLI, Gemini CLI, VS Code) peuvent appeler pendant la revue de code. Publié dans le registre MCP officiel. - API Python : fonctions build_diff_context() et map_directory() pour un usage programmatique. L'installation est disponible via uvx, pipx, pip, cargo, npm, Docker et Scoop sous Windows. Des binaires précompilés couvrent Linux (x86_64/aarch64), macOS (arm64/x86_64) et Windows (x64/arm64). Le binaire natif et l'image Docker gèrent le mode diff avec sortie YAML/JSON ; le mode arbre, la sortie Markdown, la sous-commande graph et le serveur MCP nécessitent le paquet Python. L'outil respecte .gitignore et .diffctx/ignore de manière hiérarchique, filtre automatiquement les chemins ressemblant à des secrets, met en cache la tokenisation par blob et rapporte les compteurs de tokens sur stderr. Les codes de sortie distinguent le succès, les erreurs d'exécution, les erreurs d'usage, les erreurs d'environnement et les scénarios de diff vide. Sous licence Apache 2.0.