Sobre el proyecto

diffctx es una herramienta CLI y servidor MCP que selecciona el contexto de código mínimo necesario para que un LLM revise un diff de git. En lugar de pegar archivos completos, construye un grafo de código (importaciones, co-cambios, referencias de tipos) en más de 50 tipos de archivos, propaga la relevancia hacia afuera desde las líneas modificadas y se detiene cuando la relevancia cae por debajo de un umbral o se alcanza un límite de presupuesto de tokens. Capacidades clave: - Modo de contexto de diff: acepta un rango de git (HEAD~1..HEAD, main..feature) o una ventana de duración (24h, 8d, 90min) que compara el árbol de trabajo con el último commit antes de la ventana. Genera salida en Markdown, JSON o YAML. - Múltiples algoritmos de puntuación: ego (expansión acotada), PPR (Personalized PageRank), BM25 (recuperación léxica), RRF (fusión por rango recíproco) y PIT (fusión por percentiles). - Presupuesto de tokens con el tokenizador o200k_base; el presupuesto limita el artefacto renderizado, con la relevancia llenando el espacio restante después de que cada archivo modificado recibe un fragmento testigo. - Subcomando graph: explora grafos de dependencias directamente mediante salida Mermaid, JSON o GraphML; incluye métricas de ciclos, hotspots y acoplamiento. - Modo de exportación completa del código base: salida en árbol Markdown/JSON con profundidad configurable, patrones de ignorado y soporte de portapapeles. - Servidor MCP: expone una herramienta diffctx_context para que los asistentes de IA (Claude Code, Cursor, Windsurf, Codex CLI, Gemini CLI, VS Code) la invoquen durante la revisión de código. Publicado en el registro oficial de MCP. - API de Python: funciones build_diff_context() y map_directory() para uso programático. La instalación está disponible mediante uvx, pipx, pip, cargo, npm, Docker y Scoop en Windows. Los binarios precompilados cubren Linux (x86_64/aarch64), macOS (arm64/x86_64) y Windows (x64/arm64). El binario nativo y la imagen de Docker manejan el modo diff con salida YAML/JSON; el modo árbol, la salida Markdown, el subcomando graph y el servidor MCP requieren el paquete de Python. La herramienta respeta .gitignore y .diffctx/ignore de forma jerárquica, filtra automáticamente rutas que parecen secretos, almacena en caché la tokenización por blob e informa los recuentos de tokens en stderr. Los códigos de salida distinguen entre éxito, errores de tiempo de ejecución, errores de uso, errores de entorno y escenarios de diff vacío. Licenciado bajo Apache 2.0.