返回市场
源智者

源智者

作者:sarathsp067 星标更新:2025-03-24

项目介绍

SourceSage: 高效的代码记忆系统用于LLM

<a href="https://glama.ai/mcp/servers/@sarathsp06/sourcesage"> <img width="380" height="200" src="https://gips1.baidu.com/it/u=209585435,55568088&fm=3081&app=3081&f=PNG?w=760&h=400" /> </a>

SourceSage 是一个MCP(模型上下文协议)服务器,它能够高效地记住代码库的关键方面——逻辑、风格和标准,并允许动态更新和快速检索。它设计为语言无关,利用LLM对多种语言代码的理解能力。

特性

  • 语言无关:适用于LLM理解的任何编程语言
  • 知识图谱存储:高效存储代码实体、关系、模式和风格惯例
  • LLM驱动分析:依赖于LLM来分析代码并提供见解
  • 令牌效率存储:优化最小令牌使用同时最大化内存容量
  • 增量更新:当代码更改时更新知识而不进行冗余存储
  • 快速检索:实现相关信息的快速准确检索

工作原理

SourceSage 使用一种新颖的方法:

  1. LLM 分析代码文件(任何语言)
  2. LLM 使用MCP工具注册实体、关系、模式和风格惯例
  3. SourceSage 将此知识存储在一个令牌效率高的图结构中
  4. 当需要时,LLM 可以查询此知识

这种方法利用了LLM内在的语言理解能力,而将MCP服务器集中在高效的内存管理上。

安装

# 克隆仓库
git clone https://github.com/yourusername/sourcesage.git
cd sourcesage

# 安装包
pip install -e .

使用方法

运行MCP服务器

# 运行服务器
sourcesage

# 或者直接从仓库运行
python -m sourcesage.mcp_server

连接到Claude桌面版

  1. 打开Claude桌面版
  2. 前往设置 > 开发者 > 编辑配置
  3. 在你的 claude_desktop_config.json 中添加以下内容:

如果你已安装该包:

{
  "mcpServers": {
    "sourcesage": {
      "command": "sourcesage",
      "args": []
    }
  }
}

如果你是从本地目录运行而不安装:

{
  "sourcesage": {
      "command": "uv", 
      "args": [
        "--directory",
        "/path/to/sourcesage",
        "run",
        "main.py"
      ]
    },
}
  1. 重启Claude桌面版

可用工具

SourceSage 提供以下MCP工具:

  1. register_entity:在知识图谱中注册一个代码实体

    输入:
      - name: 实体名称(例如类名、函数名)
      - entity_type: 实体类型(类、函数、模块等)
      - summary: 实体的简要描述
      - signature: 实体签名(可选)
      - language: 编程语言(可选)
      - observations: 关于实体的观察列表(可选)
      - metadata: 额外元数据(可选)
    输出:带有实体ID的确认消息
    
  2. register_relationship:注册实体之间的关系

    输入:
      - from_entity: 源实体名称
      - to_entity: 目标实体名称
      - relationship_type: 关系类型(调用、继承、导入等)
      - metadata: 额外元数据(可选)
    输出:带有关系ID的确认消息
    
  3. register_pattern:注册一个代码模式

    输入:
      - name: 模式的名称
      - description: 模式的描述
      - language: 编程语言(可选)
      - example: 展示该模式的示例代码(可选)
      - metadata: 额外元数据(可选)
    输出:带有模式ID的确认消息
    
  4. register_style_convention:注册一个编码风格惯例

    输入:
      - name: 规定的名称
      - description: 规定的描述
      - language: 编程语言(可选)
      - examples: 展示该规定的代码片段示例(可选)
      - metadata: 额外元数据(可选)
    输出:带有规定ID的确认消息
    
  5. add_entity_observation:向实体添加一个观察

    输入:
      - entity_name: 实体名称
      - observation: 要添加的观察
    输出:确认消息
    
  6. query_entities:查询知识图谱中的实体

    输入:
      - entity_type: 按实体类型过滤(可选)
      - language: 按编程语言过滤(可选)
      - name_pattern: 按名称模式过滤(正则表达式,可选)
      - limit: 返回结果的最大数量(可选)
    输出:匹配的实体列表
    
  7. get_entity_details:获取实体的详细信息

    输入:
      - entity_name: 实体名称
    输出:关于实体的详细信息
    
  8. query_patterns:查询知识图谱中的代码模式

    输入:
      - language: 按编程语言过滤(可选)
      - pattern_name: 按模式名称过滤(可选)
    输出:匹配的模式列表
    
  9. query_style_conventions:查询编码风格惯例

    输入:
      - language: 按编程语言过滤(可选)
      - convention_name: 按惯例名称过滤(可选)
    输出:匹配的风格惯例列表
    
  10. get_knowledge_statistics:获取知识图谱的统计信息

    输入:无
    输出:关于知识图谱的统计信息
    
  11. clear_knowledge:清除图谱中的所有知识

    输入:无
    输出:确认消息
    

示例工作流程与Claude

  1. 分析代码:请求Claude分析你的代码文件

    "请分析这个Python文件并注册关键实体和关系。"
    
  2. 注册实体:Claude将使用register_entity工具存储代码实体

    "我将在文件中注册主类。"
    
  3. 注册关系:Claude将使用register_relationship工具存储关系

    "我将在这些类之间注册继承关系。"
    
  4. 查询知识:稍后,询问Claude有关你的代码库的信息

    "我的代码库中定义了哪些类?"
    "显示User类的详细信息。"
    "User和Profile类之间的关系是什么?"
    
  5. 获取编码模式:询问Claude有关编码模式的信息

    "我的代码库中使用了哪些设计模式?"
    "展示我在代码中使用的工厂模式示例。"
    

它的不同之处

与传统的代码分析工具不同,SourceSage:

  1. 利用LLM理解能力:使用LLM跨语言理解代码语义的能力
  2. 存储语义知识:专注于意义和关系,而不仅仅是语法
  3. 语言无关:适用于LLM理解的任何编程语言
  4. 优化令牌效率:以最小化令牌使用的方式存储知识
  5. 随着LLM能力进化:随着LLM的进步,代码理解也会提高

贡献

欢迎贡献!请随时提交Pull Request。

许可证

本项目采用MIT许可证 - 详情见LICENSE文件。