Back to MCP directory
publicPublicdnsLocal runtime

gossiphs

Gossiphs是一个零配置、高性能的通用代码文件关系分析工具,支持多种编程语言,基于tree-sitter和git分析,提供Python SDK和MCP协议支持,便于与AI集成。

article

README

🚀 Gossip话痨项目文档

Gossip话痨项目专注于构建代码仓库中文件间的关系图。它通过提取文件的导入导出信息,并结合提交历史优化关系,构建出连接定义与引用节点的符号图,为代码分析提供有力支持。

🚀 快速开始

Gossip话痨项目处于早期实验阶段,若您感兴趣参与,可按以下步骤操作:

  1. 编辑规则在src/rule.rs
  2. 测试它在src/extractor.rs
  3. 尝试使用您的仓库在src/graph.rs

Tree-sitter Playground 是一个很好的助手。

✨ 主要特性

  • 致力于构建代码仓库中文件间的关系图,通过提取导入导出信息和结合提交历史优化关系。
  • 支持多种常见编程语言,能满足不同项目的需求。
  • 省略复杂的范围分析,使用提交历史优化边,降低编写规则的复杂度。

📦 安装指南

文档未提及安装步骤,暂无法提供。

💻 使用示例

文档未提供代码示例,暂无法展示。

📚 详细文档

支持的语言

目前该项目支持以下语言: | 语言 | 是否支持 | |--------------|----------| | Go | 是 | | Rust | 是 | | Python | 是 | | JavaScript | 是 | | TypeScript | 是 | | Java | 否 | | C# | 否 |

核心组件

  1. 规则引擎:用于定义不同语言中哪些符号需要被导入或导出。
  2. 提取器:负责从代码文件中提取这些符号信息。
  3. 图构建器:将提取的符号信息转化为有向图,节点为符号,边表示依赖关系。

工作原理

Gossip话痨通过以下步骤构建代码依赖图:

  1. 提取导入导出:识别每个文件中的导入和导出符号。
  2. 建立连接:根据规则将相关符号节点进行连接。
  3. 利用提交历史优化边:通过分析提交记录,调整和优化节点之间的关系。

与Stack-Graphs不同的是,Gossip话痨省略了复杂的范围分析,并转而使用提交历史来优化边。这种方法显著降低了编写规则的复杂度,因为规则只需指定每个文件应导出或导入的符号类型即可。

精度考量

静态分析存在其局限性,例如无法处理动态绑定问题。因此,Gossip话痨不可能达到LSP/LSIF那样的精确度,但在大多数实际应用场景中,这种精度已经足够使用。

| 仓库名称 | 相对于LSP边的Gossiphs覆盖范围 | |------------------------|------------------------------| | https://github.com/go-gorm/gorm | 442/499 = 88.5% | | https://github.com/gin-gonic/gin | 238/252 = 94.4% |

贡献指南

项目目前仍处于非常早期的实验阶段。如果您感兴趣,请通过问题留言您的想法。短期内,我们希望为更多语言构建更好的支持。

🔧 技术细节

  • 静态分析存在局限性,无法处理动态绑定问题,所以Gossip话痨无法达到LSP/LSIF那样的精确度,但在多数实际场景中精度足够。
  • 与Stack-Graphs不同,省略复杂的范围分析,使用提交历史优化边,降低编写规则的复杂度。

📄 许可证

Apache 2.0

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client