diffcontext
DiffContext
AI 코딩 어시스턴트에게 변경 중인 코드와 실제로 관련된 코드만 보여주십시오.
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 + tokensRelated 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" .을 돕니다.
더 보기
docs/ARCHITECTURE.md — 파이프라인, 모듈 맵, 에이전트 API
docs/BENCHMARKS.md — 모든 숫자, 다운스트림 pass@1, 한계
docs/MCP.md — Claude Code / Cursor / Windsurf MCP 서버
docs/ROADMAP.md — 우선순위 전략 및 추정 동기가 포함
diffcontext-service/ — FastAPI 서비스 + 웹 UI
observability/ — 검색 파이프라인 트레이싱
CONTRIBUTING.md — 설정, CI 게이트, 어댑터 개발
라이선스
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