MCP服务器,使LLMs能够高效地浏览大型差异文件。LLMs无需顺序读取整个差异文件,而是可以通过基于模式的导航直接跳转到相关更改。
大型差异文件超出LLM上下文限制,并浪费令牌在无关更改上。一个超过50k行的差异文件无法直接处理,手动拆分会丢失文件关系。
配备4个导航工具的MCP服务器:
load_diff - 使用自定义设置解析差异文件(可选)list_chunks - 显示块概述及文件映射(自动加载)get_chunk - 获取特定块内容(自动加载)find_chunks_for_files - 根据文件模式定位块(自动加载)前提条件: 安装uv(一个极快的Python包管理器),提供uvx命令。
添加到您的MCP客户端配置中:
{
"mcpServers": {
"diffchunk": {
"command": "uvx",
"args": ["--from", "diffchunk", "diffchunk-mcp"]
}
}
}
现在您的AI助手可以处理之前导致Cline、Roocode、Cursor等工具失败的大规模变更集。
一旦配置完成,您的AI助手可以使用diffchunk分析大型提交、分支或差异。
以下是一些示例用例:
分支比较:
代码审查:
变更分析:
直接文件分析:
添加到您的AI助手的自定义指令以实现自动使用:
当审查大型变更集或Git提交时,使用diffchunk处理大型差异文件。
根据需要创建临时差异文件和跟踪文件,并在分析后清理。
当您要求AI助手分析更改时,它会战略性地使用diffchunk的工具:
git diff main..develop > /tmp/changes.diff)基于您的问题list_chunks**获取差异结构概览及总范围find_chunks_for_files**当您询问特定文件类型的相关部分时定位它们get_chunk**查看特定部分而无需将整个差异加载到上下文中这使得您的AI助手能够处理通常会导致其他工具崩溃的大型差异文件,同时提供全面分析而不丢失上下文。
首先概览:
list_chunks("/tmp/changes.diff")
# → 跨越12个文件的5个块,总计3,847行
针对特定文件:
find_chunks_for_files("/tmp/changes.diff", "*.py")
# → [1, 3, 5] - Python文件块
get_chunk("/tmp/changes.diff", 1)
# → 第一个Python块的内容
系统化分析:
# 按顺序处理每个块
get_chunk("/tmp/changes.diff", 1)
get_chunk("/tmp/changes.diff", 2)
# ... 继续处理所有块
/home/user/project/changes.diffC:\path) 和 Unix (/path)~/project/changes.diff工具自动加载优化设置:
max_chunk_lines: 1000skip_trivial: true(仅空白字符)skip_generated: true(锁定文件,构建工件)使用load_diff进行非默认行为:
load_diff(
"/tmp/large.diff",
max_chunk_lines=2000,
include_patterns="*.py,*.js",
exclude_patterns="*test*"
)
git diff,git show)diff -u)