Token导航 LogoToken导航TokenDH.com
diffchunk (Peteretelej) logo
开发工具未说明官方级别未说明来源级核验

diffchunk (Peteretelej)

MCP Server

diffchunk是一个MCP服务器,使LLM能够高效导航大型差异文件,通过模式导航直接跳转到相关更改。

工具数

4

提示词数

0

GitHub Stars

8

资源数

0
PythonCline代码审查CursorCline

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

peteretelej

提供方

peteretelej

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

diffchunk

![CI](https://github.com/peteretelej/diffchunk/actions/workflows/ci.yml) ](https://pypi.org/project/diffchunk/) ![Python 3.10+](https://www.python.org/downloads/) ![License: MIT](https://opensource.org/licenses/MIT) ![uv](https://github.com/astral-sh/uv)

MCP服务器,使LLM能够高效地导航大型差异文件。LLM可以使用基于模式的导航直接跳转到相关更改,而不是按顺序读取整个差异。

问题

较大的差异超过了LLM上下文限制,并在无关的更改上浪费令牌。50k+行差异不能直接处理,手动拆分会丢失文件关系。

解决方案

带5个导航工具的MCP服务器:

  • load_diff -使用自定义设置解析diff文件(可选)
  • list_chunks -显示块概览,包括文件映射和每个文件的行数(自动加载)
  • get_chunk -检索特定块内容(自动加载)
  • find_chunks_for_files -按文件模式定位块(自动加载)
  • get_file_diff -提取单个文件的完整差异(自动加载)

设置

先决条件: 安装 紫外线 (一个非常快的Python包管理器),它提供 uvx 命令。

添加到MCP客户端配置中:

{
  "mcpServers": {
    "diffchunk": {
      "command": "uvx",
      "args": ["--from", "diffchunk", "diffchunk-mcp"]
    }
  }
}

用法

您的AI助手现在可以处理以前在Cline、Roocode、Cursor和其他工具中导致失败的大量变更集。

使用AI助手

配置后,您的AI助手可以使用diffchunk分析大型提交、分支或差异。

以下是一些示例用例:

分支比较:

  • _“检查开发中的所有更改,而不是主分支中的任何错误”_
  • _“告诉我尚未合并的所有更改”_
  • _“临时分支添加了哪些新功能?”_
  • _“总结过去2周对此仓库的所有更改”_

代码审查:

  • _“使用diffchunk检查我的功能分支是否存在安全漏洞”_
  • _“在我合并到生产环境之前,使用diffchunk查找任何突破性的更改”_
  • _“使用diffchunk检查此大型重构是否存在潜在问题”_

变更分析:

  • _“使用diffchunk向我显示需要运行的所有数据库迁移”_
  • _“使用diffchunk查找API的哪些更改可能会影响我们的移动应用程序”_
  • _“使用diffchunk分析最近添加的所有新依赖项”_

直接文件分析:

  • _“使用diffchunk分析/tmp/changes.diff上的差异,并找到任何错误”_
  • _“创建我未提交的更改的差异并对其进行审核”_
  • _“将我的本地分支与来源进行比较,并突出显示冲突”_

提示:AI助手规则

添加到AI助手的自定义说明中以自动使用:

When reviewing large changesets or git commits, use diffchunk to handle large diff files.
Create temporary diff files and tracking files as needed and clean up after analysis.

运作原理

当你让你的人工智能助手分析变化时,它会战略性地使用diffchunk的工具:

  1. 创建diff文件 (例如。, git diff main..develop > /tmp/changes.diff)根据你的问题
  2. 用途 list_chunks 通过以下方式了解diff结构和总体范围,包括每个文件的行数 file_details
  3. 用途 find_chunks_for_files 在询问特定文件类型时查找相关部分
  4. 用途 get_file_diff 获取一个特定文件的完整差异,而不加载整个块
  5. 用途 get_chunk 在不将整个差异加载到上下文中的情况下检查特定部分
  6. 系统地跟踪进展 通过大型变更集,逐块分析
  7. 清理临时文件 完成分析后

这使您的AI助手能够处理通常会导致其他工具崩溃的巨大差异,同时在不丢失上下文的情况下提供彻底的分析。

工具使用模式

概述一:

list_chunks("/tmp/changes.diff")
# -> 5 chunks across 12 files, 3,847 total lines, ~15,420 tokens
# Each chunk includes token_count and file_details with per-file line counts
# Response includes total_token_count for context-budget planning

目标特定文件:

find_chunks_for_files("/tmp/changes.diff", "*.py")
# → [1, 3, 5] - Python file chunks

get_chunk("/tmp/changes.diff", 1)
# → Content of first Python chunk

单文件差异:

get_file_diff("/tmp/changes.diff", "src/main.py")
# → Complete diff for src/main.py (header + all hunks)

# Glob patterns work when they match exactly one file
get_file_diff("/tmp/changes.diff", "*.config")
# → Complete diff for the single matching config file

系统分析:

# Process each chunk in sequence
get_chunk("/tmp/changes.diff", 1)
get_chunk("/tmp/changes.diff", 2)
# ... continue through all chunks

配置

路径要求

  • 仅绝对路径: /home/user/project/changes.diff
  • 跨平台:Windows(C:\path)和Unix(/path)
  • 房屋扩建: ~/project/changes.diff

自动加载默认值

工具通过优化设置自动加载:

  • max_chunk_lines: 1000
  • skip_trivial:true(仅限空格)
  • skip_generated:true(锁定文件、构建工件)

自定义设置

使用 load_diff 对于非默认行为:

load_diff(
    "/tmp/large.diff",
    max_chunk_lines=2000,
    include_patterns="*.py,*.js",
    exclude_patterns="*test*",
    context_lines=2
)

格式选项

使用 format 参数打开 get_chunk 将输出转换为LLM消耗:

# Default - raw diff output
get_chunk("/tmp/changes.diff", 1, format="raw")

# Annotated - structured with line numbers, file headers, hunk separation
get_chunk("/tmp/changes.diff", 1, format="annotated")

# Compact - token-efficient, only new hunks (context + added lines)
get_chunk("/tmp/changes.diff", 1, format="compact")

注释格式 添加 ## File: 标题, __new hunk__/__old hunk__ 具有新文件行号的部分和来自的函数上下文 @@ 标题。

紧凑格式 仅显示添加或保留的内容,省略删除的行和 __old hunk__ 部分完全。当你只需要看到最终状态时很有用。

上下文缩减

使用 context_linesload_diff 在加载时减少每个块的上下文行数:

# Keep only 2 lines of context around each change
load_diff("/tmp/large.diff", context_lines=2)

# Keep only changes, no context
load_diff("/tmp/large.diff", context_lines=0)

这与 format -在加载时减少上下文,然后在显示时应用格式化。

支持格式

  • Git差异输出(git diff, git show)
  • 统一差异格式(diff -u)
  • 单个diff中有多个文件
  • 二进制文件更改指示器

演出

  • 高效处理100k+线路差异
  • 内存高效流媒体
  • 文件更改时自动重新加载

文档

  • 设计 -架构和实施细节
  • 贡献 -贡献指南和开发设置

许可证

麻省理工学院

目录标签

目录标签

PythonCline代码审查差异分析本地部署大型文件处理LLM工具Git工具

支持客户端

CursorCline

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明tokenlocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP