Skip to main content
Glama

DiffContext

Zeige einem KI-Code-Assistenten nur denCode, der für die Änderung, die er vornimmt, wirklich zählt.

Python 3.9+ CI License: MIT

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 + tokens

Related MCP server: Serena

Installation

pip install diffcontext

Keine 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 --calibrate

Mehr 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 gap wen 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 dropped

Die 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:

Lizen

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
37dResponse time
2wRelease cycle
5Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Repomix 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,707
    28,013
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A 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.
    29
    28,339
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Extracts 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.
    7
    22
    1
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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