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 桌面版
- 打开 Claude 桌面版
- 前往“设置”>“开发者”>“编辑配置”
- 将以下内容添加到您的
claude_desktop_config.json
中:
如果您已经安装了该软件包:
{
"mcpServers": {
"sourcesage": {
"command": "sourcesage",
"args": []
}
}
}
如果您从本地目录运行而未安装:
{
"sourcesage": {
"command": "uv",
"args": [
"--directory",
"/path/to/sourcesage",
"run",
"main.py"
]
},
}
- 重启 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 ID
- register_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 ID
- register_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 ID
- register_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 ID
- add_entity_observation :向实体添加观察
Input:
- entity_name: Name of the entity
- observation: Observation to add
Output: Confirmation message
- query_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 entities
- get_entity_details :获取实体的详细信息
Input:
- entity_name: Name of the entity
Output: Detailed information about the entity
- query_patterns :知识图谱中的查询代码模式
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
- get_knowledge_statistics :获取有关知识图谱的统计数据
Input: None
Output: Statistics about the knowledge graph
- clear_knowledge :清除图中的所有知识
Input: None
Output: Confirmation message
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 文件。