项目简介
FSKB (File System Knowledge Base) 是 LLMTornado 项目中的一个子项目,旨在将本地文件系统(特别是代码仓库)转化为可供 AI 代理查询和利用的知识库。它通过 Model Context Protocol (MCP) 提供语义搜索、代码上下文提取等功能,帮助 AI 更好地理解和操作本地代码,实现高效的本地代码检索和辅助编程。
主要功能点
- 语义搜索: 对本地文件内容进行语义化索引,支持通过自然语言查询相关代码片段、文档等,而非仅仅基于关键词匹配。
- 代码上下文管理: 提取文件的行号、字符位置、内容、语言等信息,并能提供查询结果前后的代码上下文,增强 LLM 对代码的理解。
- Git 仓库集成: 自动检测 Git 仓库的分支变化,并能针对不同分支维护独立的索引,确保 AI 始终获取最新和正确的分支信息。
- 文件系统监控: 实时监控文件系统的创建、修改和删除事件,自动更新知识库索引,保证数据的新鲜度。
- 可配置的索引策略: 支持自定义文本文件扩展名、文件大小限制、代码块划分规则以及 '.gitignore' / '.fskbignore' 忽略规则,灵活适应不同的项目需求。
- MCP 服务器: 以标准化的 MCP 协议提供上述功能,允许 LLM 客户端通过 JSON-RPC 进行通信,调用其作为工具或获取上下文资源,无缝集成到 AI 代理工作流中。
安装步骤
- 克隆仓库:
首先,您需要将 LLMTornado 仓库克隆到本地:
git clone https://github.com/lofcz/LLMTornado.git cd LLMTornado/src/LlmTornado.FsKb/LlmTornado.FsKb - 创建并激活虚拟环境 (推荐):
为了避免依赖冲突,建议为 FSKB 创建并激活一个 Python 虚拟环境:
python -m venv venv # Linux/macOS source venv/bin/activate # Windows .\venv\Scripts\activate - 安装依赖:
在激活的虚拟环境中,安装 FSKB 所需的所有 Python 依赖:
pip install -r requirements.txt - 运行安装验证 (可选):
您可以运行安装验证脚本来检查所有依赖是否正确安装:
python verify_installation.py
服务器配置
FSKB 作为 MCP 服务器运行,需要一个 MCP 客户端与其建立连接。MCP 客户端通常通过命令行参数启动 FSKB 服务器。以下是一个典型的 MCP 客户端 JSON 配置示例,展示了如何配置客户端以连接 FSKB MCP 服务器:
{ "server_name": "FSKB_Local_KB_Server", "command": "python", "args": [ "./LLMTornado/src/LlmTornado.FsKb/LlmTornado.FsKb/main.py", "--mcp", // 可选参数,可以根据您的需求添加: // "--config", "./path/to/custom_fskb_config.json", // 指定 FSKB 的自定义配置文件路径 // "--add-root", "/path/to/your/code/repo", // 启动时添加一个代码仓库目录进行索引 // "--add-root", "/path/to/another/document/folder" // 可以同时添加多个根目录进行索引 ], "working_directory": "/path/to/your/LLMTornado/repo", // 确保此路径指向 FSKB main.py 所在的目录 "transport": "stdio", // FSKB 默认支持 Stdio 传输协议,通过标准输入/输出进行通信 "environment": { // 可选:设置 FSKB 服务器运行时所需的环境变量,例如用于嵌入模型服务的 API 密钥: // "FSKB_EMBEDDING_PROVIDER": "openai", // 如果使用 OpenAI 作为嵌入服务提供商 // "FSKB_EMBEDDING_MODEL": "text-embedding-3-small", // 指定嵌入模型 // "FSKB_EMBEDDING_API_KEY": "YOUR_OPENAI_OR_VOYAGE_API_KEY" // 您的 API 密钥 } }
- 'server_name': 给您的 FSKB 服务器起一个易于识别的名称。
- 'command': 用于启动 Python 解释器的命令,通常是 'python' 或 'python3'。
- 'args': 一个字符串数组,包含启动 FSKB 'main.py' 脚本的所有命令行参数。'--mcp' 参数是必需的,它告诉 FSKB 以 MCP 服务器模式运行。
- 'working_directory': 必须设置为 'LLMTornado/src/LlmTornado.FsKb/LlmTornado.FsKb' 目录的绝对路径,即 'main.py' 脚本所在的目录。
- 'transport': 指定服务器和客户端之间的通信协议,FSKB 默认支持 'stdio' (标准输入/输出) 协议。
- 'environment': 一个可选的键值对对象,用于设置 FSKB 进程的环境变量。例如,如果您选择使用远程 API 提供商(如 OpenAI、Voyage)来生成嵌入,则需要在此处配置相应的 API 密钥。
基本使用方法
- 启动 FSKB 服务器: 通常由 MCP 客户端根据上述 JSON 配置自动启动 FSKB 服务器。您无需手动执行 'python main.py --mcp'。
- 添加根目录: 服务器启动后,您可以选择通过 FSKB 的图形用户界面(如果以非 '--no-gui' 模式运行)来添加需要索引的文件目录(例如您的代码仓库),或者在上述 MCP 客户端配置的 'args' 参数中添加 '--add-root /path/to/your/repo' 来预配置要索引的目录。
- AI 代理交互: 您的 LLM 客户端连接到 FSKB 服务器后,可以通过 MCP 协议调用 FSKB 提供的工具。例如,LLM 可以请求 FSKB 执行语义搜索,以找到与特定代码功能、概念或问题相关的代码片段或文档。FSKB 将返回匹配的搜索结果,其中包含文件路径、代码内容、行号、相关性分数等信息,供 LLM 进一步处理、分析或生成回复。
信息
分类
数据库与文件