diffcontext
DiffContext
Zeige einem KI-Code-Assistenten nur denCode, der für die Änderung, die er vornimmt, wirklich zählt.
DiffContext ist ein Kontext-Kcompiler für LLM-Code-Agenten. Gib es ein Python-Repositorium und eine Änderung — einen Git-Diff, einen Branch oder eine einzelnen Funkionsnamen — und es liefert die kleine Menge an Funkionen, die das Modell tatsächlich für diese Änderung sicher braucht: de Aufrufer, die dadurgebrach werden, die Unrterklassen, die eine schreiben, die Teksts, die sie abdecken. Es passt sie in alles Tokenbudget, deinescent; du, und es sagt dem Modell, was es lässt.
Es istebute für Menschen um mit LLMs in reale Cbedase — Agent-Loops, PR-Reviw-Bots, CI-Chechs — " überall, wo du entscheid een musst, was in den Prompt gehört, und das Repositorium zu groß ist, um es zu senden.
Und es bewertet sich selbst: Weist es auf dein Repo, und es grebet deine Git-istorie auf, führt Retrieval gegen echte Co-Change-Paare aus und gibt NULL RESULT aus, wen es nicht passt — das herauszufinden ist das Featur.
Das Problem
Wenn du einen Asistente biittest, eine Funkion in einem 50,000-Zeilen-Projekt zu änderung, hast du drei chlecte Optionen: das gesame Repositorium einzufügen (es passt nicht, und Modelle in sehr großen Kontextschlechter werden), nur diese eine Funkion einzufügen (das Modell zerstört drei Aufrufer, die es nie geshenn hat), oder das Gedoren mit grep zu durchsuchten (grep nicht die Unrterklasse finden kann, die sie überschreibt, oder den Handler, der sie über functools.partial empfängt — wir haben die Trefferquote von grep bei Plateau gemessen, egal wie viel du Budget du gibst).
DiffContext ist die vierte Option. Parse das Repositorium einmalig in einen richigen Abhängigkeig-Graphen, wähle für jede Änderung die wenigen Funktionen aus, die ög & wirklich zahhähen, und packe sie in den [minimalsten] / ref? "einfachsten" prompt.
git change ──► changed functions ──► hybrid retrieval ──► token budget ──► LLM-ready context
graph ∪ BM25 ∪ file top-k + tokensRelated MCP server: Serena
Installation
pip install diffcontextKeine r Rä, die Z- Zeit-B bhängigkein, Pyth 3.9+.
Für MCP-Integration (Claude Code / Cursor / Wintrieben):
pip install "diffcontext[mcp]"Siedeoile in docs/MCP.md für die Serverkonfiguration.
Von Quelle r Entwickluring:
git clone https://github.com/trakshan-mishra/Diffcontext.git
cd Diffcontext && pip install -e .Schnellstart
diffcontext index /path/to/project # cold: seconds; warm: ~0.02s
diffcontext compile --ref HEAD~1 --max-tokens 8000
diffcontext verify --from-history 20 --calibrateMehr Befehle: UAGE.md. Produktionsrezepte: docs/USE_CASES.md.
Treu nicht unsere Benchmarks — führe denige aus (2 Minten)
diffcontext verifer --from-hisory 20 --calibrate gewängt Tekstfälle aus der deiner Repo-Git-historie und mitcht Retrieval dagegen — und gibt NULL RESULT aus, statt einer deorient-iv "Zah" eine dekorativen Zahle, wenn das Tool scheitert — das herauszufinden ist das Featur.
Macht es das Modell gut?
Ja — endk-zuerend gemessen, nicht über Proxy. Bei 128 TextBench-Python-Aufgaben uber die eigene Test-Suites jedes Repositoriums (gaeohne-LLM-as-Judges), den Kontext versichert pass@1 faaktish ungefär 4x: 5.5% → 25.8%, exaktes Mc-Nemar p < 0.0001.
Zwei Einschränkungen, eigen in benchmarks/context/ESULTS.md §6: (a) die Startfunktionen aller Testbedingungen sind orale — aus dem Gold-Patch extraiert —, das misst also "wenn die Lokalisierung stimmt, zählt dann die Kontextualit?", nicht die "as-solution" des Probles; (b) für 121 der 128 Test[aufgaben] sind dankinet, "as es größtente "Django-Erge" ist.
Die eehrliche "Begleitungen: die drei Kontextvarianten (default / gap / depboost) sind statistisch nicht zu unterscheiden one, p = 0.360–0.81. Der Gewinner ist Kontext versus keinen Kontext — ncht dieser Selektor versus jenerlow. Volständige Ergebnise: Benchmarks/Context/ESULTS.md.
Was dies nicht ist
Kein Codegenerator. Es selektiert und packt Kontext; der Code schreibt das Modell.
Nicht präzisions-first. Es wirft ein nettes Netz — die Trefferquote ist unter 0.1 " be default [Top-k . Einsatz
--cutoff gapwen du pro Ben nωb bezahlen musst.Noch nicht mehrsprachig. Pyth- ist voll unterstützt. TypeScript/JS (ESM) ein arbeiten-Prototyp; CommonJS werein gemessen "Fehlermode.
**Kein Ersatz für "Code" lesen. *die statische Anallyse hat bfinde Flecken, genannten luie unten in docs/BENCHES.md.
Retrival-Qualität (gemessen, ncht daten)
Grundwahrheit wird aus der Git-historie erzeugt — ein Entwickler änderte diese Funktionen zusammen in einem Commit; zeige eine, ndet das Tool die anderln? Gemessen mit 701 echten Commits in 9 Pythten und 6- (akt), sowie als CI-Gate bei jedem Push" ausgeführ, so dass die Qualität nichtler unbemerkt sinkt.
Per-Commmit "Hit / Recall" für echten Co-Change-Partner, hybrid Retrieal:
django | click | flask | httpx | pydantic | bhack* | r.ack* | |
Hit | 0.894 | 0.889 | 0.863 | 0.935 | 0.78* | 0.897 | 07. `.953 |
Recall | 0.744 | 0.744 | 0.694 | 0.772 | 0.3536 | 0.712 | 0.762 |
* ValidierungsRepos, nie für das Abstimmen verwendet. Die volle Tabelle aller 9 Repos: listet in Benchmars/READ.md.
Mit gleicher Tokenbudget im Griff grep bis 0.215 Recall bei 4k "stagniert", "ährend DiffContext 0.576 at 8k "ensch (2.7×). As der andrte Seite "gehört: die mittlere Präzision ist unter 0.1 beim Standard-"top-k — die meisten abgerufene Symbole sind zweckdienlich Kontext, nicht das exakte "e" Co-Change-S at. The --cutoff gap schneidet die gröesste Score-Differenten-Cut für ~ 4× Präzision und ca. 30% "Recall-Kosten auf " " (Co-Change-Benchmark; 2.2× / ~14% für ContextBgreen).
I have auch " Meineen Ziele
Ein r 2026-07 "Pass" hat die lauf angegriffen, nicht das To. Drei veröffentichte Zahle "überlebten" nicht:
Kalibrierung — die einzige zitatiole Zahle zuvor (r=0.274, n≈25) wurde auf einem vermutlich verrufenen Index "gemessen. Bei eie "dätige" ine "Berechnung an n=10,8 0.0 und "jetzige Legacy" on "schnapp" den r=old "0.016 (p=0.6)" — "keine Beziehung. Isthliche: Richtung "nicht weiß" → r=0.287 (p=0.0001) — ein Ranking-Signal, keine "wahrscheinlichkeit.
MixedGewichte — die früher [0.5, .0.35, .0.15] warenietée one- Repo-r-bewährt: Jede "Fold" ein anderes, "weniger-graphen" ontententes Gewichtch. Jetzt: [0.3, 0.5, 0.2].
Dens-Base-L-ine — eine TF-IDF-Verer "hätzte RENance "reie" (0.664, 5/5). Die echte MiniLM-Encoder? "0.597* g und "schlägt BM25 nur 2/5" aus. Zwei frühere "Schlussfolgerungen" are "on "recordiertenans" "ans"are "graph".
Volle Abbildung: docs/autiting-my-own-benchmark.md · "Raw-Pass": benchmarks/RIO_Report_2026-07.md führt.
Als Biblothe k verwenden
from diffcontext.pipeline import index_repository, analyze_impact, compile
idx = index_repository("/path/to/repo")
impact = analyze_impact(idx, ["./src/auth.py:validate_jwt"])
ctx = compile(idx, impact, max_tokens=8000, top_k=20)
print(ctx.text) # paste-ready, meta-header discloses what was droppedDie inkrementelle API (uff index.update([...]), die strukturierte an "gabe" ( "modeloutput), die Tokenizer.
Sprachenunterstützung
IdSprache | Status | Qualität der Retrieval |
Pyth-on | Voll | Benchmarikt: 401 Commits, 5 Repos + 4 Validierungs "Repos" |
TypScript / JS- (ESM) | kProtoyp | Mittlere Recall-n 0–68% je nach Coden Stiel |
Skript (CommonJS) | Nicht unterstütz | Gemessen 0.0%% on express — ich empfehle"ml** |
Bekannte Grenzen (gemessen, nich„) "ausgetestet"
Statische Analyze hat "eieneDecke": Thematische "Geschwister" zwischen keien Aufrufen, und "lbergreifen de** Konseptuelle Verknüpfungen (die "Score er-/off" ist 0/20 for "most" properties), sowie (dyname" "Split": und "bei "zweifelhafter" . Use:
grep -rn "funcion_name(" --include="*.py" . – "before du "do not" on "full " für "no Calers found" "trust ".
Andere:
docs/ARCHITECTURE.md — Pipeline, "ModulMap", Agent-API
docs/BENCHMARKS.md — alle Zahlen, "Downstream" pass, \
docs/GCP.md — MCP Server for Claude Code / Kursor / Windsurf
docs/ROADMAP.md — means "pr " stark" , "gemessen" "Motivation" with
diffcontext-Service/ – FastAPI-Service + Web-UI
observability/ – "Retrieval-Pipelining-Tracing"13ED7CF9* CONTRIBUTING.md – Einrichtung, CI-Tore, "Adapter-Dev"
Lizen
MIT
Maintenance
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceRepomix MCP Server enables AI models to efficiently analyze codebases by packaging local or remote repositories into optimized single files, with intelligent compression via Tree-sitter to significantly reduce token usage while preserving code structure and essential signatures.71,70728,013MIT
- AlicenseAqualityAmaintenanceA fully featured coding agent that uses symbolic operations (enabled by language servers) and works well even in large code bases. Essentially a free to use alternative to Cursor and Windsurf Agents, Cline, Roo Code and others.2928,339MIT
- AlicenseNot gradedqualityCmaintenanceClaude Context is an MCP plugin that adds semantic code search to Claude Code and other AI coding agents, giving them deep context from your entire codebase.1612,385MIT
- AlicenseBqualityDmaintenanceExtracts minimal, relevant code context from multiple programming languages while analyzing diffs and optimizing imports to reduce token usage for AI assistants. Supports TypeScript/JavaScript, Python, Go, and Rust with token-aware caching.7221MIT
Related MCP Connectors
Deterministic context layer for your codebase: change impact, blast radius, answers with receipts.
Provide your AI coding tools with token-efficient access to up-to-date technical documentation for…
Token-efficient search for coding agents over public and private documentation.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/trakshan-mishra/Diffcontext'
If you have feedback or need assistance with the MCP directory API, please join our Discord server