SourceSage:LLM的高效代码存储
SourceSage是一个MCP(模型上下文协议)服务器,可以有效地记忆代码库的关键方面——逻辑、风格和标准——同时允许动态更新和快速检索。它被设计为与语言无关,利用LLM对多种语言代码的理解。
特性
- 语言无关:适用于LLM理解的任何编程语言
- 知识图谱存储:高效地存储代码实体、关系、模式和样式约定
- LLM驱动分析:依靠LLM分析代码并提供见解
- 令牌高效存储:优化以最小化令牌使用,同时最大限度地提高内存容量
- 增量更新:在没有冗余存储的情况下,当代码更改时更新知识
- 快速检索:能够快速准确地检索相关信息
运作原理
SourceSage采用了一种新颖的方法,其中:
- LLM分析代码文件(任何语言)
- LLM使用MCP工具来注册实体、关系、模式和样式约定
- SourceSage将此知识存储在令牌高效的图结构中
- LLM稍后可以在需要时查询这些知识
这种方法利用了LLM固有的语言理解能力,同时使MCP服务器专注于高效的内存管理。
安装
# Clone the repository
git clone https://github.com/yourusername/sourcesage.git
cd sourcesage
# Install the package
pip install -e .用法
运行MCP服务器
# Run the server
sourcesage
# Or run directly from the repository
python -m sourcesage.mcp_server连接到Claude for Desktop
- 打开Claude桌面版
- 前往“设置”>“开发人员”>“编辑配置”
- 将以下内容添加到您的
claude_desktop_config.json:
如果您已安装该软件包:
{
"mcpServers": {
"sourcesage": {
"command": "sourcesage",
"args": []
}
}
}如果您从本地目录运行而未安装:
{
"sourcesage": {
"command": "uv",
"args": [
"--directory",
"/path/to/sourcesage",
"run",
"main.py"
]
},
}- 重新启动桌面版的Claude
可用工具
SourceSage提供以下MCP工具:
- 注册实体:在知识图中注册代码实体
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 ID- 注册表关系:注册实体之间的关系
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 ID- 寄存器_模式:注册代码模式
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 ID- 注册表_样式_约定:注册编码样式约定
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 ID- add_entity_observation:向实体添加观察
Input:
- entity_name: Name of the entity
- observation: Observation to add
Output: Confirmation message- 查询项:查询知识图中的实体
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 entities- get_entity_details:获取有关实体的详细信息
Input:
- entity_name: Name of the entity
Output: Detailed information about the entity- 查询模式:查询知识图中的代码模式
Input:
- language: Filter by programming language (optional)
- pattern_name: Filter by pattern name (optional)
Output: List of matching patterns- query_style_conventions:查询编码样式约定
Input:
- language: Filter by programming language (optional)
- convention_name: Filter by convention name (optional)
Output: List of matching style conventions- 获取知识_统计:获取知识图谱的统计数据
Input: None
Output: Statistics about the knowledge graph- 清除知识:清除图表中的所有知识
Input: None
Output: Confirmation messageClaude工作流示例
- 分析代码:请Claude分析您的代码文件
"Please analyze this Python file and register the key entities and relationships."- 注册实体:Claude将使用register_instance工具存储代码实体
"I'll register the main class in this file."- 注册关系:Claude将使用register_relations工具存储关系
"I'll register the inheritance relationship between these classes."- 查询知识:稍后,问克劳德你的代码库
"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的改进,代码理解能力也在提高
贡献
欢迎投稿!请随时提交拉取请求。
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

