关于 diffctx
diffctx 是一个从 Git 变更出发分析影响范围的工具,为 Agent 和代码审查者找出差异之外的调用方、相关测试与契约,并在令牌预算内选取审查代码。它本地确定性运行,不使用索引或模型调用。
主要功能
- 01分析变更触及的调用方和测试
- 02按令牌预算筛选审查代码
- 03支持符号查询和多种差异范围
- 04输出排序 JSON 或 Markdown
- 05静态解析并标明无法解析之处
适用场景
- 01审查分支或提交的影响范围
- 02为代码审查挑选必要上下文
- 03查找特定符号的调用关系
- 04在 CI 中提供变更上下文
MCP 相关
MCP 服务与 CLI 使用同一分析引擎,供 MCP 客户端查询差异影响和相关代码。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 6 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mode | string | 否 | |
| symbol | any | 否 | |
| diff_ref | any | 否 | |
| clipboard | boolean | 否 | |
| repo_path | string | 是 | |
| max_tokens | integer | 否 | |
| fragment_ids | any | 否 | |
| budget_tokens | integer | 否 | |
| include_raw_diff | boolean | 否 |
详细介绍
diffctx — git 变更影响了什么,以及审查它需要哪些代码
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 以变更为起点:输入是变更,输出是它影响的内容及其解释信息。查看测量结果,以及另外两种方案更适用的场景:COMPARISON.md。
更多信息
- 文档网站 — 完整介绍整个流程
- 命令行参考 — 根据
diffctx --help生成 - 集成 — 安装、MCP 客户端、Python API
- 常见问题 — 启发式分析还是预言机、忽略规则、单体代码库、机密信息
- Token 计数 — 用于非 GPT 模型的
--budget - 基准测试和论文
- 更新日志 · 安全
- 参数策略
Apache 2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。