项目简介

Trigent 旨在为AI代理提供一个强大的后端服务,以便对GitHub议题进行大规模的检索增强生成(RAG)操作。它能够自动抓取GitHub仓库的议题和拉取请求,利用Mistral API生成语义嵌入,并将其存储在Qdrant向量数据库中。随后,Trigent 启动一个MCP服务器,向AI客户端暴露一系列工具,使AI能够执行智能搜索、相似性匹配和数据分析,从而实现高效的议题分流和管理。

主要功能点

  • GitHub议题数据集成与增强:自动从指定的GitHub仓库获取议题和拉取请求,并使用Mistral API为内容生成语义嵌入和总结,丰富原始数据。
  • MCP服务器提供AI工具:作为一个MCP服务器,Trigent 托管并提供以下工具,供LLM(大语言模型)客户端通过JSON-RPC协议调用:
    • 'get_issue(number)':获取特定议题的详细信息。
    • 'find_similar_issues(number)':根据语义相似性查找与某个议题相似的其他议题。
    • 'find_similar_issues_by_text(text)':根据一段文本查找语义相似的议题。
    • 'find_cross_referenced_issues(number)':查找与指定议题相互引用关联的议题。
    • 'get_top_issues(sort_column)':根据评论数、参与度、更新时间等任意指标获取最热门的议题。
    • 'add_recommendation(issue_number, ...)':向议题添加AI生成的推荐信息。
  • 向量数据库支持:利用Qdrant向量数据库高效存储和检索语义嵌入,支持快速相似性搜索。
  • 数据管理:提供命令行工具用于更新、清理仓库数据,并显示详尽的数据统计信息。
  • 数据导出与可视化:支持将处理后的数据导出为CSV格式,生成可视化图表,甚至可以同步到GitHub Project Board。

安装步骤

  1. 安装 Trigent 工具: 在您的Python环境中执行以下命令安装 Trigent。

    pip install -e .
  2. 配置API密钥: 复制示例配置文件 'config.toml.example' 到 'config.toml',并在其中添加您的 Mistral API 密钥,以便生成语义嵌入和总结。

    cp config.toml.example config.toml
    # 然后,用文本编辑器打开 config.toml 文件,添加或修改 Mistral API 密钥,例如:
    # [api]
    # mistral_api_key = "YOUR_MISTRAL_API_KEY_HERE"
  3. 启动 Qdrant 向量数据库: Trigent 依赖 Qdrant 向量数据库来存储和检索议题的语义信息。请确保 Qdrant 容器正在运行,默认监听 '6333' 端口。

    docker run -p 6333:6333 qdrant/qdrant
  4. 设置 GitHub 仓库数据: 执行 'pull' 命令来抓取并处理您感兴趣的 GitHub 仓库的议题数据。将 'jupyterlab/jupyterlab' 替换为您自己的仓库名称。此步骤将下载议题、生成嵌入并存储到 Qdrant 中。

    trigent pull jupyterlab/jupyterlab

    您也可以选择其他仓库,例如 'octocat/Spoon-Knife'。

服务器配置

MCP客户端需要配置 Trigent MCP 服务器的启动命令。以下是标准的 JSON 格式配置示例,您需要将其提供给您的 MCP 客户端:

{
  "server_name": "Trigent GitHub Issue Server",
  "command": ["python", "-m", "trigent"],
  "args": ["serve", "YOUR_REPO_NAME", "--host", "localhost", "--port", "8000"],
  "description": "连接到Trigent MCP服务器,以对指定GitHub仓库的议题进行智能分析和分流。请确保您已通过 'trigent pull' 命令为 'YOUR_REPO_NAME' 仓库准备好数据。",
  "parameters_info": {
    "YOUR_REPO_NAME": "**必填**。要服务的GitHub仓库名称,格式为 'owner/repo',例如 'jupyterlab/jupyterlab'。此参数决定了MCP服务器将加载哪个仓库的数据。在客户端连接后,所有工具调用将默认操作此仓库数据。",
    "--host": "可选。MCP服务器绑定的主机地址,默认为 'localhost'。您可以使用 '0.0.0.0' 允许外部访问。",
    "--port": "可选。MCP服务器监听的端口号,默认为 '8000'。请确保此端口未被操作系统或防火墙占用。"
  }
}

重要提示:在上述配置中,务必将 'YOUR_REPO_NAME' 替换为您在 'trigent pull' 步骤中已经处理过的具体 GitHub 仓库名称(例如 'jupyterlab/jupyterlab')。MCP 客户端将使用此配置信息来启动 Trigent 服务器并建立连接。

基本使用方法

  1. 启动 MCP 服务器: 在终端中运行以下命令,启动 MCP 服务器。请将 'YOUR_REPO_NAME' 替换为您已经设置好的 GitHub 仓库名称。

    trigent serve YOUR_REPO_NAME

    默认情况下,服务器将在 'http://localhost:8000' 监听连接。服务器启动后,会在终端中显示相关日志信息,指示其已准备好接收请求。

  2. 通过 MCP 客户端连接: 使用您选择的 MCP 客户端(例如,一个LLM应用或MCP开发工具)根据上方的“服务器配置”信息连接到 Trigent 服务器。

  3. 调用 MCP 工具: 一旦连接建立,您的 MCP 客户端即可通过发送 JSON-RPC 请求来调用 Trigent 提供的工具。

    • 示例:获取特定议题摘要: 客户端可以发送一个 JSON-RPC 请求来调用 'get_issue' 工具,以获取议题 '#123' 的摘要信息。

      {
        "jsonrpc": "2.0",
        "method": "get_issue",
        "params": {
          "issue_number": 123
        },
        "id": 1
      }

      服务器将返回议题的摘要、对话内容、推荐信息和状态等。

    • 示例:查找相似议题: 客户端可以调用 'find_similar_issues_by_text' 工具,根据一段文本查找相似议题。

      {
        "jsonrpc": "2.0",
        "method": "find_similar_issues_by_text",
        "params": {
          "text": "How to fix broken kernels in JupyterLab?",
          "limit": 5
        },
        "id": 2
      }

      服务器将返回与给定文本语义相似的最多5个议题。

  4. 管理和更新数据: 为了保持数据最新,您可以定期运行 'update' 命令:

    trigent update YOUR_REPO_NAME

    此命令将抓取自上次更新以来有变动的议题,并重新进行语义嵌入和总结。

信息

分类

开发者工具