Skip to main content
Glama
bauhaus28
by bauhaus28

contextshrinker

contextshrinker 是一个用 Go 编写的零依赖、无头(headless)模型上下文协议(MCP)服务器。它将本地代码库索引到嵌入式 Kùzu 图数据库中,从而大幅减少自主 AI 代理(如 Claude Code、Cursor、Antigravity IDE、Aider 和 Claude Desktop)的 LLM 令牌消耗。

contextshrinker 不会强迫 AI 代理读取原始源文件或运行笨拙的基于 grep 的搜索,而是允许代理查询项目架构依赖关系、函数调用链和类继承结构的语义图——将输入上下文消耗减少 90% 到 98%。


🚀 主要特性

  • 通用代理兼容性: 可通过标准输入/输出(stdio)无缝附加到任何符合 MCP 的编码工具或 IDE。

  • 零外部数据库: 完全自包含。在项目本地的 .contextshrinker/ 目录中运行进程内图数据库(Kùzu)。

  • 自动管理 LSP 守护进程: 自动检测项目语言,以编程方式配置沙盒语言服务器(如用于 Go 的 gopls 或用于 Python 的 pyright)(如果缺失),并在后台查询其 RPC 接口以构建调用图。

  • 多语言支持: 支持 Go、Python、JavaScript、TypeScript 和 Java 的完整 AST 语法解析和语义索引。

  • 干净的项目隔离: 每个工作区都维护自己的 .contextshrinker/ 目录,其中包含隔离的配置文件(.contextshrinker/ignore)和图数据库文件(.contextshrinker/db/)。

  • 实时状态同步: 使用 fsnotify 递归监视文件。保存时,防抖增量更新会清除旧节点并实时重新索引已修改的文件。

  • 交互式图可视化: 按需生成令人惊叹的、由 Vis.js 驱动的深色模式 HTML 代码库可视化(.contextshrinker/contextshrinker_graph.html)。


Related MCP server: code-graph-mcp

🛠️ 架构:两遍摄取

为了干净地索引代码,contextshrinker 运行两遍摄取序列:

graph TD
    A[Walk Workspace] -->|Filter via .contextshrinker/ignore| B[Pass 1: Tree-sitter Syntax]
    B -->|Create Nodes| C[(Kùzu Graph DB)]
    C --> D[Pass 2: LSP Semantic Cross-References]
    D -->|Create CALLS / IMPLEMENTS Edges| C
  1. 第一遍(Tree-sitter AST 提取): 快速扫描源文件以提取实体(函数/方法、类/结构体、变量)及其关联的文档字符串,并将它们作为节点插入。

  2. 第二遍(LSP 语义解析): 查询后台语言服务器协议(LSP)守护进程以获取交叉引用,从而识别和连接调用(CALLS)、导入(IMPORTS)和类继承(IMPLEMENTS / EXTENDS)。


📥 安装

选项 1:预编译二进制文件(最快)

如果您不想安装 Go,可以下载适用于您平台的可移植预编译包:

  1. 转到 Releases 页面。

  2. 下载适用于您操作系统的存档文件(.tar.gz 或 .zip)。

  3. 解压存档。将可执行文件(contextshrinker)及其动态库(libkuzu / kuzu_shared)放在同一文件夹中。

  4. 从该目录运行可执行文件:

macOS / Linux:

chmod +x contextshrinker
./contextshrinker --help

Windows:

contextshrinker.exe --help

选项 2:从源代码构建(需要 Go)

先决条件

  • Go(1.21 或更高版本)

  • Node.js 和 npm(用于自动安装 JS/TS 和 Python LSP)

编译

克隆存储库并运行:

go build -o contextshrinker

要将其直接安装到系统 PATH 中:

go install

🔌 集成到编码代理中

contextshrinker 作为编码代理的子进程按需运行。将编译后二进制的绝对路径注册到您的客户端中:

1. Antigravity IDE(Gemini 代理面板)

  1. 打开 Antigravity IDE。

  2. 单击代理面板中的 ...(更多选项) 菜单。

  3. 选择 "管理 MCP 服务器" $\rightarrow$ "查看原始配置"。

  4. 在 mcp_config.json 中注册服务器:

    {
      "mcpServers": {
        "contextshrinker": {
          "command": "/absolute/path/to/contextshrinker"
        }
      }
    }

2. Claude Code(CLI)

自动添加服务器:

claude mcp add contextshrinker /absolute/path/to/contextshrinker

3. Cursor IDE

  1. 导航到 设置 $\rightarrow$ 功能 $\rightarrow$ MCP。

  2. 单击 + 添加新的 MCP 服务器。

  3. 设置配置:

    • 名称: contextshrinker

    • 类型: command

    • 命令: /absolute/path/to/contextshrinker

4. Claude Desktop

将其添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "contextshrinker": {
      "command": "/absolute/path/to/contextshrinker"
    }
  }
}

🧰 公开的工具

配置完成后,以下工具将自动可供您的 AI 编码代理使用:

  1. search_codebase

    • 参数: query(字符串)

    • 描述: 执行全文搜索和 Cypher 查询,以匹配类、函数和变量中的结构和文档字符串。

  2. get_call_chain

    • 参数: target_function(字符串)、depth(整数,最大 5)

    • 描述: 使用变长路径 Cypher 查询解析上游调用者链,以映射调用依赖关系。

  3. get_file_structure

    • 参数: file_path(字符串)

    • 描述: 检索单个文件中包含的完整抽象节点结构(类、接口、方法、变量),而无需将原始文本内容馈送到上下文中。

  4. visualize_codebase

    • 描述: 触发按需 HTML 导出,将 contextshrinker_graph.html 保存到您的 .contextshrinker/ 目录中。

  5. get_architecture_report

    • 描述: 检索完整的代码库架构健康报告,其中包含有关上帝对象、耦合热点、循环、死未导出函数、AI 指标(SCR、DCR、BVI、AOI、调用链深度指数 - CDI)的指标,以及可操作的代码质量指南(Jeff Dean 原则)和 AI 系统提示指令。


🏛️ 代码库与架构优化

您可以使用 contextshrinker 系统地审计耦合、分析领域边界(DDD),并使用 LLM 指导代码重构(例如,将单体应用拆分为模块)。

优化工作流

  1. 生成架构指标和指南: 在终端中运行分析命令以检查代码库图并生成报告:

    ./contextshrinker analyze

    这将生成 contextshrinker-report.md,其中包含上帝对象(高出站耦合)、黑洞(高入站调用)、循环导入路径、死代码(未使用的私有函数)、AI 指标(包括调用链深度指数 - CDI)以及可操作的代码质量和 LLM 架构指南(Jeff Dean 原则)的指标。

  2. 获取系统提示: 从 CLI 检索首席系统架构师提示:

    ./contextshrinker prompt architect
  3. 使用 LLM 分析:

    • 将 prompt architect 命令的输出设置为 LLM 的系统提示。

    • 将生成的 contextshrinker-report.md 的内容作为上下文/输入提供。

    • 要求 LLM 提出有界上下文拆分或接口边界。

  4. 代理/工具使用工作流: 如果使用兼容 MCP 的代理(如 Antigravity IDE、Claude Code 或 Cursor),您可以直接询问:

    "运行 contextshrinker 分析报告,读取生成的 markdown,并充当系统架构师来审计我们的设计热点。在建议具体的模块提取之前,使用 get_call_chain 和 get_file_structure 工具检查耦合情况。"


⚙️ 配置与忽略

为防止工作区图膨胀,默认会忽略标准库和依赖项文件夹(node_modules/、vendor/、.git/ 等)。

要添加自定义忽略项,请初始化项目并在工作区根目录生成 .csignore 文件,方法是运行:

contextshrinker init

.csignore 中的每一行都会递归匹配:

# Custom project ignores
*.log
tmp-output/
dist/
.vitepress

💡 大型项目的最佳实践

如果您在中小型项目(例如,数百或数千个文件)上使用 contextshrinker,则直接在 LLM/代理提示(如 Claude Code 或 Cursor)中运行初始代码库摄取可能会导致代理超时问题。这是因为代理在等待首次工作区解析和 LSP 引用解析完成时具有严格的超时限制(通常为 60 秒)。

为防止这种情况,请在启动代理之前在终端中遵循以下优化工作流:

  1. 初始化工作区: 运行初始化命令以创建配置目录和默认忽略列表:

    contextshrinker init
  2. 配置忽略项: 打开工作区根目录下生成的 .csignore 文件,并添加要排除的任何大型目录(例如,文档站点、测试资产、构建文件夹)。

  3. 离线构建数据库: 从终端运行一次分析命令以构建初始图数据库:

    contextshrinker analyze

    这将在离线状态下执行 Tree-sitter 解析和 LSP 语义交叉引用的繁重工作。填充数据库后,后续的代理请求和实时状态同步将在几秒钟内以增量方式运行,从而防止任何将来的超时!


📊 命令行界面(CLI)模式

您可以直接从终端查询代码库图、显式启动 MCP 服务器守护进程、检索系统架构师提示或生成健康分析报告。

1. 启动 MCP 服务器

默认情况下,运行不带参数的 ./contextshrinker 将启动 MCP 服务器守护进程。您也可以显式触发它:

./contextshrinker start

2. 运行代码库架构分析

分析代码库结构(上帝对象、入站调用热点、循环导入、死代码、调用链深度指数 - CDI 和 LLM 代码质量指南)并将报告写入 contextshrinker-report.md:

./contextshrinker analyze

3. 打印首席系统架构师提示

将领域驱动设计(DDD)首席系统架构师系统提示打印到标准输出:

./contextshrinker prompt architect

4. 搜索代码库

查找与查询匹配的函数、类或变量:

./contextshrinker search "IngestWorkspace"

5. 跟踪调用链

跟踪目标函数名称的上游调用者(默认深度为 3,最大为 5):

./contextshrinker call-chain "IngestWorkspace" --depth 3

6. 检索文件结构

获取文件的结构,而无需读取其完整文本内容:

./contextshrinker structure "main.go"

7. 生成交互式可视化

生成 Vis.js 代码库图表示:

./contextshrinker visualize

在任何浏览器中打开生成的 .contextshrinker/contextshrinker_graph.html,以交互方式浏览项目的架构。

选项(全局标志)

  • --workspace <path>:指定项目目录(默认为 .)。

  • --db <path>:指定数据库存储目录(默认为 .contextshrinker/db)。

  • --reindex:在执行查询之前强制进行完整的工作区摄取扫描(重新解析代码和映射 LSP 关系)。如果数据库为空,则会自动运行摄取。

  • 注意: 由于 Kuzu DB 会建立独占的文件级锁,请确保在活动数据库上运行 CLI 命令时暂停或停止 IDE 的 MCP 客户端,或者使用 CLI 标志指定其他工作区/数据库目录。


📄 许可证

本项目根据 MIT 许可证授权。

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Cross-repository code knowledge graph MCP server for Java, Kotlin, JavaScript, and TypeScript. Indexes source code into embedded KuzuDB via tree-sitter and exposes 30+ tools for call-flow tracing, multi-hop taint analysis (OWASP/CWE/PCI/STIG), entry-point reachability filtering, performance hotspot detection, and license compliance — without reading source files. 95% fewer tokens vs source-read
    33
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A high-performance code knowledge graph server implementing MCP, indexing codebases into a structured AST knowledge graph with semantic search, call graph traversal, and HTTP route tracing.
    1,753 npm
    84
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 159 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.
    8
    17
    46,435
    MIT