mcpField
D
diffctx

diffctx

本地服务
diffctx.com版本控制61 周前更新

关于 diffctx

diffctx 是一个从 Git 变更出发分析影响范围的工具,为 Agent 和代码审查者找出差异之外的调用方、相关测试与契约,并在令牌预算内选取审查代码。它本地确定性运行,不使用索引或模型调用。

主要功能

  1. 01分析变更触及的调用方和测试
  2. 02按令牌预算筛选审查代码
  3. 03支持符号查询和多种差异范围
  4. 04输出排序 JSON 或 Markdown
  5. 05静态解析并标明无法解析之处

适用场景

  1. 01审查分支或提交的影响范围
  2. 02为代码审查挑选必要上下文
  3. 03查找特定符号的调用关系
  4. 04在 CI 中提供变更上下文

MCP 相关

MCP 服务与 CLI 使用同一分析引擎,供 MCP 客户端查询差异影响和相关代码。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"nikolay-e-diffctx": {
"command": "uvx",
"args": [
"diffctx"
]
}
}
}
启动命令uvx diffctx

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypidiffctx1.20.0

工具

1

收录的工具列表 · 更新于 6 天前

参数类型必填说明
modestring否
symbolany否
diff_refany否
clipboardboolean否
repo_pathstring是
max_tokensinteger否
fragment_idsany否
budget_tokensinteger否
include_raw_diffboolean否

详细介绍

diffctx — git 变更影响了什么,以及审查它需要哪些代码

CI PyPI crates.io npm MCP Registry

diffctx 会告诉 Agent 或审查者,变更在 diff 之外影响了什么——调用方、涉及这些调用方的测试,以及它跨越的契约——并在 Token 预算内选出理解变更所需的代码。本地运行、结果确定,无需索引,也不调用模型。调用方解析采用静态分析,且针对不同语言分别处理;无法解析时会明确说明,而不会输出零。

此工具此前以 treemapper 名称发布——所有命令、标志和 API 调用均保持不变。

安装

diffctx 是一款命令行工具;MCP 服务、Claude Code 插件和 GitHub Action 均使用同一引擎。

CLI
uvx diffctx . --diff HEAD~1             # zero-install, run once via uv
pipx install diffctx                    # isolated CLI
pip install diffctx                     # into an active environment
cargo install diffctx                   # native binary from crates.io, no Python
npx diffctx . --diff HEAD~1             # npm wrapper over the native binary
docker run --rm -v "$PWD:/repo" ghcr.io/nikolay-e/diffctx . --diff HEAD~1
scoop bucket add diffctx https://github.com/nikolay-e/diffctx   # Windows
scoop install diffctx/diffctx

原生二进制——可通过 cargo、npm、Docker、Scoop 和适用于 Linux、macOS 及 Windows(x64 和 ARM)的发布归档获取——在所有模式下均支持 --diff 和 --symbol;导出整个代码树、生成 Markdown 包、运行 diffctx graph 以及使用 MCP 服务,则需要 Python 包。

任意 MCP 客户端

已注册为 io.github.nikolay-e/diffctx。

claude mcp add diffctx -- uvx --from 'diffctx[mcp]' diffctx-mcp
codex mcp add diffctx -- uvx --from 'diffctx[mcp]' diffctx-mcp
gemini mcp add diffctx uvx -- --from 'diffctx[mcp]' diffctx-mcp

Cursor、VS Code、Claude Desktop、Windsurf、Zed、Continue 和 Python API:集成。

Claude Code 插件

MCP 服务,加上 /diffctx:impact 以及在每次提交和推送时运行它的钩子。

claude plugin marketplace add nikolay-e/diffctx
claude plugin install diffctx@diffctx
CI

GitHub Action 会将拉取请求的 diff 上下文交给任意审查步骤。

用法

diffctx . --diff --mode impact          # uncommitted work: callers outside the diff, their tests, contracts
diffctx . --symbol parse_config         # the same for a name, no change needed
diffctx . --diff main...feature         # the code to review a branch, packed under the auto budget
diffctx . --diff HEAD~1 --budget 12000  # the last commit, capped at 12k o200k tokens
diffctx . --diff 24h --mode locate      # today's work as ranked JSON, no source bodies
diffctx .                               # whole-tree export, Markdown

--diff 接受 git 范围、staged 或以当前时间为终点的时长窗口(24h、90min、2w)。所有标志、默认值和退出代码请参阅命令行参考。

diffctx 演示

对比

整个代码库打包工具会导出所有内容;代码图服务则基于维护的索引回答查询。diffctx 以变更为起点:输入是变更,输出是它影响的内容及其解释信息。查看测量结果,以及另外两种方案更适用的场景:COMPARISON.md。

更多信息

Apache 2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。