SourceSage:LLM 的高效代码内存
SourceSage 是一款 MCP(模型上下文协议)服务器,能够高效地记忆代码库的关键要素——逻辑、代码风格和标准,同时支持动态更新和快速检索。它的设计与语言无关,充分利用了法学硕士 (LLM) 对多种语言代码的理解能力。
特征
语言无关:适用于 LLM 理解的任何编程语言
知识图谱存储:高效存储代码实体、关系、模式和样式约定
LLM 驱动分析:依靠 LLM 分析代码并提供见解
令牌高效存储:优化最小令牌使用量,同时最大化内存容量
增量更新:代码更改时更新知识,无需冗余存储
快速检索:能够快速准确地检索相关信息
Related MCP server: Logseq MCP Tools
工作原理
SourceSage 采用了一种新颖的方法:
LLM 分析代码文件(任何语言)
LLM 使用 MCP 工具来注册实体、关系、模式和样式约定
SourceSage 将这些知识存储在令牌高效的图形结构中
LLM 可以在以后需要时查询这些知识
这种方法利用了 LLM 固有的语言理解能力,同时将 MCP 服务器的重点放在高效的内存管理上。
安装
用法
运行 MCP 服务器
连接到 Claude 桌面版
打开 Claude 桌面版
前往“设置”>“开发者”>“编辑配置”
将以下内容添加到您的
claude_desktop_config.json中:
如果您已经安装了该软件包:
如果您从本地目录运行而未安装:
重启 Claude 桌面版
可用工具
SourceSage 提供以下 MCP 工具:
register_entity :在知识图谱中注册代码实体
Input: - name: Name of the entity (e.g., class name, function name) - entity_type: Type of entity (class, function, module, etc.) - summary: Brief description of the entity - signature: Entity signature (optional) - language: Programming language (optional) - observations: List of observations about the entity (optional) - metadata: Additional metadata (optional) Output: Confirmation message with entity IDregister_relationship :注册实体之间的关系
Input: - from_entity: Name of the source entity - to_entity: Name of the target entity - relationship_type: Type of relationship (calls, inherits, imports, etc.) - metadata: Additional metadata (optional) Output: Confirmation message with relationship IDregister_pattern :注册代码模式
Input: - name: Name of the pattern - description: Description of the pattern - language: Programming language (optional) - example: Example code demonstrating the pattern (optional) - metadata: Additional metadata (optional) Output: Confirmation message with pattern IDregister_style_convention :注册编码风格约定
Input: - name: Name of the convention - description: Description of the convention - language: Programming language (optional) - examples: Example code snippets demonstrating the convention (optional) - metadata: Additional metadata (optional) Output: Confirmation message with convention IDadd_entity_observation :向实体添加观察
Input: - entity_name: Name of the entity - observation: Observation to add Output: Confirmation messagequery_entities :查询知识图谱中的实体
Input: - entity_type: Filter by entity type (optional) - language: Filter by programming language (optional) - name_pattern: Filter by name pattern (regex, optional) - limit: Maximum number of results to return (optional) Output: List of matching entitiesget_entity_details :获取实体的详细信息
Input: - entity_name: Name of the entity Output: Detailed information about the entityquery_patterns :知识图谱中的查询代码模式
Input: - language: Filter by programming language (optional) - pattern_name: Filter by pattern name (optional) Output: List of matching patternsquery_style_conventions :查询编码风格约定
Input: - language: Filter by programming language (optional) - convention_name: Filter by convention name (optional) Output: List of matching style conventionsget_knowledge_statistics :获取有关知识图谱的统计数据
clear_knowledge :清除图中的所有知识
Claude 的示例工作流程
分析代码:让 Claude 分析你的代码文件
"Please analyze this Python file and register the key entities and relationships."注册实体:Claude 将使用 register_entity 工具来存储代码实体
"I'll register the main class in this file."注册关系:Claude 将使用 register_relationship 工具来存储关系
"I'll register the inheritance relationship between these classes."查询知识:稍后,向 Claude 询问你的代码库
"What classes are defined in my codebase?" "Show me the details of the User class." "What's the relationship between the User and Profile classes?"获取编码模式:向 Claude 询问编码模式
"What design patterns are used in my codebase?" "Show me examples of the Factory pattern in my code."
有何不同
与传统的代码分析工具不同,SourceSage:
利用 LLM 理解:利用 LLM 的能力理解跨语言的代码语义
存储语义知识:关注意义和关系,而不仅仅是语法
与语言无关:可与 LLM 理解的任何编程语言配合使用
优化令牌效率:以最小化令牌使用的方式存储知识
随着 LLM 能力的提升而发展:随着 LLM 的进步,代码理解能力也在提升
贡献
欢迎贡献代码!欢迎提交 Pull 请求。
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
Appeared in Searches
- A tool for extracting code metadata and exposing it via MCP
- Retrieve the latest documentation of libraries in word embeddings form for LLMs
- Using local LLMs for code writing, reviewing, and rule generation
- Assistance with reviewing and merging code changes in a merge request
- Resources or Assistance for Learning to Code