这个项目能做什么

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 许可。