Skip to main content
Glama

DiffContext

AI 코딩 어시스턴트에게 변경 중인 코드와 실제로 관련된 코드만 보여주십시오.

Python 3.9+ CI License: MIT

DiffContext는 LLM 코딩 에이전트를 위한 컨텍스트 컴파일러입니다. Python 리포지토리와 변경 사항(깃 디프, 브랜치, 또는 단일 함수 이름)을 입력하면 그 변경을 안전하게 수행하기 위해 모델이 실제로 필요로 하는 작은 함수 집합을 반환합니다: 깨질 호출자, 이를 오버라이드하는 하위클래스, 이를 테스트하는 테스트가 포함됩니다. 사용자가 제공하는 어떤 토큰 예산에도 맞추어 모델에게 무엇을 생략해야 했는지 알려줍니다.

실제 코드베이스에 LLM을 통합하는 사람들을 위해 만들어졌습니다 — 에이전트 루프, PR 리뷰 봇, CI 검사 등 프롬프트에 무엇을 넣을 것인지 결정해야 하고 리포지토리를 보내기에는 너무 큰 모든 곳을 대상으로 합니다.

그리고 DiffContext는 스스로 평가합니다. 리포지토리를 가리키면 git 히스토리를 채굴해서 실제 동시 변경 쌍들에 대해 검색을 실행하고, 맞지 않으면 NULL RESULT를 출력합니다 — 그 사실을 발견하는 것이 바로 기능입니다.

문제

50,000줄짜리 프로젝트에서 한 함수를 변경(다른 함수 사용)하라는 지시를 하면 선택할 수 있는 좋은 방법이 없습니다. Let's consider: 전체 리포지토리를 붙여 넣기 (맞지 않고 매우 큰 컨텍스트에서 모델이 저하됨), 그 함수 하나만 붙여넣기 (모델은 보지 못한 세 개의 호출부를 손상시킴), 또는 이름으로 grep하기 (grep은 오버라이드하는 하위클래스나 functools.partial을 통해 이를 수신하는 핸들러를 찾지 못함 — 우리는 grep의 재현율이 아무리 많은 예산을 투입해도 평탄(plateau) 상태가 되는 것을 측정했습니다).

DiffContext는 네 번째 선택지입니다. 리포지토리를 한 번 파싱하여 실제 의존성 그래프로 만들고, 어떤 변경에 대해서도 실제로 중요한 몇 개의 함수만 선택하여 가장 작은 유용한 프롬프트에 담아줍니다.

git change ──► changed functions ──► hybrid retrieval ──► token budget ──► LLM-ready context
                                      graph ∪ BM25 ∪ file      top-k + tokens

Related MCP server: Serena

설치

pip install diffcontext

실행 의존성이 전혀 없는 Python 3.9+.

MCP 통합(Claude Code / Cursor / Windsurf)의 경우:

pip install "diffcontext[mcp]"

서버 구성 비법은 docs/MCP.md에 있습니다.

개발용 소스에서 설치:

git clone https://github.com/trakshan-mishra/Diffcontext.git
cd Diffcontext && pip install -e .

빠른 시작

diffcontext index /path/to/project              # cold: seconds; warm: ~0.02s
diffcontext compile --ref HEAD~1 --max-tokens 8000
diffcontext verify --from-history 20 --calibrate

더 많은 명령어: USAGE.md. 프로덕션 레시피: docs/USE_CASES.md.

우리의 벤치마크를 맹신하지 말고 직접 실행하세요 (2분)

diffcontext verify --from-history 20 --calibrate여러분의 리포지토리 git 히스토리에서 테스트 케이스를 채굴하고 추가적으로 검색을 평가합니다. 도구가 여러분의 리포지토리에 맞지 않면 장식용 숫자 대신 NULL RESULT를 출력합니다. 그 사실이 알게 되는 것이 곧 이 기능입니다.

모델이 더 낫윤가요?

네 — 간접적인 지표가 아니라 최종적으로 엔드투엔드로 측정되었습니다. 각 리포지토리 자체 테스트 스위트(LLM-as-judge 아님)로 심사된 128개의 ContextBench Python 작업에서 **컨텍스트는 pass@1을 대략 4배: 5.5% → 25.8%**로, exact McNemar p < 0.0001입니다.

두 가지 전제 조건, 둘 다 benchmarks/contextbench/RESULTS.md §6에 있음: (a) 모든 arm에 주어진 시드 함수는 oracle 정답 패치에서 추출 — 따라서 이 사항은 *"올바른 위치 접근이 주어졌을 때, 컨텍스트 품질이 중요한가?"*를 측정하며 엔드 투 엔드 이슈 해결 (로컬리제이션이 모든 arm에 공짜로 부여됨)을 측정하지 않습니다; (b) 유효하지 않은 128개 작업 중 121개가 django, 따라서 상당 부분 django에 대한 결과입니다.

정직한 보완: 세 컨텍스트 변형(기본 / gap / depboost)은 서로 통계적으로 구별 불가능합니다, p = 0.36–0.81. 이점은 컨텍스트 유무의 차이일 뿐, 이 셀렉터와 저 셀렉터의 차이가 아닙니다. 전체 결과: benchmarks/contextbench/RESULTS.md.

이 도구가 아닌 것

  • 코드 생성기가 아닙니다. 컨텍스트를 선택하고 패키징합니다; 코드 작성은 모델 담당입니다.

  • 정밀도를 우선하지 않습니다. 광범위한 그물을 던집니다 — 기본 top-k에서 평균 정밀도가 0.1 미만입니다. 토큰당 비용을 고려한다면 --cutoff gap을 사용하십시오.

  • 아직 다중 언어가 아닙니다. Python은 완전 지원. TypeScript/JS (ESM)는 작동은 하는 시험용입니다; CommonJS는 측정된 실패 모드입니다.

  • 코드를 읽는 것을 대체하지는 않습니다. 정적 분석에는 사각 지점이 있었고, 아래와 docs/BENCHMARKS.md에서 구체적으로 설명합니다.

검색 품질 (측정된 것이지 주장된 것이 아닙니다)

근거 진실값(ground truth)은 정히스토리에서 채굴됩니다 — 개발자가 특정 함수들을 한 커밋에 함께 수정했음을 보여주면, 도구가 다른 함수들도 찾는가?9개의 Python 리포지토리에 걸친 701개 실제 커밋에서 측정되었고, 푸시할 때마다 CI 게이트로 를 다시 실행해 품질이 조용히 퇴보할 수 없게 합니다.

실제 동시 변경 파트너 검색, 하이브리드 검색을 이용한 커밋별 히트/재현율:

django

click

flask

httpx

pydantic

black\p*

requests*

Hit

0.894

0.889

0.863

0.935

0.758

0.897

0.953

Recall

0.774

0.750

0.694

0.772

0.536

0.712

0.762

* 검증용 리포지토리이며 튜닝에는 사용되지 않았습니다. 9개 리포지토리 전체 표: benchmarks/README.md.

동일한 토큰 예산에서 grep과 맞닥 뜨면, grep은 4k 토큰 이후 0.215에서 멈추며 DiffContext는 8k에서 0.576에 도달합니다. (2.7배). 솔직한 반전: 기본 top-k에서 평균 정밀도는 0.1 미만 — 검색된 대부분의 심볼은 정확한 동시 변경 집합이 아니라 보조 컨텍스트입니다. --cuttop gap은 가장 큰 점수 구간에서 잘라내 정밀도 ~4배가 코스트도 클 ~30% 재현율 감소(동시 변경 벤치마크; Context하고 2.2배 / ~14%)에서 실현됩니다.

내 벤치마크를 직접 검증했고, 세 주장이 성립하지 않았습니다

2026-07 시즌의 검토는 도구가 아니라 평가 방법을 저장했습니다. 발표된 세 가지 수는 준속하지 못했습니다:

  • Calibration — 유일하게 인용가능한 수치(r=0.274, n≈25)는 핫폴블 인덱스에서 측정되었습니다. n=1,080으로 깨끗이 재측정하면 레거시 점수가 r=0.016 (p=0.60): 관계가 전혀 없습니다. '모름' 쪽으로 축소해 수정 → r=0.287 (p=0.0001) — 확률이 아니라 총 의 신호입니다.

  • 혼합 가중치 — 배포 중 [0.5, 0.35, 0.15] \은 리포지토리 하나를 남긴 교차검증(leave-one-repo-out)에서 실패 — let's 더 그래프가 가벼운 혼합 방식이 각 fold에서 선택되었습니다. 이제 [0.3, 0.5, 0.2]입니다.

  • Dense 기준선 — TF-IDF 대리인에 over dense retrieval이 있을 — 0.664 BM25 이긴 5/5으로. 실제 MiniLM encoder일 때 0.597이며 BM25를 2/5만 이깁니다. 기존의 두 결론이 기록된 형태로 수정되었습니다.

전체 기록: docs/auditing-my-own-benchmark.md · 원본 감사 세션: benchmarks/RIG_REPORT_2026-07.md.

라이브러리로 사용하기

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

증분 API(idx.update([...])), 구조화 출력, 대체 가능한 토크나이저: docs/ARCHITECTURE.md.

언어 지원

언어

상태

검색 품질

Python

완전 지원

벤치마킹됨: 701 commits, 5 repos + 4 검증 repos

TypeScript / JS (ESM)

시고 없음

코드 스타일에 따라 평균 recall 0–68%

JavaScript (CommonJS)

미지원

express에서 0.0% 측정 — 사용하지 말 것

알려진 한계 (측정 결과, 추측 아님)

정적 분석에는 천장이 있습니다: 서로 호출이 없는 테마 형제, 하위시스템 간 개념적 링크(모든 메서드가 0/20), 동적 디스패치는 측정된 사각 지대입니다. 구체적인 항목은 docs/BENCHMARKS.md에 있습니다. 의심스러우면 "호출자가 없음"을 완전히 신뢰하기 틀 grep -rn "function_name(" --include="*.py" .을 돕니다.

더 보기

라이선스

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