项目简介

FSKB (File System Knowledge Base) 是 LLMTornado 项目中的一个子项目,旨在将本地文件系统(特别是代码仓库)转化为可供 AI 代理查询和利用的知识库。它通过 Model Context Protocol (MCP) 提供语义搜索、代码上下文提取等功能,帮助 AI 更好地理解和操作本地代码,实现高效的本地代码检索和辅助编程。

主要功能点

  • 语义搜索: 对本地文件内容进行语义化索引,支持通过自然语言查询相关代码片段、文档等,而非仅仅基于关键词匹配。
  • 代码上下文管理: 提取文件的行号、字符位置、内容、语言等信息,并能提供查询结果前后的代码上下文,增强 LLM 对代码的理解。
  • Git 仓库集成: 自动检测 Git 仓库的分支变化,并能针对不同分支维护独立的索引,确保 AI 始终获取最新和正确的分支信息。
  • 文件系统监控: 实时监控文件系统的创建、修改和删除事件,自动更新知识库索引,保证数据的新鲜度。
  • 可配置的索引策略: 支持自定义文本文件扩展名、文件大小限制、代码块划分规则以及 '.gitignore' / '.fskbignore' 忽略规则,灵活适应不同的项目需求。
  • MCP 服务器: 以标准化的 MCP 协议提供上述功能,允许 LLM 客户端通过 JSON-RPC 进行通信,调用其作为工具或获取上下文资源,无缝集成到 AI 代理工作流中。

安装步骤

  1. 克隆仓库: 首先,您需要将 LLMTornado 仓库克隆到本地:
    git clone https://github.com/lofcz/LLMTornado.git
    cd LLMTornado/src/LlmTornado.FsKb/LlmTornado.FsKb
  2. 创建并激活虚拟环境 (推荐): 为了避免依赖冲突,建议为 FSKB 创建并激活一个 Python 虚拟环境:
    python -m venv venv
    # Linux/macOS
    source venv/bin/activate
    # Windows
    .\venv\Scripts\activate
  3. 安装依赖: 在激活的虚拟环境中,安装 FSKB 所需的所有 Python 依赖:
    pip install -r requirements.txt
  4. 运行安装验证 (可选): 您可以运行安装验证脚本来检查所有依赖是否正确安装:
    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 密钥。

基本使用方法

  1. 启动 FSKB 服务器: 通常由 MCP 客户端根据上述 JSON 配置自动启动 FSKB 服务器。您无需手动执行 'python main.py --mcp'。
  2. 添加根目录: 服务器启动后,您可以选择通过 FSKB 的图形用户界面(如果以非 '--no-gui' 模式运行)来添加需要索引的文件目录(例如您的代码仓库),或者在上述 MCP 客户端配置的 'args' 参数中添加 '--add-root /path/to/your/repo' 来预配置要索引的目录。
  3. AI 代理交互: 您的 LLM 客户端连接到 FSKB 服务器后,可以通过 MCP 协议调用 FSKB 提供的工具。例如,LLM 可以请求 FSKB 执行语义搜索,以找到与特定代码功能、概念或问题相关的代码片段或文档。FSKB 将返回匹配的搜索结果,其中包含文件路径、代码内容、行号、相关性分数等信息,供 LLM 进一步处理、分析或生成回复。

信息

分类

数据库与文件