这个项目能做什么
diffctx 是一个 CLI 工具和 MCP 服务器,用于为 LLM 审查 git diff 挑选所需的最小代码上下文。它不会粘贴整个文件,而是跨 50 多种文件类型构建代码图(导入、共同变更、类型引用),从变更行向外传播相关性,并在相关性低于阈值或达到 token 预算上限时停止。
主要能力:
- Diff 上下文模式:接受 git 范围(HEAD~1..HEAD、main..feature)或时间窗口(24h、8d、90min),后者将工作树与该窗口前最后一次提交进行 diff。输出 Markdown、JSON 或 YAML。
- 多种评分算法:ego(有界扩展)、PPR(Personalized PageRank)、BM25(词法检索)、RRF(倒数排名融合)和 PIT(百分位融合)。
- 使用 o200k_base 分词器进行 token 预算控制;预算限制渲染产物,在每个变更文件获得一个见证片段后,相关性填充剩余空间。
- graph 子命令:通过 Mermaid、JSON 或 GraphML 输出直接探索依赖图;包含循环、热点和耦合指标。
- 完整代码库导出模式:Markdown/JSON 树输出,支持可配置深度、忽略模式和剪贴板支持。
- MCP 服务器:暴露 diffctx_context 工具,供 AI 助手(Claude Code、Cursor、Windsurf、Codex CLI、Gemini CLI、VS Code)在代码审查期间调用。已发布在官方 MCP 注册表中。
- Python API:build_diff_context() 和 map_directory() 函数,供编程使用。
可通过 uvx、pipx、pip、cargo、npm、Docker 以及 Windows 上的 Scoop 安装。预构建二进制文件覆盖 Linux(x86_64/aarch64)、macOS(arm64/x86_64)和 Windows(x64/arm64)。原生二进制文件和 Docker 镜像支持 diff 模式并输出 YAML/JSON;tree 模式、Markdown 输出、graph 子命令和 MCP 服务器需要 Python 包。
该工具按层级遵循 .gitignore 和 .diffctx/ignore,自动过滤疑似密钥的路径,按 blob 缓存分词结果,并在 stderr 上报告 token 计数。退出码区分成功、运行时错误、用法错误、环境错误和空 diff 场景。采用 Apache 2.0 许可。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。